refactor(Scripts/Raids): move spell ids for Raids to dungeondifficulty_dbc (#23477)

This commit is contained in:
Tereneckla
2025-10-31 12:35:13 +00:00
committed by GitHub
parent 65dac317c7
commit a4a9d215d8
38 changed files with 586 additions and 582 deletions

View File

@@ -118,9 +118,6 @@ enum Spells
SPELL_ACHIEVEMENT = 72928,
};
// Helper to get id of the aura on different modes (HasAura(baseId) wont work)
#define BOILING_BLOOD_HELPER RAID_MODE<int32>(72385, 72441, 72442, 72443)
enum EventTypes
{
EVENT_INTRO_ALLIANCE_1 = 1,

View File

@@ -19,7 +19,10 @@
#include "CreatureScript.h"
#include "ObjectMgr.h"
#include "ScriptedCreature.h"
#include "SharedDefines.h"
#include "SpellAuras.h"
#include "SpellInfo.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "icecrown_citadel.h"
#include "SpellAuraEffects.h"
@@ -57,10 +60,6 @@ enum Spells
SPELL_PLAGUE_STENCH = 71805,
};
// Used for HasAura checks
#define PUNGENT_BLIGHT_HELPER RAID_MODE<uint32>(69195, 71219, 73031, 73032)
#define INOCULATED_HELPER RAID_MODE<uint32>(69291, 72101, 72102, 72103)
uint32 const gaseousBlight[3] = {69157, 69162, 69164};
uint32 const gaseousBlightVisual[3] = {69126, 69152, 69154};
@@ -168,19 +167,6 @@ public:
Talk(SAY_KILL);
}
void SpellHitTarget(Unit* target, SpellInfo const* spell) override
{
if (spell->Id == PUNGENT_BLIGHT_HELPER)
target->RemoveAurasDueToSpell(INOCULATED_HELPER);
else if (Player* p = target->ToPlayer())
{
// Gaseous Blight damage
if (((spell->Id == 69159 || spell->Id == 70136 || spell->Id == 69161 || spell->Id == 70139 || spell->Id == 69163 || spell->Id == 70469) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_10) == QUEST_STATUS_INCOMPLETE) ||
((spell->Id == 70135 || spell->Id == 70138 || spell->Id == 70468 || spell->Id == 70137 || spell->Id == 70140 || spell->Id == 70470) && p->GetQuestStatus(QUEST_RESIDUE_RENDEZVOUS_25) == QUEST_STATUS_INCOMPLETE))
p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true);
}
}
void RemoveBlight()
{
if (Creature* gasDummy = ObjectAccessor::GetCreature(*me, _gasDummyGUID))
@@ -313,8 +299,15 @@ class spell_festergut_pungent_blight : public SpellScript
professor->AI()->DoAction(ACTION_FESTERGUT_GAS);
}
void HandleHit(SpellEffIndex /*effIndex*/)
{
if (Unit* target = GetHitUnit())
target->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_INOCULATED, GetCaster()));
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
OnEffectHitTarget += SpellEffectFn(spell_festergut_pungent_blight::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
@@ -378,6 +371,34 @@ class spell_festergut_gastric_bloat : public SpellScript
}
};
class spell_festergut_gaseous_blight : public SpellScript
{
PrepareSpellScript(spell_festergut_gaseous_blight);
bool Validate(SpellInfo const* /*spell*/) override
{
return ValidateSpellInfo({ SPELL_ORANGE_BLIGHT_RESIDUE });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
if (Player* p = GetHitUnit()->ToPlayer())
{
if (Map* map = GetCaster()->GetMap())
{
uint32 questId = map->Is25ManRaid() ? QUEST_RESIDUE_RENDEZVOUS_25 : QUEST_RESIDUE_RENDEZVOUS_10;
if (p->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE)
p->CastSpell(p, SPELL_ORANGE_BLIGHT_RESIDUE, true);
}
}
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_festergut_gaseous_blight::HandleScript, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
class achievement_flu_shot_shortage : public AchievementCriteriaScript
{
public:
@@ -468,6 +489,7 @@ void AddSC_boss_festergut()
RegisterSpellScript(spell_festergut_pungent_blight);
RegisterSpellScript(spell_festergut_blighted_spores_aura);
RegisterSpellScript(spell_festergut_gastric_bloat);
RegisterSpellScript(spell_festergut_gaseous_blight);
new achievement_flu_shot_shortage();
new npc_stinky_icc();

View File

@@ -72,8 +72,6 @@ enum Spells
SPELL_AWAKEN_PLAGUED_ZOMBIES = 71159,
};
#define MUTATED_INFECTION RAID_MODE<int32>(69674, 71224, 73022, 73023)
enum Events
{
EVENT_NONE,
@@ -193,7 +191,7 @@ public:
void JustDied(Unit* /*killer*/) override
{
instance->DoRemoveAurasDueToSpellOnPlayers(MUTATED_INFECTION);
instance->DoRemoveAurasDueToSpellOnPlayers(sSpellMgr->GetSpellIdForDifficulty(SPELL_MUTATED_INFECTION, me));
_JustDied();
Talk(SAY_DEATH);
if (Creature* professor = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_PROFESSOR_PUTRICIDE)))

View File

@@ -141,7 +141,6 @@ enum Spells
SPELL_SOUL_REAPER = 69409, // instant
SPELL_SOUL_REAPER_BUFF = 69410,
SPELL_SUMMON_VALKYR = 69037, // instant
SPELL_SUMMON_VALKYR_PERIODIC = 74361,
SPELL_WINGS_OF_THE_DAMNED = 74352,
SPELL_VALKYR_TARGET_SEARCH = 69030,
SPELL_HARVEST_SOUL_VALKYR = 68985, // vehicle aura used by Val'kyr Shadowguard and Strangulate Vehicle
@@ -188,14 +187,6 @@ enum Spells
SPELL_FRENZY = 28747,
};
#define NECROTIC_PLAGUE_LK RAID_MODE<uint32>(70337, 73912, 73913, 73914)
#define NECROTIC_PLAGUE_PLR RAID_MODE<uint32>(70338, 73785, 73786, 73787)
#define REMORSELESS_WINTER_1 RAID_MODE<uint32>(68981, 74270, 74271, 74272)
#define REMORSELESS_WINTER_2 RAID_MODE<uint32>(72259, 74273, 74274, 74275)
#define SUMMON_VALKYR RAID_MODE<uint32>(69037, 74361, 69037, 74361)
//#define HARVEST_SOUL RAID_MODE<uint32>(68980, 74325, 74296, 74297)
#define HARVESTED_SOUL_BUFF RAID_MODE<uint32>(72679, 74318, 74319, 74320)
enum Events
{
EVENT_NONE,
@@ -915,7 +906,7 @@ public:
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == HARVESTED_SOUL_BUFF && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count())
if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVESTED_SOUL_LK_BUFF, me) && me->IsInCombat() && !IsHeroic() && _phase != PHASE_OUTRO && _lastTalkTimeBuff + 5 <= GameTime::GetGameTime().count())
{
_lastTalkTimeBuff = GameTime::GetGameTime().count();
Talk(SAY_LK_FROSTMOURNE_KILL);
@@ -924,7 +915,7 @@ public:
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
{
if (spell->Id == REMORSELESS_WINTER_1 || spell->Id == REMORSELESS_WINTER_2)
if (spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_1, me) || spell->Id == sSpellMgr->GetSpellIdForDifficulty(SPELL_REMORSELESS_WINTER_2, me))
{
me->GetMap()->SetZoneOverrideLight(AREA_THE_FROZEN_THRONE, LIGHT_SNOWSTORM, 5s);
me->GetMap()->SetZoneWeather(AREA_THE_FROZEN_THRONE, WEATHER_STATE_LIGHT_SNOW, 0.5f);
@@ -1064,7 +1055,7 @@ public:
events.ScheduleEvent(EVENT_INFEST, 22s + 500ms, EVENT_GROUP_ABILITIES);
break;
case EVENT_NECROTIC_PLAGUE:
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, NECROTIC_PLAGUE_LK, NECROTIC_PLAGUE_PLR)))
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, NecroticPlagueTargetCheck(me, sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE, me), sSpellMgr->GetSpellIdForDifficulty(SPELL_NECROTIC_PLAGUE_JUMP, me))))
{
Talk(EMOTE_NECROTIC_PLAGUE_WARNING, target);
me->CastSpell(target, SPELL_NECROTIC_PLAGUE, false);
@@ -1145,7 +1136,7 @@ public:
{
me->GetMap()->SetZoneMusic(AREA_THE_FROZEN_THRONE, MUSIC_SPECIAL);
Talk(SAY_LK_SUMMON_VALKYR);
me->CastSpell((Unit*)nullptr, SUMMON_VALKYR, false);
me->CastSpell((Unit*)nullptr, SPELL_SUMMON_VALKYR, false);
events.ScheduleEvent(EVENT_SUMMON_VALKYR, 45s, EVENT_GROUP_ABILITIES);
// schedule a defile (or reschedule it) if next defile event
@@ -2352,8 +2343,7 @@ class spell_the_lich_king_defile : public SpellScript
{
targets.remove_if(VehicleCheck());
targets.remove_if(Acore::AllWorldObjectsInExactRange(GetCaster(), 10.0f * GetCaster()->GetFloatValue(OBJECT_FIELD_SCALE_X), true));
uint32 strangulatedAura[4] = {68980, 74325, 74296, 74297};
targets.remove_if(Acore::UnitAuraCheck(true, strangulatedAura[GetCaster()->GetMap()->GetDifficulty()]));
targets.remove_if(Acore::UnitAuraCheck(true, sSpellMgr->GetSpellIdForDifficulty(SPELL_HARVEST_SOUL, GetCaster())));
}
void ChangeDamageAndGrow()

View File

@@ -52,8 +52,8 @@ enum Spells
SPELL_NIGHTMARE_PORTAL_VISUAL_PRE = 71986,
SPELL_NIGHTMARE_CLOUD = 71970,
SPELL_NIGHTMARE_CLOUD_VISUAL = 71939,
SPELL_PRE_SUMMON_DREAM_PORTAL = 72224,
SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480,
SPELL_PRE_SUMMON_DREAM_PORTAL = 72224, // normal
SPELL_PRE_SUMMON_NIGHTMARE_PORTAL = 72480, // heroic
SPELL_SUMMON_DREAM_PORTAL = 71305,
SPELL_SUMMON_NIGHTMARE_PORTAL = 71987,
SPELL_DREAMWALKERS_RAGE = 71189,
@@ -94,16 +94,13 @@ enum Spells
SPELL_GUT_SPRAY = 70633,
SPELL_ROT_WORM_SPAWNER = 70675,
// Dream Cloud
// Dream Cloud (normal)
SPELL_EMERALD_VIGOR = 70873,
// Nightmare Cloud
// Nightmare Cloud (heroic)
SPELL_TWISTED_NIGHTMARE = 71941,
};
#define SUMMON_PORTAL RAID_MODE<uint32>(SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_DREAM_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL, SPELL_PRE_SUMMON_NIGHTMARE_PORTAL)
#define EMERALD_VIGOR RAID_MODE<uint32>(SPELL_EMERALD_VIGOR, SPELL_EMERALD_VIGOR, SPELL_TWISTED_NIGHTMARE, SPELL_TWISTED_NIGHTMARE)
enum Events
{
// Valithria Dreamwalker
@@ -462,7 +459,7 @@ public:
if (!IsHeroic())
Talk(SAY_VALITHRIA_DREAM_PORTAL);
for (uint32 i = 0; i < _portalCount; ++i)
me->CastSpell(me, SUMMON_PORTAL, false);
me->CastSpell(me, SPELL_PRE_SUMMON_DREAM_PORTAL, false);
_events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s);
break;
case EVENT_DREAM_SLIP:
@@ -885,7 +882,7 @@ public:
me->GetMotionMaster()->Clear(false);
me->GetMotionMaster()->MoveIdle();
// must use originalCaster the same for all clouds to allow stacking
me->CastSpell(me, EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
me->CastSpell(me, SPELL_EMERALD_VIGOR, false, nullptr, nullptr, _instance->GetGuidData(DATA_VALITHRIA_DREAMWALKER));
me->DespawnOrUnsummon(1s);
break;
default: