Skip to content

Commit 3744d6b

Browse files
authored
Scripts/Mechanar: Update scripts (TrinityCore#31127)
* Gyro-Kill - missing emote, timers, targets * Iron-Hand - missing emote, timers, targets, one missing spell, update the way texts are handled * Sepethrea - unique enum names, comments for scriptnames, update the way one text is handled * Pathaleon - reorder spells, reorder hooks, implement one missing spell, change the way one spell is used * Instance - remove unneeded placeholder
1 parent 5bace54 commit 3744d6b

File tree

6 files changed

+88
-62
lines changed

6 files changed

+88
-62
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
--
2+
DELETE FROM `creature_text` WHERE `CreatureID` = 19218 AND `GroupID` = 4;
3+
DELETE FROM `creature_text` WHERE `CreatureID` = 19710 AND `GroupID` = 5;
4+
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
5+
(19218,4,0,"You hear a faint unlocking sound...",16,0,100,0,0,0,19055,0,"Gatewatcher Gyro-Kill - On Death"),
6+
(19710,5,0,"You hear a faint unlocking sound...",16,0,100,0,0,0,19055,0,"Gatewatcher Iron-Hand - On Death");
7+
8+
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 35301;
9+
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
10+
(13,1,35301,0,0,31,0,3,21062,0,0,0,0,"","Group 0: Spell 'Suicide' (Effect 0) targets creature 'Nether Wraith'");

src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_gyrokill.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ enum GyroKillTexts
2525
SAY_AGGRO = 0,
2626
SAY_SLAY = 1,
2727
SAY_SAW_BLADES = 2,
28-
SAY_DEATH = 3
28+
SAY_DEATH = 3,
29+
EMOTE_DEATH = 4
2930
};
3031

3132
enum GyroKillSpells
@@ -50,7 +51,7 @@ struct boss_gatewatcher_gyrokill : public BossAI
5051
void JustEngagedWith(Unit* who) override
5152
{
5253
BossAI::JustEngagedWith(who);
53-
events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 10s);
54+
events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 15s, 25s);
5455
events.ScheduleEvent(EVENT_SAW_BLADE, 20s);
5556
events.ScheduleEvent(EVENT_SHADOW_POWER, 25s);
5657
Talk(SAY_AGGRO);
@@ -71,6 +72,7 @@ struct boss_gatewatcher_gyrokill : public BossAI
7172
{
7273
_JustDied();
7374
Talk(SAY_DEATH);
75+
Talk(EMOTE_DEATH);
7476
}
7577

7678
void UpdateAI(uint32 diff) override
@@ -88,8 +90,8 @@ struct boss_gatewatcher_gyrokill : public BossAI
8890
switch (eventId)
8991
{
9092
case EVENT_STREAM_OF_MACHINE_FLUID:
91-
DoCastVictim(SPELL_STREAM_OF_MACHINE_FLUID);
92-
events.Repeat(13s, 17s);
93+
DoCastSelf(SPELL_STREAM_OF_MACHINE_FLUID);
94+
events.Repeat(35s, 50s);
9395
break;
9496
case EVENT_SAW_BLADE:
9597
DoCastVictim(SPELL_SAW_BLADE);

src/server/scripts/Outland/TempestKeep/Mechanar/boss_gatewatcher_ironhand.cpp

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,27 +18,31 @@
1818
#include "ScriptMgr.h"
1919
#include "mechanar.h"
2020
#include "ScriptedCreature.h"
21+
#include "SpellInfo.h"
22+
#include "SpellMgr.h"
2123

2224
enum IronHandTexts
2325
{
2426
SAY_AGGRO = 0,
2527
SAY_HAMMER = 1,
2628
SAY_SLAY = 2,
2729
SAY_DEATH = 3,
28-
EMOTE_HAMMER = 4
30+
EMOTE_HAMMER = 4,
31+
EMOTE_DEATH = 5
2932
};
3033

3134
enum IronHandSpells
3235
{
33-
SPELL_SHADOW_POWER = 35322,
36+
SPELL_STREAM_OF_MACHINE_FLUID = 35311,
3437
SPELL_HAMMER_PUNCH = 35326,
3538
SPELL_JACKHAMMER = 35327,
36-
SPELL_STREAM_OF_MACHINE_FLUID = 35311
39+
SPELL_SHADOW_POWER = 35322
3740
};
3841

3942
enum IronHandEvents
4043
{
41-
EVENT_STREAM_OF_MACHINE_FLUID = 1,
44+
EVENT_STREAM_OF_MACHINE_FLUID = 1,
45+
EVENT_HAMMER_PUNCH,
4246
EVENT_JACKHAMMER,
4347
EVENT_SHADOW_POWER
4448
};
@@ -51,22 +55,36 @@ struct boss_gatewatcher_iron_hand : public BossAI
5155
void JustEngagedWith(Unit* who) override
5256
{
5357
BossAI::JustEngagedWith(who);
54-
events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 55s);
55-
events.ScheduleEvent(EVENT_JACKHAMMER, 45s);
58+
events.ScheduleEvent(EVENT_STREAM_OF_MACHINE_FLUID, 15s, 25s);
59+
events.ScheduleEvent(EVENT_HAMMER_PUNCH, 15s, 25s);
60+
events.ScheduleEvent(EVENT_JACKHAMMER, 10s, 30s);
5661
events.ScheduleEvent(EVENT_SHADOW_POWER, 25s);
5762
Talk(SAY_AGGRO);
5863
}
5964

65+
void OnSpellStart(SpellInfo const* spell) override
66+
{
67+
if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_JACKHAMMER, me))
68+
Talk(EMOTE_HAMMER);
69+
}
70+
71+
void OnSpellCast(SpellInfo const* spell) override
72+
{
73+
// Only in normal mode
74+
if (spell->Id == SPELL_JACKHAMMER)
75+
Talk(SAY_HAMMER);
76+
}
77+
6078
void KilledUnit(Unit* /*victim*/) override
6179
{
62-
if (roll_chance_i(50))
63-
Talk(SAY_SLAY);
80+
Talk(SAY_SLAY);
6481
}
6582

6683
void JustDied(Unit* /*killer*/) override
6784
{
6885
_JustDied();
6986
Talk(SAY_DEATH);
87+
Talk(EMOTE_DEATH);
7088
}
7189

7290
void UpdateAI(uint32 diff) override
@@ -84,20 +102,20 @@ struct boss_gatewatcher_iron_hand : public BossAI
84102
switch (eventId)
85103
{
86104
case EVENT_STREAM_OF_MACHINE_FLUID:
87-
DoCastVictim(SPELL_STREAM_OF_MACHINE_FLUID);
105+
DoCastSelf(SPELL_STREAM_OF_MACHINE_FLUID);
88106
events.Repeat(35s, 50s);
89107
break;
108+
case EVENT_HAMMER_PUNCH:
109+
DoCastVictim(SPELL_HAMMER_PUNCH);
110+
events.Repeat(25s, 35s);
111+
break;
90112
case EVENT_JACKHAMMER:
91-
Talk(EMOTE_HAMMER);
92-
/// @todo expect cast this about 5 times in a row (?), announce it by emote only once
93-
DoCastVictim(SPELL_JACKHAMMER);
94-
if (roll_chance_i(50))
95-
Talk(SAY_HAMMER);
113+
DoCastSelf(SPELL_JACKHAMMER);
96114
events.Repeat(30s);
97115
break;
98116
case EVENT_SHADOW_POWER:
99117
DoCastSelf(SPELL_SHADOW_POWER);
100-
events.Repeat(20s, 28s);
118+
events.Repeat(25s, 35s);
101119
break;
102120
default:
103121
break;

src/server/scripts/Outland/TempestKeep/Mechanar/boss_nethermancer_sepethrea.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,11 @@
1919
#include "mechanar.h"
2020
#include "ScriptedCreature.h"
2121
#include "SpellAuraEffects.h"
22+
#include "SpellInfo.h"
2223
#include "SpellScript.h"
2324
#include "TemporarySummon.h"
2425

25-
enum Texts
26+
enum SepethreaTexts
2627
{
2728
SAY_AGGRO = 0,
2829
SAY_SUMMON = 1, // Was never used or used under unknown conditions
@@ -31,7 +32,7 @@ enum Texts
3132
SAY_DEATH = 4
3233
};
3334

34-
enum Spells
35+
enum SepethreaSpells
3536
{
3637
SPELL_FROST_ATTACK = 45196, // This is definitely spell added in TBC but did it replaced both 35264 and 39086 or only normal version?
3738
SPELL_SUMMON_RAGING_FLAMES = 35275,
@@ -47,12 +48,13 @@ enum Spells
4748
SPELL_INFERNO_DAMAGE = 35283
4849
};
4950

50-
enum Events
51+
enum SepethreaEvents
5152
{
5253
EVENT_ARCANE_BLAST = 1,
5354
EVENT_DRAGONS_BREATH
5455
};
5556

57+
// 19221 - Nethermancer Sepethrea
5658
struct boss_nethermancer_sepethrea : public BossAI
5759
{
5860
boss_nethermancer_sepethrea(Creature* creature) : BossAI(creature, DATA_NETHERMANCER_SEPRETHREA) { }
@@ -72,6 +74,13 @@ struct boss_nethermancer_sepethrea : public BossAI
7274
DoCastSelf(SPELL_SUMMON_RAGING_FLAMES);
7375
}
7476

77+
void OnSpellCast(SpellInfo const* spell) override
78+
{
79+
if (spell->Id == SPELL_DRAGONS_BREATH)
80+
if (roll_chance_i(50))
81+
Talk(SAY_DRAGONS_BREATH);
82+
}
83+
7584
void KilledUnit(Unit* victim) override
7685
{
7786
if (victim->GetTypeId() == TYPEID_PLAYER)
@@ -124,8 +133,6 @@ struct boss_nethermancer_sepethrea : public BossAI
124133
case EVENT_DRAGONS_BREATH:
125134
DoCastSelf(SPELL_DRAGONS_BREATH);
126135
events.Repeat(25s, 35s);
127-
if (roll_chance_i(50))
128-
Talk(SAY_DRAGONS_BREATH);
129136
break;
130137
default:
131138
break;
@@ -139,6 +146,7 @@ struct boss_nethermancer_sepethrea : public BossAI
139146
}
140147
};
141148

149+
// 20481 - Raging Flames
142150
struct npc_raging_flames : public ScriptedAI
143151
{
144152
npc_raging_flames(Creature* creature) : ScriptedAI(creature) { }

src/server/scripts/Outland/TempestKeep/Mechanar/boss_pathaleon_the_calculator.cpp

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,15 @@ enum PathaleonTexts
3434

3535
enum PathaleonSpells
3636
{
37+
SPELL_SUMMON_NETHER_WRAITHS = 35284,
3738
SPELL_MANA_TAP = 36021,
3839
SPELL_ARCANE_TORRENT = 36022,
3940
SPELL_DOMINATION = 35280,
4041
SPELL_ARCANE_EXPLOSION_H = 15453,
42+
43+
SPELL_SUICIDE = 35301,
4144
SPELL_FRENZY = 36992,
42-
SPELL_SUICIDE = 35301, // NYI
4345

44-
SPELL_SUMMON_NETHER_WRAITHS = 35284,
4546
SPELL_SUMMON_NETHER_WRAITH_LEFT = 35285,
4647
SPELL_SUMMON_NETHER_WRAITH_RIGHT = 35286, // Unused
4748
SPELL_SUMMON_NETHER_WRAITH_FRONT = 35287,
@@ -59,6 +60,7 @@ enum PathaleonEvents
5960
EVENT_ARCANE_TORRENT,
6061
EVENT_DOMINATION,
6162
EVENT_ARCANE_EXPLOSION,
63+
EVENT_SUICIDE,
6264
EVENT_FRENZY
6365
};
6466

@@ -79,17 +81,6 @@ struct boss_pathaleon_the_calculator : public BossAI
7981
Talk(SAY_AGGRO);
8082
}
8183

82-
void KilledUnit(Unit* /*victim*/) override
83-
{
84-
Talk(SAY_SLAY);
85-
}
86-
87-
void JustDied(Unit* /*killer*/) override
88-
{
89-
_JustDied();
90-
Talk(SAY_DEATH);
91-
}
92-
9384
void OnSpellCast(SpellInfo const* spell) override
9485
{
9586
switch (spell->Id)
@@ -111,7 +102,21 @@ struct boss_pathaleon_the_calculator : public BossAI
111102
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
112103
{
113104
if (me->HealthBelowPctDamaged(20, damage) && !me->HasAura(SPELL_FRENZY))
105+
{
106+
events.ScheduleEvent(EVENT_SUICIDE, 0s);
114107
events.ScheduleEvent(EVENT_FRENZY, 0s);
108+
}
109+
}
110+
111+
void KilledUnit(Unit* /*victim*/) override
112+
{
113+
Talk(SAY_SLAY);
114+
}
115+
116+
void JustDied(Unit* /*killer*/) override
117+
{
118+
_JustDied();
119+
Talk(SAY_DEATH);
115120
}
116121

117122
void UpdateAI(uint32 diff) override
@@ -148,6 +153,9 @@ struct boss_pathaleon_the_calculator : public BossAI
148153
DoCastSelf(SPELL_ARCANE_EXPLOSION_H);
149154
events.Repeat(10s, 14s);
150155
break;
156+
case EVENT_SUICIDE:
157+
DoCastSelf(SPELL_SUICIDE);
158+
break;
151159
case EVENT_FRENZY:
152160
DoCastSelf(SPELL_FRENZY);
153161
break;
@@ -163,6 +171,7 @@ struct boss_pathaleon_the_calculator : public BossAI
163171
}
164172
};
165173

174+
// 21062 - Nether Wraith
166175
struct npc_nether_wraith : public ScriptedAI
167176
{
168177
npc_nether_wraith(Creature* creature) : ScriptedAI(creature) { }
@@ -181,12 +190,11 @@ struct npc_nether_wraith : public ScriptedAI
181190
DoCast(target, SPELL_ARCANE_BOLT);
182191
task.Repeat(5s, 10s);
183192
});
193+
}
184194

185-
_scheduler.Schedule(5s, 10s, [this](TaskContext task)
186-
{
187-
DoCastSelf(SPELL_NETHER_EXPLOSION);
188-
task.Repeat(10s, 15s);
189-
});
195+
void JustDied(Unit* /*killer*/) override
196+
{
197+
DoCastSelf(SPELL_NETHER_EXPLOSION);
190198
}
191199

192200
void UpdateAI(uint32 diff) override

src/server/scripts/Outland/TempestKeep/Mechanar/instance_mechanar.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,6 @@ class instance_mechanar : public InstanceMapScript
4040
SetBossNumber(EncounterCount);
4141
LoadDoorData(doorData);
4242
}
43-
44-
bool SetBossState(uint32 type, EncounterState state) override
45-
{
46-
if (!InstanceScript::SetBossState(type, state))
47-
return false;
48-
49-
switch (type)
50-
{
51-
case DATA_GATEWATCHER_GYROKILL:
52-
case DATA_GATEWATCHER_IRON_HAND:
53-
case DATA_MECHANOLORD_CAPACITUS:
54-
case DATA_NETHERMANCER_SEPRETHREA:
55-
case DATA_PATHALEON_THE_CALCULATOR:
56-
break;
57-
default:
58-
break;
59-
}
60-
61-
return true;
62-
}
6343
};
6444

6545
InstanceScript* GetInstanceScript(InstanceMap* map) const override

0 commit comments

Comments
 (0)