mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 18:51:29 +00:00
Fix for bots disappearing while idle (update)
This commit is contained in:
parent
444acb7c70
commit
bc79e28d49
28
zone/bot.cpp
28
zone/bot.cpp
@ -2013,12 +2013,20 @@ bool Bot::Process() {
|
|||||||
if(GetAppearance() == eaDead && GetHP() > 0)
|
if(GetAppearance() == eaDead && GetHP() > 0)
|
||||||
SetAppearance(eaStanding);
|
SetAppearance(eaStanding);
|
||||||
|
|
||||||
|
if (IsMoving()) {
|
||||||
|
ping_timer.Disable();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (!ping_timer.Enabled())
|
||||||
|
ping_timer.Start(BOT_KEEP_ALIVE_INTERVAL);
|
||||||
|
|
||||||
|
if (ping_timer.Check())
|
||||||
|
SentPositionPacket(0.0f, 0.0f, 0.0f, 0.0f, 0);
|
||||||
|
}
|
||||||
|
|
||||||
if (IsStunned() || IsMezzed())
|
if (IsStunned() || IsMezzed())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (!IsMoving() && ping_timer.Check())
|
|
||||||
SentPositionPacket(0.0f, 0.0f, 0.0f, 0.0f, 0);
|
|
||||||
|
|
||||||
// Bot AI
|
// Bot AI
|
||||||
AI_Process();
|
AI_Process();
|
||||||
return true;
|
return true;
|
||||||
@ -9082,18 +9090,4 @@ std::string Bot::CreateSayLink(Client* c, const char* message, const char* name)
|
|||||||
return saylink;
|
return saylink;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bot::StopMoving() {
|
|
||||||
if (!ping_timer.Enabled())
|
|
||||||
ping_timer.Start(8000);
|
|
||||||
|
|
||||||
Mob::StopMoving();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Bot::StopMoving(float new_heading) {
|
|
||||||
if (!ping_timer.Enabled())
|
|
||||||
ping_timer.Start(8000);
|
|
||||||
|
|
||||||
Mob::StopMoving(new_heading);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -44,6 +44,8 @@
|
|||||||
|
|
||||||
#define BOT_LEASH_DISTANCE 250000 // as DSq value (500 units)
|
#define BOT_LEASH_DISTANCE 250000 // as DSq value (500 units)
|
||||||
|
|
||||||
|
#define BOT_KEEP_ALIVE_INTERVAL 5000 // 5 seconds
|
||||||
|
|
||||||
extern WorldServer worldserver;
|
extern WorldServer worldserver;
|
||||||
|
|
||||||
const int BotAISpellRange = 100; // TODO: Write a method that calcs what the bot's spell range is based on spell, equipment, AA, whatever and replace this
|
const int BotAISpellRange = 100; // TODO: Write a method that calcs what the bot's spell range is based on spell, equipment, AA, whatever and replace this
|
||||||
@ -341,8 +343,6 @@ public:
|
|||||||
virtual int GetRunspeed() const { return (int)((float)_GetRunSpeed() * 1.785714f); }
|
virtual int GetRunspeed() const { return (int)((float)_GetRunSpeed() * 1.785714f); }
|
||||||
virtual void WalkTo(float x, float y, float z);
|
virtual void WalkTo(float x, float y, float z);
|
||||||
virtual void RunTo(float x, float y, float z);
|
virtual void RunTo(float x, float y, float z);
|
||||||
virtual void StopMoving();
|
|
||||||
virtual void StopMoving(float new_heading);
|
|
||||||
bool UseDiscipline(uint32 spell_id, uint32 target);
|
bool UseDiscipline(uint32 spell_id, uint32 target);
|
||||||
uint8 GetNumberNeedingHealedInGroup(uint8 hpr, bool includePets);
|
uint8 GetNumberNeedingHealedInGroup(uint8 hpr, bool includePets);
|
||||||
bool GetNeedsCured(Mob *tar);
|
bool GetNeedsCured(Mob *tar);
|
||||||
|
|||||||
@ -589,8 +589,8 @@ public:
|
|||||||
void MakeSpawnUpdateNoDelta(PlayerPositionUpdateServer_Struct* spu);
|
void MakeSpawnUpdateNoDelta(PlayerPositionUpdateServer_Struct* spu);
|
||||||
void MakeSpawnUpdate(PlayerPositionUpdateServer_Struct* spu);
|
void MakeSpawnUpdate(PlayerPositionUpdateServer_Struct* spu);
|
||||||
void SentPositionPacket(float dx, float dy, float dz, float dh, int anim, bool send_to_self = false);
|
void SentPositionPacket(float dx, float dy, float dz, float dh, int anim, bool send_to_self = false);
|
||||||
virtual void StopMoving();
|
void StopMoving();
|
||||||
virtual void StopMoving(float new_heading);
|
void StopMoving(float new_heading);
|
||||||
void SetSpawned() { spawned = true; };
|
void SetSpawned() { spawned = true; };
|
||||||
bool Spawned() { return spawned; };
|
bool Spawned() { return spawned; };
|
||||||
virtual bool ShouldISpawnFor(Client *c) { return true; }
|
virtual bool ShouldISpawnFor(Client *c) { return true; }
|
||||||
|
|||||||
@ -1075,9 +1075,6 @@ void Bot::WalkTo(float x, float y, float z)
|
|||||||
if (IsSitting())
|
if (IsSitting())
|
||||||
Stand();
|
Stand();
|
||||||
|
|
||||||
if (ping_timer.Enabled())
|
|
||||||
ping_timer.Disable();
|
|
||||||
|
|
||||||
Mob::WalkTo(x, y, z);
|
Mob::WalkTo(x, y, z);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1086,9 +1083,6 @@ void Bot::RunTo(float x, float y, float z)
|
|||||||
if (IsSitting())
|
if (IsSitting())
|
||||||
Stand();
|
Stand();
|
||||||
|
|
||||||
if (ping_timer.Enabled())
|
|
||||||
ping_timer.Disable();
|
|
||||||
|
|
||||||
Mob::RunTo(x, y, z);
|
Mob::RunTo(x, y, z);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user