mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-12 05:21:29 +00:00
Pull out forced movement from push to it's own function
Had to pull this out so we could process it before mez/stun
This commit is contained in:
parent
5c87b8152d
commit
876335bb54
@ -581,6 +581,7 @@ public:
|
|||||||
inline void Teleport(glm::vec3 NewPosition) { m_Position.x = NewPosition.x; m_Position.y = NewPosition.y;
|
inline void Teleport(glm::vec3 NewPosition) { m_Position.x = NewPosition.x; m_Position.y = NewPosition.y;
|
||||||
m_Position.z = NewPosition.z; };
|
m_Position.z = NewPosition.z; };
|
||||||
void TryMoveAlong(float distance, float angle, bool send = true);
|
void TryMoveAlong(float distance, float angle, bool send = true);
|
||||||
|
void ProcessForcedMovement();
|
||||||
|
|
||||||
//AI
|
//AI
|
||||||
static uint32 GetLevelCon(uint8 mylevel, uint8 iOtherLevel);
|
static uint32 GetLevelCon(uint8 mylevel, uint8 iOtherLevel);
|
||||||
|
|||||||
@ -950,17 +950,12 @@ void Client::AI_Process()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Mob::AI_Process() {
|
void Mob::ProcessForcedMovement()
|
||||||
if (!IsAIControlled())
|
{
|
||||||
return;
|
|
||||||
|
|
||||||
if (!(AI_think_timer->Check() || attack_timer.Check(false)))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// we are being pushed, we will hijack this movement timer
|
// we are being pushed, we will hijack this movement timer
|
||||||
// this also needs to be done before casting to have a chance to interrupt
|
// this also needs to be done before casting to have a chance to interrupt
|
||||||
// this flag won't be set if the mob can't be pushed (rooted etc)
|
// this flag won't be set if the mob can't be pushed (rooted etc)
|
||||||
if (ForcedMovement && AI_movement_timer->Check()) {
|
if (AI_movement_timer->Check()) {
|
||||||
bool bPassed = true;
|
bool bPassed = true;
|
||||||
auto z_off = GetZOffset();
|
auto z_off = GetZOffset();
|
||||||
glm::vec3 normal;
|
glm::vec3 normal;
|
||||||
@ -1019,6 +1014,15 @@ void Mob::AI_Process() {
|
|||||||
m_Delta = glm::vec4(); // well, we failed to find a spot to be forced to, lets give up
|
m_Delta = glm::vec4(); // well, we failed to find a spot to be forced to, lets give up
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Mob::AI_Process() {
|
||||||
|
if (!IsAIControlled())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!(AI_think_timer->Check() || attack_timer.Check(false)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
if (IsCasting())
|
if (IsCasting())
|
||||||
return;
|
return;
|
||||||
|
|||||||
@ -762,6 +762,10 @@ bool NPC::Process()
|
|||||||
reface_timer->Disable();
|
reface_timer->Disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// needs to be done before mez and stun
|
||||||
|
if (ForcedMovement)
|
||||||
|
ProcessForcedMovement();
|
||||||
|
|
||||||
if (IsMezzed())
|
if (IsMezzed())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user