mirror of
https://github.com/ENSL/NS.git
synced 2025-03-14 06:34:33 +00:00
Bot fill timing config
This commit is contained in:
parent
09a0206b9c
commit
96cad0f3b0
3 changed files with 47 additions and 0 deletions
|
@ -14,6 +14,8 @@ bool bLerkAllowed = true;
|
|||
bool bFadeAllowed = true;
|
||||
bool bOnosAllowed = true;
|
||||
|
||||
BotFillTiming CurrentBotFillTiming = FILLTIMING_MAPLOAD;
|
||||
|
||||
std::unordered_map<std::string, TeamSizeDefinitions> TeamSizeMap;
|
||||
|
||||
std::unordered_map<std::string, bot_skill> BotSkillLevelsMap;
|
||||
|
@ -241,6 +243,14 @@ void CONFIG_ParseConfigFile()
|
|||
continue;
|
||||
}
|
||||
|
||||
if (key.compare("BotFillTiming") == 0)
|
||||
{
|
||||
int FillSetting = atoi(value.c_str());
|
||||
FillSetting = clampi(FillSetting, 0, 2);
|
||||
CurrentBotFillTiming = (BotFillTiming)FillSetting;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (key.compare("BotSkillName") == 0)
|
||||
{
|
||||
BotSkillLevelsMap[value.c_str()].marine_bot_aim_skill = 0.5f;
|
||||
|
@ -478,4 +488,9 @@ void CONFIG_ParseConfigFile()
|
|||
{
|
||||
GlobalSkillLevel = "default";
|
||||
}
|
||||
}
|
||||
|
||||
BotFillTiming CONFIG_GetBotFillTiming()
|
||||
{
|
||||
return CurrentBotFillTiming;
|
||||
}
|
|
@ -21,6 +21,13 @@ typedef struct _TEAMSIZEDEFINITIONS
|
|||
int TeamBSize = 6;
|
||||
} TeamSizeDefinitions;
|
||||
|
||||
typedef enum _BOTFILLTIMING
|
||||
{
|
||||
FILLTIMING_MAPLOAD = 0, // Bots will start filling teams after map load (after grace period)
|
||||
FILLTIMING_ALLHUMANS, // Bots will only start filling teams once all humans in the ready room have joined a team
|
||||
FILLTIMING_ROUNDSTART // Bots will only start filling teams after round start
|
||||
} BotFillTiming;
|
||||
|
||||
// Reads evobot.cfg in addons/evobot and populates all the settings from it
|
||||
void CONFIG_ParseConfigFile();
|
||||
|
||||
|
@ -55,6 +62,8 @@ bot_skill CONFIG_GetGlobalBotSkillLevel();
|
|||
|
||||
void CONFIG_SetGlobalBotSkillLevel(const char* NewSkillLevel);
|
||||
|
||||
BotFillTiming CONFIG_GetBotFillTiming();
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -126,6 +126,29 @@ void AIMGR_UpdateAIPlayerCounts()
|
|||
return;
|
||||
}
|
||||
|
||||
BotFillTiming CurrentFillTiming = CONFIG_GetBotFillTiming();
|
||||
|
||||
if (!GetGameRules()->GetGameStarted())
|
||||
{
|
||||
if (CurrentFillTiming == FILLTIMING_ROUNDSTART) { return; }
|
||||
|
||||
if (CurrentFillTiming == FILLTIMING_ALLHUMANS)
|
||||
{
|
||||
for (int i = 1; i <= gpGlobals->maxClients; i++)
|
||||
{
|
||||
edict_t* PlayerEdict = INDEXENT(i);
|
||||
if (FNullEnt(PlayerEdict) || PlayerEdict->free || (PlayerEdict->v.flags & FL_FAKECLIENT)) { continue; }
|
||||
|
||||
AvHPlayer* PlayerRef = dynamic_cast<AvHPlayer*>(CBaseEntity::Instance(PlayerEdict));
|
||||
|
||||
if (!PlayerRef) { continue; }
|
||||
|
||||
if (PlayerRef->GetInReadyRoom()) { return; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (avh_botautomode.value == 1) // Fill teams: bots will be added and removed to maintain a minimum player count
|
||||
{
|
||||
AIMGR_UpdateFillTeams();
|
||||
|
|
Loading…
Reference in a new issue