mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 18:36:31 +01:00
Scripts/ICC: Fixed Deathbringer/Valithria reputation handler + codestyle fixes
* Added correct reputation spell for both bosses * Fixed debuffs remove when deathbringer dies (it also fix recount) * Changed all DoCast(me, xxx) -> DoCastSelf(xx) * Removed old reputation hack in DB * Fixed my OCD with spells enum :)
This commit is contained in:
2
sql/updates/world/3.3.5/2020_05_19_00_world.sql
Normal file
2
sql/updates/world/3.3.5/2020_05_19_00_world.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- Deathbringer & Valithria
|
||||
DELETE FROM `creature_onkill_reputation` WHERE `creature_id` IN (37813,38402,38582,38583,36789,38174);
|
||||
@@ -91,33 +91,33 @@ enum ScriptTexts
|
||||
enum Spells
|
||||
{
|
||||
// Deathbringer Saurfang
|
||||
SPELL_ZERO_POWER = 72242,
|
||||
SPELL_GRIP_OF_AGONY = 70572, // Intro
|
||||
SPELL_BLOOD_LINK = 72178,
|
||||
SPELL_MARK_OF_THE_FALLEN_CHAMPION_S = 72256,
|
||||
SPELL_RUNE_OF_BLOOD_S = 72408,
|
||||
SPELL_ZERO_POWER = 72242,
|
||||
SPELL_GRIP_OF_AGONY = 70572, // Intro
|
||||
SPELL_BLOOD_LINK = 72178,
|
||||
SPELL_MARK_OF_THE_FALLEN_CHAMPION_S = 72256,
|
||||
SPELL_RUNE_OF_BLOOD_S = 72408,
|
||||
|
||||
SPELL_SUMMON_BLOOD_BEAST = 72172,
|
||||
SPELL_SUMMON_BLOOD_BEAST_25_MAN = 72356, // Additional cast, does not replace
|
||||
SPELL_FRENZY = 72737,
|
||||
SPELL_BLOOD_NOVA_TRIGGER = 72378,
|
||||
SPELL_BLOOD_NOVA = 72380,
|
||||
SPELL_BLOOD_POWER = 72371,
|
||||
SPELL_BLOOD_LINK_POWER = 72195,
|
||||
SPELL_BLOOD_LINK_DUMMY = 72202,
|
||||
SPELL_MARK_OF_THE_FALLEN_CHAMPION = 72293,
|
||||
SPELL_BOILING_BLOOD = 72385,
|
||||
SPELL_RUNE_OF_BLOOD = 72410,
|
||||
SPELL_SUMMON_BLOOD_BEAST = 72172,
|
||||
SPELL_SUMMON_BLOOD_BEAST_25_MAN = 72356, // Additional cast, does not replace
|
||||
SPELL_FRENZY = 72737,
|
||||
SPELL_BLOOD_NOVA_TRIGGER = 72378,
|
||||
SPELL_BLOOD_NOVA = 72380,
|
||||
SPELL_BLOOD_POWER = 72371,
|
||||
SPELL_BLOOD_LINK_POWER = 72195,
|
||||
SPELL_BLOOD_LINK_DUMMY = 72202,
|
||||
SPELL_MARK_OF_THE_FALLEN_CHAMPION = 72293,
|
||||
SPELL_BOILING_BLOOD = 72385,
|
||||
SPELL_RUNE_OF_BLOOD = 72410,
|
||||
|
||||
// Blood Beast
|
||||
SPELL_BLOOD_LINK_BEAST = 72176,
|
||||
SPELL_RESISTANT_SKIN = 72723,
|
||||
SPELL_SCENT_OF_BLOOD = 72769, // Heroic only
|
||||
SPELL_BLOOD_LINK_BEAST = 72176,
|
||||
SPELL_RESISTANT_SKIN = 72723,
|
||||
SPELL_SCENT_OF_BLOOD = 72769, // Heroic only
|
||||
|
||||
SPELL_RIDE_VEHICLE = 70640, // Outro
|
||||
SPELL_ACHIEVEMENT = 72928,
|
||||
SPELL_RIDE_VEHICLE = 70640, // Outro
|
||||
SPELL_ACHIEVEMENT = 72928,
|
||||
SPELL_REMOVE_MARKS_OF_THE_FALLEN_CHAMPION = 72257,
|
||||
SPELL_PERMANENT_FEIGN_DEATH = 70628,
|
||||
SPELL_PERMANENT_FEIGN_DEATH = 70628
|
||||
};
|
||||
|
||||
// Helper to get id of the aura on different modes (HasAura(baseId) wont work)
|
||||
@@ -268,11 +268,11 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
_frenzied = false;
|
||||
_dead = false;
|
||||
me->SetPower(POWER_ENERGY, 0);
|
||||
DoCast(me, SPELL_ZERO_POWER, true);
|
||||
DoCast(me, SPELL_BLOOD_LINK, true);
|
||||
DoCast(me, SPELL_BLOOD_POWER, true);
|
||||
DoCast(me, SPELL_MARK_OF_THE_FALLEN_CHAMPION_S, true);
|
||||
DoCast(me, SPELL_RUNE_OF_BLOOD_S, true);
|
||||
DoCastSelf(SPELL_ZERO_POWER, true);
|
||||
DoCastSelf(SPELL_BLOOD_LINK, true);
|
||||
DoCastSelf(SPELL_BLOOD_POWER, true);
|
||||
DoCastSelf(SPELL_MARK_OF_THE_FALLEN_CHAMPION_S, true);
|
||||
DoCastSelf(SPELL_RUNE_OF_BLOOD_S, true);
|
||||
me->RemoveAurasDueToSpell(SPELL_BERSERK);
|
||||
me->RemoveAurasDueToSpell(SPELL_FRENZY);
|
||||
}
|
||||
@@ -298,7 +298,7 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
me->SetImmuneToPC(false);
|
||||
if (!_introDone)
|
||||
{
|
||||
DoCast(me, SPELL_GRIP_OF_AGONY);
|
||||
DoCastSelf(SPELL_GRIP_OF_AGONY);
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SAURFANG_EVENT_NPC)))
|
||||
creature->AI()->DoAction(ACTION_INTERRUPT_INTRO);
|
||||
}
|
||||
@@ -360,7 +360,7 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
if (!_frenzied && HealthBelowPct(31)) // AT 30%, not below
|
||||
{
|
||||
_frenzied = true;
|
||||
DoCast(me, SPELL_FRENZY, true);
|
||||
DoCastSelf(SPELL_FRENZY, true);
|
||||
Talk(SAY_FRENZY);
|
||||
}
|
||||
|
||||
@@ -371,13 +371,12 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
_EnterEvadeMode();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetImmuneToPC(true);
|
||||
|
||||
me->RemoveAurasOnEvade();
|
||||
DoCastAOE(SPELL_REMOVE_MARKS_OF_THE_FALLEN_CHAMPION);
|
||||
DoCast(me, SPELL_ACHIEVEMENT, true);
|
||||
DoCastSelf(SPELL_ACHIEVEMENT, true);
|
||||
Talk(SAY_DEATH);
|
||||
|
||||
//instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MARK_OF_THE_FALLEN_CHAMPION);
|
||||
DoCast(me, SPELL_PERMANENT_FEIGN_DEATH);
|
||||
DoCastSelf(SPELL_REPUTATION_BOSS_KILL, true);
|
||||
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH);
|
||||
if (Creature* creature = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_SAURFANG_EVENT_NPC)))
|
||||
creature->AI()->DoAction(ACTION_START_OUTRO);
|
||||
}
|
||||
@@ -477,7 +476,7 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
case EVENT_INTRO_ALLIANCE_6:
|
||||
Talk(SAY_INTRO_ALLIANCE_6);
|
||||
Talk(SAY_INTRO_ALLIANCE_7);
|
||||
DoCast(me, SPELL_GRIP_OF_AGONY);
|
||||
DoCastSelf(SPELL_GRIP_OF_AGONY);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_2:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -488,7 +487,7 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
Talk(SAY_INTRO_HORDE_4);
|
||||
break;
|
||||
case EVENT_INTRO_HORDE_9:
|
||||
DoCast(me, SPELL_GRIP_OF_AGONY);
|
||||
DoCastSelf(SPELL_GRIP_OF_AGONY);
|
||||
Talk(SAY_INTRO_HORDE_9);
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
@@ -498,10 +497,10 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
break;
|
||||
case EVENT_SUMMON_BLOOD_BEAST:
|
||||
for (uint32 i10 = 0; i10 < 2; ++i10)
|
||||
DoCast(me, SPELL_SUMMON_BLOOD_BEAST+i10);
|
||||
DoCastSelf(SPELL_SUMMON_BLOOD_BEAST+i10);
|
||||
if (Is25ManRaid())
|
||||
for (uint32 i25 = 0; i25 < 3; ++i25)
|
||||
DoCast(me, SPELL_SUMMON_BLOOD_BEAST_25_MAN+i25);
|
||||
DoCastSelf(SPELL_SUMMON_BLOOD_BEAST_25_MAN+i25);
|
||||
Talk(SAY_BLOOD_BEASTS);
|
||||
events.ScheduleEvent(EVENT_SUMMON_BLOOD_BEAST, 40s, 0, PHASE_COMBAT);
|
||||
if (IsHeroic())
|
||||
@@ -516,11 +515,11 @@ class boss_deathbringer_saurfang : public CreatureScript
|
||||
events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000), 0, PHASE_COMBAT);
|
||||
break;
|
||||
case EVENT_BOILING_BLOOD:
|
||||
DoCast(me, SPELL_BOILING_BLOOD);
|
||||
DoCastSelf(SPELL_BOILING_BLOOD);
|
||||
events.ScheduleEvent(EVENT_BOILING_BLOOD, urand(15000, 20000), 0, PHASE_COMBAT);
|
||||
break;
|
||||
case EVENT_BERSERK:
|
||||
DoCast(me, SPELL_BERSERK);
|
||||
DoCastSelf(SPELL_BERSERK);
|
||||
Talk(SAY_BERSERK);
|
||||
break;
|
||||
case EVENT_SCENT_OF_BLOOD:
|
||||
|
||||
@@ -313,7 +313,7 @@ class boss_valithria_dreamwalker : public CreatureScript
|
||||
if (action != ACTION_ENTER_COMBAT)
|
||||
return;
|
||||
|
||||
DoCast(me, SPELL_COPY_DAMAGE);
|
||||
DoCastSelf(SPELL_COPY_DAMAGE);
|
||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_ENGAGE, me);
|
||||
_events.ScheduleEvent(EVENT_INTRO_TALK, 15s);
|
||||
_events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s);
|
||||
@@ -335,8 +335,9 @@ class boss_valithria_dreamwalker : public CreatureScript
|
||||
Talk(SAY_VALITHRIA_SUCCESS);
|
||||
_instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, me);
|
||||
me->RemoveAurasDueToSpell(SPELL_CORRUPTION_VALITHRIA);
|
||||
DoCast(me, SPELL_ACHIEVEMENT_CHECK);
|
||||
DoCastSelf(SPELL_ACHIEVEMENT_CHECK);
|
||||
DoCastAOE(SPELL_DREAMWALKERS_RAGE);
|
||||
DoCastSelf(SPELL_REPUTATION_BOSS_KILL, true);
|
||||
_events.ScheduleEvent(EVENT_DREAM_SLIP, 3500ms);
|
||||
if (Creature* lichKing = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VALITHRIA_LICH_KING)))
|
||||
lichKing->AI()->EnterEvadeMode();
|
||||
@@ -382,8 +383,8 @@ class boss_valithria_dreamwalker : public CreatureScript
|
||||
{
|
||||
if (spell->Id == SPELL_DREAM_SLIP)
|
||||
{
|
||||
DoCast(me, SPELL_CLEAR_ALL);
|
||||
DoCast(me, SPELL_AWARD_REPUTATION_BOSS_KILL);
|
||||
DoCastSelf(SPELL_CLEAR_ALL);
|
||||
DoCastSelf(SPELL_AWARD_REPUTATION_BOSS_KILL);
|
||||
// this display id was found in sniff instead of the one on aura
|
||||
me->SetDisplayId(11686);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
@@ -442,11 +443,11 @@ class boss_valithria_dreamwalker : public CreatureScript
|
||||
if (!IsHeroic())
|
||||
Talk(SAY_VALITHRIA_DREAM_PORTAL);
|
||||
for (uint32 i = 0; i < _portalCount; ++i)
|
||||
DoCast(me, SUMMON_PORTAL);
|
||||
DoCastSelf(SUMMON_PORTAL);
|
||||
_events.ScheduleEvent(EVENT_DREAM_PORTAL, 45s, 48s);
|
||||
break;
|
||||
case EVENT_DREAM_SLIP:
|
||||
DoCast(me, SPELL_DREAM_SLIP);
|
||||
DoCastSelf(SPELL_DREAM_SLIP);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -629,19 +630,19 @@ class npc_the_lich_king_controller : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_GLUTTONOUS_ABOMINATION_SUMMONER:
|
||||
DoCast(me, SPELL_TIMER_GLUTTONOUS_ABOMINATION);
|
||||
DoCastSelf(SPELL_TIMER_GLUTTONOUS_ABOMINATION);
|
||||
break;
|
||||
case EVENT_SUPPRESSER_SUMMONER:
|
||||
DoCast(me, SPELL_TIMER_SUPPRESSER);
|
||||
DoCastSelf(SPELL_TIMER_SUPPRESSER);
|
||||
break;
|
||||
case EVENT_BLISTERING_ZOMBIE_SUMMONER:
|
||||
DoCast(me, SPELL_TIMER_BLISTERING_ZOMBIE);
|
||||
DoCastSelf(SPELL_TIMER_BLISTERING_ZOMBIE);
|
||||
break;
|
||||
case EVENT_RISEN_ARCHMAGE_SUMMONER:
|
||||
DoCast(me, SPELL_TIMER_RISEN_ARCHMAGE);
|
||||
DoCastSelf(SPELL_TIMER_RISEN_ARCHMAGE);
|
||||
break;
|
||||
case EVENT_BLAZING_SKELETON_SUMMONER:
|
||||
DoCast(me, SPELL_TIMER_BLAZING_SKELETON);
|
||||
DoCastSelf(SPELL_TIMER_BLAZING_SKELETON);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@@ -753,7 +754,7 @@ class npc_risen_archmage : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_FROSTBOLT_VOLLEY:
|
||||
DoCast(me, SPELL_FROSTBOLT_VOLLEY);
|
||||
DoCastSelf(SPELL_FROSTBOLT_VOLLEY);
|
||||
_events.ScheduleEvent(EVENT_FROSTBOLT_VOLLEY, 8s, 15s);
|
||||
break;
|
||||
case EVENT_MANA_VOID:
|
||||
@@ -827,7 +828,7 @@ class npc_blazing_skeleton : public CreatureScript
|
||||
_events.ScheduleEvent(EVENT_FIREBALL, 2s, 4s);
|
||||
break;
|
||||
case EVENT_LEY_WASTE:
|
||||
DoCast(me, SPELL_LEY_WASTE);
|
||||
DoCastSelf(SPELL_LEY_WASTE);
|
||||
_events.ScheduleEvent(EVENT_LEY_WASTE, 15s, 20s);
|
||||
break;
|
||||
default:
|
||||
@@ -934,7 +935,7 @@ class npc_blistering_zombie : public CreatureScript
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
DoCast(me, SPELL_ACID_BURST, true);
|
||||
DoCastSelf(SPELL_ACID_BURST, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 /*diff*/) override
|
||||
@@ -992,7 +993,7 @@ class npc_gluttonous_abomination : public CreatureScript
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_GUT_SPRAY:
|
||||
DoCast(me, SPELL_GUT_SPRAY);
|
||||
DoCastSelf(SPELL_GUT_SPRAY);
|
||||
_events.ScheduleEvent(EVENT_GUT_SPRAY, 10s, 13s);
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -31,6 +31,7 @@ enum ICSharedSpells
|
||||
{
|
||||
SPELL_BERSERK = 26662,
|
||||
SPELL_BERSERK2 = 47008,
|
||||
SPELL_REPUTATION_BOSS_KILL = 73843,
|
||||
|
||||
// Deathbound Ward
|
||||
SPELL_STONEFORM = 70733,
|
||||
|
||||
Reference in New Issue
Block a user