aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp3
-rw-r--r--src/server/scripts/Outland/BlackTemple/black_temple.cpp42
-rw-r--r--src/server/scripts/Outland/BlackTemple/black_temple.h17
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp2
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp16
-rw-r--r--src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp29
6 files changed, 93 insertions, 16 deletions
diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
index e696226ec11..328e2aced43 100644
--- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
+++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp
@@ -258,7 +258,8 @@ public:
bool Validate(SpellInfo const* /*spell*/) override
{
- if (!sSpellMgr->GetSpellInfo(SPELL_TRUE_FULFILLMENT_2))
+ if (!sSpellMgr->GetSpellInfo(SPELL_TRUE_FULFILLMENT_2)
+ || !sSpellMgr->GetSpellInfo(SPELL_GENERIC_DISMOUNT))
return false;
return true;
}
diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.cpp b/src/server/scripts/Outland/BlackTemple/black_temple.cpp
index d9a87fd8494..e70d3ee2dff 100644
--- a/src/server/scripts/Outland/BlackTemple/black_temple.cpp
+++ b/src/server/scripts/Outland/BlackTemple/black_temple.cpp
@@ -30,7 +30,10 @@ enum Spells
// Angered Soul Fragment
SPELL_GREATER_INVISIBILITY = 41253,
- SPELL_ANGER = 41986
+ SPELL_ANGER = 41986,
+
+ // Illidari Nightlord
+ SPELL_SHADOW_INFERNO_DAMAGE = 39646
};
enum Creatures
@@ -283,9 +286,46 @@ class spell_soul_fragment_anger : public SpellScriptLoader
}
};
+// 39645 - Shadow Inferno
+class spell_illidari_nightlord_shadow_inferno : public SpellScriptLoader
+{
+ public:
+ spell_illidari_nightlord_shadow_inferno() : SpellScriptLoader("spell_illidari_nightlord_shadow_inferno") { }
+
+ class spell_illidari_nightlord_shadow_inferno_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_illidari_nightlord_shadow_inferno_AuraScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_SHADOW_INFERNO_DAMAGE))
+ return false;
+ return true;
+ }
+
+ void OnPeriodic(AuraEffect const* aurEffect)
+ {
+ PreventDefaultAction();
+ int32 bp = aurEffect->GetTickNumber() * aurEffect->GetAmount();
+ GetUnitOwner()->CastCustomSpell(SPELL_SHADOW_INFERNO_DAMAGE, SPELLVALUE_BASE_POINT0, bp, GetUnitOwner(), true);
+ }
+
+ void Register()
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_illidari_nightlord_shadow_inferno_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_illidari_nightlord_shadow_inferno_AuraScript();
+ }
+};
+
void AddSC_black_temple()
{
new npc_wrathbone_flayer();
new npc_angered_soul_fragment();
new spell_soul_fragment_anger();
+ new spell_illidari_nightlord_shadow_inferno();
}
diff --git a/src/server/scripts/Outland/BlackTemple/black_temple.h b/src/server/scripts/Outland/BlackTemple/black_temple.h
index 6a504e48965..9641f3c2d59 100644
--- a/src/server/scripts/Outland/BlackTemple/black_temple.h
+++ b/src/server/scripts/Outland/BlackTemple/black_temple.h
@@ -25,7 +25,7 @@ uint32 const EncounterCount = 9;
enum DataTypes
{
- // Encounter States/Boss GUIDs
+ // Encounter States
DATA_HIGH_WARLORD_NAJENTUS = 0,
DATA_SUPREMUS = 1,
DATA_SHADE_OF_AKAMA = 2,
@@ -86,7 +86,14 @@ enum CreatureIds
NPC_SUPREMUS_VOLCANO = 23085,
NPC_BLACK_TEMPLE_TRIGGER = 22984,
NPC_RELIQUARY_WORLD_TRIGGER = 23472,
- NPC_ENSLAVED_SOUL = 23469
+ NPC_ENSLAVED_SOUL = 23469,
+ NPC_ASHTONGUE_STALKER = 23374,
+ NPC_ASHTONGUE_BATTLELORD = 22844,
+ NPC_ASHTONGUE_MYSTIC = 22845,
+ NPC_ASHTONGUE_PRIMALIST = 22847,
+ NPC_ASHTONGUE_STORMCALLER = 22846,
+ NPC_ASHTONGUE_FERAL_SPIRIT = 22849,
+ NPC_STORM_FURY = 22848
};
enum GameObjectIds
@@ -107,6 +114,12 @@ enum GameObjectIds
GO_ILLIDAN_DOOR_L = 186262
};
+enum BlackTempleFactions
+{
+ ASHTONGUE_FACTION_FRIEND = 1820,
+ AKAMA_FACTION_COMBAT = 1868
+};
+
template<class AI>
AI* GetBlackTempleAI(Creature* creature)
{
diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
index 37090656d74..4d518cfb9ff 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp
@@ -122,7 +122,7 @@ Position const DespawnPoint = { 497.4939f, 183.2081f, 94.53341f };
class EnslavedSoulEvent : public BasicEvent
{
- public: explicit EnslavedSoulEvent(Creature* owner) : _owner(owner) { }
+ public: EnslavedSoulEvent(Creature* owner) : _owner(owner) { }
bool Execute(uint64 /*time*/, uint32 /*diff*/) override
{
diff --git a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
index 720aa676bfc..48a896d4a43 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_shade_of_akama.cpp
@@ -82,12 +82,6 @@ enum Creatures
NPC_CREATURE_SPAWNER_AKAMA = 23210
};
-enum Factions
-{
- FACTION_FRIENDLY = 1820,
- FACTION_COMBAT = 1868
-};
-
enum Actions
{
ACTION_START_SPAWNING = 0,
@@ -385,7 +379,7 @@ public:
void Reset() override
{
Initialize();
- me->setFaction(FACTION_FRIENDLY);
+ me->setFaction(ASHTONGUE_FACTION_FRIEND);
DoCastSelf(SPELL_STEALTH);
if (_instance->GetBossState(DATA_SHADE_OF_AKAMA) != DONE)
@@ -431,7 +425,7 @@ public:
{
_isInCombat = false;
me->CombatStop(true);
- me->setFaction(FACTION_FRIENDLY);
+ me->setFaction(ASHTONGUE_FACTION_FRIEND);
me->SetWalk(true);
_events.Reset();
me->GetMotionMaster()->MovePoint(AKAMA_INTRO_WAYPOINT, AkamaWP[1]);
@@ -485,7 +479,7 @@ public:
case EVENT_SHADE_CHANNEL:
me->SetFacingTo(FACE_THE_PLATFORM);
DoCastSelf(SPELL_AKAMA_SOUL_CHANNEL);
- me->setFaction(FACTION_COMBAT);
+ me->setFaction(AKAMA_FACTION_COMBAT);
_events.ScheduleEvent(EVENT_FIXATE, Seconds(5));
break;
case EVENT_FIXATE:
@@ -533,7 +527,7 @@ public:
}
}
- if (me->getFaction() == FACTION_COMBAT)
+ if (me->getFaction() == AKAMA_FACTION_COMBAT)
{
if (!UpdateVictim())
return;
@@ -1171,7 +1165,7 @@ public:
Talk(SAY_BROKEN_SPECIAL);
break;
case ACTION_BROKEN_HAIL:
- me->setFaction(FACTION_FRIENDLY);
+ me->setFaction(ASHTONGUE_FACTION_FRIEND);
Talk(SAY_BROKEN_HAIL);
break;
case ACTION_BROKEN_EMOTE:
diff --git a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
index a1ccf156958..cfa3dc34ccf 100644
--- a/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
+++ b/src/server/scripts/Outland/BlackTemple/instance_black_temple.cpp
@@ -105,6 +105,28 @@ class instance_black_temple : public InstanceMapScript
HandleGameObject(ObjectGuid::Empty, true, go);
}
+ void OnCreatureCreate(Creature* creature) override
+ {
+ InstanceScript::OnCreatureCreate(creature);
+
+ switch (creature->GetEntry())
+ {
+ case NPC_ASHTONGUE_STALKER:
+ case NPC_ASHTONGUE_BATTLELORD:
+ case NPC_ASHTONGUE_MYSTIC:
+ case NPC_ASHTONGUE_PRIMALIST:
+ case NPC_ASHTONGUE_STORMCALLER:
+ case NPC_ASHTONGUE_FERAL_SPIRIT:
+ case NPC_STORM_FURY:
+ AshtongueGUIDs.emplace_back(creature->GetGUID());
+ if (GetBossState(DATA_SHADE_OF_AKAMA) == DONE)
+ creature->setFaction(ASHTONGUE_FACTION_FRIEND);
+ break;
+ default:
+ break;
+ }
+ }
+
bool SetBossState(uint32 type, EncounterState state) override
{
if (!InstanceScript::SetBossState(type, state))
@@ -118,6 +140,11 @@ class instance_black_temple : public InstanceMapScript
trigger->AI()->Talk(EMOTE_HIGH_WARLORD_NAJENTUS_DIED);
break;
case DATA_SHADE_OF_AKAMA:
+ if (state == DONE)
+ for (ObjectGuid ashtongueGuid : AshtongueGUIDs)
+ if (Creature* ashtongue = instance->GetCreature(ashtongueGuid))
+ ashtongue->setFaction(ASHTONGUE_FACTION_FRIEND);
+ // no break
case DATA_TERON_GOREFIEND:
case DATA_GURTOGG_BLOODBOIL:
case DATA_RELIQUARY_OF_SOULS:
@@ -144,6 +171,8 @@ class instance_black_temple : public InstanceMapScript
return false;
return true;
}
+ protected:
+ GuidVector AshtongueGUIDs;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override