mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-20 17:27:36 +01:00
Scripts/Ulduar: convert all script_texts to creature_text from this zone
This commit is contained in:
@@ -76,16 +76,12 @@ enum AuriayaEvents
|
||||
|
||||
enum AuriayaYells
|
||||
{
|
||||
// Yells
|
||||
SAY_AGGRO = -1603050,
|
||||
SAY_SLAY_1 = -1603051,
|
||||
SAY_SLAY_2 = -1603052,
|
||||
SAY_DEATH = -1603053,
|
||||
SAY_BERSERK = -1603054,
|
||||
|
||||
// Emotes
|
||||
EMOTE_FEAR = -1603055,
|
||||
EMOTE_DEFENDER = -1603056,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_SLAY = 1,
|
||||
SAY_DEATH = 2,
|
||||
SAY_BERSERK = 3,
|
||||
EMOTE_FEAR = 4,
|
||||
EMOTE_DEFENDER = 5
|
||||
};
|
||||
|
||||
enum AuriayaActions
|
||||
@@ -121,7 +117,7 @@ class boss_auriaya : public CreatureScript
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_EnterCombat();
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
|
||||
events.ScheduleEvent(EVENT_SCREECH, urand(45000, 65000));
|
||||
events.ScheduleEvent(EVENT_BLAST, urand(20000, 25000));
|
||||
@@ -131,9 +127,10 @@ class boss_auriaya : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_BERSERK, 600000);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summoned)
|
||||
@@ -206,8 +203,8 @@ class boss_auriaya : public CreatureScript
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
Talk(SAY_DEATH);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 const diff)
|
||||
@@ -229,7 +226,7 @@ class boss_auriaya : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_SCREECH, urand(40000, 60000));
|
||||
break;
|
||||
case EVENT_TERRIFYING:
|
||||
DoScriptText(EMOTE_FEAR, me);
|
||||
Talk(EMOTE_FEAR);
|
||||
DoCast(SPELL_TERRIFYING_SCREECH);
|
||||
events.ScheduleEvent(EVENT_TERRIFYING, urand(20000, 30000));
|
||||
break;
|
||||
@@ -238,7 +235,7 @@ class boss_auriaya : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_BLAST, urand(25000, 35000));
|
||||
break;
|
||||
case EVENT_DEFENDER:
|
||||
DoScriptText(EMOTE_DEFENDER, me);
|
||||
Talk(EMOTE_DEFENDER);
|
||||
DoCast(SPELL_DEFENDER_TRIGGER);
|
||||
if (Creature* trigger = me->FindNearestCreature(NPC_FERAL_DEFENDER_TRIGGER, 15.0f, true))
|
||||
DoCast(trigger, SPELL_ACTIVATE_DEFENDER, true);
|
||||
@@ -262,7 +259,7 @@ class boss_auriaya : public CreatureScript
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoCast(me, SPELL_BERSERK, true);
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Talk(SAY_BERSERK);
|
||||
events.CancelEvent(EVENT_BERSERK);
|
||||
break;
|
||||
}
|
||||
@@ -296,17 +293,17 @@ class npc_auriaya_seeping_trigger : public CreatureScript
|
||||
instance = me->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Reset()
|
||||
{
|
||||
me->DespawnOrUnsummon(600000);
|
||||
DoCast(me, SPELL_SEEPING_ESSENCE);
|
||||
}
|
||||
void Reset()
|
||||
{
|
||||
me->DespawnOrUnsummon(600000);
|
||||
DoCast(me, SPELL_SEEPING_ESSENCE);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 const /*diff*/)
|
||||
{
|
||||
if (instance->GetBossState(BOSS_AURIAYA) != IN_PROGRESS)
|
||||
me->DespawnOrUnsummon();
|
||||
}
|
||||
void UpdateAI(uint32 const /*diff*/)
|
||||
{
|
||||
if (instance->GetBossState(BOSS_AURIAYA) != IN_PROGRESS)
|
||||
me->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
private:
|
||||
InstanceScript* instance;
|
||||
|
||||
@@ -141,9 +141,6 @@ enum Vehicles
|
||||
VEHICLE_DEMOLISHER = 33109,
|
||||
};
|
||||
|
||||
#define EMOTE_PURSUE "Flame Leviathan pursues $N."
|
||||
#define EMOTE_OVERLOAD "Flame Leviathan's circuits overloaded."
|
||||
#define EMOTE_REPAIR "Automatic repair sequence initiated."
|
||||
#define DATA_SHUTOUT 29112912 // 2911, 2912 are achievement IDs
|
||||
#define DATA_ORBIT_ACHIEVEMENTS 1
|
||||
#define VEHICLE_SPAWNS 5
|
||||
@@ -151,22 +148,21 @@ enum Vehicles
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = -1603060,
|
||||
SAY_SLAY = -1603061,
|
||||
SAY_DEATH = -1603062,
|
||||
SAY_TARGET_1 = -1603063,
|
||||
SAY_TARGET_2 = -1603064,
|
||||
SAY_TARGET_3 = -1603065,
|
||||
SAY_HARDMODE = -1603066,
|
||||
SAY_TOWER_NONE = -1603067,
|
||||
SAY_TOWER_FROST = -1603068,
|
||||
SAY_TOWER_FLAME = -1603069,
|
||||
SAY_TOWER_NATURE = -1603070,
|
||||
SAY_TOWER_STORM = -1603071,
|
||||
SAY_PLAYER_RIDING = -1603072,
|
||||
SAY_OVERLOAD_1 = -1603073,
|
||||
SAY_OVERLOAD_2 = -1603074,
|
||||
SAY_OVERLOAD_3 = -1603075,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_SLAY = 1,
|
||||
SAY_DEATH = 2,
|
||||
SAY_TARGET = 3,
|
||||
SAY_HARDMODE = 4,
|
||||
SAY_TOWER_NONE = 5,
|
||||
SAY_TOWER_FROST = 6,
|
||||
SAY_TOWER_FLAME = 7,
|
||||
SAY_TOWER_NATURE = 8,
|
||||
SAY_TOWER_STORM = 9,
|
||||
SAY_PLAYER_RIDING = 10,
|
||||
SAY_OVERLOAD = 11,
|
||||
EMOTE_PURSUE = 12,
|
||||
EMOTE_OVERLOAD = 13,
|
||||
EMOTE_REPAIR = 14
|
||||
};
|
||||
|
||||
enum MiscellanousData
|
||||
@@ -179,15 +175,8 @@ enum MiscellanousData
|
||||
FOUR_SEATS = 4,
|
||||
};
|
||||
|
||||
Position const Center[]=
|
||||
{
|
||||
{354.8771f, -12.90240f, 409.803650f, 0.0f},
|
||||
};
|
||||
|
||||
Position const InfernoStart[]=
|
||||
{
|
||||
{390.93f, -13.91f, 409.81f, 0.0f},
|
||||
};
|
||||
Position const Center = { 354.8771f, -12.90240f, 409.803650f, 0.0f };
|
||||
Position const InfernoStart = { 390.93f, -13.91f, 409.81f, 0.0f };
|
||||
|
||||
Position const PosSiege[VEHICLE_SPAWNS] =
|
||||
{
|
||||
@@ -320,12 +309,12 @@ class boss_flame_leviathan : public CreatureScript
|
||||
}
|
||||
|
||||
if (!towerOfLife && !towerOfFrost && !towerOfFlames && !towerOfStorms)
|
||||
DoScriptText(SAY_TOWER_NONE, me);
|
||||
Talk(SAY_TOWER_NONE);
|
||||
else
|
||||
DoScriptText(SAY_HARDMODE, me);
|
||||
Talk(SAY_HARDMODE);
|
||||
}
|
||||
else
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
@@ -334,7 +323,7 @@ class boss_flame_leviathan : public CreatureScript
|
||||
// Set Field Flags 67108928 = 64 | 67108864 = UNIT_FLAG_UNK_6 | UNIT_FLAG_SKINNABLE
|
||||
// Set DynFlags 12
|
||||
// Set NPCFlags 0
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
}
|
||||
|
||||
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
|
||||
@@ -397,7 +386,7 @@ class boss_flame_leviathan : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_PURSUE:
|
||||
DoScriptText(RAND(SAY_TARGET_1, SAY_TARGET_2, SAY_TARGET_3), me);
|
||||
Talk(SAY_TARGET);
|
||||
DoCast(SPELL_PURSUED); // Will select target in spellscript
|
||||
events.ScheduleEvent(EVENT_PURSUE, 35*IN_MILLISECONDS);
|
||||
break;
|
||||
@@ -420,8 +409,8 @@ class boss_flame_leviathan : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_SUMMON, 2*IN_MILLISECONDS);
|
||||
break;
|
||||
case EVENT_SHUTDOWN:
|
||||
DoScriptText(RAND(SAY_OVERLOAD_1, SAY_OVERLOAD_2, SAY_OVERLOAD_3), me);
|
||||
me->MonsterTextEmote(EMOTE_OVERLOAD, 0, true);
|
||||
Talk(SAY_OVERLOAD);
|
||||
Talk(EMOTE_OVERLOAD);
|
||||
me->CastSpell(me, SPELL_SYSTEMS_SHUTDOWN, true);
|
||||
if (Shutout)
|
||||
Shutout = false;
|
||||
@@ -429,7 +418,7 @@ class boss_flame_leviathan : public CreatureScript
|
||||
events.DelayEvents(20 * IN_MILLISECONDS, 0);
|
||||
break;
|
||||
case EVENT_REPAIR:
|
||||
me->MonsterTextEmote(EMOTE_REPAIR, 0, true);
|
||||
Talk(EMOTE_REPAIR);
|
||||
me->ClearUnitState(UNIT_STATE_STUNNED | UNIT_STATE_ROOT);
|
||||
events.ScheduleEvent(EVENT_SHUTDOWN, 150*IN_MILLISECONDS);
|
||||
events.CancelEvent(EVENT_REPAIR);
|
||||
@@ -440,12 +429,12 @@ class boss_flame_leviathan : public CreatureScript
|
||||
if (Creature* thorim = DoSummon(NPC_THORIM_BEACON, me, float(urand(20, 60)), 20000, TEMPSUMMON_TIMED_DESPAWN))
|
||||
thorim->GetMotionMaster()->MoveRandom(100);
|
||||
}
|
||||
DoScriptText(SAY_TOWER_STORM, me);
|
||||
Talk(SAY_TOWER_STORM);
|
||||
events.CancelEvent(EVENT_THORIM_S_HAMMER);
|
||||
break;
|
||||
case EVENT_MIMIRON_S_INFERNO: // Tower of Flames
|
||||
me->SummonCreature(NPC_MIMIRON_BEACON, InfernoStart->GetPositionX(), InfernoStart->GetPositionY(), InfernoStart->GetPositionZ());
|
||||
DoScriptText(SAY_TOWER_FLAME, me);
|
||||
me->SummonCreature(NPC_MIMIRON_BEACON, InfernoStart);
|
||||
Talk(SAY_TOWER_FLAME);
|
||||
events.CancelEvent(EVENT_MIMIRON_S_INFERNO);
|
||||
break;
|
||||
case EVENT_HODIR_S_FURY: // Tower of Frost
|
||||
@@ -454,11 +443,11 @@ class boss_flame_leviathan : public CreatureScript
|
||||
if (Creature* hodir = DoSummon(NPC_HODIR_BEACON, me, 50, 0))
|
||||
hodir->GetMotionMaster()->MoveRandom(100);
|
||||
}
|
||||
DoScriptText(SAY_TOWER_FROST, me);
|
||||
Talk(SAY_TOWER_FROST);
|
||||
events.CancelEvent(EVENT_HODIR_S_FURY);
|
||||
break;
|
||||
case EVENT_FREYA_S_WARD: // Tower of Nature
|
||||
DoScriptText(SAY_TOWER_NATURE, me);
|
||||
Talk(SAY_TOWER_NATURE);
|
||||
for (int32 i = 0; i < 4; ++i)
|
||||
me->SummonCreature(NPC_FREYA_BEACON, FreyaBeacons[i]);
|
||||
|
||||
@@ -529,8 +518,8 @@ class boss_flame_leviathan : public CreatureScript
|
||||
case ACTION_MOVE_TO_CENTER_POSITION: // Triggered by 2 Collossus near door
|
||||
if (!me->isDead())
|
||||
{
|
||||
me->SetHomePosition(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ(), 0);
|
||||
me->GetMotionMaster()->MoveCharge(Center->GetPositionX(), Center->GetPositionY(), Center->GetPositionZ()); //position center
|
||||
me->SetHomePosition(Center);
|
||||
me->GetMotionMaster()->MoveCharge(Center.GetPositionX(), Center.GetPositionY(), Center.GetPositionZ()); // position center
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_STUNNED);
|
||||
return;
|
||||
@@ -593,8 +582,8 @@ class boss_flame_leviathan_seat : public CreatureScript
|
||||
{
|
||||
if (!apply)
|
||||
return;
|
||||
else
|
||||
DoScriptText(SAY_PLAYER_RIDING, me);
|
||||
else if (Creature* leviathan = me->GetVehicleCreatureBase())
|
||||
leviathan->AI()->Talk(SAY_PLAYER_RIDING);
|
||||
|
||||
if (Creature* turret = me->GetVehicleKit()->GetPassenger(SEAT_TURRET)->ToCreature())
|
||||
{
|
||||
@@ -887,7 +876,7 @@ class npc_colossus : public CreatureScript
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
if (me->GetHomePosition().IsInDist(Center, 50.f))
|
||||
if (me->GetHomePosition().IsInDist(&Center, 50.f))
|
||||
instance->SetData(DATA_COLOSSUS, instance->GetData(DATA_COLOSSUS)+1);
|
||||
}
|
||||
|
||||
@@ -1700,7 +1689,7 @@ class spell_pursue : public SpellScriptLoader
|
||||
{
|
||||
if (IS_PLAYER_GUID(itr->second.Passenger))
|
||||
{
|
||||
caster->MonsterTextEmote(EMOTE_PURSUE, itr->second.Passenger, true);
|
||||
caster->AI()->Talk(EMOTE_PURSUE, itr->second.Passenger);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,34 +27,23 @@
|
||||
enum FreyaYells
|
||||
{
|
||||
// Freya
|
||||
SAY_AGGRO = -1603180,
|
||||
SAY_AGGRO_WITH_ELDER = -1603181,
|
||||
SAY_SLAY_1 = -1603182,
|
||||
SAY_SLAY_2 = -1603183,
|
||||
SAY_DEATH = -1603184,
|
||||
SAY_BERSERK = -1603185,
|
||||
SAY_SUMMON_CONSERVATOR = -1603186,
|
||||
SAY_SUMMON_TRIO = -1603187,
|
||||
SAY_SUMMON_LASHERS = -1603188,
|
||||
SAY_YS_HELP = -1603189,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_AGGRO_WITH_ELDER = 1,
|
||||
SAY_SLAY = 2,
|
||||
SAY_DEATH = 3,
|
||||
SAY_BERSERK = 4,
|
||||
SAY_SUMMON_CONSERVATOR = 5,
|
||||
SAY_SUMMON_TRIO = 6,
|
||||
SAY_SUMMON_LASHERS = 7,
|
||||
EMOTE_LIFEBINDERS_GIFT = 8,
|
||||
EMOTE_ALLIES_OF_NATURE = 9,
|
||||
EMOTE_GROUND_TREMOR = 10,
|
||||
EMOTE_IRON_ROOTS = 11,
|
||||
|
||||
// Elder Brightleaf
|
||||
SAY_BRIGHTLEAF_AGGRO = -1603190,
|
||||
SAY_BRIGHTLEAF_SLAY_1 = -1603191,
|
||||
SAY_BRIGHTLEAF_SLAY_2 = -1603192,
|
||||
SAY_BRIGHTLEAF_DEATH = -1603193,
|
||||
|
||||
// Elder Ironbranch
|
||||
SAY_IRONBRANCH_AGGRO = -1603194,
|
||||
SAY_IRONBRANCH_SLAY_1 = -1603195,
|
||||
SAY_IRONBRANCH_SLAY_2 = -1603196,
|
||||
SAY_IRONBRANCH_DEATH = -1603197,
|
||||
|
||||
// Elder Stonebark
|
||||
SAY_STONEBARK_AGGRO = -1603198,
|
||||
SAY_STONEBARK_SLAY_1 = -1603199,
|
||||
SAY_STONEBARK_SLAY_2 = -1603200,
|
||||
SAY_STONEBARK_DEATH = -1603201,
|
||||
// Elder Brightleaf / Elder Ironbranch / Elder Stonebark
|
||||
SAY_ELDER_AGGRO = 0,
|
||||
SAY_ELDER_SLAY = 1,
|
||||
SAY_ELDER_DEATH = 2
|
||||
};
|
||||
|
||||
enum FreyaSpells
|
||||
@@ -143,7 +132,7 @@ enum FreyaSpells
|
||||
// Nature Bomb
|
||||
SPELL_NATURE_BOMB = 64587,
|
||||
SPELL_OBJECT_BOMB = 64600,
|
||||
SPELL_SUMMON_NATURE_BOMB = 64606,
|
||||
SPELL_SUMMON_NATURE_BOMB = 64604,
|
||||
|
||||
// Unstable Sun Beam
|
||||
SPELL_UNSTABLE_SUN_BEAM = 62211,
|
||||
@@ -316,9 +305,10 @@ class boss_freya : public CreatureScript
|
||||
random[n] = false;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* who, uint32& damage)
|
||||
@@ -369,9 +359,9 @@ class boss_freya : public CreatureScript
|
||||
}
|
||||
|
||||
if (elderCount == 0)
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
else
|
||||
DoScriptText(SAY_AGGRO_WITH_ELDER, me);
|
||||
Talk(SAY_AGGRO_WITH_ELDER);
|
||||
|
||||
me->CastCustomSpell(SPELL_ATTUNED_TO_NATURE, SPELLVALUE_AURA_STACK, 150, me, true);
|
||||
|
||||
@@ -409,7 +399,7 @@ class boss_freya : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_ENRAGE:
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Talk(SAY_BERSERK);
|
||||
DoCast(me, SPELL_ENRAGE);
|
||||
break;
|
||||
case EVENT_SUNBEAM:
|
||||
@@ -418,17 +408,9 @@ class boss_freya : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_SUNBEAM, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_NATURE_BOMB:
|
||||
{
|
||||
// On every player
|
||||
std::list<Player*> PlayerList;
|
||||
Trinity::AnyPlayerInObjectRangeCheck checker(me, 50.0f);
|
||||
Trinity::PlayerListSearcher<Trinity::AnyPlayerInObjectRangeCheck> searcher(me, PlayerList, checker);
|
||||
me->VisitNearbyWorldObject(50.0f, searcher);
|
||||
for (std::list<Player*>::const_iterator itr = PlayerList.begin(); itr != PlayerList.end(); ++itr)
|
||||
(*itr)->CastSpell(*itr, SPELL_SUMMON_NATURE_BOMB, true);
|
||||
DoCastAOE(SPELL_SUMMON_NATURE_BOMB, true);
|
||||
events.ScheduleEvent(EVENT_NATURE_BOMB, urand(10000, 12000));
|
||||
break;
|
||||
}
|
||||
case EVENT_UNSTABLE_ENERGY:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
|
||||
DoCast(target, SPELL_FREYA_UNSTABLE_SUNBEAM, true);
|
||||
@@ -442,15 +424,18 @@ class boss_freya : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_NATURE_BOMB, urand(10000, 20000));
|
||||
break;
|
||||
case EVENT_EONAR_GIFT:
|
||||
Talk(EMOTE_LIFEBINDERS_GIFT);
|
||||
DoCast(me, SPELL_SUMMON_EONAR_GIFT);
|
||||
events.ScheduleEvent(EVENT_EONAR_GIFT, urand(40000, 50000));
|
||||
break;
|
||||
case EVENT_STRENGTHENED_IRON_ROOTS:
|
||||
Talk(EMOTE_IRON_ROOTS);
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true, -SPELL_ROOTS_FREYA))
|
||||
target->CastSpell(target, SPELL_ROOTS_FREYA, true); // This must be casted by Target self
|
||||
events.ScheduleEvent(EVENT_STRENGTHENED_IRON_ROOTS, urand(12000, 20000));
|
||||
break;
|
||||
case EVENT_GROUND_TREMOR:
|
||||
Talk(EMOTE_GROUND_TREMOR);
|
||||
DoCastAOE(SPELL_FREYA_GROUND_TREMOR);
|
||||
events.ScheduleEvent(EVENT_GROUND_TREMOR, urand(25000, 28000));
|
||||
break;
|
||||
@@ -573,20 +558,21 @@ class boss_freya : public CreatureScript
|
||||
switch (GetWaveId())
|
||||
{
|
||||
case 0:
|
||||
DoScriptText(SAY_SUMMON_LASHERS, me);
|
||||
Talk(SAY_SUMMON_LASHERS);
|
||||
for (uint8 n = 0; n < 10; ++n)
|
||||
DoCast(SPELL_SUMMON_LASHERS);
|
||||
break;
|
||||
case 1:
|
||||
DoScriptText(SAY_SUMMON_TRIO, me);
|
||||
Talk(SAY_SUMMON_TRIO);
|
||||
DoCast(SPELL_SUMMON_TRIO);
|
||||
trioWaveCount++;
|
||||
break;
|
||||
case 2:
|
||||
DoScriptText(SAY_SUMMON_CONSERVATOR, me);
|
||||
Talk(SAY_SUMMON_CONSERVATOR);
|
||||
DoCast(SPELL_SUMMON_ANCIENT_CONSERVATOR);
|
||||
break;
|
||||
}
|
||||
Talk(EMOTE_ALLIES_OF_NATURE);
|
||||
waveCount++;
|
||||
}
|
||||
|
||||
@@ -602,7 +588,7 @@ class boss_freya : public CreatureScript
|
||||
|
||||
me->CastSpell((Unit*)NULL, summonSpell[me->GetMap()->GetDifficulty()][elderCount], true);
|
||||
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
_JustDied();
|
||||
me->RemoveAllAuras();
|
||||
@@ -705,17 +691,18 @@ class boss_elder_brightleaf : public CreatureScript
|
||||
lumberjack = false;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_BRIGHTLEAF_SLAY_1, SAY_BRIGHTLEAF_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_ELDER_SLAY);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
_JustDied();
|
||||
DoScriptText(SAY_BRIGHTLEAF_DEATH, me);
|
||||
Talk(SAY_ELDER_DEATH);
|
||||
|
||||
if (killer && killer->GetTypeId() == TYPEID_PLAYER)
|
||||
if (killer->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (Creature* Ironbranch = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_IRONBRANCH)))
|
||||
Ironbranch->AI()->DoAction(ACTION_ELDER_DEATH);
|
||||
@@ -729,7 +716,7 @@ class boss_elder_brightleaf : public CreatureScript
|
||||
{
|
||||
_EnterCombat();
|
||||
if (!me->HasAura(SPELL_DRAINED_OF_POWER))
|
||||
DoScriptText(SAY_BRIGHTLEAF_AGGRO, me);
|
||||
Talk(SAY_ELDER_AGGRO);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 const diff)
|
||||
@@ -825,17 +812,18 @@ class boss_elder_stonebark : public CreatureScript
|
||||
lumberjack = false;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_STONEBARK_SLAY_1, SAY_STONEBARK_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_ELDER_SLAY);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
_JustDied();
|
||||
DoScriptText(SAY_STONEBARK_DEATH, me);
|
||||
Talk(SAY_ELDER_DEATH);
|
||||
|
||||
if (killer && killer->GetTypeId() == TYPEID_PLAYER)
|
||||
if (killer->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (Creature* Ironbranch = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_IRONBRANCH)))
|
||||
Ironbranch->AI()->DoAction(ACTION_ELDER_DEATH);
|
||||
@@ -849,7 +837,7 @@ class boss_elder_stonebark : public CreatureScript
|
||||
{
|
||||
_EnterCombat();
|
||||
if (!me->HasAura(SPELL_DRAINED_OF_POWER))
|
||||
DoScriptText(SAY_STONEBARK_AGGRO, me);
|
||||
Talk(SAY_ELDER_AGGRO);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* who, uint32& damage)
|
||||
@@ -951,17 +939,18 @@ class boss_elder_ironbranch : public CreatureScript
|
||||
lumberjack = false;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_IRONBRANCH_SLAY_1, SAY_IRONBRANCH_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_ELDER_SLAY);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer)
|
||||
{
|
||||
_JustDied();
|
||||
DoScriptText(SAY_IRONBRANCH_DEATH, me);
|
||||
Talk(SAY_ELDER_DEATH);
|
||||
|
||||
if (killer && killer->GetTypeId() == TYPEID_PLAYER)
|
||||
if (killer->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
if (Creature* Brightleaf = ObjectAccessor::GetCreature(*me, instance->GetData64(BOSS_BRIGHTLEAF)))
|
||||
Brightleaf->AI()->DoAction(ACTION_ELDER_DEATH);
|
||||
@@ -975,7 +964,7 @@ class boss_elder_ironbranch : public CreatureScript
|
||||
{
|
||||
_EnterCombat();
|
||||
if (!me->HasAura(SPELL_DRAINED_OF_POWER))
|
||||
DoScriptText(SAY_IRONBRANCH_AGGRO, me);
|
||||
Talk(SAY_ELDER_AGGRO);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 const diff)
|
||||
|
||||
@@ -24,21 +24,22 @@
|
||||
|
||||
enum VezaxYells
|
||||
{
|
||||
SAY_AGGRO = -1603290,
|
||||
SAY_SLAY_1 = -1603291,
|
||||
SAY_SLAY_2 = -1603292,
|
||||
SAY_SURGE_OF_DARKNESS = -1603293,
|
||||
SAY_DEATH = -1603294,
|
||||
SAY_BERSERK = -1603295,
|
||||
SAY_HARDMODE = -1603296,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_SLAY = 1,
|
||||
SAY_SURGE_OF_DARKNESS = 2,
|
||||
SAY_DEATH = 3,
|
||||
SAY_BERSERK = 4,
|
||||
SAY_HARDMODE = 5,
|
||||
};
|
||||
|
||||
enum VezaxEmotes
|
||||
{
|
||||
EMOTE_VAPORS = -1603289,
|
||||
EMOTE_ANIMUS = -1603297,
|
||||
EMOTE_BARRIER = -1603298,
|
||||
EMOTE_SURGE_OF_DARKNESS = -1603299,
|
||||
EMOTE_ANIMUS = 6,
|
||||
EMOTE_BARRIER = 7,
|
||||
EMOTE_SURGE_OF_DARKNESS = 8,
|
||||
|
||||
// Saronite Vapor
|
||||
EMOTE_VAPORS = 9
|
||||
};
|
||||
|
||||
enum VezaxSpells
|
||||
@@ -122,7 +123,7 @@ class boss_general_vezax : public CreatureScript
|
||||
{
|
||||
_EnterCombat();
|
||||
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
DoCast(me, SPELL_AURA_OF_DESPAIR);
|
||||
CheckShamanisticRage();
|
||||
|
||||
@@ -173,8 +174,8 @@ class boss_general_vezax : public CreatureScript
|
||||
break;
|
||||
}
|
||||
case EVENT_SURGE_OF_DARKNESS:
|
||||
DoScriptText(EMOTE_SURGE_OF_DARKNESS, me);
|
||||
DoScriptText(SAY_SURGE_OF_DARKNESS, me);
|
||||
Talk(EMOTE_SURGE_OF_DARKNESS);
|
||||
Talk(SAY_SURGE_OF_DARKNESS);
|
||||
DoCast(me, SPELL_SURGE_OF_DARKNESS);
|
||||
events.ScheduleEvent(EVENT_SURGE_OF_DARKNESS, urand(50000, 70000));
|
||||
break;
|
||||
@@ -183,8 +184,8 @@ class boss_general_vezax : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_SARONITE_VAPORS, urand(30000, 35000));
|
||||
if (++vaporCount == 6 && smellSaronite)
|
||||
{
|
||||
DoScriptText(SAY_HARDMODE, me);
|
||||
DoScriptText(EMOTE_BARRIER, me);
|
||||
Talk(SAY_HARDMODE);
|
||||
Talk(EMOTE_BARRIER);
|
||||
summons.DespawnAll();
|
||||
DoCast(me, SPELL_SARONITE_BARRIER);
|
||||
DoCast(SPELL_SUMMON_SARONITE_ANIMUS);
|
||||
@@ -194,7 +195,7 @@ class boss_general_vezax : public CreatureScript
|
||||
}
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Talk(SAY_BERSERK);
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
break;
|
||||
}
|
||||
@@ -209,15 +210,16 @@ class boss_general_vezax : public CreatureScript
|
||||
shadowDodger = false;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
_JustDied();
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_AURA_OF_DESPAIR);
|
||||
}
|
||||
|
||||
@@ -316,7 +318,6 @@ class boss_saronite_animus : public CreatureScript
|
||||
boss_saronite_animusAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
instance = me->GetInstanceScript();
|
||||
DoScriptText(EMOTE_BARRIER, me);
|
||||
}
|
||||
|
||||
void Reset()
|
||||
@@ -378,7 +379,7 @@ class npc_saronite_vapors : public CreatureScript
|
||||
{
|
||||
npc_saronite_vaporsAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
DoScriptText(EMOTE_VAPORS, me);
|
||||
Talk(EMOTE_VAPORS);
|
||||
instance = me->GetInstanceScript();
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_ID, 49560, true); // Death Grip jump effect
|
||||
|
||||
@@ -32,18 +32,15 @@
|
||||
|
||||
enum HodirYells
|
||||
{
|
||||
SAY_AGGRO = -1603210,
|
||||
SAY_SLAY_1 = -1603211,
|
||||
SAY_SLAY_2 = -1603212,
|
||||
SAY_FLASH_FREEZE = -1603213,
|
||||
SAY_STALACTITE = -1603214,
|
||||
SAY_DEATH = -1603215,
|
||||
SAY_BERSERK = -1603216,
|
||||
SAY_YS_HELP = -1603217,
|
||||
SAY_HARD_MODE_FAILED = -1603218,
|
||||
|
||||
EMOTE_FREEZE = -1603209,
|
||||
EMOTE_BLOWS = -1603219,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_SLAY = 1,
|
||||
SAY_FLASH_FREEZE = 2,
|
||||
SAY_STALACTITE = 3,
|
||||
SAY_DEATH = 4,
|
||||
SAY_BERSERK = 5,
|
||||
SAY_HARD_MODE_FAILED = 6,
|
||||
EMOTE_FREEZE = 7,
|
||||
EMOTE_BLOWS = 8
|
||||
};
|
||||
|
||||
enum HodirSpells
|
||||
@@ -329,7 +326,7 @@ class boss_hodir : public CreatureScript
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_EnterCombat();
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
DoCast(me, SPELL_BITING_COLD, true);
|
||||
|
||||
gettingColdInHereTimer = 1000;
|
||||
@@ -346,10 +343,10 @@ class boss_hodir : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_BERSERK, 480000);
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
if (!urand(0, 3))
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*who*/, uint32& damage)
|
||||
@@ -357,7 +354,7 @@ class boss_hodir : public CreatureScript
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
damage = 0;
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
if (iCouldSayThatThisCacheWasRare)
|
||||
instance->SetData(DATA_HODIR_RARE_CACHE, 1);
|
||||
|
||||
@@ -404,8 +401,8 @@ class boss_hodir : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_ICICLE, RAID_MODE(5500, 3500));
|
||||
break;
|
||||
case EVENT_FLASH_FREEZE:
|
||||
DoScriptText(SAY_FLASH_FREEZE, me);
|
||||
DoScriptText(EMOTE_FREEZE, me);
|
||||
Talk(SAY_FLASH_FREEZE);
|
||||
Talk(EMOTE_FREEZE);
|
||||
for (uint8 n = 0; n < RAID_MODE(2, 3); ++n)
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100.0f, true))
|
||||
target->CastSpell(target, SPELL_ICICLE_SNOWDRIFT, true);
|
||||
@@ -424,19 +421,19 @@ class boss_hodir : public CreatureScript
|
||||
break;
|
||||
}
|
||||
case EVENT_BLOWS:
|
||||
DoScriptText(SAY_STALACTITE, me);
|
||||
DoScriptText(EMOTE_BLOWS, me);
|
||||
Talk(SAY_STALACTITE);
|
||||
Talk(EMOTE_BLOWS);
|
||||
DoCast(me, SPELL_FROZEN_BLOWS);
|
||||
events.ScheduleEvent(EVENT_BLOWS, urand(60000, 65000));
|
||||
break;
|
||||
case EVENT_RARE_CACHE:
|
||||
DoScriptText(SAY_HARD_MODE_FAILED, me);
|
||||
Talk(SAY_HARD_MODE_FAILED);
|
||||
iCouldSayThatThisCacheWasRare = false;
|
||||
instance->SetData(DATA_HODIR_RARE_CACHE, 0);
|
||||
events.CancelEvent(EVENT_RARE_CACHE);
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Talk(SAY_BERSERK);
|
||||
DoCast(me, SPELL_BERSERK, true);
|
||||
events.CancelEvent(EVENT_BERSERK);
|
||||
break;
|
||||
|
||||
@@ -24,16 +24,14 @@
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = -1603220,
|
||||
SAY_SLAY_1 = -1603221,
|
||||
SAY_SLAY_2 = -1603222,
|
||||
SAY_DEATH = -1603223,
|
||||
SAY_SUMMON = -1603224,
|
||||
SAY_SLAG_POT = -1603225,
|
||||
SAY_SCORCH_1 = -1603226,
|
||||
SAY_SCORCH_2 = -1603227,
|
||||
SAY_BERSERK = -1603228,
|
||||
EMOTE_JETS = -1603229,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_SUMMON = 1,
|
||||
SAY_SLAG_POT = 2,
|
||||
SAY_SCORCH = 3,
|
||||
SAY_SLAY = 4,
|
||||
SAY_BERSERK = 5,
|
||||
SAY_DEATH = 6,
|
||||
EMOTE_JETS = 7
|
||||
};
|
||||
|
||||
enum Spells
|
||||
@@ -135,7 +133,7 @@ class boss_ignis : public CreatureScript
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
_EnterCombat();
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
events.ScheduleEvent(EVENT_JET, 30000);
|
||||
events.ScheduleEvent(EVENT_SCORCH, 25000);
|
||||
events.ScheduleEvent(EVENT_SLAG_POT, 35000);
|
||||
@@ -151,7 +149,7 @@ class boss_ignis : public CreatureScript
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
_JustDied();
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
}
|
||||
|
||||
uint32 GetData(uint32 type) const
|
||||
@@ -162,10 +160,10 @@ class boss_ignis : public CreatureScript
|
||||
return 0;
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
if (!urand(0, 4))
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon)
|
||||
@@ -217,7 +215,7 @@ class boss_ignis : public CreatureScript
|
||||
case EVENT_SLAG_POT:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true))
|
||||
{
|
||||
DoScriptText(SAY_SLAG_POT, me);
|
||||
Talk(SAY_SLAG_POT);
|
||||
_slagPotGUID = target->GetGUID();
|
||||
DoCast(target, SPELL_GRAB);
|
||||
events.DelayEvents(3000);
|
||||
@@ -252,14 +250,14 @@ class boss_ignis : public CreatureScript
|
||||
}
|
||||
break;
|
||||
case EVENT_SCORCH:
|
||||
DoScriptText(RAND(SAY_SCORCH_1, SAY_SCORCH_2), me);
|
||||
Talk(SAY_SCORCH);
|
||||
if (Unit* target = me->getVictim())
|
||||
me->SummonCreature(NPC_GROUND_SCORCH, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN, 45000);
|
||||
DoCast(SPELL_SCORCH);
|
||||
events.ScheduleEvent(EVENT_SCORCH, 25000);
|
||||
break;
|
||||
case EVENT_CONSTRUCT:
|
||||
DoScriptText(SAY_SUMMON, me);
|
||||
Talk(SAY_SUMMON);
|
||||
DoSummon(NPC_IRON_CONSTRUCT, ConstructSpawnPosition[urand(0, CONSTRUCT_SPAWN_POINTS - 1)], 30000, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT);
|
||||
DoCast(SPELL_STRENGHT);
|
||||
DoCast(me, SPELL_ACTIVATE_CONSTRUCT);
|
||||
@@ -267,7 +265,7 @@ class boss_ignis : public CreatureScript
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoCast(me, SPELL_BERSERK, true);
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Talk(SAY_BERSERK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,15 +76,15 @@ enum Events
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = -1603230,
|
||||
SAY_SLAY_1 = -1603231,
|
||||
SAY_SLAY_2 = -1603232,
|
||||
SAY_LEFT_ARM_GONE = -1603233,
|
||||
SAY_RIGHT_ARM_GONE = -1603234,
|
||||
SAY_SHOCKWAVE = -1603235,
|
||||
SAY_GRAB_PLAYER = -1603236,
|
||||
SAY_DEATH = -1603237,
|
||||
SAY_BERSERK = -1603238,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_SLAY = 1,
|
||||
SAY_LEFT_ARM_GONE = 2,
|
||||
SAY_RIGHT_ARM_GONE = 3,
|
||||
SAY_SHOCKWAVE = 4,
|
||||
SAY_GRAB_PLAYER = 5,
|
||||
SAY_DEATH = 6,
|
||||
SAY_BERSERK = 7,
|
||||
EMOTE_STONE_GRIP = 8
|
||||
};
|
||||
|
||||
class boss_kologarn : public CreatureScript
|
||||
@@ -113,7 +113,7 @@ class boss_kologarn : public CreatureScript
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
|
||||
events.ScheduleEvent(EVENT_MELEE_CHECK, 6000);
|
||||
events.ScheduleEvent(EVENT_SMASH, 5000);
|
||||
@@ -138,7 +138,7 @@ class boss_kologarn : public CreatureScript
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
DoCast(SPELL_KOLOGARN_PACIFY);
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -146,9 +146,10 @@ class boss_kologarn : public CreatureScript
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*who*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply)
|
||||
@@ -160,7 +161,7 @@ class boss_kologarn : public CreatureScript
|
||||
if (!apply && isEncounterInProgress)
|
||||
{
|
||||
who->ToCreature()->DisappearAndDie();
|
||||
DoScriptText(SAY_LEFT_ARM_GONE, me);
|
||||
Talk(SAY_LEFT_ARM_GONE);
|
||||
events.ScheduleEvent(EVENT_RESPAWN_LEFT_ARM, 40000);
|
||||
}
|
||||
}
|
||||
@@ -171,7 +172,7 @@ class boss_kologarn : public CreatureScript
|
||||
if (!apply && isEncounterInProgress)
|
||||
{
|
||||
who->ToCreature()->DisappearAndDie();
|
||||
DoScriptText(SAY_RIGHT_ARM_GONE, me);
|
||||
Talk(SAY_RIGHT_ARM_GONE);
|
||||
events.ScheduleEvent(EVENT_RESPAWN_RIGHT_ARM, 40000);
|
||||
}
|
||||
}
|
||||
@@ -272,7 +273,7 @@ class boss_kologarn : public CreatureScript
|
||||
break;
|
||||
case EVENT_ENRAGE:
|
||||
DoCast(SPELL_BERSERK);
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Talk(SAY_BERSERK);
|
||||
break;
|
||||
case EVENT_RESPAWN_LEFT_ARM:
|
||||
case EVENT_RESPAWN_RIGHT_ARM:
|
||||
@@ -290,7 +291,8 @@ class boss_kologarn : public CreatureScript
|
||||
if (right)
|
||||
{
|
||||
DoCast(SPELL_STONE_GRIP);
|
||||
DoScriptText(SAY_GRAB_PLAYER, me);
|
||||
Talk(SAY_GRAB_PLAYER);
|
||||
Talk(EMOTE_STONE_GRIP);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_STONE_GRIP, 25 * IN_MILLISECONDS);
|
||||
}
|
||||
|
||||
@@ -35,8 +35,7 @@ enum Yells
|
||||
SAY_V07TRON_ACTIVATE = 11,
|
||||
SAY_V07TRON_SLAY = 12,
|
||||
SAY_V07TRON_DEATH = 13,
|
||||
SAY_BERSERK = 14,
|
||||
SAY_YS_HELP = 15
|
||||
SAY_BERSERK = 14
|
||||
};
|
||||
|
||||
enum Spells
|
||||
|
||||
@@ -27,15 +27,22 @@
|
||||
|
||||
enum Says
|
||||
{
|
||||
SAY_GREET = -1603260,
|
||||
SAY_GROUND_PHASE = -1603261,
|
||||
SAY_AGGRO_1 = -1603262,
|
||||
SAY_AGGRO_2 = -1603263,
|
||||
SAY_AGGRO_3 = -1603264,
|
||||
SAY_TURRETS = -1603265,
|
||||
EMOTE_HARPOON = -1603266,
|
||||
EMOTE_BREATH = -1603267,
|
||||
EMOTE_PERMA = -1603268,
|
||||
// Expedition Commander
|
||||
SAY_INTRO = 0,
|
||||
SAY_GROUND_PHASE = 1,
|
||||
SAY_AGGRO_2 = 2,
|
||||
|
||||
// Expedition Engineer
|
||||
SAY_AGGRO_1 = 0,
|
||||
SAY_AGGRO_3 = 1,
|
||||
SAY_TURRETS = 2, // unused
|
||||
|
||||
// Razorscale Controller
|
||||
EMOTE_HARPOON = 0,
|
||||
|
||||
// Razorscale
|
||||
EMOTE_PERMA = 0,
|
||||
EMOTE_BREATH = 1
|
||||
};
|
||||
|
||||
enum Spells
|
||||
@@ -245,7 +252,7 @@ class boss_razorscale_controller : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_BUILD_HARPOON_1:
|
||||
DoScriptText(EMOTE_HARPOON, me);
|
||||
Talk(EMOTE_HARPOON);
|
||||
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_1, PosHarpoon[0].GetPositionX(), PosHarpoon[0].GetPositionY(), PosHarpoon[0].GetPositionZ(), 4.790f, 0.0f, 0.0f, 0.0f, 0.0f, uint32(me->GetRespawnTime())))
|
||||
{
|
||||
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f)) //only nearest broken harpoon
|
||||
@@ -255,7 +262,7 @@ class boss_razorscale_controller : public CreatureScript
|
||||
}
|
||||
return;
|
||||
case EVENT_BUILD_HARPOON_2:
|
||||
DoScriptText(EMOTE_HARPOON, me);
|
||||
Talk(EMOTE_HARPOON);
|
||||
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_2, PosHarpoon[1].GetPositionX(), PosHarpoon[1].GetPositionY(), PosHarpoon[1].GetPositionZ(), 4.659f, 0, 0, 0, 0, uint32(me->GetRespawnTime())))
|
||||
{
|
||||
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
|
||||
@@ -264,7 +271,7 @@ class boss_razorscale_controller : public CreatureScript
|
||||
}
|
||||
return;
|
||||
case EVENT_BUILD_HARPOON_3:
|
||||
DoScriptText(EMOTE_HARPOON, me);
|
||||
Talk(EMOTE_HARPOON);
|
||||
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_3, PosHarpoon[2].GetPositionX(), PosHarpoon[2].GetPositionY(), PosHarpoon[2].GetPositionZ(), 5.382f, 0, 0, 0, 0, uint32(me->GetRespawnTime())))
|
||||
{
|
||||
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
|
||||
@@ -274,7 +281,7 @@ class boss_razorscale_controller : public CreatureScript
|
||||
}
|
||||
return;
|
||||
case EVENT_BUILD_HARPOON_4:
|
||||
DoScriptText(EMOTE_HARPOON, me);
|
||||
Talk(EMOTE_HARPOON);
|
||||
if (GameObject* Harpoon = me->SummonGameObject(GO_RAZOR_HARPOON_4, PosHarpoon[3].GetPositionX(), PosHarpoon[3].GetPositionY(), PosHarpoon[3].GetPositionZ(), 4.266f, 0, 0, 0, 0, uint32(me->GetRespawnTime())))
|
||||
{
|
||||
if (GameObject* BrokenHarpoon = Harpoon->FindNearestGameObject(GO_RAZOR_BROKEN_HARPOON, 5.0f))
|
||||
@@ -444,7 +451,7 @@ class boss_razorscale : public CreatureScript
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED | UNIT_FLAG_PACIFIED);
|
||||
me->RemoveAllAuras();
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
DoScriptText(EMOTE_BREATH, me, 0);
|
||||
Talk(EMOTE_BREATH);
|
||||
DoCastAOE(SPELL_FLAMEBREATH);
|
||||
events.CancelEvent(EVENT_BREATH);
|
||||
return;
|
||||
@@ -468,7 +475,7 @@ class boss_razorscale : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_FLAME, 10000, 0, PHASE_PERMAGROUND);
|
||||
return;
|
||||
case EVENT_BREATH:
|
||||
me->MonsterTextEmote(EMOTE_BREATH, 0, true);
|
||||
Talk(EMOTE_BREATH);
|
||||
DoCastVictim(SPELL_FLAMEBREATH);
|
||||
events.ScheduleEvent(EVENT_BREATH, 20000, 0, PHASE_PERMAGROUND);
|
||||
return;
|
||||
@@ -522,7 +529,7 @@ class boss_razorscale : public CreatureScript
|
||||
|
||||
void EnterPermaGround()
|
||||
{
|
||||
me->MonsterTextEmote(EMOTE_PERMA, 0, true);
|
||||
Talk(EMOTE_PERMA);
|
||||
phase = PHASE_PERMAGROUND;
|
||||
events.SetPhase(PHASE_PERMAGROUND);
|
||||
me->SetCanFly(false);
|
||||
@@ -608,7 +615,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
{
|
||||
if (!Greet && me->IsWithinDistInMap(who, 10.0f) && who->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
DoScriptText(SAY_GREET, me);
|
||||
Talk(SAY_INTRO);
|
||||
Greet = true;
|
||||
}
|
||||
}
|
||||
@@ -623,7 +630,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
switch (action)
|
||||
{
|
||||
case ACTION_GROUND_PHASE:
|
||||
DoScriptText(SAY_GROUND_PHASE, me);
|
||||
Talk(SAY_GROUND_PHASE);
|
||||
break;
|
||||
case ACTION_COMMANDER_RESET:
|
||||
summons.clear();
|
||||
@@ -653,7 +660,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
Engineer[n]->SetHomePosition(PosEngRepair[n]);
|
||||
Engineer[n]->GetMotionMaster()->MoveTargetedHome();
|
||||
}
|
||||
Engineer[0]->MonsterYell(SAY_AGGRO_3, LANG_UNIVERSAL, 0);
|
||||
Engineer[0]->AI()->Talk(SAY_AGGRO_3);
|
||||
Phase = 3;
|
||||
AttackStartTimer = 14000;
|
||||
break;
|
||||
@@ -672,7 +679,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
Engineer[n]->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_USE_STANDING);
|
||||
for (uint8 n = 0; n < 4; ++n)
|
||||
Defender[n]->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||
me->MonsterYell(SAY_AGGRO_2, LANG_UNIVERSAL, 0);
|
||||
Talk(SAY_AGGRO_2);
|
||||
AttackStartTimer = 16000;
|
||||
Phase = 5;
|
||||
break;
|
||||
@@ -682,7 +689,7 @@ class npc_expedition_commander : public CreatureScript
|
||||
Razorscale->AI()->DoAction(ACTION_EVENT_START);
|
||||
me->SetInCombatWith(Razorscale);
|
||||
}
|
||||
Engineer[0]->MonsterYell(SAY_AGGRO_1, LANG_UNIVERSAL, 0);
|
||||
Engineer[0]->AI()->Talk(SAY_AGGRO_1);
|
||||
Phase = 6;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -21,83 +21,80 @@
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO_1 = -1603270,
|
||||
SAY_AGGRO_2 = -1603271,
|
||||
SAY_SPECIAL_1 = -1603272,
|
||||
SAY_SPECIAL_2 = -1603273,
|
||||
SAY_SPECIAL_3 = -1603274,
|
||||
SAY_JUMPDOWN = -1603275,
|
||||
SAY_SLAY_1 = -1603276,
|
||||
SAY_SLAY_2 = -1603277,
|
||||
SAY_BERSERK = -1603278,
|
||||
SAY_WIPE = -1603279,
|
||||
SAY_DEATH = -1603280,
|
||||
SAY_END_NORMAL_1 = -1603281,
|
||||
SAY_END_NORMAL_2 = -1603282,
|
||||
SAY_END_NORMAL_3 = -1603283,
|
||||
SAY_END_HARD_1 = -1603284,
|
||||
SAY_END_HARD_2 = -1603285,
|
||||
SAY_END_HARD_3 = -1603286,
|
||||
SAY_YS_HELP = -1603287,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_SPECIAL_1 = 1,
|
||||
SAY_SPECIAL_2 = 2,
|
||||
SAY_SPECIAL_3 = 3,
|
||||
SAY_JUMPDOWN = 4,
|
||||
SAY_SLAY = 5,
|
||||
SAY_BERSERK = 6,
|
||||
SAY_WIPE = 7,
|
||||
SAY_DEATH = 8,
|
||||
SAY_END_NORMAL_1 = 9,
|
||||
SAY_END_NORMAL_2 = 10,
|
||||
SAY_END_NORMAL_3 = 11,
|
||||
SAY_END_HARD_1 = 12,
|
||||
SAY_END_HARD_2 = 13,
|
||||
SAY_END_HARD_3 = 14
|
||||
};
|
||||
|
||||
class boss_thorim : public CreatureScript
|
||||
{
|
||||
public:
|
||||
boss_thorim() : CreatureScript("boss_thorim") { }
|
||||
public:
|
||||
boss_thorim() : CreatureScript("boss_thorim") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
return GetUlduarAI<boss_thorimAI>(creature);
|
||||
}
|
||||
|
||||
struct boss_thorimAI : public BossAI
|
||||
{
|
||||
boss_thorimAI(Creature* creature) : BossAI(creature, BOSS_THORIM)
|
||||
struct boss_thorimAI : public BossAI
|
||||
{
|
||||
}
|
||||
boss_thorimAI(Creature* creature) : BossAI(creature, BOSS_THORIM)
|
||||
{
|
||||
}
|
||||
|
||||
void Reset()
|
||||
void Reset()
|
||||
{
|
||||
_Reset();
|
||||
}
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
DoScriptText(SAY_WIPE, me);
|
||||
_EnterEvadeMode();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
Talk(SAY_AGGRO);
|
||||
_EnterCombat();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 const diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
//SPELLS TODO:
|
||||
|
||||
//
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
EnterEvadeIfOutOfCombatArea(diff);
|
||||
}
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const
|
||||
{
|
||||
_Reset();
|
||||
return GetUlduarAI<boss_thorimAI>(creature);
|
||||
}
|
||||
|
||||
void EnterEvadeMode()
|
||||
{
|
||||
DoScriptText(SAY_WIPE, me);
|
||||
_EnterEvadeMode();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
DoScriptText(RAND(SAY_AGGRO_1, SAY_AGGRO_2), me);
|
||||
_EnterCombat();
|
||||
}
|
||||
|
||||
void UpdateAI(const uint32 diff)
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
//SPELLS TODO:
|
||||
|
||||
//
|
||||
DoMeleeAttackIfReady();
|
||||
|
||||
EnterEvadeIfOutOfCombatArea(diff);
|
||||
}
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
void AddSC_boss_thorim()
|
||||
|
||||
@@ -157,15 +157,18 @@ enum XT002Data
|
||||
|
||||
enum Yells
|
||||
{
|
||||
SAY_AGGRO = -1603300,
|
||||
SAY_HEART_OPENED = -1603301,
|
||||
SAY_HEART_CLOSED = -1603302,
|
||||
SAY_TYMPANIC_TANTRUM = -1603303,
|
||||
SAY_SLAY_1 = -1603304,
|
||||
SAY_SLAY_2 = -1603305,
|
||||
SAY_BERSERK = -1603306,
|
||||
SAY_DEATH = -1603307,
|
||||
SAY_SUMMON = -1603308,
|
||||
SAY_AGGRO = 0,
|
||||
SAY_HEART_OPENED = 1,
|
||||
SAY_HEART_CLOSED = 2,
|
||||
SAY_TYMPANIC_TANTRUM = 3,
|
||||
SAY_SLAY = 4,
|
||||
SAY_BERSERK = 5,
|
||||
SAY_DEATH = 6,
|
||||
SAY_SUMMON = 7,
|
||||
EMOTE_HEART_OPENED = 8,
|
||||
EMOTE_HEART_CLOSED = 9,
|
||||
EMOTE_TYMPANIC_TANTRUM = 10,
|
||||
EMOTE_SCRAPBOT = 11
|
||||
};
|
||||
|
||||
enum AchievementCredits
|
||||
@@ -223,7 +226,7 @@ class boss_xt002 : public CreatureScript
|
||||
|
||||
void EnterCombat(Unit* /*who*/)
|
||||
{
|
||||
DoScriptText(SAY_AGGRO, me);
|
||||
Talk(SAY_AGGRO);
|
||||
_EnterCombat();
|
||||
|
||||
events.ScheduleEvent(EVENT_ENRAGE, TIMER_ENRAGE);
|
||||
@@ -248,14 +251,15 @@ class boss_xt002 : public CreatureScript
|
||||
}
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/)
|
||||
void KilledUnit(Unit* who)
|
||||
{
|
||||
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2), me);
|
||||
if (who->GetTypeId() == TYPEID_PLAYER)
|
||||
Talk(SAY_SLAY);
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/)
|
||||
{
|
||||
DoScriptText(SAY_DEATH, me);
|
||||
Talk(SAY_DEATH);
|
||||
_JustDied();
|
||||
}
|
||||
|
||||
@@ -292,7 +296,8 @@ class boss_xt002 : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_GRAVITY_BOMB, TIMER_GRAVITY_BOMB);
|
||||
break;
|
||||
case EVENT_TYMPANIC_TANTRUM:
|
||||
DoScriptText(SAY_TYMPANIC_TANTRUM, me);
|
||||
Talk(SAY_TYMPANIC_TANTRUM);
|
||||
Talk(EMOTE_TYMPANIC_TANTRUM);
|
||||
DoCast(SPELL_TYMPANIC_TANTRUM);
|
||||
events.ScheduleEvent(EVENT_TYMPANIC_TANTRUM, urand(TIMER_TYMPANIC_TANTRUM_MIN, TIMER_TYMPANIC_TANTRUM_MAX));
|
||||
break;
|
||||
@@ -300,7 +305,7 @@ class boss_xt002 : public CreatureScript
|
||||
SetPhaseOne();
|
||||
break;
|
||||
case EVENT_ENRAGE:
|
||||
DoScriptText(SAY_BERSERK, me);
|
||||
Talk(SAY_BERSERK);
|
||||
DoCast(me, SPELL_ENRAGE);
|
||||
break;
|
||||
case EVENT_ENTER_HARD_MODE:
|
||||
@@ -325,6 +330,7 @@ class boss_xt002 : public CreatureScript
|
||||
if (me->GetHealthPct() > (25 * (4 - _heartExposed)))
|
||||
++_heartExposed;
|
||||
|
||||
Talk(EMOTE_SCRAPBOT);
|
||||
_healthRecovered = true;
|
||||
}
|
||||
}
|
||||
@@ -359,7 +365,8 @@ class boss_xt002 : public CreatureScript
|
||||
|
||||
void ExposeHeart()
|
||||
{
|
||||
DoScriptText(SAY_HEART_OPENED, me);
|
||||
Talk(SAY_HEART_OPENED);
|
||||
Talk(EMOTE_HEART_OPENED);
|
||||
|
||||
DoCast(me, SPELL_SUBMERGE); // WIll make creature untargetable
|
||||
me->AttackStop();
|
||||
@@ -391,7 +398,8 @@ class boss_xt002 : public CreatureScript
|
||||
|
||||
void SetPhaseOne()
|
||||
{
|
||||
DoScriptText(SAY_HEART_CLOSED, me);
|
||||
Talk(SAY_HEART_CLOSED);
|
||||
Talk(EMOTE_HEART_CLOSED);
|
||||
|
||||
DoCast(me, SPELL_STAND);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
@@ -928,7 +936,8 @@ class spell_xt002_heart_overload_periodic : public SpellScriptLoader
|
||||
}
|
||||
}
|
||||
|
||||
DoScriptText(SAY_SUMMON, caster->GetVehicleBase());
|
||||
if (Creature* base = caster->GetVehicleCreatureBase())
|
||||
base->AI()->Talk(SAY_SUMMON);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -43,18 +43,6 @@ enum Sara
|
||||
|
||||
enum YoggSaron_Yells
|
||||
{
|
||||
SAY_PHASE2_1 = -1603330,
|
||||
SAY_PHASE2_2 = -1603331,
|
||||
SAY_PHASE2_3 = -1603332,
|
||||
SAY_PHASE2_4 = -1603333,
|
||||
SAY_PHASE2_5 = -1603334,
|
||||
SAY_PHASE3 = -1603335,
|
||||
SAY_VISION = -1603336,
|
||||
SAY_SLAY_1 = -1603337,
|
||||
SAY_SLAY_2 = -1603338,
|
||||
WHISP_INSANITY_1 = -1603339,
|
||||
WHISP_INSANITY_2 = -1603340,
|
||||
SAY_DEATH = -1603341,
|
||||
};
|
||||
|
||||
enum
|
||||
|
||||
Reference in New Issue
Block a user