diff options
-rw-r--r-- | src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp | 142 |
1 files changed, 73 insertions, 69 deletions
diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp index 100654b34d5..122d9d59ed4 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp @@ -23,32 +23,43 @@ EndScriptData */ #include "ScriptPCH.h" -#define SPELL_FIREBALL DUNGEON_MODE(34653, 36920) -#define SPELL_CONE_OF_FIRE DUNGEON_MODE(30926, 36921) -#define SPELL_SUMMON_LIQUID_FIRE DUNGEON_MODE(23971, 30928) -#define SPELL_BELLOWING_ROAR 39427 -#define SPELL_REVENGE DUNGEON_MODE(19130, 40392) -#define SPELL_KIDNEY_SHOT 30621 -#define SPELL_FIRE_NOVA_VISUAL 19823 - -#define ENTRY_HELLFIRE_SENTRY 17517 -#define ENTRY_VAZRUDEN_HERALD 17307 -#define ENTRY_VAZRUDEN 17537 -#define ENTRY_NAZAN 17536 -#define ENTRY_LIQUID_FIRE 22515 -#define ENTRY_REINFORCED_FEL_IRON_CHEST DUNGEON_MODE(185168, 185169) - -#define SAY_INTRO -1543017 -#define SAY_WIPE -1543018 -#define SAY_AGGRO_1 -1543019 -#define SAY_AGGRO_2 -1543020 -#define SAY_AGGRO_3 -1543021 -#define SAY_KILL_1 -1543022 -#define SAY_KILL_2 -1543023 -#define SAY_DIE -1543024 -#define EMOTE -1543025 - -#define PATH_ENTRY 2081 +enum eSpells +{ + SPELL_FIREBALL = 34653, + SPELL_FIREBALL_H = 36920, + SPELL_CONE_OF_FIRE = 30926, + SPELL_CONE_OF_FIRE_H = 36921, + SPELL_SUMMON_LIQUID_FIRE = 23971, + SPELL_SUMMON_LIQUID_FIRE_H = 30928, + SPELL_BELLOWING_ROAR = 39427, + SPELL_REVENGE = 19130, + SPELL_REVENGE_H = 40392, + SPELL_KIDNEY_SHOT = 30621, + SPELL_FIRE_NOVA_VISUAL = 19823, +}; + +enum eUnits +{ + ENTRY_HELLFIRE_SENTRY = 17517, + ENTRY_VAZRUDEN_HERALD = 17307, + ENTRY_VAZRUDEN = 17537, + ENTRY_NAZAN = 17536, + ENTRY_LIQUID_FIRE = 22515, + ENTRY_REINFORCED_FEL_IRON_CHEST = 185168, + ENTRY_REINFORCED_FEL_IRON_CHEST_H = 185169, +}; +enum eSays +{ + SAY_INTRO = -1543017, + SAY_WIPE = -1543018, + SAY_AGGRO_1 = -1543019, + SAY_AGGRO_2 = -1543020, + SAY_AGGRO_3 = -1543021, + SAY_KILL_1 = -1543022, + SAY_KILL_2 = -1543023, + SAY_DIE = -1543024, + EMOTE = -1543025, +}; const float VazrudenMiddle[3] = {-1406.5, 1746.5, 81.2}; const float VazrudenRing[2][3] = @@ -59,10 +70,10 @@ const float VazrudenRing[2][3] = struct boss_nazanAI : public ScriptedAI { - boss_nazanAI(Creature *c) : ScriptedAI(c) + boss_nazanAI(Creature* pCreature) : ScriptedAI(pCreature) { VazrudenGUID = 0; - flight = true; + flight = true; } uint32 Fireball_Timer; @@ -70,7 +81,6 @@ struct boss_nazanAI : public ScriptedAI uint32 BellowingRoar_Timer; uint32 Fly_Timer; uint32 Turn_Timer; - uint32 UnsummonCheck; bool flight; uint64 VazrudenGUID; SpellEntry *liquid_fire; @@ -80,8 +90,7 @@ struct boss_nazanAI : public ScriptedAI Fireball_Timer = 4000; Fly_Timer = 45000; Turn_Timer = 0; - UnsummonCheck = 5000; - } + } void EnterCombat(Unit* /*who*/) {} @@ -91,7 +100,7 @@ struct boss_nazanAI : public ScriptedAI { summoned->SetLevel(me->getLevel()); summoned->setFaction(me->getFaction()); - summoned->CastSpell(summoned,SPELL_SUMMON_LIQUID_FIRE,true); + summoned->CastSpell(summoned, DUNGEON_MODE(SPELL_SUMMON_LIQUID_FIRE,SPELL_SUMMON_LIQUID_FIRE_H),true); summoned->CastSpell(summoned,SPELL_FIRE_NOVA_VISUAL,true); } } @@ -105,18 +114,12 @@ struct boss_nazanAI : public ScriptedAI void UpdateAI(const uint32 diff) { if (!UpdateVictim()) - { - if (UnsummonCheck < diff && me->isAlive()) - me->DisappearAndDie(); - else - UnsummonCheck -= diff; return; - } if (Fireball_Timer <= diff) { - if (Unit *victim = SelectUnit(SELECT_TARGET_RANDOM,0)) - DoCast(victim, SPELL_FIREBALL, true); + if (Unit* pVictim = SelectUnit(SELECT_TARGET_RANDOM,0)) + DoCast(pVictim, DUNGEON_MODE(SPELL_FIREBALL, SPELL_FIREBALL_H), true); Fireball_Timer = urand(4000,7000); } else Fireball_Timer -= diff; @@ -127,12 +130,12 @@ struct boss_nazanAI : public ScriptedAI { flight = false; BellowingRoar_Timer = 6000; - ConeOfFire_Timer = 12000; + ConeOfFire_Timer = 12000; me->RemoveUnitMovementFlag(MOVEMENTFLAG_LEVITATING); me->AddUnitMovementFlag(MOVEMENTFLAG_WALK_MODE); me->GetMotionMaster()->Clear(); - if (Unit *victim = SelectUnit(SELECT_TARGET_NEAREST,0)) - me->AI()->AttackStart(victim); + if (Unit* pVictim = SelectUnit(SELECT_TARGET_NEAREST,0)) + me->AI()->AttackStart(pVictim); DoStartMovement(me->getVictim()); DoScriptText(EMOTE, me); return; @@ -141,7 +144,7 @@ struct boss_nazanAI : public ScriptedAI if (Turn_Timer <= diff) { uint32 waypoint = (Fly_Timer/10000)%2; - if (me->IsWithinDist3d(VazrudenRing[waypoint][0],VazrudenRing[waypoint][1],VazrudenRing[waypoint][2], 5)) + if (!me->IsWithinDist3d(VazrudenRing[waypoint][0],VazrudenRing[waypoint][1],VazrudenRing[waypoint][2], 5)) me->GetMotionMaster()->MovePoint(0,VazrudenRing[waypoint][0],VazrudenRing[waypoint][1],VazrudenRing[waypoint][2]); Turn_Timer = 10000; } else Turn_Timer -= diff; @@ -150,7 +153,7 @@ struct boss_nazanAI : public ScriptedAI { if (ConeOfFire_Timer <= diff) { - DoCast(me, SPELL_CONE_OF_FIRE); + DoCast(me, DUNGEON_MODE(SPELL_CONE_OF_FIRE, SPELL_CONE_OF_FIRE_H)); ConeOfFire_Timer = 12000; Fireball_Timer = 4000; } else ConeOfFire_Timer -= diff; @@ -169,7 +172,7 @@ struct boss_nazanAI : public ScriptedAI struct boss_vazrudenAI : public ScriptedAI { - boss_vazrudenAI(Creature *c) : ScriptedAI(c) + boss_vazrudenAI(Creature* pCreature) : ScriptedAI(pCreature) { } @@ -220,7 +223,7 @@ struct boss_vazrudenAI : public ScriptedAI if (Revenge_Timer <= diff) { if (Unit *victim = me->getVictim()) - DoCast(victim, SPELL_REVENGE); + DoCast(victim, DUNGEON_MODE(SPELL_REVENGE,SPELL_REVENGE_H)); Revenge_Timer = 5000; } else Revenge_Timer -= diff; @@ -230,7 +233,7 @@ struct boss_vazrudenAI : public ScriptedAI struct boss_vazruden_the_heraldAI : public ScriptedAI { - boss_vazruden_the_heraldAI(Creature *c) : ScriptedAI(c) + boss_vazruden_the_heraldAI(Creature* pCreature) : ScriptedAI(pCreature) { summoned = false; sentryDown = false; @@ -251,8 +254,7 @@ struct boss_vazruden_the_heraldAI : public ScriptedAI phase = 0; waypoint = 0; check = 0; - UnsummonAdds(); - me->GetMotionMaster()->MovePath(PATH_ENTRY, true); + UnsummonAdds(); } void UnsummonAdds() @@ -288,15 +290,15 @@ struct boss_vazruden_the_heraldAI : public ScriptedAI { if (Creature* Vazruden = me->SummonCreature(ENTRY_VAZRUDEN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000)) VazrudenGUID = Vazruden->GetGUID(); - if (Creature* Nazan = me->SummonCreature(ENTRY_NAZAN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000)) - NazanGUID = Nazan->GetGUID(); + if (Creature* Nazan = me->SummonCreature(ENTRY_NAZAN,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,TEMPSUMMON_CORPSE_TIMED_DESPAWN,6000000)) + NazanGUID = Nazan->GetGUID(); summoned = true; me->SetVisibility(VISIBILITY_OFF); me->addUnitState(UNIT_STAT_ROOT); } } - void EnterCombat(Unit * /*who*/) + void EnterCombat(Unit* /*who*/) { if (phase == 0) { @@ -306,27 +308,29 @@ struct boss_vazruden_the_heraldAI : public ScriptedAI } } - void JustSummoned(Creature *summoned) + void JustSummoned(Creature* pSummoned) { - if (!summoned) return; - Unit *victim = me->getVictim(); - if (summoned->GetEntry() == ENTRY_NAZAN) + if (!pSummoned) + return; + Unit* pVictim = me->getVictim(); + if (pSummoned->GetEntry() == ENTRY_NAZAN) { - CAST_AI(boss_nazanAI, summoned->AI())->VazrudenGUID = VazrudenGUID; - summoned->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING); - summoned->SetSpeed(MOVE_FLIGHT, 2.5); - if (victim) - AttackStartNoMove(victim); + CAST_AI(boss_nazanAI, pSummoned->AI())->VazrudenGUID = VazrudenGUID; + pSummoned->AddUnitMovementFlag(MOVEMENTFLAG_LEVITATING); + pSummoned->SetSpeed(MOVE_FLIGHT, 2.5); + if (pVictim) + AttackStartNoMove(pVictim); } - else if (victim) - summoned->AI()->AttackStart(victim); + else + if (pVictim) + pSummoned->AI()->AttackStart(pVictim); } - void SentryDownBy(Unit* killer) + void SentryDownBy(Unit* pKiller) { if (sentryDown) { - AttackStartNoMove(killer); + AttackStartNoMove(pKiller); sentryDown = false; } else @@ -375,9 +379,9 @@ struct boss_vazruden_the_heraldAI : public ScriptedAI } else { - me->SummonGameObject(ENTRY_REINFORCED_FEL_IRON_CHEST,VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,0,0,0,0,0); + me->SummonGameObject(DUNGEON_MODE(ENTRY_REINFORCED_FEL_IRON_CHEST, ENTRY_REINFORCED_FEL_IRON_CHEST_H),VazrudenMiddle[0],VazrudenMiddle[1],VazrudenMiddle[2],0,0,0,0,0,0); me->SetLootRecipient(NULL); // don't think this is necessary.. - me->Kill(me); + //me->Kill(me); } check = 2000; } else check -= diff; @@ -388,7 +392,7 @@ struct boss_vazruden_the_heraldAI : public ScriptedAI struct mob_hellfire_sentryAI : public ScriptedAI { - mob_hellfire_sentryAI(Creature *c) : ScriptedAI(c) {} + mob_hellfire_sentryAI(Creature* pCreature) : ScriptedAI(pCreature) {} uint32 KidneyShot_Timer; |