Core/Pit of Saron: Fixed crash in spell_exploding_orb_hasty_grow spell script, fixed player name in Mark of Rimefang announcement

This commit is contained in:
Shauren
2011-01-03 22:52:22 +01:00
parent 64ea69a66d
commit 77af7ba851
2 changed files with 15 additions and 12 deletions
@@ -599,12 +599,14 @@ class spell_exploding_orb_hasty_grow : public SpellScriptLoader
{ {
if (GetStackAmount() == 15) if (GetStackAmount() == 15)
{ {
GetTarget()->CastSpell(GetTarget(), SPELL_EXPLOSIVE_BARRAGE_DAMAGE, false); Unit* target = GetTarget(); // store target because aura gets removed
GetTarget()->RemoveAurasDueToSpell(SPELL_HASTY_GROW); PreventDefaultAction();
GetTarget()->RemoveAurasDueToSpell(SPELL_AUTO_GROW); target->CastSpell(target, SPELL_EXPLOSIVE_BARRAGE_DAMAGE, false);
GetTarget()->RemoveAurasDueToSpell(SPELL_EXPLODING_ORB); target->RemoveAurasDueToSpell(SPELL_HASTY_GROW);
if (Creature* creature = GetTarget()->ToCreature()) target->RemoveAurasDueToSpell(SPELL_AUTO_GROW);
creature->DespawnOrUnsummon(1000); target->RemoveAurasDueToSpell(SPELL_EXPLODING_ORB);
if (Creature* creature = target->ToCreature())
creature->DespawnOrUnsummon();
} }
} }
@@ -219,12 +219,11 @@ class boss_tyrannus : public CreatureScript
case EVENT_COMBAT_START: case EVENT_COMBAT_START:
if (Creature* rimefang = me->GetCreature(*me, instance->GetData64(DATA_RIMEFANG))) if (Creature* rimefang = me->GetCreature(*me, instance->GetData64(DATA_RIMEFANG)))
rimefang->AI()->DoAction(ACTION_START_RIMEFANG); //set rimefang also infight rimefang->AI()->DoAction(ACTION_START_RIMEFANG); //set rimefang also infight
events.SetPhase(PHASE_COMBAT); events.SetPhase(PHASE_COMBAT);
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
me->SetReactState(REACT_AGGRESSIVE); me->SetReactState(REACT_AGGRESSIVE);
DoCast(me, SPELL_FULL_HEAL); DoCast(me, SPELL_FULL_HEAL);
me->SetInCombatWithZone(); DoZoneInCombat();
events.ScheduleEvent(EVENT_OVERLORD_BRAND, urand(5000, 7000)); events.ScheduleEvent(EVENT_OVERLORD_BRAND, urand(5000, 7000));
events.ScheduleEvent(EVENT_FORCEFUL_SMASH, urand(14000, 16000)); events.ScheduleEvent(EVENT_FORCEFUL_SMASH, urand(14000, 16000));
events.ScheduleEvent(EVENT_MARK_OF_RIMEFANG, urand(25000, 27000)); events.ScheduleEvent(EVENT_MARK_OF_RIMEFANG, urand(25000, 27000));
@@ -246,9 +245,11 @@ class boss_tyrannus : public CreatureScript
break; break;
case EVENT_MARK_OF_RIMEFANG: case EVENT_MARK_OF_RIMEFANG:
DoScriptText(SAY_MARK_RIMEFANG_1, me); DoScriptText(SAY_MARK_RIMEFANG_1, me);
DoScriptText(SAY_MARK_RIMEFANG_2, me); if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true))
if (Unit* target = SelectUnit(SELECT_TARGET_RANDOM, 0)) {
DoScriptText(SAY_MARK_RIMEFANG_2, me, target);
DoCast(target, SPELL_MARK_OF_RIMEFANG); DoCast(target, SPELL_MARK_OF_RIMEFANG);
}
events.ScheduleEvent(EVENT_MARK_OF_RIMEFANG, urand(24000, 26000)); events.ScheduleEvent(EVENT_MARK_OF_RIMEFANG, urand(24000, 26000));
break; break;
} }
@@ -297,7 +298,7 @@ class boss_rimefang : public CreatureScript
if (actionId == ACTION_START_RIMEFANG) if (actionId == ACTION_START_RIMEFANG)
{ {
_events.SetPhase(PHASE_COMBAT); _events.SetPhase(PHASE_COMBAT);
me->SetInCombatWithZone(); DoZoneInCombat();
_events.ScheduleEvent(EVENT_MOVE_NEXT, 500, 0, PHASE_COMBAT); _events.ScheduleEvent(EVENT_MOVE_NEXT, 500, 0, PHASE_COMBAT);
_events.ScheduleEvent(EVENT_ICY_BLAST, 15000, 0, PHASE_COMBAT); _events.ScheduleEvent(EVENT_ICY_BLAST, 15000, 0, PHASE_COMBAT);
} }