mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-03-13 04:25:08 +00:00
refactor(Scripts/Raids): move spell ids for Raids to dungeondifficulty_dbc (#23477)
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user