Skip to content

Commit d4be17e

Browse files
committed
Scripts/Auchenai Crypts: Update scripts
1 parent 9746b68 commit d4be17e

4 files changed

Lines changed: 151 additions & 75 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
-- Shirrak
2+
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_shirrak_focus_fire';
3+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
4+
(32291, 'spell_shirrak_focus_fire');
5+
6+
UPDATE `creature_addon` SET `auras` = '33460' WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id` = 18371);
7+
8+
-- Maladaar
9+
DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_exarch_maladaar_stolen_soul';
10+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
11+
(32346, 'spell_exarch_maladaar_stolen_soul');
12+
13+
DELETE FROM `smart_scripts` WHERE `entryorguid` = 19412 AND `source_type` = 0;
14+
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (1941200,1941201) AND `source_type` = 9;
15+
INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
16+
(19412,0,0,0,11,0,100,0,0,0,0,0,0,80,1941200,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Spawn - Run Script"),
17+
(19412,0,1,0,58,0,100,0,0,0,0,0,0,80,1941201,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Waypoint Finished - Run Script"),
18+
19+
(1941200,9,0,0,0,0,100,0,0,0,0,0,0,60,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Script - Set Fly On"),
20+
(1941200,9,1,0,0,0,100,0,0,0,0,0,0,83,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Script - Remove NPC Flag Questgiver"),
21+
(1941200,9,2,0,0,0,100,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Script - Say Line 0"),
22+
(1941200,9,3,0,0,0,100,0,0,0,0,0,0,11,7765,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Script - Cast 'Projection'"),
23+
(1941200,9,4,0,0,0,100,0,5000,5000,0,0,0,53,0,155297,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Script - Start Waypoint"),
24+
25+
(1941201,9,0,0,0,0,100,0,0,0,0,0,0,60,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Script - Set Fly Off"),
26+
(1941201,9,1,0,0,0,100,0,0,0,0,0,0,82,2,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D'ore - On Script - Add NPC Flag Questgiver");

src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/auchenai_crypts.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
#define ACScriptName "instance_auchenai_crypts"
2424
#define DataHeader "AC"
2525

26-
uint32 const EncounterCount = 2;
26+
uint32 constexpr EncounterCount = 2;
2727

2828
enum ACDataTypes
2929
{

src/server/scripts/Outland/Auchindoun/AuchenaiCrypts/boss_exarch_maladaar.cpp

Lines changed: 89 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,16 @@
1515
* with this program. If not, see <http://www.gnu.org/licenses/>.
1616
*/
1717

18+
/*
19+
* Timers requires to be revisited
20+
*/
21+
1822
#include "ScriptMgr.h"
1923
#include "auchenai_crypts.h"
20-
#include "ObjectAccessor.h"
21-
#include "Player.h"
2224
#include "ScriptedCreature.h"
2325
#include "SpellInfo.h"
2426
#include "SpellScript.h"
27+
#include "TemporarySummon.h"
2528

2629
enum MaladaarTexts
2730
{
@@ -35,10 +38,10 @@ enum MaladaarTexts
3538

3639
enum MaladaarSpells
3740
{
41+
// Maladaar
3842
SPELL_SOUL_SCREAM = 32421,
3943
SPELL_RIBBON_OF_SOULS = 32422,
4044
SPELL_STOLEN_SOUL = 32346,
41-
SPELL_SUMMON_STOLEN_SOUL = 32360,
4245
SPELL_SUMMON_AVATAR = 32424,
4346

4447
// Stolen Soul
@@ -54,7 +57,10 @@ enum MaladaarSpells
5457
SPELL_MORTAL_STRIKE = 37335,
5558
SPELL_FREEZING_TRAP = 37368,
5659
SPELL_HAMMER_OF_JUSTICE = 37369,
57-
SPELL_PLAGUE_STRIKE = 58839
60+
SPELL_PLAGUE_STRIKE = 58839,
61+
62+
// Scripts
63+
SPELL_SUMMON_STOLEN_SOUL = 32360
5864
};
5965

6066
enum MaladaarEvents
@@ -91,7 +97,7 @@ enum MaladaarMisc
9197
MODEL_DRAENEI_FEMALE = 17004 // completely guessed
9298
};
9399

94-
Position const DoreSpawnPos = { -4.40722f, -387.277f, 40.6294f, 6.26573f };
100+
static Position const DoreSpawnPos = { -4.40722f, -387.277f, 40.6294f, 6.26573f };
95101

96102
// 18373 - Exarch Maladaar
97103
struct boss_exarch_maladaar : public BossAI
@@ -107,10 +113,12 @@ struct boss_exarch_maladaar : public BossAI
107113
void JustEngagedWith(Unit* who) override
108114
{
109115
BossAI::JustEngagedWith(who);
116+
110117
Talk(SAY_AGGRO);
111-
events.ScheduleEvent(EVENT_SOUL_SCREAM, RAND(10s, 15s, 20s, 25s));
112-
events.ScheduleEvent(EVENT_RIBBON_OF_SOULS, 1s, 4s);
113-
events.ScheduleEvent(EVENT_STOLEN_SOUL, RAND(10s, 15s, 20s, 25s));
118+
119+
events.ScheduleEvent(EVENT_SOUL_SCREAM, 10s, 15s);
120+
events.ScheduleEvent(EVENT_RIBBON_OF_SOULS, 0s, 5s);
121+
events.ScheduleEvent(EVENT_STOLEN_SOUL, 10s, 25s);
114122
}
115123

116124
void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType /*damageType*/, SpellInfo const* /*spellInfo = nullptr*/) override
@@ -122,9 +130,15 @@ struct boss_exarch_maladaar : public BossAI
122130
}
123131
}
124132

125-
void OnSpellCast(SpellInfo const* spell) override
133+
void OnSpellStart(SpellInfo const* spellInfo) override
126134
{
127-
switch (spell->Id)
135+
if (spellInfo->Id == SPELL_SUMMON_AVATAR)
136+
Talk(SAY_SUMMON);
137+
}
138+
139+
void OnSpellCast(SpellInfo const* spellInfo) override
140+
{
141+
switch (spellInfo->Id)
128142
{
129143
case SPELL_STOLEN_SOUL:
130144
if (roll_chance_i(25))
@@ -139,12 +153,6 @@ struct boss_exarch_maladaar : public BossAI
139153
}
140154
}
141155

142-
void SpellHitTarget(WorldObject* target, SpellInfo const* spellInfo) override
143-
{
144-
if (spellInfo->Id == SPELL_STOLEN_SOUL)
145-
target->CastSpell(target, SPELL_SUMMON_STOLEN_SOUL, true);
146-
}
147-
148156
// Do not despawn avatar
149157
void JustSummoned(Creature* /*summon*/) override { }
150158

@@ -176,19 +184,18 @@ struct boss_exarch_maladaar : public BossAI
176184
{
177185
case EVENT_SOUL_SCREAM:
178186
DoCastSelf(SPELL_SOUL_SCREAM);
179-
events.Repeat(RAND(15s, 20s));
187+
events.Repeat(15s, 20s);
180188
break;
181189
case EVENT_RIBBON_OF_SOULS:
182190
DoCastVictim(SPELL_RIBBON_OF_SOULS);
183-
events.Repeat(4s, 20s); // Usually just 4
191+
events.Repeat(3600ms);
184192
break;
185193
case EVENT_STOLEN_SOUL:
186194
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true, true, -SPELL_STOLEN_SOUL))
187195
DoCast(target, SPELL_STOLEN_SOUL);
188-
events.Repeat(RAND(20s, 25s));
196+
events.Repeat(20s, 25s);
189197
break;
190198
case EVENT_SUMMON_AVATAR:
191-
Talk(SAY_SUMMON);
192199
DoCastSelf(SPELL_SUMMON_AVATAR);
193200
break;
194201
default:
@@ -211,40 +218,47 @@ struct npc_stolen_soul : public ScriptedAI
211218
{
212219
npc_stolen_soul(Creature* creature) : ScriptedAI(creature), _summonerClass(CLASS_NONE) { }
213220

214-
void IsSummonedBy(WorldObject* summonerWO) override
221+
void InitializeAI() override
215222
{
216-
Player* summoner = summonerWO->ToPlayer();
217-
if (!summoner)
218-
return;
223+
ScriptedAI::InitializeAI();
219224

220-
_summonerGUID = summoner->GetGUID();
221-
_summonerClass = summoner->GetClass();
222-
223-
// Apparently this is the first time they tried to "clone" player
224-
uint32 model = 0;
225-
uint8 gender = summoner->GetNativeGender();
225+
me->SetCorpseDelay(3, true);
226226

227-
switch (summoner->GetRace())
227+
if (TempSummon* summon = me->ToTempSummon())
228228
{
229-
case RACE_UNDEAD_PLAYER: model = gender ? MODEL_UNDEAD_FEMALE : MODEL_UNDEAD_MALE; break;
230-
case RACE_NIGHTELF: model = gender ? MODEL_NIGHTELF_FEMALE : MODEL_NIGHTELF_MALE; break;
231-
case RACE_ORC: model = gender ? MODEL_ORC_FEMALE : MODEL_ORC_MALE; break;
232-
case RACE_TAUREN: model = gender ? MODEL_TAUREN_FEMALE : MODEL_TAUREN_MALE; break;
233-
case RACE_GNOME: model = gender ? MODEL_GNOME_FEMALE : MODEL_GNOME_MALE; break;
234-
case RACE_HUMAN: model = gender ? MODEL_HUMAN_FEMALE : MODEL_HUMAN_MALE; break;
235-
case RACE_DWARF: model = gender ? MODEL_DWARF_FEMALE : MODEL_DWARF_MALE; break;
236-
case RACE_TROLL: model = gender ? MODEL_TROLL_FEMALE : MODEL_TROLL_MALE; break;
237-
case RACE_BLOODELF: model = gender ? MODEL_BLOODELF_FEMALE : MODEL_BLOODELF_MALE; break;
238-
case RACE_DRAENEI: model = gender ? MODEL_DRAENEI_FEMALE : MODEL_DRAENEI_MALE; break;
239-
default: break;
240-
}
229+
Unit* summoner = summon->GetSummonerUnit();
230+
if (summoner && summoner->IsPlayer())
231+
{
232+
// Apparently this is the first time they tried to "clone" player
233+
uint32 model = 0;
234+
uint8 gender = summoner->GetNativeGender();
241235

242-
if (model)
243-
me->SetDisplayId(model);
236+
_summonerClass = summoner->GetClass();
244237

245-
me->SetCorpseDelay(3, true);
246-
DoCastSelf(SPELL_STOLEN_SOUL_VISUAL);
238+
switch (summoner->GetRace())
239+
{
240+
case RACE_UNDEAD_PLAYER: model = gender ? MODEL_UNDEAD_FEMALE : MODEL_UNDEAD_MALE; break;
241+
case RACE_NIGHTELF: model = gender ? MODEL_NIGHTELF_FEMALE : MODEL_NIGHTELF_MALE; break;
242+
case RACE_ORC: model = gender ? MODEL_ORC_FEMALE : MODEL_ORC_MALE; break;
243+
case RACE_TAUREN: model = gender ? MODEL_TAUREN_FEMALE : MODEL_TAUREN_MALE; break;
244+
case RACE_GNOME: model = gender ? MODEL_GNOME_FEMALE : MODEL_GNOME_MALE; break;
245+
case RACE_HUMAN: model = gender ? MODEL_HUMAN_FEMALE : MODEL_HUMAN_MALE; break;
246+
case RACE_DWARF: model = gender ? MODEL_DWARF_FEMALE : MODEL_DWARF_MALE; break;
247+
case RACE_TROLL: model = gender ? MODEL_TROLL_FEMALE : MODEL_TROLL_MALE; break;
248+
case RACE_BLOODELF: model = gender ? MODEL_BLOODELF_FEMALE : MODEL_BLOODELF_MALE; break;
249+
case RACE_DRAENEI: model = gender ? MODEL_DRAENEI_FEMALE : MODEL_DRAENEI_MALE; break;
250+
default: break;
251+
}
252+
253+
if (model)
254+
me->SetDisplayId(model);
255+
}
256+
}
257+
}
247258

259+
void JustAppeared() override
260+
{
261+
DoCastSelf(SPELL_STOLEN_SOUL_VISUAL);
248262
DoZoneInCombat();
249263
}
250264

@@ -338,8 +352,9 @@ struct npc_stolen_soul : public ScriptedAI
338352

339353
void JustDied(Unit* /*killer*/) override
340354
{
341-
if (Unit* target = ObjectAccessor::GetUnit(*me, _summonerGUID))
342-
DoCast(target, SPELL_STOLEN_SOUL_DISPEL, true);
355+
if (TempSummon* summon = me->ToTempSummon())
356+
if (Unit* summoner = summon->GetSummonerUnit())
357+
DoCast(summoner, SPELL_STOLEN_SOUL_DISPEL, true);
343358
}
344359

345360
void UpdateAI(uint32 diff) override
@@ -355,34 +370,55 @@ struct npc_stolen_soul : public ScriptedAI
355370

356371
private:
357372
TaskScheduler _scheduler;
358-
ObjectGuid _summonerGUID;
359373
uint8 _summonerClass;
360374
};
361375

376+
// 32346 - Stolen Soul
377+
class spell_exarch_maladaar_stolen_soul : public SpellScript
378+
{
379+
PrepareSpellScript(spell_exarch_maladaar_stolen_soul);
380+
381+
bool Validate(SpellInfo const* /*spellInfo*/) override
382+
{
383+
return ValidateSpellInfo({ SPELL_SUMMON_STOLEN_SOUL });
384+
}
385+
386+
void HandleAfterHit()
387+
{
388+
GetHitUnit()->CastSpell(nullptr, SPELL_SUMMON_STOLEN_SOUL, true);
389+
}
390+
391+
void Register() override
392+
{
393+
AfterHit += SpellHitFn(spell_exarch_maladaar_stolen_soul::HandleAfterHit);
394+
}
395+
};
396+
362397
// 33326 - Stolen Soul Dispel
363398
class spell_exarch_maladaar_stolen_soul_dispel : public AuraScript
364399
{
365400
PrepareAuraScript(spell_exarch_maladaar_stolen_soul_dispel);
366401

367-
bool Validate(SpellInfo const* /*spell*/) override
402+
bool Validate(SpellInfo const* /*spellInfo*/) override
368403
{
369404
return ValidateSpellInfo({ SPELL_STOLEN_SOUL });
370405
}
371406

372-
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
407+
void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
373408
{
374409
GetTarget()->RemoveAurasDueToSpell(SPELL_STOLEN_SOUL);
375410
}
376411

377412
void Register() override
378413
{
379-
AfterEffectApply += AuraEffectApplyFn(spell_exarch_maladaar_stolen_soul_dispel::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
414+
AfterEffectApply += AuraEffectApplyFn(spell_exarch_maladaar_stolen_soul_dispel::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
380415
}
381416
};
382417

383418
void AddSC_boss_exarch_maladaar()
384419
{
385420
RegisterAuchenaiCryptsCreatureAI(boss_exarch_maladaar);
386421
RegisterAuchenaiCryptsCreatureAI(npc_stolen_soul);
422+
RegisterSpellScript(spell_exarch_maladaar_stolen_soul);
387423
RegisterSpellScript(spell_exarch_maladaar_stolen_soul_dispel);
388424
}

0 commit comments

Comments
 (0)