Scripts/DS: implement of Madness of Deathwing encounter for normal difficulties

This commit is contained in:
Ovahlord
2020-03-17 23:49:23 +01:00
parent 478fbe9fc1
commit 95bb620355
6 changed files with 3364 additions and 4 deletions

View File

@@ -5198,6 +5198,40 @@ void SpellMgr::LoadSpellInfoCorrections()
// ENDOF THRONE OF THE FOUR WINDS SPELLS
// DRAGON SOUL SPELLS
ApplySpellFix({
106028, // Alexstrasza's Presence
109571,
109572,
109573,
106457, // Ysera's Presence
109640,
109641,
109642,
106027, // Nozdormu's Presence
109622,
109623,
109624,
106029, // Kalecgos' Presence
109606,
109607,
109608,
106040, // Spellweaving
106464 // Enter the Dream
}, [](SpellInfo* spellInfo)
{
spellInfo->AttributesEx3 |= SPELL_ATTR3_NO_INITIAL_AGGRO;
});
// Root
ApplySpellFix({ 105451 }, [](SpellInfo* spellInfo)
{
spellInfo->Effects[EFFECT_0].ApplyAuraName = SPELL_AURA_MOD_ROOT;
});
// ENDOF DRAGON SOUL SPELLS
// Disenchant
ApplySpellFix({ 13262 }, [](SpellInfo* spellInfo)
{

View File

@@ -35,15 +35,60 @@ enum DSDataTypes
DATA_ULTRAXION = 4,
DATA_WARMASTER_BLACKHORN = 5,
DATA_SPINE_OF_DEATHWING = 6,
DATA_MADNESS_OF_DEATHWING = 7
DATA_MADNESS_OF_DEATHWING = 7,
// Additional Data
DATA_DEATHWING_MADNESS_OF_DEATHWING,
DATA_THRALL_MADNESS_OF_DEATHWING,
DATA_YSERA_MADNESS_OF_DEATHWING,
DATA_ALEXSTRASZA_MADNESS_OF_DEATHWING,
DATA_NOZDORMU_MADNESS_OF_DEATHWING,
DATA_KALECGOS_MADNESS_OF_DEATHWING,
DATA_TAIL_TENTACLE_MADNESS_OF_DEATHWING
};
enum DSCreatures
{
// Bosses
BOSS_MADNESS_OF_DEATHWING = 56173,
/*Madness of Deathwing*/
NPC_DEATHWING_MADNESS_OF_DEATHWING = 57962,
NPC_ARM_TENTACLE_1 = 56167,
NPC_ARM_TENTACLE_2 = 56846,
NPC_WING_TENTACLE = 56168,
NPC_TAIL_TENTACLE = 56844,
NPC_MUTATED_CORRUPTION = 56471,
NPC_CRUSH_TARGET = 56581,
NPC_PLATFORM = 56307,
NPC_HEMORRHAGE_TARGET = 56359,
NPC_ELEMENTIUM_BOLT = 56262,
NPC_BLISTERING_TENTACLE = 56188,
NPC_TIME_ZONE_TARGET = 56332,
NPC_TIME_ZONE = 56311,
NPC_COSMETIC_TENTACLE = 57693,
NPC_ELEMENTIUM_FRAGMENT = 56724,
NPC_ELEMENTIUM_TERROR = 56710,
NPC_JUMP_PAD = 56699,
NPC_THRALL_MADNESS_OF_DEATHWING = 56103,
NPC_YSERA_MADNESS_OF_DEATHWING = 56100,
NPC_ALEXSTRASZA_MADNESS_OF_DEATHWING = 56099,
NPC_NOZDORMU_MADNESS_OF_DEATHWING = 56102,
NPC_KALECGOS_MADNESS_OF_DEATHWING = 56101
};
enum DSGameObjectIds
{
GO_ELEMENTIUM_FRAGMENT_10_NORMAL = 210079,
GO_ELEMENTIUM_FRAGMENT_25_NORMAL = 210218,
GO_ELEMENTIUM_FRAGMENT_25_LFR = 210220,
GO_ELEMENTIUM_FRAGMENT_10_HEROIC = 210219,
GO_ELEMENTIUM_FRAGMENT_25_HEROIC = 210217
};
enum DSSpells
{
SPELL_CALM_MAELSTROM_SKYBOX = 109480
};
template<class AI>

View File

@@ -21,7 +21,15 @@
ObjectData const creatureData[] =
{
{ 0, 0 } // END
{ BOSS_MADNESS_OF_DEATHWING, DATA_MADNESS_OF_DEATHWING },
{ NPC_DEATHWING_MADNESS_OF_DEATHWING, DATA_DEATHWING_MADNESS_OF_DEATHWING },
{ NPC_THRALL_MADNESS_OF_DEATHWING, DATA_THRALL_MADNESS_OF_DEATHWING },
{ NPC_YSERA_MADNESS_OF_DEATHWING, DATA_YSERA_MADNESS_OF_DEATHWING },
{ NPC_ALEXSTRASZA_MADNESS_OF_DEATHWING, DATA_ALEXSTRASZA_MADNESS_OF_DEATHWING },
{ NPC_NOZDORMU_MADNESS_OF_DEATHWING, DATA_NOZDORMU_MADNESS_OF_DEATHWING },
{ NPC_KALECGOS_MADNESS_OF_DEATHWING, DATA_KALECGOS_MADNESS_OF_DEATHWING },
{ NPC_TAIL_TENTACLE, DATA_TAIL_TENTACLE_MADNESS_OF_DEATHWING },
{ 0, 0 } // END
};
ObjectData const gameobjectData[] =
@@ -48,6 +56,29 @@ public:
LoadDoorData(doorData);
LoadObjectData(creatureData, gameobjectData);
}
void OnCreatureCreate(Creature* creature) override
{
InstanceScript::OnCreatureCreate(creature);
switch (creature->GetEntry())
{
case NPC_YSERA_MADNESS_OF_DEATHWING:
case NPC_ALEXSTRASZA_MADNESS_OF_DEATHWING:
case NPC_NOZDORMU_MADNESS_OF_DEATHWING:
case NPC_KALECGOS_MADNESS_OF_DEATHWING:
creature->setActive(true); // Ugly as fuck but the boss area is just too big...
break;
default:
break;
}
}
void OnPlayerEnter(Player* player) override
{
if (GetBossState(DATA_MADNESS_OF_DEATHWING) == DONE)
player->CastSpell(player, SPELL_CALM_MAELSTROM_SKYBOX);
}
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override

View File

@@ -50,7 +50,8 @@ void AddSC_instance_culling_of_stratholme();
void AddSC_instance_end_time(); //CoT End Time
void AddSC_instance_well_of_eternity(); //CoT Well of Eternity
void AddSC_instance_hour_of_twilight(); //CoT Hour of Twilight
void AddSC_instance_dragon_soul();
void AddSC_instance_dragon_soul(); //CoT Dragon Soul
void AddSC_boss_madness_of_deathwing();
void AddSC_instance_dire_maul(); //Dire Maul
void AddSC_instance_ragefire_chasm(); //Ragefire Chasm
void AddSC_boss_celebras_the_cursed(); //Maraudon
@@ -181,7 +182,8 @@ void AddKalimdorScripts()
AddSC_instance_end_time(); //CoT End Time
AddSC_instance_well_of_eternity(); //CoT Well of Eternity
AddSC_instance_hour_of_twilight(); //CoT Hour of Twilight
AddSC_instance_dragon_soul();
AddSC_instance_dragon_soul(); //CoT Dragon Soul
AddSC_boss_madness_of_deathwing();
AddSC_instance_dire_maul(); //Dire Maul
AddSC_instance_ragefire_chasm(); //Ragefire Chasm
AddSC_boss_celebras_the_cursed(); //Maraudon