mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-15 20:51:29 +00:00
Eliminated Rogue Bot twirling combat behavior.
This commit is contained in:
parent
31de6a63cc
commit
3d54a4edcb
@ -1,5 +1,8 @@
|
|||||||
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
EQEMu Changelog (Started on Sept 24, 2003 15:50)
|
||||||
-------------------------------------------------------
|
-------------------------------------------------------
|
||||||
|
== 01/26/2017 ==
|
||||||
|
Uleat: Change rogue bot behavior to eliminate twirling combat. They will only get behind the mob if they are not the mob's target or if the mob is feared or fleeing. This may lower rogue bot dps a small fraction..but, is more in-line with realistic game mechanics.
|
||||||
|
|
||||||
== 01/17/2017 ==
|
== 01/17/2017 ==
|
||||||
Mackal: Combat Revamp
|
Mackal: Combat Revamp
|
||||||
- This change brings melee combat into line with how combat is done on live.
|
- This change brings melee combat into line with how combat is done on live.
|
||||||
|
|||||||
36
zone/bot.cpp
36
zone/bot.cpp
@ -2305,24 +2305,26 @@ void Bot::AI_Process() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(AI_movement_timer->Check()) {
|
if(AI_movement_timer->Check()) {
|
||||||
if(!IsMoving() && GetClass() == ROGUE && !BehindMob(GetTarget(), GetX(), GetY())) {
|
if (!IsMoving()) {
|
||||||
// Move the rogue to behind the mob
|
if (GetClass() == ROGUE && (GetTarget() != this || GetTarget()->IsFeared()) && !BehindMob(GetTarget(), GetX(), GetY())) {
|
||||||
float newX = 0;
|
// Move the rogue to behind the mob
|
||||||
float newY = 0;
|
float newX = 0;
|
||||||
float newZ = 0;
|
float newY = 0;
|
||||||
if(PlotPositionAroundTarget(GetTarget(), newX, newY, newZ)) {
|
float newZ = 0;
|
||||||
CalculateNewPosition2(newX, newY, newZ, GetRunspeed());
|
if (PlotPositionAroundTarget(GetTarget(), newX, newY, newZ)) {
|
||||||
return;
|
CalculateNewPosition2(newX, newY, newZ, GetRunspeed());
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
else if (GetClass() != ROGUE && (DistanceSquaredNoZ(m_Position, GetTarget()->GetPosition()) < GetTarget()->GetSize())) {
|
||||||
else if(!IsMoving() && GetClass() != ROGUE && (DistanceSquaredNoZ(m_Position, GetTarget()->GetPosition()) < GetTarget()->GetSize())) {
|
// If we are not a rogue trying to backstab, let's try to adjust our melee range so we don't appear to be bunched up
|
||||||
// If we are not a rogue trying to backstab, let's try to adjust our melee range so we don't appear to be bunched up
|
float newX = 0;
|
||||||
float newX = 0;
|
float newY = 0;
|
||||||
float newY = 0;
|
float newZ = 0;
|
||||||
float newZ = 0;
|
if (PlotPositionAroundTarget(GetTarget(), newX, newY, newZ, false) && GetArchetype() != ARCHETYPE_CASTER) {
|
||||||
if(PlotPositionAroundTarget(GetTarget(), newX, newY, newZ, false) && GetArchetype() != ARCHETYPE_CASTER) {
|
CalculateNewPosition2(newX, newY, newZ, GetRunspeed());
|
||||||
CalculateNewPosition2(newX, newY, newZ, GetRunspeed());
|
return;
|
||||||
return;
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user