Improve AI garrisons, player recovery and mission administration
This commit is contained in:
@@ -81,13 +81,13 @@ struct Sites{ERR_SiteRuntime* site=nullptr;int finds=0;string last;
|
||||
ERR_SiteRuntime* Find(string id){finds++;last=id;return site;}};
|
||||
struct ERR_Settings{
|
||||
int automatic=1,stinger=15,convoy=3,writes=0;bool saveFails=false;
|
||||
static Array<string> Keys(){return {}; }int Get(string key){if(key=="convoyCount")return convoy;return key=="stingerChanceOneIn"?stinger:automatic;}
|
||||
static Array<string> Keys(){return {}; }int Get(string key){if(key=="convoyCount")return convoy;return key=="antiAirChancePercent"?stinger:automatic;}
|
||||
'''+validator+r'''
|
||||
static string SelectionText(int value){return value==-1?string("random"):string(std::to_string(value));}
|
||||
bool Set(string key,int value){writes++;if(saveFails||(!Valid(key,value)&&!(key=="convoyCount"&&value==-1)))return false;
|
||||
if(key=="convoyCount"){convoy=value;return true;}
|
||||
if(key=="automaticConvoyEnabled"){automatic=value;return true;}
|
||||
assert(key=="stingerChanceOneIn");stinger=value;return true;}
|
||||
assert(key=="antiAirChancePercent");stinger=value;return true;}
|
||||
};
|
||||
struct ERR_GameMode{
|
||||
inline static ERR_GameMode* current=nullptr;bool active=true,settingsReady=true;Ledger ledger;
|
||||
@@ -180,9 +180,9 @@ int main(){
|
||||
assert(mode.settings.writes==1&&mode.settings.stinger==0&&pool.calls==0);
|
||||
assert(replies[0].find("have not rolled yet")!=string::npos&&replies[0].find("no reroll, removal or replenishment")!=string::npos);
|
||||
admin.Execute(&mode,true,"hq stinger show",replies);
|
||||
assert(mode.settings.writes==1&&replies[0].find("stingerChanceOneIn=0")!=string::npos);
|
||||
assert(mode.settings.writes==1&&replies[0].find("antiAirChancePercent=0")!=string::npos);
|
||||
admin.Execute(&mode,true,"hq stinger help",replies);
|
||||
assert(mode.settings.writes==1&&replies[0].find("2..10000 one in N")!=string::npos);
|
||||
assert(mode.settings.writes==1&&replies[0].find("0..100 percent")!=string::npos);
|
||||
mode.settings.saveFails=true;admin.Execute(&mode,true,"hq stinger set 15",replies);
|
||||
assert(mode.settings.stinger==0&&replies[0].find("previous setting retained")!=string::npos);mode.settings.saveFails=false;
|
||||
int writes=mode.settings.writes;
|
||||
|
||||
Reference in New Issue
Block a user