aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp29
1 files changed, 17 insertions, 12 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
index f894a4f97c6..cfdb7f05a05 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp
@@ -229,7 +229,8 @@ class boss_blood_queen_lana_thel : public CreatureScript
me->RemoveByteFlag(UNIT_FIELD_BYTES_1, 3, 0x01);
me->SetFlying(false);
me->SetReactState(REACT_AGGRESSIVE);
- AttackStart(me->getVictim());
+ if (Unit *victim = me->SelectVictim())
+ AttackStart(victim);
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500, EVENT_GROUP_CANCELLABLE);
break;
default:
@@ -266,19 +267,23 @@ class boss_blood_queen_lana_thel : public CreatureScript
break;
case EVENT_BLOOD_MIRROR:
{
- Player* newOfftank = SelectRandomTarget(true);
- if (offtank != newOfftank)
+ // victim can be NULL when this is processed in the same update tick as EVENT_AIR_PHASE
+ if (me->getVictim())
{
- offtank = newOfftank;
- if (offtank)
+ Player* newOfftank = SelectRandomTarget(true);
+ if (offtank != newOfftank)
{
- offtank->CastSpell(me->getVictim(), SPELL_BLOOD_MIRROR_DAMAGE, true);
- me->getVictim()->CastSpell(offtank, SPELL_BLOOD_MIRROR_DUMMY, true);
- DoCastVictim(SPELL_BLOOD_MIRROR_VISUAL);
- if (Item* shadowsEdge = offtank->GetWeaponForAttack(BASE_ATTACK, true))
- if (!offtank->HasAura(SPELL_THIRST_QUENCHED) && shadowsEdge->GetEntry() == ITEM_SHADOW_S_EDGE && !offtank->HasAura(SPELL_GUSHING_WOUND))
- offtank->CastSpell(offtank, SPELL_GUSHING_WOUND, true);
-
+ offtank = newOfftank;
+ if (offtank)
+ {
+ offtank->CastSpell(me->getVictim(), SPELL_BLOOD_MIRROR_DAMAGE, true);
+ me->getVictim()->CastSpell(offtank, SPELL_BLOOD_MIRROR_DUMMY, true);
+ DoCastVictim(SPELL_BLOOD_MIRROR_VISUAL);
+ if (Item* shadowsEdge = offtank->GetWeaponForAttack(BASE_ATTACK, true))
+ if (!offtank->HasAura(SPELL_THIRST_QUENCHED) && shadowsEdge->GetEntry() == ITEM_SHADOW_S_EDGE && !offtank->HasAura(SPELL_GUSHING_WOUND))
+ offtank->CastSpell(offtank, SPELL_GUSHING_WOUND, true);
+
+ }
}
}
events.ScheduleEvent(EVENT_BLOOD_MIRROR, 2500, EVENT_GROUP_CANCELLABLE);