aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
diff options
context:
space:
mode:
authorKinzcool <kinzzcool@hotmail.com>2014-06-18 23:25:57 -0400
committerKinzcool <kinzzcool@hotmail.com>2014-06-18 23:25:57 -0400
commit34572492dd1394dbeaf19bb697a7af8cbf0b6ef7 (patch)
tree97bf1565a0d871629d43a3016fb7f56e038e1cb0 /src/server/scripts/Northrend
parent05d17b700d8a679bca2a16dd5d63c94fe3ab99b9 (diff)
parentf71abd173ebad2da329c04f5ea3b1d8704007303 (diff)
Merge branch '4.3.4_phases' of https://github.com/TrinityCore/TrinityCore into 4.3.4
Diffstat (limited to 'src/server/scripts/Northrend')
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp71
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp2
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp1
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp2
-rw-r--r--src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp3
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp2
10 files changed, 38 insertions, 55 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/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
index 6d03774ea8c..78e8f2d248e 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp
@@ -380,7 +380,7 @@ class boss_halion : public CreatureScript
if (events.IsInPhase(PHASE_THREE))
{
// Don't consider copied damage.
- if (!me->InSamePhase(attacker))
+ if (!me->IsInPhase(attacker))
return;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER)))
@@ -541,7 +541,7 @@ class boss_twilight_halion : public CreatureScript
if (events.IsInPhase(PHASE_THREE))
{
// Don't consider copied damage.
- if (!me->InSamePhase(attacker))
+ if (!me->IsInPhase(attacker))
return;
if (Creature* controller = ObjectAccessor::GetCreature(*me, instance->GetData64(DATA_HALION_CONTROLLER)))
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
index 4303026ba64..21a0f92c7b5 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp
@@ -636,7 +636,7 @@ class npc_jaina_or_sylvanas_intro_hor : public CreatureScript
if (Creature* lichking = ObjectAccessor::GetCreature(*me, _lichkingGUID))
{
if (GameObject* frostmourne = ObjectAccessor::GetGameObject(*me, _instance->GetData64(DATA_FROSTMOURNE)))
- frostmourne->SetPhaseMask(2, true);
+ frostmourne->SetLootState(GO_JUST_DEACTIVATED);
lichking->CastSpell(lichking, SPELL_TAKE_FROSTMOURNE, true);
lichking->CastSpell(lichking, SPELL_FROSTMOURNE_VISUAL, true);
}
diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
index 6f33e80b92b..b17a5dbc8f5 100644
--- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp
@@ -248,7 +248,7 @@ class instance_halls_of_reflection : public InstanceMapScript
case GO_FROSTMOURNE:
FrostmourneGUID = go->GetGUID();
if (GetData(DATA_INTRO_EVENT) == DONE)
- go->SetPhaseMask(2, true);
+ go->SetLootState(GO_JUST_DEACTIVATED);
break;
case GO_ENTRANCE_DOOR:
EntranceDoorGUID = go->GetGUID();
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 c5c70cf3957..9875eb5aa68 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)
@@ -394,7 +394,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);
break;
case EVENT_PHASE:
events.Reset();
diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
index 8a1fb6a9829..4fa80c7bac2 100644
--- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
+++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp
@@ -90,7 +90,6 @@ public:
delete go;
return;
}
-
instance->AddToMap(go);
}
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
index 2b15ddf32c4..d78a07f5c2b 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp
@@ -69,7 +69,7 @@ class instance_oculus : public InstanceMapScript
case NPC_VAROS:
VarosGUID = creature->GetGUID();
if (GetBossState(DATA_DRAKOS) == DONE)
- creature->SetPhaseMask(1, true);
+ creature->SetPhaseMask(1, true);
break;
case NPC_UROM:
UromGUID = creature->GetGUID();
diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
index 7ae1c7840db..753d4ebea01 100644
--- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
+++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp
@@ -190,7 +190,8 @@ public:
{
summon->AI()->AttackStart(me->GetVictim());
summon->CastSpell((Unit*)NULL, SPELL_ZURAMAT_ADD_2);
- summon->SetPhaseMask(17, true);
+ summon->SetInPhase(169, true, true); // Normal phase
+ summon->SetInPhase(173, true, true); // Void 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);