aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-01-14 21:54:17 +0100
committerShauren <shauren.trinity@gmail.com>2011-01-14 21:54:17 +0100
commit4cb3a9c6ca2cd3340db9327004a2d0ad1476371d (patch)
tree47229f707bd7decf6d6af9da474d50deb86098bf /src
parent8c48704b233ce851687f9e79f12bb2e9d83e74c8 (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.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);