Scripts/Ulduar: convert all script_texts to creature_text from this zone

This commit is contained in:
joschiwald
2012-12-01 04:27:40 +01:00
parent ddb6c95042
commit de96841579
13 changed files with 484 additions and 337 deletions

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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)

View File

@@ -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

View File

@@ -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;

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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()

View File

@@ -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);
}
}

View File

@@ -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