mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-17 18:41:29 +00:00
[Bots] Adjust Bot Movement Speed (#3615)
# Notes - Bots were having a hard time keeping up with players. - Part of this was due to using walk until a certain distance. - Another part was their ctor only having `0.7f` run speed versus our Mob sanity check of `1.25f`. - We check movement stuff now before idle checks so bots are more likely to start moving earlier.
This commit is contained in:
parent
345dd442dd
commit
166c87c931
20
zone/bot.cpp
20
zone/bot.cpp
@ -651,7 +651,7 @@ NPCType *Bot::FillNPCTypeStruct(
|
|||||||
n->current_hp = hp;
|
n->current_hp = hp;
|
||||||
n->max_hp = hp;
|
n->max_hp = hp;
|
||||||
n->size = size;
|
n->size = size;
|
||||||
n->runspeed = 0.7f;
|
n->runspeed = 1.25f;
|
||||||
n->gender = gender;
|
n->gender = gender;
|
||||||
n->race = botRace;
|
n->race = botRace;
|
||||||
n->class_ = botClass;
|
n->class_ = botClass;
|
||||||
@ -2227,10 +2227,10 @@ void Bot::AI_Process()
|
|||||||
// OK TO IDLE
|
// OK TO IDLE
|
||||||
|
|
||||||
// Ok to idle
|
// Ok to idle
|
||||||
if (TryIdleChecks(fm_distance)) {
|
if (TryNonCombatMovementChecks(bot_owner, follow_mob, Goal)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (TryNonCombatMovementChecks(bot_owner, follow_mob, Goal)) {
|
if (TryIdleChecks(fm_distance)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (TryBardMovementCasts()) {
|
if (TryBardMovementCasts()) {
|
||||||
@ -2263,23 +2263,11 @@ bool Bot::TryNonCombatMovementChecks(Client* bot_owner, const Mob* follow_mob, g
|
|||||||
if ((!bot_owner->GetBotPulling() || PULLING_BOT) && (destination_distance > GetFollowDistance())) {
|
if ((!bot_owner->GetBotPulling() || PULLING_BOT) && (destination_distance > GetFollowDistance())) {
|
||||||
|
|
||||||
if (!IsRooted()) {
|
if (!IsRooted()) {
|
||||||
|
|
||||||
if (rest_timer.Enabled()) {
|
if (rest_timer.Enabled()) {
|
||||||
rest_timer.Disable();
|
rest_timer.Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool running = true;
|
RunTo(Goal.x, Goal.y, Goal.z);
|
||||||
|
|
||||||
if (destination_distance < GetFollowDistance() + BOT_FOLLOW_DISTANCE_WALK) {
|
|
||||||
running = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (running) {
|
|
||||||
RunTo(Goal.x, Goal.y, Goal.z);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
WalkTo(Goal.x, Goal.y, Goal.z);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -39,7 +39,6 @@
|
|||||||
|
|
||||||
constexpr uint32 BOT_FOLLOW_DISTANCE_DEFAULT = 184; // as DSq value (~13.565 units)
|
constexpr uint32 BOT_FOLLOW_DISTANCE_DEFAULT = 184; // as DSq value (~13.565 units)
|
||||||
constexpr uint32 BOT_FOLLOW_DISTANCE_DEFAULT_MAX = 2500; // as DSq value (50 units)
|
constexpr uint32 BOT_FOLLOW_DISTANCE_DEFAULT_MAX = 2500; // as DSq value (50 units)
|
||||||
constexpr uint32 BOT_FOLLOW_DISTANCE_WALK = 1000; // as DSq value (~31.623 units)
|
|
||||||
|
|
||||||
constexpr uint32 BOT_KEEP_ALIVE_INTERVAL = 5000; // 5 seconds
|
constexpr uint32 BOT_KEEP_ALIVE_INTERVAL = 5000; // 5 seconds
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user