diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-01-14 21:54:17 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-01-14 21:54:17 +0100 |
commit | 4cb3a9c6ca2cd3340db9327004a2d0ad1476371d (patch) | |
tree | 47229f707bd7decf6d6af9da474d50deb86098bf /src | |
parent | 8c48704b233ce851687f9e79f12bb2e9d83e74c8 (diff) |
Scripts/Icecrown Citadel: Fixed crash in Blood-Queen Lana'thel script
Closes #234
Signed-off-by: Shauren <shauren.trinity@gmail.com>
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); |