mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 18:15:31 +01:00
Core/Scripts: Black Temple misc fixes
Closes #18176
* Implemented faction change of Ashtongues when Shade of Akama dies
* Moved factions to black_temple.h
* Removed explicit from EnslavedSoulEvent (Reliquary of Souls)
* Fixed a typo in Skeram Script (followup 5f44890049)
* Fixed spell Shadow Inferno (Illidari Nightlord)
This commit is contained in:
8
sql/updates/world/3.3.5/2016_12_28_04_world.sql
Normal file
8
sql/updates/world/3.3.5/2016_12_28_04_world.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
DELETE FROM `creature_addon` WHERE guid IN(52480,52481);
|
||||
INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
|
||||
(52480, 0, 0, 8, 1, 0, NULL),
|
||||
(52481, 0, 0, 8, 1, 0, NULL);
|
||||
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_illidari_nightlord_shadow_inferno';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(39645,'spell_illidari_nightlord_shadow_inferno');
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ uint32 const EncounterCount = 9;
|
||||
|
||||
enum BTDataTypes
|
||||
{
|
||||
// Encounter States/Boss GUIDs
|
||||
// Encounter States
|
||||
DATA_HIGH_WARLORD_NAJENTUS = 0,
|
||||
DATA_SUPREMUS = 1,
|
||||
DATA_SHADE_OF_AKAMA = 2,
|
||||
@@ -86,7 +86,14 @@ enum BTCreatureIds
|
||||
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 BTGameObjectIds
|
||||
@@ -107,6 +114,12 @@ enum BTGameObjectIds
|
||||
GO_ILLIDAN_DOOR_L = 186262
|
||||
};
|
||||
|
||||
enum BlackTempleFactions
|
||||
{
|
||||
ASHTONGUE_FACTION_FRIEND = 1820,
|
||||
AKAMA_FACTION_COMBAT = 1868
|
||||
};
|
||||
|
||||
template<class AI>
|
||||
AI* GetBlackTempleAI(Creature* creature)
|
||||
{
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user