diff options
| author | Subv <subv2112@gmail.com> | 2014-06-02 17:43:59 -0500 |
|---|---|---|
| committer | Subv <subv2112@gmail.com> | 2014-06-02 17:43:59 -0500 |
| commit | 558642b26e1d5466708a96dee8a3e2b74275347f (patch) | |
| tree | 790364caf76cdf0d2297659521ed16bb60e672df /src/server/scripts/Northrend | |
| parent | 3df25bb64cadab2c6b6556c7b2ab66db93326ce7 (diff) | |
Core/Phases: Removed some phasemask handling, more to come
Diffstat (limited to 'src/server/scripts/Northrend')
4 files changed, 31 insertions, 48 deletions
diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp index 1c042f4d185..4b352b98af2 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -111,8 +111,14 @@ public: me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); me->SetControlled(true, UNIT_STATE_STUNNED); } - // phase mask - target->CastSpell(target, SPELL_INSANITY_TARGET+insanityHandled, true); + + // phase the player + target->CastSpell(target, SPELL_INSANITY_TARGET + insanityHandled, true); + + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(SPELL_INSANITY_TARGET + insanityHandled); + if (!spellInfo) + return; + // summon twisted party members for this target Map::PlayerList const &players = me->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i) @@ -125,21 +131,22 @@ public: { // clone player->CastSpell(summon, SPELL_CLONE_PLAYER, true); - // set phase - summon->SetPhaseMask((1<<(4+insanityHandled)), true); + // phase the summon + summon->SetInPhase(spellInfo->Effects[EFFECT_0].MiscValueB, true, true); } } ++insanityHandled; } } - void ResetPlayersPhaseMask() + void ResetPlayersPhase() { Map::PlayerList const &players = me->GetMap()->GetPlayers(); for (Map::PlayerList::const_iterator i = players.begin(); i != players.end(); ++i) { Player* player = i->GetSource(); - player->RemoveAurasDueToSpell(GetSpellForPhaseMask(player->GetPhaseMask())); + for (uint32 index = 0; index <= 4; ++index) + player->RemoveAurasDueToSpell(SPELL_INSANITY_TARGET + index); } } @@ -153,11 +160,14 @@ public: instance->DoStopTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_QUICK_DEMISE_START_EVENT); // Visible for all players in insanity - me->SetPhaseMask((1|16|32|64|128|256), true); + me->SetInPhase(169, true, true); + for (uint32 i = 173; i <= 177; ++i) + me->SetInPhase(i, true, true); + // Used for Insanity handling insanityHandled = 0; - ResetPlayersPhaseMask(); + ResetPlayersPhase(); // Cleanup Summons.DespawnAll(); @@ -178,33 +188,8 @@ public: Summons.Summon(summon); } - uint32 GetSpellForPhaseMask(uint32 phase) - { - uint32 spell = 0; - switch (phase) - { - case 16: - spell = SPELL_INSANITY_PHASING_1; - break; - case 32: - spell = SPELL_INSANITY_PHASING_2; - break; - case 64: - spell = SPELL_INSANITY_PHASING_3; - break; - case 128: - spell = SPELL_INSANITY_PHASING_4; - break; - case 256: - spell = SPELL_INSANITY_PHASING_5; - break; - } - return spell; - } - void SummonedCreatureDespawn(Creature* summon) override { - uint32 phase = summon->GetPhaseMask(); uint32 nextPhase = 0; Summons.Despawn(summon); @@ -214,16 +199,17 @@ public: if (Creature* visage = ObjectAccessor::GetCreature(*me, *iter)) { // Not all are dead - if (phase == visage->GetPhaseMask()) + if (visage->IsInPhase(summon)) return; else - nextPhase = visage->GetPhaseMask(); + { + nextPhase = *visage->GetPhases().begin(); + break; + } } } // Roll Insanity - uint32 spell = GetSpellForPhaseMask(phase); - uint32 spell2 = GetSpellForPhaseMask(nextPhase); Map* map = me->GetMap(); if (!map) return; @@ -235,12 +221,9 @@ public: { if (Player* player = i->GetSource()) { - if (player->HasAura(spell)) - { - player->RemoveAurasDueToSpell(spell); - if (spell2) // if there is still some different mask cast spell for it - player->CastSpell(player, spell2, true); - } + for (uint32 index = 0; index <= 4; ++index) + player->RemoveAurasDueToSpell(SPELL_INSANITY_TARGET + index); + player->CastSpell(player, SPELL_INSANITY_TARGET + nextPhase - 173, true); } } } @@ -292,7 +275,7 @@ public: instance->SetBossState(DATA_HERALD_VOLAZJ, DONE); Summons.DespawnAll(); - ResetPlayersPhaseMask(); + ResetPlayersPhase(); } void KilledUnit(Unit* who) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index 0c504842c08..68344593434 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -618,7 +618,7 @@ class npc_the_lich_king_controller : public CreatureScript void JustSummoned(Creature* summon) override { // must not be in dream phase - summon->SetPhaseMask((summon->GetPhaseMask() & ~0x10), true); + summon->SetInPhase(173, true, false); if (summon->GetEntry() != NPC_SUPPRESSER) if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, 0.0f, true)) summon->AI()->AttackStart(target); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp index 8b3ac64fb89..bbef671483d 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp @@ -305,7 +305,7 @@ public: if (GameObject* trigger = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_KELTHUZAD_TRIGGER))) { trigger->ResetDoorOrButton(); - trigger->SetPhaseMask(1, true); + trigger->SetLootState(GO_READY); } for (uint8 i = 0; i <= 3; ++i) @@ -398,7 +398,7 @@ public: break; case EVENT_TRIGGER: if (GameObject* trigger = ObjectAccessor::GetGameObject(*me, instance->GetData64(DATA_KELTHUZAD_TRIGGER))) - trigger->SetPhaseMask(2, true); + trigger->SetLootState(GO_JUST_DEACTIVATED); events.PopEvent(); break; case EVENT_PHASE: diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 38d73e0673d..08936df4589 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1853,7 +1853,7 @@ public: me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION); break; case 20: - me->SetPhaseMask(1, true); + me->SetInPhase(170, true, false); Talk(SAY_5); me->HandleEmoteCommand(EMOTE_ONESHOT_EXCLAMATION); player->GroupEventHappens(QUEST_ESCAPING_THE_MIST, me); |
