Make Sarka special-forces cars per anger point configurable
continuous-integration/drone/push Build is passing
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -53,7 +53,7 @@ assert 'Apply_planeReconEnabled' not in names # Saved-state toggle pair, not a
|
||||
assert len(names) == len(set(names)), 'Menu widget names must be unique'
|
||||
for key in keys:
|
||||
assert all(name in names for name in (key, 'Apply_' + key, 'Saved_' + key, 'Help_' + key))
|
||||
if key not in ('emptyRestartHours','aiDoctrine','aiShadow','motorbikeCount','planeAltitudeMetres','planeReplacementSeconds','planeSectorSeconds','fieldCampCount','fieldHospitalCount','startMode','civilianTrafficCount','roadblockCount','hunterSpawnDistanceMetres','objectGuardCount','objectGuardEvery','objectGuardHQMode','startWeaponCount','startMagazineCount'): assert ('Default_' if key == 'viewDistanceMetres' else 'Random_') + key in names
|
||||
if key not in ('sarkaCarsPerAnger','emptyRestartHours','aiDoctrine','aiShadow','motorbikeCount','planeAltitudeMetres','planeReplacementSeconds','planeSectorSeconds','fieldCampCount','fieldHospitalCount','startMode','civilianTrafficCount','roadblockCount','hunterSpawnDistanceMetres','objectGuardCount','objectGuardEvery','objectGuardHQMode','startWeaponCount','startMagazineCount'): assert ('Default_' if key == 'viewDistanceMetres' else 'Random_') + key in names
|
||||
else: assert 'Random_startMode' not in names
|
||||
for name in ('Close', 'SettingsPage', 'HQPage', 'JournalPage', 'JournalText', 'JournalContent', 'JournalScroll', 'PauseJournal', 'LatestJournal', 'Status'):
|
||||
assert name in names
|
||||
|
||||
@@ -21,6 +21,9 @@ int main(){
|
||||
assert(!Valid("emptyRestartHours",-1)&&!Valid("emptyRestartHours",169));
|
||||
for(std::string key:{"aiDoctrine","aiShadow"}){ assert(Valid(key,0)&&Valid(key,1)); assert(!Valid(key,-1)&&!Valid(key,2)); }
|
||||
assert(CoreSetting("mission","motorbikes")=="motorbikeCount");
|
||||
assert(CoreSetting("mission","sarkacars")=="sarkaCarsPerAnger");
|
||||
assert(Valid("sarkaCarsPerAnger",0)&&Valid("sarkaCarsPerAnger",1)&&Valid("sarkaCarsPerAnger",5));
|
||||
assert(!Valid("sarkaCarsPerAnger",-1)&&!Valid("sarkaCarsPerAnger",6));
|
||||
assert(Valid("motorbikeCount",0)&&Valid("motorbikeCount",2)&&Valid("motorbikeCount",6));
|
||||
assert(!Valid("motorbikeCount",-1)&&!Valid("motorbikeCount",7));
|
||||
assert(CoreSetting("mission","planealtitude")=="planeAltitudeMetres");
|
||||
|
||||
@@ -38,6 +38,19 @@ int main(){
|
||||
assert(!w.Due(10600001,30,false)&&w.Pending==0&&w.NextWave==-1);
|
||||
assert(!w.Due(20000000,0,true));assert(!w.Due(20600000,0,true)&&w.Target==0);
|
||||
assert(!w.Due(21200000,-1,true)&&w.Pending==0);
|
||||
Waves configured{};
|
||||
configured.Configure(2);
|
||||
assert(!configured.Due(0,3,true));
|
||||
assert(configured.Due(600000,3,true)&&configured.Target==6);
|
||||
configured.Commit();assert(configured.Pending==5&&configured.Spawned==1);
|
||||
configured.Configure(5); // Already sampled wave and deadline stay unchanged.
|
||||
assert(configured.Pending==5&&configured.NextWave==1200000);
|
||||
assert(configured.Due(1200000,30,true)&&configured.Target==30); // Keep the formation cap.
|
||||
configured.Configure(0);assert(configured.Pending==0&&configured.Target==0);
|
||||
assert(!configured.Due(9999999,30,true)&&configured.Spawned==1); // No waves; retain deployed count.
|
||||
configured.Configure(2);assert(!configured.Due(10000000,3,true));
|
||||
assert(!configured.Due(10599999,3,true)); // Re-enable waits normally, no backlog.
|
||||
assert(configured.Due(10600000,3,true)&&configured.Target==6);
|
||||
Array<vector> players{{0,10,0}};
|
||||
assert(!Rules::InBand({999,0,0},players));
|
||||
assert(Rules::InBand({1000,900,0},players)&&Rules::InBand({1250,0,0},players));
|
||||
@@ -48,4 +61,4 @@ int main(){
|
||||
assert(Rules::Seats(1,0,3,4)&&!Rules::Seats(1,1,2,4)&&!Rules::Seats(1,0,4,5));
|
||||
}
|
||||
''')
|
||||
print('PASS: ten-minute anger waves, staged retries, empty-round reset, no backlog, four seats and nearest-player road distance')
|
||||
print('PASS: configurable anger multiplier, disable/re-enable, wave cap, staged retries, empty-round reset, no backlog, four seats and nearest-player road distance')
|
||||
|
||||
Reference in New Issue
Block a user