mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 02:25:38 +01:00
Hellfire Ramparts - Code cleanup & Re-write Nazan a little bit
--HG-- branch : trunk
This commit is contained in:
@@ -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
|
||||
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,
|
||||
};
|
||||
|
||||
#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 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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user