mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
Compare commits
2 Commits
e5bc495dbe
...
a37dd2b9ae
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a37dd2b9ae | ||
|
|
9c8ba42c64 |
@@ -1196,24 +1196,46 @@ AiPlayerbot.FastReactInBG = 1
|
||||
####################################################################################################
|
||||
|
||||
####################################################################################################
|
||||
# INTERVALS
|
||||
# RANDOM BOT TIMING AND BEHAVIOR
|
||||
#
|
||||
#
|
||||
|
||||
# All in seconds
|
||||
# How often (in seconds) the random bot manager runs its main update loop
|
||||
# Default: 20
|
||||
AiPlayerbot.RandomBotUpdateInterval = 20
|
||||
|
||||
# Minimum and maximum seconds before the manager re-evaluates and adjusts total random bot count
|
||||
# Defaults: 1800 (min), 7200 (max)
|
||||
AiPlayerbot.RandomBotCountChangeMinInterval = 1800
|
||||
AiPlayerbot.RandomBotCountChangeMaxInterval = 7200
|
||||
|
||||
# Minimum and maximum seconds a random bot will stay online before logging out
|
||||
# Defaults: 600 (min), 28800 (max)
|
||||
AiPlayerbot.MinRandomBotInWorldTime = 600
|
||||
AiPlayerbot.MaxRandomBotInWorldTime = 28800
|
||||
|
||||
# Minimum and maximum seconds before a bot is eligible for re-randomization (gear, class, talents, etc.)
|
||||
# Defaults: 7200 (min), 1209600 (max)
|
||||
AiPlayerbot.MinRandomBotRandomizeTime = 7200
|
||||
AiPlayerbot.MaxRandomBotRandomizeTime = 1209600
|
||||
|
||||
# Number of bots processed (login, logout, update) per manager update cycle
|
||||
# Default: 60
|
||||
AiPlayerbot.RandomBotsPerInterval = 60
|
||||
|
||||
# Minimum and maximum seconds after death before a bot revives
|
||||
# Defaults: 60 (min), 300 (max)
|
||||
AiPlayerbot.MinRandomBotReviveTime = 60
|
||||
AiPlayerbot.MaxRandomBotReviveTime = 300
|
||||
|
||||
# Minimum and maximum seconds between bot teleports to new areas or zones
|
||||
# Defaults: 3600 (min), 18000 (max)
|
||||
AiPlayerbot.MinRandomBotTeleportInterval = 3600
|
||||
AiPlayerbot.MaxRandomBotTeleportInterval = 18000
|
||||
AiPlayerbot.PermanantlyInWorldTime = 31104000
|
||||
|
||||
# Number of seconds bots flagged as permanent stay in the world (31,104,000 ≈ 1 year)
|
||||
# Default: 31104000
|
||||
AiPlayerbot.PermanentlyInWorldTime = 31104000
|
||||
|
||||
#
|
||||
#
|
||||
|
||||
@@ -367,11 +367,19 @@ void PlayerbotAI::UpdateAIGroupAndMaster()
|
||||
{
|
||||
if (!bot)
|
||||
return;
|
||||
|
||||
PlayerbotAI* botAI = GET_PLAYERBOT_AI(bot);
|
||||
if (!botAI)
|
||||
return;
|
||||
|
||||
Group* group = bot->GetGroup();
|
||||
|
||||
bool IsRandomBot = sRandomPlayerbotMgr->IsRandomBot(bot);
|
||||
|
||||
// If bot is not in group verify that for is RandomBot before clearing master and resetting.
|
||||
if (!group)
|
||||
{
|
||||
if (master && sRandomPlayerbotMgr->IsRandomBot(bot))
|
||||
if (master && IsRandomBot)
|
||||
{
|
||||
SetMaster(nullptr);
|
||||
Reset(true);
|
||||
@@ -380,12 +388,10 @@ void PlayerbotAI::UpdateAIGroupAndMaster()
|
||||
return;
|
||||
}
|
||||
|
||||
if (bot->InBattleground() && bot->GetBattleground()->GetBgTypeID() != BATTLEGROUND_AV)
|
||||
return;
|
||||
|
||||
PlayerbotAI* botAI = GET_PLAYERBOT_AI(bot);
|
||||
if (!botAI)
|
||||
return;
|
||||
// Bot in BG, but master no longer part of a group: release master
|
||||
// Exclude alt and addclass bots as they rely on current (real player) master, security-wise.
|
||||
if (bot->InBattleground() && IsRandomBot && master && !master->GetGroup())
|
||||
SetMaster(nullptr);
|
||||
|
||||
PlayerbotAI* masterBotAI = nullptr;
|
||||
if (master)
|
||||
|
||||
@@ -199,8 +199,8 @@ bool PlayerbotAIConfig::Initialize()
|
||||
maxRandomBotReviveTime = sConfigMgr->GetOption<int32>("AiPlayerbot.MaxRandomBotReviveTime", 5 * MINUTE);
|
||||
minRandomBotTeleportInterval = sConfigMgr->GetOption<int32>("AiPlayerbot.MinRandomBotTeleportInterval", 1 * HOUR);
|
||||
maxRandomBotTeleportInterval = sConfigMgr->GetOption<int32>("AiPlayerbot.MaxRandomBotTeleportInterval", 5 * HOUR);
|
||||
permanantlyInWorldTime =
|
||||
sConfigMgr->GetOption<int32>("AiPlayerbot.PermanantlyInWorldTime", 1 * YEAR);
|
||||
permanentlyInWorldTime =
|
||||
sConfigMgr->GetOption<int32>("AiPlayerbot.PermanentlyInWorldTime", 1 * YEAR);
|
||||
randomBotTeleportDistance = sConfigMgr->GetOption<int32>("AiPlayerbot.RandomBotTeleportDistance", 100);
|
||||
randomBotsPerInterval = sConfigMgr->GetOption<int32>("AiPlayerbot.RandomBotsPerInterval", 60);
|
||||
minRandomBotsPriceChangeInterval =
|
||||
|
||||
@@ -132,7 +132,7 @@ public:
|
||||
uint32 minRandomBotChangeStrategyTime, maxRandomBotChangeStrategyTime;
|
||||
uint32 minRandomBotReviveTime, maxRandomBotReviveTime;
|
||||
uint32 minRandomBotTeleportInterval, maxRandomBotTeleportInterval;
|
||||
uint32 permanantlyInWorldTime;
|
||||
uint32 permanentlyInWorldTime;
|
||||
uint32 minRandomBotPvpTime, maxRandomBotPvpTime;
|
||||
uint32 randomBotsPerInterval;
|
||||
uint32 minRandomBotsPriceChangeInterval, maxRandomBotsPriceChangeInterval;
|
||||
|
||||
@@ -822,7 +822,7 @@ uint32 RandomPlayerbotMgr::AddRandomBots()
|
||||
uint32 add_time = sPlayerbotAIConfig->enablePeriodicOnlineOffline
|
||||
? urand(sPlayerbotAIConfig->minRandomBotInWorldTime,
|
||||
sPlayerbotAIConfig->maxRandomBotInWorldTime)
|
||||
: sPlayerbotAIConfig->permanantlyInWorldTime;
|
||||
: sPlayerbotAIConfig->permanentlyInWorldTime;
|
||||
|
||||
SetEventValue(charInfo.guid, "add", 1, add_time);
|
||||
SetEventValue(charInfo.guid, "logout", 0, 0);
|
||||
|
||||
Reference in New Issue
Block a user