diff options
Diffstat (limited to 'src')
3 files changed, 37 insertions, 71 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index fd8be29c3e0..c3c2ceaa11d 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8718,6 +8718,8 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig // Deathbringer Saurfang - Rune of Blood case 72408: // can proc only if target is marked with rune + // this should be handled by targetAuraSpell, but because 72408 is not passive + // one failed proc will remove the entire aura if (!pVictim->HasAura(72410)) return false; break; @@ -8725,6 +8727,12 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, AuraEffect* trig case 72176: basepoints0 = 3; break; + // Deathbringer Saurfang - Mark of the Fallen Champion + case 72256: + // this should be handled by targetAuraSpell, but because 72408 is not passive + // one failed proc will remove the entire aura + CastSpell(NULL, trigger_spell_id, true, NULL, triggeredByAura); + return true; case 15337: // Improved Spirit Tap (Rank 1) case 15338: // Improved Spirit Tap (Rank 2) { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index a2dc0127732..96bfb17e5d4 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -744,7 +744,7 @@ class npc_high_overlord_saurfang_icc : public CreatureScript InstanceScript* instance = creature->GetInstanceScript(); if (instance && instance->GetBossState(DATA_DEATHBRINGER_SAURFANG) != DONE) { - player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "Let it begin...", 631, -ACTION_START_EVENT); + player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, "We are ready to go, High Overlord. The Lich King must fall!", 631, -ACTION_START_EVENT); player->SEND_GOSSIP_MENU(DEFAULT_GOSSIP_MESSAGE, creature->GetGUID()); } @@ -1222,41 +1222,6 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader } }; -class MarkOfTheFallenChampionCheck -{ - public: - bool operator() (Unit* unit) - { - return !unit->HasAura(SPELL_MARK_OF_THE_FALLEN_CHAMPION); - } -}; - -class spell_deathbringer_mark_of_the_fallen_champion : public SpellScriptLoader -{ - public: - spell_deathbringer_mark_of_the_fallen_champion() : SpellScriptLoader("spell_deathbringer_mark_of_the_fallen_champion") { } - - class spell_deathbringer_mark_of_the_fallen_champion_SpellScript : public SpellScript - { - PrepareSpellScript(spell_deathbringer_mark_of_the_fallen_champion_SpellScript); - - void FilterTargets(std::list<Unit*>& unitList) - { - unitList.remove_if(MarkOfTheFallenChampionCheck()); - } - - void Register() - { - OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_mark_of_the_fallen_champion_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC); - } - }; - - SpellScript* GetSpellScript() const - { - return new spell_deathbringer_mark_of_the_fallen_champion_SpellScript(); - } -}; - class achievement_ive_gone_and_made_a_mess : public AchievementCriteriaScript { public: @@ -1285,6 +1250,5 @@ void AddSC_boss_deathbringer_saurfang() new spell_deathbringer_rune_of_blood(); new spell_deathbringer_blood_nova(); new spell_deathbringer_blood_nova_targeting(); - new spell_deathbringer_mark_of_the_fallen_champion(); new achievement_ive_gone_and_made_a_mess(); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index f760d415ac4..b050f42fc6c 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -113,45 +113,44 @@ enum EventTypes EVENT_INTRO_5 = 4, EVENT_INTRO_6 = 5, EVENT_INTRO_7 = 6, - EVENT_INTRO_FINISH = 7, - EVENT_BERSERK = 8, - EVENT_DEATH_AND_DECAY = 9, - EVENT_DOMINATE_MIND_H = 10, + EVENT_BERSERK = 7, + EVENT_DEATH_AND_DECAY = 8, + EVENT_DOMINATE_MIND_H = 9, // Phase 1 only - EVENT_P1_SUMMON_WAVE = 11, - EVENT_P1_SHADOW_BOLT = 12, - EVENT_P1_EMPOWER_CULTIST = 13, - EVENT_P1_REANIMATE_CULTIST = 14, + EVENT_P1_SUMMON_WAVE = 10, + EVENT_P1_SHADOW_BOLT = 11, + EVENT_P1_EMPOWER_CULTIST = 12, + EVENT_P1_REANIMATE_CULTIST = 13, // Phase 2 only - EVENT_P2_SUMMON_WAVE = 15, - EVENT_P2_FROSTBOLT = 16, - EVENT_P2_FROSTBOLT_VOLLEY = 17, - EVENT_P2_TOUCH_OF_INSIGNIFICANCE = 18, - EVENT_P2_SUMMON_SHADE = 19, + EVENT_P2_SUMMON_WAVE = 14, + EVENT_P2_FROSTBOLT = 15, + EVENT_P2_FROSTBOLT_VOLLEY = 16, + EVENT_P2_TOUCH_OF_INSIGNIFICANCE = 17, + EVENT_P2_SUMMON_SHADE = 18, // Shared adds events - EVENT_CULTIST_DARK_MARTYRDOM = 20, + EVENT_CULTIST_DARK_MARTYRDOM = 19, // Cult Fanatic - EVENT_FANATIC_NECROTIC_STRIKE = 21, - EVENT_FANATIC_SHADOW_CLEAVE = 22, - EVENT_FANATIC_VAMPIRIC_MIGHT = 23, + EVENT_FANATIC_NECROTIC_STRIKE = 20, + EVENT_FANATIC_SHADOW_CLEAVE = 21, + EVENT_FANATIC_VAMPIRIC_MIGHT = 22, // Cult Adherent - EVENT_ADHERENT_FROST_FEVER = 24, - EVENT_ADHERENT_DEATHCHILL = 25, - EVENT_ADHERENT_CURSE_OF_TORPOR = 26, - EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 27, + EVENT_ADHERENT_FROST_FEVER = 23, + EVENT_ADHERENT_DEATHCHILL = 24, + EVENT_ADHERENT_CURSE_OF_TORPOR = 25, + EVENT_ADHERENT_SHORUD_OF_THE_OCCULT = 26, // Darnavan - EVENT_DARNAVAN_BLADESTORM = 28, - EVENT_DARNAVAN_CHARGE = 29, - EVENT_DARNAVAN_INTIMIDATING_SHOUT = 30, - EVENT_DARNAVAN_MORTAL_STRIKE = 31, - EVENT_DARNAVAN_SHATTERING_THROW = 32, - EVENT_DARNAVAN_SUNDER_ARMOR = 33, + EVENT_DARNAVAN_BLADESTORM = 27, + EVENT_DARNAVAN_CHARGE = 28, + EVENT_DARNAVAN_INTIMIDATING_SHOUT = 29, + EVENT_DARNAVAN_MORTAL_STRIKE = 30, + EVENT_DARNAVAN_SHATTERING_THROW = 31, + EVENT_DARNAVAN_SUNDER_ARMOR = 32, }; enum Phases @@ -181,6 +180,7 @@ enum DeprogrammingData #define QUEST_DEPROGRAMMING RAID_MODE<uint32>(QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25, QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25) uint32 const SummonEntries[2] = {NPC_CULT_FANATIC, NPC_CULT_ADHERENT}; + #define GUID_CULTIST 1 Position const SummonPositions[7] = @@ -225,7 +225,6 @@ class boss_lady_deathwhisper : public CreatureScript { _Reset(); me->SetPower(POWER_MANA, me->GetMaxPower(POWER_MANA)); - me->SetLastManaUse(0xFFFFFFFF); // hacky, but no other way atm to prevent mana regen events.SetPhase(PHASE_ONE); _waveCounter = 0; _nextVengefulShadeTargetGUID = 0; @@ -239,9 +238,8 @@ class boss_lady_deathwhisper : public CreatureScript void MoveInLineOfSight(Unit* who) { - if (!_introDone && me->IsWithinDistInMap(who, 100.0f)) + if (!_introDone && me->IsWithinDistInMap(who, 110.0f)) { - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); _introDone = true; Talk(SAY_INTRO_1); events.SetPhase(PHASE_INTRO); @@ -251,7 +249,6 @@ class boss_lady_deathwhisper : public CreatureScript events.ScheduleEvent(EVENT_INTRO_5, 39500, 0, PHASE_INTRO); events.ScheduleEvent(EVENT_INTRO_6, 48500, 0, PHASE_INTRO); events.ScheduleEvent(EVENT_INTRO_7, 58000, 0, PHASE_INTRO); - events.ScheduleEvent(EVENT_INTRO_FINISH, 76000, 0, PHASE_INTRO); } } @@ -437,9 +434,6 @@ class boss_lady_deathwhisper : public CreatureScript case EVENT_INTRO_7: Talk(SAY_INTRO_7); break; - case EVENT_INTRO_FINISH: - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); - break; case EVENT_DEATH_AND_DECAY: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM)) DoCast(target, SPELL_DEATH_AND_DECAY); |