diff options
| author | QAston <qaston@gmail.com> | 2011-06-26 13:56:11 +0200 |
|---|---|---|
| committer | QAston <qaston@gmail.com> | 2011-06-26 13:56:11 +0200 |
| commit | 557e06b1c1e09341f2dc429c4564b493019e2070 (patch) | |
| tree | 40970b28f631146c2644acd15d8877966e0846d9 /src/server/scripts | |
| parent | ac88fa026f7996444a865dd15ea8955e22b90d99 (diff) | |
| parent | bcd62b8d298089313534de7b3280e34255c56742 (diff) | |
Merge branch 'master' of https://github.com/TrinityCore/TrinityCore
Diffstat (limited to 'src/server/scripts')
3 files changed, 52 insertions, 55 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index a2dc0127732..6fc60bdba09 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -450,7 +450,7 @@ class boss_deathbringer_saurfang : public CreatureScript // select at range only Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, -10.0f, true); if (!target) - target = SelectTarget(SELECT_TARGET_RANDOM, 1, 10.0f, true); // noone? select melee + target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true); // noone? select melee if (target) DoCast(target, SPELL_BLOOD_NOVA_TRIGGER); events.ScheduleEvent(EVENT_BLOOD_NOVA, urand(20000, 25000), 0, PHASE_COMBAT); @@ -461,8 +461,7 @@ class boss_deathbringer_saurfang : public CreatureScript events.ScheduleEvent(EVENT_RUNE_OF_BLOOD, urand(20000, 25000), 0, PHASE_COMBAT); break; case EVENT_BOILING_BLOOD: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -BOILING_BLOOD_HELPER)) - DoCast(target, SPELL_BOILING_BLOOD); + DoCast(me, SPELL_BOILING_BLOOD); events.ScheduleEvent(EVENT_BOILING_BLOOD, urand(15000, 20000), 0, PHASE_COMBAT); break; case EVENT_BERSERK: @@ -744,7 +743,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,38 +1221,39 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader } }; -class MarkOfTheFallenChampionCheck +class spell_deathbringer_boiling_blood : public SpellScriptLoader { public: - bool operator() (Unit* unit) - { - return !unit->HasAura(SPELL_MARK_OF_THE_FALLEN_CHAMPION); - } -}; + spell_deathbringer_boiling_blood() : SpellScriptLoader("spell_deathbringer_boiling_blood") { } -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 + class spell_deathbringer_boiling_blood_SpellScript : public SpellScript { - PrepareSpellScript(spell_deathbringer_mark_of_the_fallen_champion_SpellScript); + PrepareSpellScript(spell_deathbringer_boiling_blood_SpellScript); + + bool Load() + { + return GetCaster()->GetTypeId() == TYPEID_UNIT; + } void FilterTargets(std::list<Unit*>& unitList) { - unitList.remove_if(MarkOfTheFallenChampionCheck()); + unitList.remove(GetCaster()->getVictim()); + std::list<Unit*>::iterator itr = unitList.begin(); + std::advance(itr, urand(0, unitList.size() - 1)); + Unit* target = *itr; + unitList.clear(); + unitList.push_back(target); } void Register() { - OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_mark_of_the_fallen_champion_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC); + OnUnitTargetSelect += SpellUnitTargetFn(spell_deathbringer_boiling_blood_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_AREA_ENEMY_SRC); } }; SpellScript* GetSpellScript() const { - return new spell_deathbringer_mark_of_the_fallen_champion_SpellScript(); + return new spell_deathbringer_boiling_blood_SpellScript(); } }; @@ -1285,6 +1285,6 @@ 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 spell_deathbringer_boiling_blood(); 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); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index c95daa701e3..beeab1e72bd 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -355,6 +355,9 @@ class boss_valithria_dreamwalker : public CreatureScript _over75PercentTalkDone = true; Talk(SAY_VALITHRIA_75_PERCENT); } + else if (_instance->GetBossState(DATA_VALITHRIA_DREAMWALKER) == NOT_STARTED) + if (Creature* archmage = me->FindNearestCreature(NPC_RISEN_ARCHMAGE, 30.0f)) + archmage->AI()->DoZoneInCombat(); // call EnterCombat on one of them, that will make it all start } void DamageTaken(Unit* /*attacker*/, uint32& damage) |
