diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp | 29 |
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); |