Dark flame cleft part 1
This commit is contained in:
@@ -0,0 +1,152 @@
|
|||||||
|
/*
|
||||||
|
* Copyright WowCommunity Project
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Player.h"
|
||||||
|
#include "ScriptedCreature.h"
|
||||||
|
#include "ScriptMgr.h"
|
||||||
|
#include "darkflame_cleft.h"
|
||||||
|
#include "SpellMgr.h"
|
||||||
|
|
||||||
|
enum BlazikonSpells
|
||||||
|
{
|
||||||
|
SPELL_DOUSING_BREATH = 425394, // extinguish candles, tank group hit
|
||||||
|
SPELL_WICKLIGHTER_BARRAGE = 421817, // cone fire barrage at non-tanks
|
||||||
|
SPELL_WICKLIGHTER_DMG = 421638, // barrage impact
|
||||||
|
SPELL_INCITE_FLAMES = 424212, // burning patches below lit candles
|
||||||
|
SPELL_ENKINDLING_INFERNO = 423099, // cone at each candle -> ignite
|
||||||
|
SPELL_INFERNO_IGNITE = 1218308,
|
||||||
|
SPELL_HEAT = 463300, // ambient engage aura
|
||||||
|
SPELL_PLAYER_DETECTION = 458456, // engage trigger
|
||||||
|
};
|
||||||
|
|
||||||
|
enum BlazikonEvents
|
||||||
|
{
|
||||||
|
EVENT_DOUSING_BREATH = 1,
|
||||||
|
EVENT_WICKLIGHTER_BARRAGE,
|
||||||
|
EVENT_INCITE_FLAMES,
|
||||||
|
EVENT_ENKINDLING_INFERNO,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 208743 - Blazikon
|
||||||
|
// Energy loop: Dousing Breath extinguishes candles, Wicklighter Barrage relights them,
|
||||||
|
// Incite Flames spawns burning ground, Enkindling Inferno detonates on candle count.
|
||||||
|
struct boss_blazikon : public BossAI
|
||||||
|
{
|
||||||
|
boss_blazikon(Creature* creature) : BossAI(creature, DATA_BLAZIKON) { }
|
||||||
|
|
||||||
|
void JustEngagedWith(Unit* who) override
|
||||||
|
{
|
||||||
|
BossAI::JustEngagedWith(who);
|
||||||
|
|
||||||
|
DoCastSelf(SPELL_HEAT, true);
|
||||||
|
DoCastSelf(SPELL_PLAYER_DETECTION, true);
|
||||||
|
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
|
||||||
|
|
||||||
|
events.ScheduleEvent(EVENT_DOUSING_BREATH, 3s);
|
||||||
|
events.ScheduleEvent(EVENT_WICKLIGHTER_BARRAGE, 9s);
|
||||||
|
events.ScheduleEvent(EVENT_INCITE_FLAMES, 21s);
|
||||||
|
events.ScheduleEvent(EVENT_ENKINDLING_INFERNO, 30s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
_JustDied();
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||||
|
{
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
|
||||||
|
_EnterEvadeMode();
|
||||||
|
_DespawnAtEvade();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
if (!UpdateVictim())
|
||||||
|
return;
|
||||||
|
|
||||||
|
events.Update(diff);
|
||||||
|
|
||||||
|
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||||
|
return;
|
||||||
|
|
||||||
|
while (uint32 eventId = events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case EVENT_DOUSING_BREATH:
|
||||||
|
DoCastSelf(SPELL_DOUSING_BREATH);
|
||||||
|
events.DelayEvents(4500ms);
|
||||||
|
events.Repeat(32s);
|
||||||
|
break;
|
||||||
|
case EVENT_WICKLIGHTER_BARRAGE:
|
||||||
|
CastWicklighterBarrage();
|
||||||
|
events.Repeat(32s);
|
||||||
|
break;
|
||||||
|
case EVENT_INCITE_FLAMES:
|
||||||
|
{
|
||||||
|
// Burning patches under lit candles: cast on up to four players.
|
||||||
|
std::list<Player*> targets;
|
||||||
|
me->GetPlayerListInGrid(targets, 60.0f);
|
||||||
|
uint8 casted = 0;
|
||||||
|
for (Player* player : targets)
|
||||||
|
{
|
||||||
|
if (!player->IsAlive() || player->IsGameMaster())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
me->CastSpell(player, SPELL_INCITE_FLAMES, CastSpellExtraArgsInit{
|
||||||
|
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
|
||||||
|
});
|
||||||
|
|
||||||
|
if (++casted >= 4)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
events.Repeat(32s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EVENT_ENKINDLING_INFERNO:
|
||||||
|
DoCastSelf(SPELL_ENKINDLING_INFERNO);
|
||||||
|
DoCastSelf(SPELL_INFERNO_IGNITE, true);
|
||||||
|
events.Repeat(32s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void CastWicklighterBarrage()
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_WICKLIGHTER_BARRAGE);
|
||||||
|
|
||||||
|
// Impact on a handful of non-tank players.
|
||||||
|
std::list<Player*> targets;
|
||||||
|
me->GetPlayerListInGrid(targets, 60.0f);
|
||||||
|
uint8 casted = 0;
|
||||||
|
for (Player* player : targets)
|
||||||
|
{
|
||||||
|
if (!player->IsAlive() || player->IsGameMaster())
|
||||||
|
continue;
|
||||||
|
if (me->GetVictim() == player)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
me->CastSpell(player, SPELL_WICKLIGHTER_DMG, CastSpellExtraArgsInit{
|
||||||
|
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
|
||||||
|
});
|
||||||
|
|
||||||
|
if (++casted >= 3)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void AddSC_boss_blazikon()
|
||||||
|
{
|
||||||
|
RegisterDarkflameCleftCreatureAI(boss_blazikon);
|
||||||
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
/*
|
||||||
|
* Copyright WowCommunity Project
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Player.h"
|
||||||
|
#include "ScriptedCreature.h"
|
||||||
|
#include "ScriptMgr.h"
|
||||||
|
#include "SpellAuras.h"
|
||||||
|
#include "darkflame_cleft.h"
|
||||||
|
|
||||||
|
enum OlWaxbeardSpells
|
||||||
|
{
|
||||||
|
SPELL_ROCK_BUSTER = 421665, // tank debuff +25% physical taken
|
||||||
|
SPELL_LURING_CANDLEFLAME = 421816, // candle + laborers fixate
|
||||||
|
SPELL_LURING_CANDLEFLAME_2 = 421664,
|
||||||
|
SPELL_RECKLESS_CHARGE = 425501, // charge furthest player + cave-in
|
||||||
|
SPELL_RECKLESS_CHARGE_2 = 422152,
|
||||||
|
SPELL_KOL_TO_ARMS = 445629, // summon menial laborers
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OlWaxbeardEvents
|
||||||
|
{
|
||||||
|
EVENT_ROCK_BUSTER = 1,
|
||||||
|
EVENT_LURING_CANDLEFLAME,
|
||||||
|
EVENT_LURING_CANDLEFLAME_2,
|
||||||
|
EVENT_RECKLESS_CHARGE,
|
||||||
|
EVENT_KOL_TO_ARMS,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum OlWaxbeardMisc
|
||||||
|
{
|
||||||
|
MAX_MENIAL_LABORERS = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 210149 - Ol' Waxbeard
|
||||||
|
// Cart-track encounter: candles lure Menial Laborers that stack Crude Weapons,
|
||||||
|
// Reckless Charge clears them and drops cave-ins on the party.
|
||||||
|
struct boss_ol_waxbeard : public BossAI
|
||||||
|
{
|
||||||
|
boss_ol_waxbeard(Creature* creature) : BossAI(creature, DATA_OL_WAXBEARD) { }
|
||||||
|
|
||||||
|
void JustEngagedWith(Unit* who) override
|
||||||
|
{
|
||||||
|
BossAI::JustEngagedWith(who);
|
||||||
|
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
|
||||||
|
|
||||||
|
events.ScheduleEvent(EVENT_ROCK_BUSTER, 14s);
|
||||||
|
events.ScheduleEvent(EVENT_LURING_CANDLEFLAME, 6s);
|
||||||
|
events.ScheduleEvent(EVENT_LURING_CANDLEFLAME_2, 10s);
|
||||||
|
events.ScheduleEvent(EVENT_RECKLESS_CHARGE, 10s);
|
||||||
|
events.ScheduleEvent(EVENT_KOL_TO_ARMS, 3s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
_JustDied();
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||||
|
{
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
|
||||||
|
_EnterEvadeMode();
|
||||||
|
_DespawnAtEvade();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
if (!UpdateVictim())
|
||||||
|
return;
|
||||||
|
|
||||||
|
events.Update(diff);
|
||||||
|
|
||||||
|
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||||
|
return;
|
||||||
|
|
||||||
|
while (uint32 eventId = events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case EVENT_ROCK_BUSTER:
|
||||||
|
DoCastVictim(SPELL_ROCK_BUSTER);
|
||||||
|
events.Repeat(40s);
|
||||||
|
break;
|
||||||
|
case EVENT_LURING_CANDLEFLAME:
|
||||||
|
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||||
|
DoCast(target, SPELL_LURING_CANDLEFLAME);
|
||||||
|
events.Repeat(39s);
|
||||||
|
break;
|
||||||
|
case EVENT_LURING_CANDLEFLAME_2:
|
||||||
|
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||||
|
DoCast(target, SPELL_LURING_CANDLEFLAME_2);
|
||||||
|
events.Repeat(39s);
|
||||||
|
break;
|
||||||
|
case EVENT_RECKLESS_CHARGE:
|
||||||
|
RecklessCharge();
|
||||||
|
events.Repeat(19s);
|
||||||
|
break;
|
||||||
|
case EVENT_KOL_TO_ARMS:
|
||||||
|
DoCastSelf(SPELL_KOL_TO_ARMS, true);
|
||||||
|
SummonMenialLaborers();
|
||||||
|
events.Repeat(30s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
// Charge the furthest player; laborers caught in the path are destroyed.
|
||||||
|
void RecklessCharge()
|
||||||
|
{
|
||||||
|
Unit* target = SelectTarget(SelectTargetMethod::MaxDistance, 0, 100.0f, true);
|
||||||
|
if (!target)
|
||||||
|
target = me->GetVictim();
|
||||||
|
|
||||||
|
if (!target)
|
||||||
|
return;
|
||||||
|
|
||||||
|
me->StopMoving();
|
||||||
|
DoCast(me, SPELL_RECKLESS_CHARGE);
|
||||||
|
me->SetFacingToObject(target);
|
||||||
|
me->GetMotionMaster()->MoveCharge(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 20.0f, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SummonMenialLaborers()
|
||||||
|
{
|
||||||
|
for (uint8 i = 0; i < MAX_MENIAL_LABORERS; ++i)
|
||||||
|
{
|
||||||
|
Position pos = me->GetRandomNearPosition(12.0f);
|
||||||
|
if (Creature* laborer = me->SummonCreature(NPC_MENIAL_LABORER, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30s))
|
||||||
|
laborer->AI()->AttackStart(me->GetVictim());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 210148 - Menial Laborer: stacks Crude Weapons bleed and fixates the candle carrier.
|
||||||
|
struct npc_menial_laborer : public ScriptedAI
|
||||||
|
{
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SPELL_CRUDE_WEAPONS = 422682,
|
||||||
|
SPELL_FIXATE = 428993,
|
||||||
|
};
|
||||||
|
|
||||||
|
npc_menial_laborer(Creature* creature) : ScriptedAI(creature) { }
|
||||||
|
|
||||||
|
void ScheduleTasks() override
|
||||||
|
{
|
||||||
|
events.ScheduleEvent(1, 4s);
|
||||||
|
events.ScheduleEvent(2, 5s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExecuteEvent(uint32 eventId) override
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
DoCastVictim(SPELL_CRUDE_WEAPONS);
|
||||||
|
events.Repeat(8s);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 30.0f, true))
|
||||||
|
{
|
||||||
|
me->GetMotionMaster()->MoveChase(target);
|
||||||
|
DoCast(target, SPELL_FIXATE);
|
||||||
|
}
|
||||||
|
events.Repeat(10s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void AddSC_boss_ol_waxbeard()
|
||||||
|
{
|
||||||
|
RegisterDarkflameCleftCreatureAI(boss_ol_waxbeard);
|
||||||
|
RegisterDarkflameCleftCreatureAI(npc_menial_laborer);
|
||||||
|
}
|
||||||
@@ -0,0 +1,235 @@
|
|||||||
|
/*
|
||||||
|
* Copyright WowCommunity Project
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Player.h"
|
||||||
|
#include "ScriptedCreature.h"
|
||||||
|
#include "ScriptMgr.h"
|
||||||
|
#include "darkflame_cleft.h"
|
||||||
|
|
||||||
|
enum CandleKingSpells
|
||||||
|
{
|
||||||
|
SPELL_DARKFLAME_AURA = 425956, // persistent escalating raid damage
|
||||||
|
SPELL_DARKLIGHT = 426127, // stacking darkness debuff
|
||||||
|
SPELL_DARKLIGHT_2 = 426152,
|
||||||
|
SPELL_EERIE_MOLDS = 420659, // summon wax statues
|
||||||
|
SPELL_PARANOID_MIND = 426145, // interruptible fear
|
||||||
|
SPELL_DARKFLAME_PICKAXE = 421277, // line at random player, shatters statues
|
||||||
|
SPELL_THROW_DARKFLAME = 420696, // marks players, 5yd shadow + absorb
|
||||||
|
SPELL_THROW_DARKFLAME_2 = 421250,
|
||||||
|
SPELL_MOLTEN_WAX = 420959, // melted statue pool
|
||||||
|
SPELL_WAX_STATUE_PULSE = 420919, // statue AoE fire pulse
|
||||||
|
};
|
||||||
|
|
||||||
|
enum CandleKingEvents
|
||||||
|
{
|
||||||
|
EVENT_DARKLIGHT = 1,
|
||||||
|
EVENT_EERIE_MOLDS,
|
||||||
|
EVENT_PARANOID_MIND,
|
||||||
|
EVENT_DARKFLAME_PICKAXE,
|
||||||
|
EVENT_THROW_DARKFLAME,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum CandleKingMisc
|
||||||
|
{
|
||||||
|
STATUES_PER_MOLDS = 4,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 208745 - The Candle King
|
||||||
|
// Darkflame arena ramps raid damage, Darklight stacks darkness, Eerie Molds summons
|
||||||
|
// Wax Statues that pulse AoE and are cleared by Darkflame Pickaxe / Throw Darkflame.
|
||||||
|
struct boss_the_candle_king : public BossAI
|
||||||
|
{
|
||||||
|
boss_the_candle_king(Creature* creature) : BossAI(creature, DATA_THE_CANDLE_KING) { }
|
||||||
|
|
||||||
|
void JustEngagedWith(Unit* who) override
|
||||||
|
{
|
||||||
|
BossAI::JustEngagedWith(who);
|
||||||
|
|
||||||
|
DoCastSelf(SPELL_DARKFLAME_AURA, true);
|
||||||
|
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
|
||||||
|
|
||||||
|
events.ScheduleEvent(EVENT_DARKLIGHT, 1s);
|
||||||
|
events.ScheduleEvent(EVENT_EERIE_MOLDS, 6s);
|
||||||
|
events.ScheduleEvent(EVENT_PARANOID_MIND, 11s);
|
||||||
|
events.ScheduleEvent(EVENT_DARKFLAME_PICKAXE, 14s);
|
||||||
|
events.ScheduleEvent(EVENT_THROW_DARKFLAME, 21s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
_JustDied();
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||||
|
{
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
|
||||||
|
_EnterEvadeMode();
|
||||||
|
_DespawnAtEvade();
|
||||||
|
DespawnStatues();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
if (!UpdateVictim())
|
||||||
|
return;
|
||||||
|
|
||||||
|
events.Update(diff);
|
||||||
|
|
||||||
|
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||||
|
return;
|
||||||
|
|
||||||
|
while (uint32 eventId = events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case EVENT_DARKLIGHT:
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_DARKLIGHT, true);
|
||||||
|
DoCastSelf(SPELL_DARKLIGHT_2, true);
|
||||||
|
events.Repeat(2s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EVENT_EERIE_MOLDS:
|
||||||
|
DoCastSelf(SPELL_EERIE_MOLDS);
|
||||||
|
SummonWaxStatues();
|
||||||
|
events.Repeat(32s);
|
||||||
|
break;
|
||||||
|
case EVENT_PARANOID_MIND:
|
||||||
|
DoCastSelf(SPELL_PARANOID_MIND);
|
||||||
|
events.Repeat(20s);
|
||||||
|
break;
|
||||||
|
case EVENT_DARKFLAME_PICKAXE:
|
||||||
|
{
|
||||||
|
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 60.0f, true))
|
||||||
|
{
|
||||||
|
DoCast(target, SPELL_DARKFLAME_PICKAXE);
|
||||||
|
ShatterStatues(target);
|
||||||
|
}
|
||||||
|
events.Repeat(23s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EVENT_THROW_DARKFLAME:
|
||||||
|
CastThrowDarkflame();
|
||||||
|
events.Repeat(25s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void SummonWaxStatues()
|
||||||
|
{
|
||||||
|
for (uint8 i = 0; i < STATUES_PER_MOLDS; ++i)
|
||||||
|
{
|
||||||
|
Position pos = me->GetRandomNearPosition(20.0f);
|
||||||
|
me->SummonCreature(NPC_WAX_STATUE, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// A pickaxe hit shatters any statue standing in the line toward the target.
|
||||||
|
void ShatterStatues(Unit* target)
|
||||||
|
{
|
||||||
|
float sx = me->GetPositionX();
|
||||||
|
float sy = me->GetPositionY();
|
||||||
|
float tx = target->GetPositionX();
|
||||||
|
float ty = target->GetPositionY();
|
||||||
|
|
||||||
|
float dx = tx - sx;
|
||||||
|
float dy = ty - sy;
|
||||||
|
float lenSq = dx * dx + dy * dy;
|
||||||
|
if (lenSq < 1.0f)
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::list<Creature*> statues;
|
||||||
|
me->GetCreatureListWithEntryInGrid(statues, NPC_WAX_STATUE, 60.0f);
|
||||||
|
for (Creature* statue : statues)
|
||||||
|
{
|
||||||
|
if (!statue->IsAlive())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Perpendicular distance from the statue to the boss->target line.
|
||||||
|
float px = statue->GetPositionX() - sx;
|
||||||
|
float py = statue->GetPositionY() - sy;
|
||||||
|
float t = (px * dx + py * dy) / lenSq;
|
||||||
|
if (t < 0.0f || t > 1.0f)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
float perpX = px - t * dx;
|
||||||
|
float perpY = py - t * dy;
|
||||||
|
if (std::sqrt(perpX * perpX + perpY * perpY) < 3.0f)
|
||||||
|
statue->KillSelf();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CastThrowDarkflame()
|
||||||
|
{
|
||||||
|
std::list<Player*> targets;
|
||||||
|
me->GetPlayerListInGrid(targets, 60.0f);
|
||||||
|
uint8 casted = 0;
|
||||||
|
for (Player* player : targets)
|
||||||
|
{
|
||||||
|
if (!player->IsAlive() || player->IsGameMaster())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
me->CastSpell(player, SPELL_THROW_DARKFLAME, CastSpellExtraArgsInit{
|
||||||
|
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
|
||||||
|
});
|
||||||
|
me->CastSpell(player, SPELL_THROW_DARKFLAME_2, CastSpellExtraArgsInit{
|
||||||
|
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
|
||||||
|
});
|
||||||
|
|
||||||
|
if (++casted >= 3)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void DespawnStatues()
|
||||||
|
{
|
||||||
|
std::list<Creature*> statues;
|
||||||
|
me->GetCreatureListWithEntryInGrid(statues, NPC_WAX_STATUE, 100.0f);
|
||||||
|
for (Creature* statue : statues)
|
||||||
|
statue->DespawnOrUnsummon(1ms);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 209603 - Wax Statue: pulses fire AoE while alive and melts into a wax pool.
|
||||||
|
struct npc_wax_statue : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_wax_statue(Creature* creature) : ScriptedAI(creature) { }
|
||||||
|
|
||||||
|
void ScheduleTasks() override
|
||||||
|
{
|
||||||
|
events.ScheduleEvent(1, 1s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExecuteEvent(uint32 eventId) override
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
DoCastSelf(SPELL_WAX_STATUE_PULSE, true);
|
||||||
|
events.Repeat(2s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_MOLTEN_WAX, true);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void AddSC_boss_the_candle_king()
|
||||||
|
{
|
||||||
|
RegisterDarkflameCleftCreatureAI(boss_the_candle_king);
|
||||||
|
RegisterDarkflameCleftCreatureAI(npc_wax_statue);
|
||||||
|
}
|
||||||
@@ -0,0 +1,271 @@
|
|||||||
|
/*
|
||||||
|
* Copyright WowCommunity Project
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "Player.h"
|
||||||
|
#include "ScriptedCreature.h"
|
||||||
|
#include "ScriptMgr.h"
|
||||||
|
#include "darkflame_cleft.h"
|
||||||
|
|
||||||
|
enum TheDarknessSpells
|
||||||
|
{
|
||||||
|
SPELL_SMOTHERING_SHADOWS = 422806, // no light source = -99% dmg/heal
|
||||||
|
SPELL_CANDLELIGHT = 426866, // light protection aura
|
||||||
|
SPELL_SHADOWBLAST = 427011, // 10yd shadow at random player
|
||||||
|
SPELL_SHADOWBLAST_ALT = 427014,
|
||||||
|
SPELL_UMBRAL_SLASH = 427025, // line at the candle
|
||||||
|
SPELL_UMBRAL_SLASH_ALT = 427022,
|
||||||
|
SPELL_CALL_DARKSPAWN = 427157, // summon darkspawn channel
|
||||||
|
SPELL_THE_DARKNESS = 427155, // engage aura
|
||||||
|
SPELL_FLAME_SCARRED = 424074, // darkness debuff
|
||||||
|
SPELL_WAXBEARER = 426879, // summon fleeing candlebearers
|
||||||
|
SPELL_SMOTHER_OVERLORD = 427156,
|
||||||
|
SPELL_SURGING_HEAT = 461460, // Massive Candle pulse
|
||||||
|
};
|
||||||
|
|
||||||
|
enum TheDarknessEvents
|
||||||
|
{
|
||||||
|
EVENT_CANDLELIGHT = 1,
|
||||||
|
EVENT_SHADOWBLAST,
|
||||||
|
EVENT_UMBRAL_SLASH,
|
||||||
|
EVENT_CALL_DARKSPAWN,
|
||||||
|
EVENT_WAXBEARER,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum TheDarknessMisc
|
||||||
|
{
|
||||||
|
DARKSPAWNS_PER_CALL = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
// 208747 - The Darkness
|
||||||
|
// Light-managed fight: staying out of the candlelight gives Smothering Shadows,
|
||||||
|
// Shadowblast puts 10yd shadow at players, Umbral Slash lines at the candle,
|
||||||
|
// Call Darkspawn brings add blobs that drain the light.
|
||||||
|
struct boss_the_darkness : public BossAI
|
||||||
|
{
|
||||||
|
boss_the_darkness(Creature* creature) : BossAI(creature, DATA_THE_DARKNESS) { }
|
||||||
|
|
||||||
|
void JustEngagedWith(Unit* who) override
|
||||||
|
{
|
||||||
|
BossAI::JustEngagedWith(who);
|
||||||
|
|
||||||
|
DoCastSelf(SPELL_THE_DARKNESS, true);
|
||||||
|
DoCastSelf(SPELL_FLAME_SCARRED, true);
|
||||||
|
DoCastSelf(SPELL_SMOTHER_OVERLORD, true);
|
||||||
|
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me, 1);
|
||||||
|
|
||||||
|
events.ScheduleEvent(EVENT_CANDLELIGHT, 2s);
|
||||||
|
events.ScheduleEvent(EVENT_SHADOWBLAST, 6s);
|
||||||
|
events.ScheduleEvent(EVENT_WAXBEARER, 13s);
|
||||||
|
events.ScheduleEvent(EVENT_UMBRAL_SLASH, 18s);
|
||||||
|
events.ScheduleEvent(EVENT_CALL_DARKSPAWN, 30s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void JustDied(Unit* /*killer*/) override
|
||||||
|
{
|
||||||
|
_JustDied();
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
}
|
||||||
|
|
||||||
|
void EnterEvadeMode(EvadeReason /*why*/) override
|
||||||
|
{
|
||||||
|
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||||
|
|
||||||
|
_EnterEvadeMode();
|
||||||
|
_DespawnAtEvade();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateAI(uint32 diff) override
|
||||||
|
{
|
||||||
|
if (!UpdateVictim())
|
||||||
|
return;
|
||||||
|
|
||||||
|
events.Update(diff);
|
||||||
|
|
||||||
|
if (me->HasUnitState(UNIT_STATE_CASTING))
|
||||||
|
return;
|
||||||
|
|
||||||
|
while (uint32 eventId = events.ExecuteEvent())
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case EVENT_CANDLELIGHT:
|
||||||
|
DoCastSelf(SPELL_CANDLELIGHT, true);
|
||||||
|
events.Repeat(2s);
|
||||||
|
break;
|
||||||
|
case EVENT_SHADOWBLAST:
|
||||||
|
{
|
||||||
|
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 40.0f, true))
|
||||||
|
{
|
||||||
|
DoCast(target, SPELL_SHADOWBLAST);
|
||||||
|
me->CastSpell(target, SPELL_SHADOWBLAST_ALT, CastSpellExtraArgsInit{
|
||||||
|
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR
|
||||||
|
});
|
||||||
|
}
|
||||||
|
events.Repeat(12s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EVENT_UMBRAL_SLASH:
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_UMBRAL_SLASH);
|
||||||
|
DoCastSelf(SPELL_UMBRAL_SLASH_ALT, true);
|
||||||
|
events.Repeat(20s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EVENT_CALL_DARKSPAWN:
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_CALL_DARKSPAWN);
|
||||||
|
SummonDarkspawns();
|
||||||
|
events.Repeat(33s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case EVENT_WAXBEARER:
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_WAXBEARER, true);
|
||||||
|
SummonCandlebearers();
|
||||||
|
events.Repeat(31s);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
void SummonDarkspawns()
|
||||||
|
{
|
||||||
|
for (uint8 i = 0; i < DARKSPAWNS_PER_CALL; ++i)
|
||||||
|
{
|
||||||
|
Position pos = me->GetRandomNearPosition(12.0f);
|
||||||
|
uint32 entry = urand(0, 1) ? NPC_WRIGGLING_DARKSPAWN : NPC_DARKNESS_SPAWN;
|
||||||
|
me->SummonCreature(entry, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SummonCandlebearers()
|
||||||
|
{
|
||||||
|
for (uint8 i = 0; i < 2; ++i)
|
||||||
|
{
|
||||||
|
Position pos = me->GetRandomNearPosition(15.0f);
|
||||||
|
me->SummonCreature(NPC_FLEEING_CANDLEBEARER, pos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 30s);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 212823 - Darkness Spawn: small shadow blob, drains light from the candle.
|
||||||
|
struct npc_darkness_spawn : public ScriptedAI
|
||||||
|
{
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SPELL_EATER_OF_LIGHT = 426887,
|
||||||
|
SPELL_MURDER = 426895,
|
||||||
|
};
|
||||||
|
|
||||||
|
npc_darkness_spawn(Creature* creature) : ScriptedAI(creature) { }
|
||||||
|
|
||||||
|
void ScheduleTasks() override
|
||||||
|
{
|
||||||
|
events.ScheduleEvent(1, 3s);
|
||||||
|
events.ScheduleEvent(2, 6s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExecuteEvent(uint32 eventId) override
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
DoCastSelf(SPELL_EATER_OF_LIGHT, true);
|
||||||
|
events.Repeat(12s);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
DoCastVictim(SPELL_MURDER);
|
||||||
|
events.Repeat(12s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 213008 - Wriggling Darkspawn: drains candle light over time.
|
||||||
|
struct npc_wriggling_darkspawn : public ScriptedAI
|
||||||
|
{
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SPELL_DRAIN_LIGHT = 427176,
|
||||||
|
SPELL_VOID_FORM = 427168,
|
||||||
|
};
|
||||||
|
|
||||||
|
npc_wriggling_darkspawn(Creature* creature) : ScriptedAI(creature) { }
|
||||||
|
|
||||||
|
void ScheduleTasks() override
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_VOID_FORM, true);
|
||||||
|
events.ScheduleEvent(1, 2s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExecuteEvent(uint32 eventId) override
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
DoCastSelf(SPELL_DRAIN_LIGHT);
|
||||||
|
events.Repeat(12s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 212821 - Fleeing Candlebearer: carries a candle to restore light.
|
||||||
|
struct npc_fleeing_candlebearer : public ScriptedAI
|
||||||
|
{
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
SPELL_HOLDING_A_CANDLE = 426892,
|
||||||
|
};
|
||||||
|
|
||||||
|
npc_fleeing_candlebearer(Creature* creature) : ScriptedAI(creature) { }
|
||||||
|
|
||||||
|
void ScheduleTasks() override
|
||||||
|
{
|
||||||
|
DoCastSelf(SPELL_HOLDING_A_CANDLE, true);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 212777 - Massive Candle: room candle, pulses heat.
|
||||||
|
struct npc_massive_candle : public ScriptedAI
|
||||||
|
{
|
||||||
|
npc_massive_candle(Creature* creature) : ScriptedAI(creature) { }
|
||||||
|
|
||||||
|
void ScheduleTasks() override
|
||||||
|
{
|
||||||
|
events.ScheduleEvent(1, 2s);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ExecuteEvent(uint32 eventId) override
|
||||||
|
{
|
||||||
|
switch (eventId)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
DoCastSelf(SPELL_SURGING_HEAT, true);
|
||||||
|
events.Repeat(8s);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void AddSC_boss_the_darkness()
|
||||||
|
{
|
||||||
|
RegisterDarkflameCleftCreatureAI(boss_the_darkness);
|
||||||
|
RegisterDarkflameCleftCreatureAI(npc_darkness_spawn);
|
||||||
|
RegisterDarkflameCleftCreatureAI(npc_wriggling_darkspawn);
|
||||||
|
RegisterDarkflameCleftCreatureAI(npc_fleeing_candlebearer);
|
||||||
|
RegisterDarkflameCleftCreatureAI(npc_massive_candle);
|
||||||
|
}
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
/*
|
||||||
|
* Copyright WowCommunity Project
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef DEF_DARKFLAME_CLEFT_H_
|
||||||
|
#define DEF_DARKFLAME_CLEFT_H_
|
||||||
|
|
||||||
|
#include "CreatureAIImpl.h"
|
||||||
|
|
||||||
|
#define DarkflameCleftScriptName "instance_darkflame_cleft"
|
||||||
|
#define DataHeader "DarkflameCleft"
|
||||||
|
|
||||||
|
uint32 const EncounterCount = 4;
|
||||||
|
|
||||||
|
enum DarkflameCleftDataTypes
|
||||||
|
{
|
||||||
|
// Encounters
|
||||||
|
DATA_OL_WAXBEARD = 0,
|
||||||
|
DATA_BLAZIKON = 1,
|
||||||
|
DATA_THE_CANDLE_KING = 2,
|
||||||
|
DATA_THE_DARKNESS = 3,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum DarkflameCleftCreatureIds
|
||||||
|
{
|
||||||
|
// Bosses
|
||||||
|
BOSS_OL_WAXBEARD = 210149,
|
||||||
|
BOSS_BLAZIKON = 208743,
|
||||||
|
BOSS_THE_CANDLE_KING = 208745,
|
||||||
|
BOSS_THE_DARKNESS = 208747,
|
||||||
|
|
||||||
|
// Npcs
|
||||||
|
NPC_MENIAL_LABORER = 210148,
|
||||||
|
NPC_WAX_STATUE = 209603,
|
||||||
|
NPC_DARKNESS_SPAWN = 212823,
|
||||||
|
NPC_WRIGGLING_DARKSPAWN = 213008,
|
||||||
|
NPC_FLEEING_CANDLEBEARER = 212821,
|
||||||
|
NPC_MASSIVE_CANDLE = 212777,
|
||||||
|
NPC_TRAINING_DUMMY = 213574,
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class AI, class T>
|
||||||
|
inline AI* GetDarkflameCleftAI(T* obj)
|
||||||
|
{
|
||||||
|
return GetInstanceAI<AI>(obj, DarkflameCleftScriptName);
|
||||||
|
}
|
||||||
|
|
||||||
|
#define RegisterDarkflameCleftCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetDarkflameCleftAI)
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* Copyright WowCommunity Project
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "InstanceScript.h"
|
||||||
|
#include "ScriptMgr.h"
|
||||||
|
#include "darkflame_cleft.h"
|
||||||
|
#include "Map.h"
|
||||||
|
|
||||||
|
static constexpr ObjectData creatureData[] =
|
||||||
|
{
|
||||||
|
{ BOSS_OL_WAXBEARD, DATA_OL_WAXBEARD },
|
||||||
|
{ BOSS_BLAZIKON, DATA_BLAZIKON },
|
||||||
|
{ BOSS_THE_CANDLE_KING, DATA_THE_CANDLE_KING },
|
||||||
|
{ BOSS_THE_DARKNESS, DATA_THE_DARKNESS },
|
||||||
|
{ 0, 0 } // END
|
||||||
|
};
|
||||||
|
|
||||||
|
static constexpr DungeonEncounterData const encounters[] =
|
||||||
|
{
|
||||||
|
{ DATA_OL_WAXBEARD, {{ 2829 }} },
|
||||||
|
{ DATA_BLAZIKON, {{ 2826 }} },
|
||||||
|
{ DATA_THE_CANDLE_KING, {{ 2787 }} },
|
||||||
|
{ DATA_THE_DARKNESS, {{ 2788 }} }
|
||||||
|
};
|
||||||
|
|
||||||
|
class instance_darkflame_cleft : public InstanceMapScript
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
instance_darkflame_cleft() : InstanceMapScript(DarkflameCleftScriptName, 2651) { }
|
||||||
|
|
||||||
|
struct instance_darkflame_cleft_InstanceMapScript : public InstanceScript
|
||||||
|
{
|
||||||
|
instance_darkflame_cleft_InstanceMapScript(InstanceMap* map) : InstanceScript(map)
|
||||||
|
{
|
||||||
|
SetHeaders(DataHeader);
|
||||||
|
SetBossNumber(EncounterCount);
|
||||||
|
LoadObjectData(creatureData, {});
|
||||||
|
LoadDungeonEncounterData(encounters);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerEnter(Player* player) override
|
||||||
|
{
|
||||||
|
if (!player->GetGroup() || !player->GetGroup()->GetLeaderGUID())
|
||||||
|
return;
|
||||||
|
|
||||||
|
ObjectGuid leaderguid = player->GetGroup()->GetLeaderGUID();
|
||||||
|
if (!leaderguid)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (Player* leader = ObjectAccessor::GetPlayer(*player, leaderguid))
|
||||||
|
{
|
||||||
|
if (leader->GetTeam() == HORDE)
|
||||||
|
faction_group = HORDE;
|
||||||
|
else if (leader->GetTeam() == ALLIANCE)
|
||||||
|
faction_group = ALLIANCE;
|
||||||
|
else
|
||||||
|
faction_group = HORDE;
|
||||||
|
}
|
||||||
|
|
||||||
|
player->GetGroup()->AddFollowerModeBots(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnPlayerExit(Player* player)
|
||||||
|
{
|
||||||
|
player->GetGroup()->DespawnFollowerModeBots(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
bool faction_group = HORDE;
|
||||||
|
};
|
||||||
|
|
||||||
|
InstanceScript* GetInstanceScript(InstanceMap* map) const override
|
||||||
|
{
|
||||||
|
return new instance_darkflame_cleft_InstanceMapScript(map);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void AddSC_instance_darkflame_cleft()
|
||||||
|
{
|
||||||
|
new instance_darkflame_cleft();
|
||||||
|
}
|
||||||
@@ -46,6 +46,13 @@ void AddSC_boss_The_Coaglamation();
|
|||||||
void AddSC_boss_izo_the_grand_splicer();
|
void AddSC_boss_izo_the_grand_splicer();
|
||||||
void AddSC_city_of_threads_trash();
|
void AddSC_city_of_threads_trash();
|
||||||
|
|
||||||
|
//Darkflame Cleft
|
||||||
|
void AddSC_instance_darkflame_cleft();
|
||||||
|
void AddSC_boss_ol_waxbeard();
|
||||||
|
void AddSC_boss_blazikon();
|
||||||
|
void AddSC_boss_the_candle_king();
|
||||||
|
void AddSC_boss_the_darkness();
|
||||||
|
|
||||||
// The name of this function should match:
|
// The name of this function should match:
|
||||||
// void Add${NameOfDirectory}Scripts()
|
// void Add${NameOfDirectory}Scripts()
|
||||||
void AddWarWithinScripts()
|
void AddWarWithinScripts()
|
||||||
@@ -86,4 +93,11 @@ void AddWarWithinScripts()
|
|||||||
AddSC_boss_The_Coaglamation();
|
AddSC_boss_The_Coaglamation();
|
||||||
AddSC_boss_izo_the_grand_splicer();
|
AddSC_boss_izo_the_grand_splicer();
|
||||||
AddSC_city_of_threads_trash();
|
AddSC_city_of_threads_trash();
|
||||||
|
|
||||||
|
//Darkflame Cleft
|
||||||
|
AddSC_instance_darkflame_cleft();
|
||||||
|
AddSC_boss_ol_waxbeard();
|
||||||
|
AddSC_boss_blazikon();
|
||||||
|
AddSC_boss_the_candle_king();
|
||||||
|
AddSC_boss_the_darkness();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user