aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/scripts/World/npcs_special.cpp24
1 files changed, 7 insertions, 17 deletions
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index c2994777fc2..412626d29c8 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -1673,13 +1673,11 @@ public:
uint32 SpellTimer;
bool IsViper;
- bool Spawn;
void EnterCombat(Unit * /*who*/) {}
void Reset()
{
- Spawn = true;
SpellTimer = 0;
CreatureInfo const *Info = me->GetCreatureInfo();
@@ -1694,6 +1692,12 @@ public:
uint32 delta = (rand() % 7) * 100;
me->SetStatFloatValue(UNIT_FIELD_BASEATTACKTIME, float(Info->baseattacktime + delta));
me->SetStatFloatValue(UNIT_FIELD_RANGED_ATTACK_POWER , float(Info->attackpower));
+
+ // Start attacking attacker of owner on first ai update after spawn - move in line of sight may choose better target
+ if (!me->getVictim() && me->isSummon())
+ if (Unit * Owner = CAST_SUM(me)->GetSummoner())
+ if (Owner->getAttackerForHelper())
+ AttackStart(Owner->getAttackerForHelper());
}
//Redefined for random target selection:
@@ -1719,22 +1723,8 @@ public:
void UpdateAI(const uint32 diff)
{
- if (Spawn)
- {
- Spawn = false;
- // Start attacking attacker of owner on first ai update after spawn - move in line of sight may choose better target
- if (!me->getVictim() && me->isSummon())
- if (Unit * Owner = CAST_SUM(me)->GetSummoner())
- if (Owner->getAttackerForHelper())
- AttackStart(Owner->getAttackerForHelper());
- }
-
- if (!me->getVictim())
- {
- if (me->isInCombat())
- DoStopAttack();
+ if (!UpdateVictim())
return;
- }
if (SpellTimer <= diff)
{