diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp
index 0509054165af2a..666a1a48ca530f 100644
--- a/src/server/game/Instances/InstanceScript.cpp
+++ b/src/server/game/Instances/InstanceScript.cpp
@@ -55,6 +55,34 @@ void InstanceScript::SaveToDB()
CharacterDatabase.Execute(stmt);
}
+void InstanceScript::OnPlayerEnter(Player* player)
+{
+ if (!IsTwoFactionInstance())
+ return;
+
+ if (GetTeamIdInInstance() == TEAM_NEUTRAL)
+ {
+ if (Group* group = player->GetGroup())
+ {
+ if (Player* leader = ObjectAccessor::FindConnectedPlayer(group->GetLeaderGUID()))
+ _teamIdInInstance = leader->GetTeamId();
+ else
+ _teamIdInInstance = player->GetTeamId();
+ }
+ else
+ _teamIdInInstance = player->GetTeamId();
+ }
+
+ if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
+ player->SetFaction((_teamIdInInstance == TEAM_HORDE) ? 1610 /*FACTION_HORDE*/ : 1 /*FACTION_ALLIANCE*/);
+}
+
+void InstanceScript::OnPlayerLeave(Player* player)
+{
+ if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP) && IsTwoFactionInstance())
+ player->SetFactionForRace(player->getRace());
+}
+
void InstanceScript::OnCreatureCreate(Creature* creature)
{
AddObject(creature);
@@ -848,3 +876,21 @@ bool InstanceHasScript(WorldObject const* obj, char const* scriptName)
return false;
}
+
+bool InstanceScript::IsTwoFactionInstance() const
+{
+ switch (instance->GetId())
+ {
+ case 540: // Shattered Halls
+ case 576: // Nexus
+ case 631: // Icecrown Citadel
+ case 632: // Forge of Souls
+ case 649: // Trial of the Champion
+ case 650: // Trial of the Crusader
+ case 658: // Pit of Saron
+ case 668: // Halls of Reflection
+ return true;
+ }
+
+ return false;
+}
diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h
index cae3994ed0bfee..2d0b2021807cdf 100644
--- a/src/server/game/Instances/InstanceScript.h
+++ b/src/server/game/Instances/InstanceScript.h
@@ -141,7 +141,7 @@ typedef std::map ObjectStateMa
class InstanceScript : public ZoneScript
{
public:
- explicit InstanceScript(Map* map) : instance(map), completedEncounters(0) {}
+ explicit InstanceScript(Map* map) : instance(map), completedEncounters(0), _teamIdInInstance(TEAM_NEUTRAL) {}
~InstanceScript() override {}
@@ -182,10 +182,10 @@ class InstanceScript : public ZoneScript
GameObject* GetGameObject(uint32 type);
//Called when a player successfully enters the instance.
- virtual void OnPlayerEnter(Player* /*player*/) {}
+ virtual void OnPlayerEnter(Player* /*player*/);
//Called when a player successfully leaves the instance.
- virtual void OnPlayerLeave(Player* /*player*/) {}
+ virtual void OnPlayerLeave(Player* /*player*/);
virtual void OnPlayerAreaUpdate(Player* /*player*/, uint32 /*oldArea*/, uint32 /*newArea*/) {}
@@ -322,6 +322,9 @@ class InstanceScript : public ZoneScript
void WritePersistentData(std::ostringstream& data);
virtual void WriteSaveDataMore(std::ostringstream& /*data*/) { }
+ TeamId GetTeamIdInInstance() const { return _teamIdInInstance; }
+ bool IsTwoFactionInstance() const;
+
private:
static void LoadObjectData(ObjectData const* creatureData, ObjectInfoMap& objectInfo);
@@ -336,6 +339,7 @@ class InstanceScript : public ZoneScript
ObjectGuidMap _objectGuids;
ObjectStateMap _objectStateMap;
uint32 completedEncounters; // completed encounter mask, bit indexes are DungeonEncounter.dbc boss numbers, used for packets
+ TeamId _teamIdInInstance;
std::unordered_set _activatedAreaTriggers;
};
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
index 7de0e534b1938f..b2b286197ee401 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp
@@ -57,7 +57,6 @@ class instance_trial_of_the_champion : public InstanceMapScript
}
bool CLEANED;
- TeamId TeamIdInInstance;
uint32 InstanceProgress;
uint32 m_auiEncounter[MAX_ENCOUNTER];
std::string str_data;
@@ -83,7 +82,6 @@ class instance_trial_of_the_champion : public InstanceMapScript
void Initialize() override
{
- TeamIdInInstance = TEAM_NEUTRAL;
InstanceProgress = 0;
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
@@ -109,67 +107,49 @@ class instance_trial_of_the_champion : public InstanceMapScript
void OnCreatureCreate(Creature* creature) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* pPlayer = players.begin()->GetSource())
- {
- if (Group* group = pPlayer->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = pPlayer->GetTeamId();
- }
- else
- TeamIdInInstance = pPlayer->GetTeamId();
- }
- }
-
switch (creature->GetEntry())
{
// Grand Champions:
case NPC_MOKRA:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_JACOB);
break;
case NPC_ERESSEA:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_AMBROSE);
break;
case NPC_RUNOK:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_COLOSOS);
break;
case NPC_ZULTORE:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_JAELYNE);
break;
case NPC_VISCERI:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_LANA);
break;
// Grand Champion Minions:
case NPC_ORGRIMMAR_MINION:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_STORMWIND_MINION);
break;
case NPC_SILVERMOON_MINION:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_GNOMEREGAN_MINION);
break;
case NPC_THUNDER_BLUFF_MINION:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_EXODAR_MINION);
break;
case NPC_SENJIN_MINION:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_DARNASSUS_MINION);
break;
case NPC_UNDERCITY_MINION:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_IRONFORGE_MINION);
break;
@@ -183,7 +163,7 @@ class instance_trial_of_the_champion : public InstanceMapScript
case NPC_JAEREN:
case NPC_ARELAS:
NPC_AnnouncerGUID = creature->GetGUID();
- //if (TeamIdInInstance == TEAM_ALLIANCE)
+ //if (GetTeamIdInInstance() == TEAM_ALLIANCE)
// creature->UpdateEntry(NPC_ARELAS);
creature->SetReactState(REACT_PASSIVE);
break;
@@ -283,36 +263,14 @@ class instance_trial_of_the_champion : public InstanceMapScript
void OnPlayerEnter(Player* player) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
-
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFaction((TeamIdInInstance == TEAM_HORDE) ? 1610 : 1);
+ InstanceScript::OnPlayerEnter(player);
if (DoNeedCleanup(player))
- {
InstanceCleanup();
- }
events.RescheduleEvent(EVENT_CHECK_PLAYERS, CLEANUP_CHECK_INTERVAL);
}
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
bool DoNeedCleanup(Player* ignoredPlayer = nullptr)
{
uint8 aliveCount = 0;
@@ -497,7 +455,7 @@ class instance_trial_of_the_champion : public InstanceMapScript
case DATA_INSTANCE_PROGRESS:
return InstanceProgress;
case DATA_TEAMID_IN_INSTANCE:
- return TeamIdInInstance;
+ return GetTeamIdInInstance();
}
return 0;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
index 0d53492fcf6856..5d2da7425b4c70 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp
@@ -41,7 +41,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
uint32 EncounterStatus;
uint32 InstanceProgress;
uint32 AttemptsLeft;
- TeamId TeamIdInInstance;
uint8 Counter;
uint8 northrendBeastsMask;
uint32 AchievementTimer;
@@ -168,7 +167,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
EncounterStatus = NOT_STARTED;
InstanceProgress = INSTANCE_PROGRESS_INITIAL;
AttemptsLeft = 50;
- TeamIdInInstance = TEAM_NEUTRAL;
Counter = 0;
northrendBeastsMask = 0;
AchievementTimer = 0;
@@ -475,7 +473,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
case TYPE_FACTION_CHAMPIONS_PLAYER_DIED:
if (urand(0, 2) == 0 )
{
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
{
if (Creature* pTemp = instance->GetCreature(NPC_VarianGUID))
pTemp->AI()->Talk(SAY_VARIAN_KILL_HORDE_PLAYER_1);
@@ -971,16 +969,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
}
case EVENT_SCENE_202:
{
- Map::PlayerList const& pl = instance->GetPlayers();
- for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
- if (Player* plr = itr->GetSource())
- if (!plr->IsGameMaster())
- {
- TeamIdInInstance = plr->GetTeamId();
- break;
- }
-
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
{
if (Creature* c = instance->GetCreature(NPC_GarroshGUID))
c->AI()->Talk(SAY_STAGE_2_02h);
@@ -1004,7 +993,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
}
case EVENT_SCENE_204:
{
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
{
if (Creature* c = instance->GetCreature(NPC_GarroshGUID))
c->AI()->Talk(SAY_STAGE_2_04h);
@@ -1022,26 +1011,26 @@ class instance_trial_of_the_crusader : public InstanceMapScript
}
case EVENT_SCENE_205:
{
- if (Creature* c = instance->GetCreature(TeamIdInInstance == TEAM_ALLIANCE ? NPC_VarianGUID : NPC_GarroshGUID))
- c->AI()->Talk(TeamIdInInstance == TEAM_ALLIANCE ? SAY_STAGE_2_05a : SAY_STAGE_2_05h);
+ if (Creature* c = instance->GetCreature(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_VarianGUID : NPC_GarroshGUID))
+ c->AI()->Talk(GetTeamIdInInstance() == TEAM_ALLIANCE ? SAY_STAGE_2_05a : SAY_STAGE_2_05h);
break;
}
case EVENT_SUMMON_CHAMPIONS:
{
std::vector vHealerEntries;
- vHealerEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_DRUID_RESTORATION : NPC_ALLIANCE_DRUID_RESTORATION);
- vHealerEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_PALADIN_HOLY : NPC_ALLIANCE_PALADIN_HOLY);
- vHealerEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_PRIEST_DISCIPLINE : NPC_ALLIANCE_PRIEST_DISCIPLINE);
- vHealerEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_SHAMAN_RESTORATION : NPC_ALLIANCE_SHAMAN_RESTORATION);
+ vHealerEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_DRUID_RESTORATION : NPC_ALLIANCE_DRUID_RESTORATION);
+ vHealerEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_PALADIN_HOLY : NPC_ALLIANCE_PALADIN_HOLY);
+ vHealerEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_PRIEST_DISCIPLINE : NPC_ALLIANCE_PRIEST_DISCIPLINE);
+ vHealerEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_SHAMAN_RESTORATION : NPC_ALLIANCE_SHAMAN_RESTORATION);
std::vector vOtherEntries;
- vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_DEATH_KNIGHT : NPC_ALLIANCE_DEATH_KNIGHT);
- vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_HUNTER : NPC_ALLIANCE_HUNTER);
- vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_MAGE : NPC_ALLIANCE_MAGE);
- vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_ROGUE : NPC_ALLIANCE_ROGUE);
- vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_WARLOCK : NPC_ALLIANCE_WARLOCK);
- vOtherEntries.push_back(TeamIdInInstance == TEAM_ALLIANCE ? NPC_HORDE_WARRIOR : NPC_ALLIANCE_WARRIOR);
+ vOtherEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_DEATH_KNIGHT : NPC_ALLIANCE_DEATH_KNIGHT);
+ vOtherEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_HUNTER : NPC_ALLIANCE_HUNTER);
+ vOtherEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_MAGE : NPC_ALLIANCE_MAGE);
+ vOtherEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_ROGUE : NPC_ALLIANCE_ROGUE);
+ vOtherEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_WARLOCK : NPC_ALLIANCE_WARLOCK);
+ vOtherEntries.push_back(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_HORDE_WARRIOR : NPC_ALLIANCE_WARRIOR);
uint8 healersSubtracted = 2;
if (instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_NORMAL || instance->GetSpawnMode() == RAID_DIFFICULTY_25MAN_HEROIC )
@@ -1089,11 +1078,11 @@ class instance_trial_of_the_crusader : public InstanceMapScript
uint8 pos2 = 10;
for( std::vector::iterator itr = vOtherEntries.begin(); itr != vOtherEntries.end(); ++itr )
{
- if (Creature* pTemp = instance->SummonCreature(*itr, FactionChampionLoc[urand(0, 4) + (TeamIdInInstance == TEAM_ALLIANCE ? 0 : 5)]))
+ if (Creature* pTemp = instance->SummonCreature(*itr, FactionChampionLoc[urand(0, 4) + (GetTeamIdInInstance() == TEAM_ALLIANCE ? 0 : 5)]))
{
NPC_ChampionGUIDs.push_back(pTemp->GetGUID());
- pTemp->SetHomePosition((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 0.0f);
- pTemp->GetMotionMaster()->MoveJump((TeamIdInInstance == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 20.0f, 20.0f);
+ pTemp->SetHomePosition((GetTeamIdInInstance() == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 0.0f);
+ pTemp->GetMotionMaster()->MoveJump((GetTeamIdInInstance() == TEAM_ALLIANCE ? FactionChampionLoc[pos2].GetPositionX() : (Locs[LOC_CENTER].GetPositionX() * 2 - FactionChampionLoc[pos2].GetPositionX())), FactionChampionLoc[pos2].GetPositionY(), FactionChampionLoc[pos2].GetPositionZ(), 20.0f, 20.0f);
}
++pos2;
}
@@ -1196,35 +1185,8 @@ class instance_trial_of_the_crusader : public InstanceMapScript
}
case EVENT_SCENE_VALKYR_DEAD:
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& pl = instance->GetPlayers();
- for( Map::PlayerList::const_iterator itr = pl.begin(); itr != pl.end(); ++itr )
- if (Player* plr = itr->GetSource())
- if (!plr->IsGameMaster())
- {
- if (Group* group = plr->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- {
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- break;
- }
- else
- {
- TeamIdInInstance = plr->GetTeamId();
- break;
- }
- }
- else
- {
- TeamIdInInstance = plr->GetTeamId();
- break;
- }
- }
- }
- if (Creature* c = instance->GetCreature(TeamIdInInstance == TEAM_ALLIANCE ? NPC_VarianGUID : NPC_GarroshGUID))
- c->AI()->Talk((TeamIdInInstance == TEAM_ALLIANCE ? SAY_STAGE_3_03a : SAY_STAGE_3_03h));
+ if (Creature* c = instance->GetCreature(GetTeamIdInInstance() == TEAM_ALLIANCE ? NPC_VarianGUID : NPC_GarroshGUID))
+ c->AI()->Talk((GetTeamIdInInstance() == TEAM_ALLIANCE ? SAY_STAGE_3_03a : SAY_STAGE_3_03h));
events.RescheduleEvent(EVENT_SCENE_401, 60000);
break;
@@ -1413,21 +1375,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript
void OnPlayerEnter(Player* plr) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- if (Group* group = plr->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = plr->GetTeamId();
- }
- else
- TeamIdInInstance = plr->GetTeamId();
- }
-
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- plr->SetFaction((TeamIdInInstance == TEAM_HORDE) ? 1610 : 1);
+ InstanceScript::OnPlayerEnter(plr);
if (instance->IsHeroic())
{
@@ -1448,12 +1396,6 @@ class instance_trial_of_the_crusader : public InstanceMapScript
events.RescheduleEvent(EVENT_CHECK_PLAYERS, 5s);
}
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
bool DoNeedCleanup(Player* ignoredPlayer = nullptr)
{
uint8 aliveCount = 0;
diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
index 382a4c5771b7c7..c39c3a5e67dd67 100644
--- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/instance_forge_of_souls.cpp
@@ -96,12 +96,6 @@ class instance_forge_of_souls : public InstanceMapScript
}
}
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
void OnCreatureCreate(Creature* creature) override
{
if (teamIdInInstance == TEAM_NEUTRAL)
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 708ca27c11bf68..7669ed17ad60cc 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
@@ -144,7 +144,6 @@ class instance_halls_of_reflection : public InstanceMapScript
};
uint32 EncounterMask;
- TeamId TeamIdInInstance;
ObjectGuid NPC_FalricGUID;
ObjectGuid NPC_MarwynGUID;
ObjectGuid NPC_LichKingIntroGUID;
@@ -190,7 +189,6 @@ class instance_halls_of_reflection : public InstanceMapScript
void Initialize() override
{
EncounterMask = 0;
- TeamIdInInstance = TEAM_NEUTRAL;
memset(&TrashActive, 0, sizeof(TrashActive));
TrashCounter = 0;
memset(&chosenComposition, 0, sizeof(chosenComposition));
@@ -214,69 +212,15 @@ class instance_halls_of_reflection : public InstanceMapScript
return (instance->HavePlayers() && WaveNumber) || IsDuringLKFight; // during LK fight npcs are active and will unset this variable
}
- void OnPlayerEnter(Player* player) override
- {
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
-
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFaction((TeamIdInInstance == TEAM_HORDE) ? 1610 : 1);
- }
-
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
void OnCreatureCreate(Creature* creature) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
- if (Player* p = itr->GetSource())
- if (!p->IsGameMaster())
- {
- if (Group* group = p->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- {
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- break;
- }
- else
- {
- TeamIdInInstance = p->GetTeamId();
- break;
- }
- }
- else
- {
- TeamIdInInstance = p->GetTeamId();
- break;
- }
- }
- }
-
switch (creature->GetEntry())
{
case NPC_SYLVANAS_PART1:
creature->SetVisible(false);
creature->SetSpeed(MOVE_RUN, 1.1);
NPC_LeaderIntroGUID = creature->GetGUID();
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_JAINA_PART1);
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
creature->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
@@ -284,7 +228,7 @@ class instance_halls_of_reflection : public InstanceMapScript
case NPC_DARK_RANGER_LORALEN:
creature->SetVisible(false);
NPC_GuardGUID = creature->GetGUID();
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ARCHMAGE_KORELN);
break;
case NPC_UTHER:
@@ -345,7 +289,7 @@ class instance_halls_of_reflection : public InstanceMapScript
creature->CastSpell(creature, SPELL_SOUL_REAPER, true);
}
else if (!(EncounterMask & (1 << DATA_LICH_KING)))
- creature->AddAura(TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_PRISON : SPELL_SYLVANAS_DARK_BINDING, creature);
+ creature->AddAura(GetTeamIdInInstance() == TEAM_ALLIANCE ? SPELL_JAINA_ICE_PRISON : SPELL_SYLVANAS_DARK_BINDING, creature);
else
creature->SetVisible(false);
@@ -359,7 +303,7 @@ class instance_halls_of_reflection : public InstanceMapScript
NPC_LeaderGUID = creature->GetGUID();
creature->SetWalk(false);
creature->SetSheath(SHEATH_STATE_MELEE);
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_JAINA_PART2);
creature->SetWalk(false);
creature->SetHealth(creature->GetMaxHealth() / 20);
@@ -368,9 +312,9 @@ class instance_halls_of_reflection : public InstanceMapScript
if (!(EncounterMask & (1 << DATA_LK_INTRO)))
{
creature->SetSheath(SHEATH_STATE_MELEE);
- creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, TeamIdInInstance == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H); //the fight cannot be in the form of an emote, it is causing bugs.
+ creature->SetUInt32Value(UNIT_NPC_EMOTESTATE, GetTeamIdInInstance() == TEAM_ALLIANCE ? EMOTE_ONESHOT_ATTACK2HTIGHT : EMOTE_ONESHOT_ATTACK1H); //the fight cannot be in the form of an emote, it is causing bugs.
creature->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
- creature->CastSpell(creature, TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS, true);
+ creature->CastSpell(creature, GetTeamIdInInstance() == TEAM_ALLIANCE ? SPELL_JAINA_ICE_BARRIER : SPELL_SYLVANAS_CLOAK_OF_DARKNESS, true);
}
else if (!(EncounterMask & (1 << DATA_LICH_KING)))
{
@@ -577,7 +521,7 @@ class instance_halls_of_reflection : public InstanceMapScript
if (!c->IsAlive())
{
c->Respawn();
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
c->UpdateEntry(NPC_JAINA_PART2);
}
c->GetThreatMgr().ClearAllThreat();
@@ -605,7 +549,7 @@ class instance_halls_of_reflection : public InstanceMapScript
c->UpdatePosition(c->GetHomePosition(), true);
c->StopMovingOnCurrentPos();
c->RemoveAllAuras();
- c->AddAura(TeamIdInInstance == TEAM_ALLIANCE ? SPELL_JAINA_ICE_PRISON : SPELL_SYLVANAS_DARK_BINDING, c);
+ c->AddAura(GetTeamIdInInstance() == TEAM_ALLIANCE ? SPELL_JAINA_ICE_PRISON : SPELL_SYLVANAS_DARK_BINDING, c);
c->AI()->Reset();
c->setActive(false);
c->RemoveUnitMovementFlag(MOVEMENTFLAG_WALKING);
@@ -1126,18 +1070,18 @@ class instance_halls_of_reflection : public InstanceMapScript
break;
case 2:
{
- uint32 entry = TeamIdInInstance == TEAM_ALLIANCE ? GO_THE_SKYBREAKER : GO_ORGRIMS_HAMMER;
+ uint32 entry = GetTeamIdInInstance() == TEAM_ALLIANCE ? GO_THE_SKYBREAKER : GO_ORGRIMS_HAMMER;
T1 = sTransportMgr->CreateTransport(entry, 0, instance);
++outroStep;
- outroTimer = TeamIdInInstance == TEAM_ALLIANCE ? 10000 : 10500;
+ outroTimer = GetTeamIdInInstance() == TEAM_ALLIANCE ? 10000 : 10500;
}
break;
case 3:
if (T1)
T1->EnableMovement(false);
if (Creature* c = instance->GetCreature(NPC_ShipCaptainGUID))
- c->AI()->Talk(TeamIdInInstance == TEAM_ALLIANCE ? SAY_FIRE_ALLY : SAY_FIRE_HORDE);
+ c->AI()->Talk(GetTeamIdInInstance() == TEAM_ALLIANCE ? SAY_FIRE_ALLY : SAY_FIRE_HORDE);
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
{
c->RemoveAllAuras();
@@ -1185,10 +1129,10 @@ class instance_halls_of_reflection : public InstanceMapScript
T1->EnableMovement(false);
if (Creature* leader = instance->GetCreature(NPC_LeaderGUID))
{
- uint8 index = TeamIdInInstance == TEAM_ALLIANCE ? 0 : 1;
+ uint8 index = GetTeamIdInInstance() == TEAM_ALLIANCE ? 0 : 1;
for (uint8 i = 0; i < 3; ++i)
if (StairsPos[index][i].GetPositionX())
- if (GameObject* go = leader->SummonGameObject(TeamIdInInstance == TEAM_ALLIANCE ? GO_STAIRS_ALLIANCE : GO_STAIRS_HORDE, StairsPos[index][i].GetPositionX(), StairsPos[index][i].GetPositionY(), StairsPos[index][i].GetPositionZ(), StairsPos[index][i].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400, false))
+ if (GameObject* go = leader->SummonGameObject(GetTeamIdInInstance() == TEAM_ALLIANCE ? GO_STAIRS_ALLIANCE : GO_STAIRS_HORDE, StairsPos[index][i].GetPositionX(), StairsPos[index][i].GetPositionY(), StairsPos[index][i].GetPositionZ(), StairsPos[index][i].GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400, false))
go->SetGameObjectFlag(GO_FLAG_INTERACT_COND | GO_FLAG_NOT_SELECTABLE);
//Position pos = TeamIdInInstance == TEAM_ALLIANCE ? AllyPortalPos : HordePortalPos;
//leader->SummonGameObject(GO_PORTAL_TO_DALARAN, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 86400);
@@ -1200,7 +1144,7 @@ class instance_halls_of_reflection : public InstanceMapScript
break;
case 8:
if (Creature* c = instance->GetCreature(NPC_ShipCaptainGUID))
- c->AI()->Talk(TeamIdInInstance == TEAM_ALLIANCE ? SAY_ONBOARD_ALLY : SAY_ONBOARD_HORDE);
+ c->AI()->Talk(GetTeamIdInInstance() == TEAM_ALLIANCE ? SAY_ONBOARD_ALLY : SAY_ONBOARD_HORDE);
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
{
c->AddUnitMovementFlag(MOVEMENTFLAG_WALKING);
@@ -1212,7 +1156,7 @@ class instance_halls_of_reflection : public InstanceMapScript
break;
case 9:
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
- c->AI()->Talk(TeamIdInInstance == TEAM_ALLIANCE ? SAY_JAINA_FINAL_1 : SAY_SYLVANA_FINAL);
+ c->AI()->Talk(GetTeamIdInInstance() == TEAM_ALLIANCE ? SAY_JAINA_FINAL_1 : SAY_SYLVANA_FINAL);
HandleGameObject(GO_CaveInGUID, true);
++outroStep;
outroTimer = 11000;
@@ -1223,7 +1167,7 @@ class instance_halls_of_reflection : public InstanceMapScript
for (Map::PlayerList::const_iterator itr = instance->GetPlayers().begin(); itr != instance->GetPlayers().end(); ++itr)
if (Player* p = itr->GetSource())
p->KilledMonsterCredit(NPC_WRATH_OF_THE_LICH_KING_CREDIT);
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
if (Creature* c = instance->GetCreature(NPC_LeaderGUID))
{
c->AI()->Talk(SAY_JAINA_FINAL_2);
diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
index 9d1e26a90bc7a1..e91e0b954ac752 100644
--- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
+++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/instance_pit_of_saron.cpp
@@ -35,7 +35,6 @@ class instance_pit_of_saron : public InstanceMapScript
}
uint32 m_auiEncounter[MAX_ENCOUNTER];
- TeamId teamIdInInstance;
uint32 InstanceProgress;
std::string str_data;
@@ -61,7 +60,6 @@ class instance_pit_of_saron : public InstanceMapScript
void Initialize() override
{
memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
- teamIdInInstance = TEAM_NEUTRAL;
InstanceProgress = INSTANCE_PROGRESS_NONE;
bAchievEleven = true;
@@ -78,62 +76,24 @@ class instance_pit_of_saron : public InstanceMapScript
void OnPlayerEnter(Player* player) override
{
- if (teamIdInInstance == TEAM_NEUTRAL)
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- teamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- teamIdInInstance = player->GetTeamId();
- }
- else
- teamIdInInstance = player->GetTeamId();
- }
-
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFaction((teamIdInInstance == TEAM_HORDE) ? 1610 : 1);
+ InstanceScript::OnPlayerEnter(player);
instance->LoadGrid(LeaderIntroPos.GetPositionX(), LeaderIntroPos.GetPositionY());
if (Creature* c = instance->GetCreature(GetGuidData(DATA_LEADER_FIRST_GUID)))
c->AI()->SetData(DATA_START_INTRO, 0);
}
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
{
- if (teamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* player = players.begin()->GetSource())
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- teamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- teamIdInInstance = player->GetTeamId();
- }
- else
- teamIdInInstance = player->GetTeamId();
- }
- }
-
uint32 entry = data->id1;
switch (entry)
{
case NPC_RESCUED_ALLIANCE_SLAVE:
- if (teamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
return 0;
break;
case NPC_RESCUED_HORDE_SLAVE:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
return 0;
break;
}
@@ -143,28 +103,10 @@ class instance_pit_of_saron : public InstanceMapScript
void OnCreatureCreate(Creature* creature) override
{
- if (teamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* player = players.begin()->GetSource())
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- teamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- teamIdInInstance = player->GetTeamId();
- }
- else
- teamIdInInstance = player->GetTeamId();
- }
- }
-
switch (creature->GetEntry())
{
case NPC_SYLVANAS_PART1:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_JAINA_PART1);
NPC_LeaderFirstGUID = creature->GetGUID();
@@ -183,7 +125,7 @@ class instance_pit_of_saron : public InstanceMapScript
}
break;
case NPC_SYLVANAS_PART2:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_JAINA_PART2);
NPC_LeaderSecondGUID = creature->GetGUID();
break;
@@ -213,50 +155,50 @@ class instance_pit_of_saron : public InstanceMapScript
}
break;
case NPC_LORALEN:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ELANDRA);
if (!NPC_GuardFirstGUID)
NPC_GuardFirstGUID = creature->GetGUID();
break;
case NPC_KALIRA:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_KORELN);
if (!NPC_GuardSecondGUID)
NPC_GuardSecondGUID = creature->GetGUID();
break;
case NPC_HORDE_SLAVE_1:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ALLIANCE_SLAVE_1);
break;
case NPC_HORDE_SLAVE_2:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ALLIANCE_SLAVE_2);
break;
case NPC_HORDE_SLAVE_3:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ALLIANCE_SLAVE_3);
break;
case NPC_HORDE_SLAVE_4:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ALLIANCE_SLAVE_4);
break;
case NPC_GORKUN_IRONSKULL_1:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_MARTIN_VICTUS_1);
break;
case NPC_GARFROST:
NPC_GarfrostGUID = creature->GetGUID();
break;
case NPC_FREED_SLAVE_1_HORDE:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_FREED_SLAVE_1_ALLIANCE);
break;
case NPC_FREED_SLAVE_2_HORDE:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_FREED_SLAVE_2_ALLIANCE);
break;
case NPC_FREED_SLAVE_3_HORDE:
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_FREED_SLAVE_3_ALLIANCE);
break;
case NPC_GORKUN_IRONSKULL_2:
@@ -266,7 +208,7 @@ class instance_pit_of_saron : public InstanceMapScript
c->AI()->DoAction(1); // despawn summons
c->DespawnOrUnsummon();
}
- if (teamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_MARTIN_VICTUS_2);
NPC_MartinOrGorkunGUID = creature->GetGUID();
break;
@@ -370,7 +312,7 @@ class instance_pit_of_saron : public InstanceMapScript
case DATA_INSTANCE_PROGRESS:
return InstanceProgress;
case DATA_TEAMID_IN_INSTANCE:
- return teamIdInInstance;
+ return GetTeamIdInInstance();
case DATA_GARFROST:
return m_auiEncounter[0];
case DATA_ICK:
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 1fcd8bccf969e8..2887192b6d392c 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -218,7 +218,6 @@ class instance_icecrown_citadel : public InstanceMapScript
LoadBossBoundaries(boundaries);
LoadObjectData(creatureData, nullptr);
LoadDoorData(doorData);
- TeamIdInInstance = TEAM_NEUTRAL;
HeroicAttempts = MaxHeroicAttempts;
IsBonedEligible = true;
IsOozeDanceEligible = true;
@@ -261,22 +260,7 @@ class instance_icecrown_citadel : public InstanceMapScript
void OnPlayerEnter(Player* player) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
-
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFaction((TeamIdInInstance == TEAM_HORDE) ? 1610 : 1);
-
+ InstanceScript::OnPlayerEnter(player);
// for professor putricide hc
DoRemoveAurasDueToSpellOnPlayers(SPELL_GAS_VARIABLE);
DoRemoveAurasDueToSpellOnPlayers(SPELL_OOZE_VARIABLE);
@@ -306,32 +290,8 @@ class instance_icecrown_citadel : public InstanceMapScript
}
}
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
void OnCreatureCreate(Creature* creature) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* player = players.begin()->GetSource())
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
- }
-
// apply ICC buff to pets/summons
if (GetData(DATA_BUFF_AVAILABLE) && creature->GetOwnerGUID().IsPlayer() && creature->HasUnitTypeMask(UNIT_MASK_MINION | UNIT_MASK_GUARDIAN | UNIT_MASK_CONTROLABLE_GUARDIAN) && creature->CanHaveThreatList())
if (Unit* owner = creature->GetOwner())
@@ -377,39 +337,39 @@ class instance_icecrown_citadel : public InstanceMapScript
switch (creature->GetEntry())
{
case NPC_KOR_KRON_GENERAL:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ALLIANCE_COMMANDER);
break;
case NPC_KOR_KRON_LIEUTENANT:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_SKYBREAKER_LIEUTENANT);
break;
case NPC_TORTUNOK:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_ALANA_MOONSTRIKE);
break;
case NPC_GERARDO_THE_SUAVE:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_TALAN_MOONSTRIKE);
break;
case NPC_UVLUS_BANEFIRE:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_MALFUS_GRIMFROST);
break;
case NPC_IKFIRUS_THE_VILE:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_YILI);
break;
case NPC_VOL_GUK:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_JEDEBIA);
break;
case NPC_HARAGG_THE_UNSEEN:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_NIBY_THE_ALMIGHTY);
break;
case NPC_GARROSH_HELLSCREAM:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_KING_VARIAN_WRYNN);
// Xinef: summon in case of instance unload
@@ -428,7 +388,7 @@ class instance_icecrown_citadel : public InstanceMapScript
DeathbringerSaurfangGUID = creature->GetGUID();
break;
case NPC_SE_HIGH_OVERLORD_SAURFANG:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
{
creature->UpdateEntry(NPC_SE_MURADIN_BRONZEBEARD, true);
creature->LoadEquipment();
@@ -440,14 +400,14 @@ class instance_icecrown_citadel : public InstanceMapScript
DeathbringerSaurfangEventGUID = creature->GetGUID();
break;
case NPC_HIGH_OVERLORD_SAURFANG_DUMMY:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
{
creature->UpdateEntry(NPC_MURADIN_BRONZEBEARD_DUMMY, creature->GetCreatureData());
creature->LoadEquipment();
}
break;
case NPC_SE_KOR_KRON_REAVER:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_SE_SKYBREAKER_MARINE);
break;
case NPC_FESTERGUT:
@@ -579,52 +539,34 @@ class instance_icecrown_citadel : public InstanceMapScript
uint32 GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureData const* data) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* player = players.begin()->GetSource())
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
- }
-
uint32 entry = data->id1;
switch (entry)
{
case NPC_HORDE_GUNSHIP_CANNON:
case NPC_ORGRIMS_HAMMER_CREW:
case NPC_SKY_REAVER_KORM_BLACKSCAR:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
return 0;
break;
case NPC_ALLIANCE_GUNSHIP_CANNON:
case NPC_SKYBREAKER_DECKHAND:
case NPC_HIGH_CAPTAIN_JUSTIN_BARTLETT:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
return 0;
break;
case NPC_ZAFOD_BOOMBOX:
if (GameObjectTemplate const* go = sObjectMgr->GetGameObjectTemplate(GO_THE_SKYBREAKER_A))
- if ((TeamIdInInstance == TEAM_ALLIANCE && data->mapid == go->moTransport.mapID) ||
- (TeamIdInInstance == TEAM_HORDE && data->mapid != go->moTransport.mapID))
+ if ((GetTeamIdInInstance() == TEAM_ALLIANCE && data->mapid == go->moTransport.mapID) ||
+ (GetTeamIdInInstance() == TEAM_HORDE && data->mapid != go->moTransport.mapID))
return entry;
return 0;
case NPC_IGB_MURADIN_BRONZEBEARD:
- if ((TeamIdInInstance == TEAM_ALLIANCE && data->posX > 10.0f) ||
- (TeamIdInInstance == TEAM_HORDE && data->posX < 10.0f))
+ if ((GetTeamIdInInstance() == TEAM_ALLIANCE && data->posX > 10.0f) ||
+ (GetTeamIdInInstance() == TEAM_HORDE && data->posX < 10.0f))
return entry;
return 0;
case NPC_SPIRE_FROSTWYRM:
- if ((TeamIdInInstance == TEAM_ALLIANCE && data->posY < 2200.0f) || (TeamIdInInstance == TEAM_HORDE && data->posY > 2200.0f))
+ if ((GetTeamIdInInstance() == TEAM_ALLIANCE && data->posY < 2200.0f) || (GetTeamIdInInstance() == TEAM_HORDE && data->posY > 2200.0f))
return 0;
break;
}
@@ -634,38 +576,20 @@ class instance_icecrown_citadel : public InstanceMapScript
uint32 GetGameObjectEntry(ObjectGuid::LowType /*guidLow*/, uint32 entry) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* player = players.begin()->GetSource())
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
- }
-
switch (entry)
{
case GO_GUNSHIP_ARMORY_H_10N:
case GO_GUNSHIP_ARMORY_H_25N:
case GO_GUNSHIP_ARMORY_H_10H:
case GO_GUNSHIP_ARMORY_H_25H:
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
return 0;
break;
case GO_GUNSHIP_ARMORY_A_10N:
case GO_GUNSHIP_ARMORY_A_25N:
case GO_GUNSHIP_ARMORY_A_10H:
case GO_GUNSHIP_ARMORY_A_25H:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
return 0;
break;
}
@@ -748,24 +672,6 @@ class instance_icecrown_citadel : public InstanceMapScript
void OnGameObjectCreate(GameObject* go) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* player = players.begin()->GetSource())
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
- }
-
switch (go->GetEntry())
{
case GO_SPIRIT_ALARM_1:
@@ -1021,7 +927,7 @@ class instance_icecrown_citadel : public InstanceMapScript
case DATA_COLDFLAME_JETS:
return ColdflameJetsState;
case DATA_TEAMID_IN_INSTANCE:
- return TeamIdInInstance;
+ return GetTeamIdInInstance();
case DATA_BLOOD_QUICKENING_STATE:
return BloodQuickeningState;
case DATA_HEROIC_ATTEMPTS:
@@ -1315,7 +1221,7 @@ class instance_icecrown_citadel : public InstanceMapScript
if (!GunshipGUID && instance->HavePlayers())
{
SetBossState(DATA_ICECROWN_GUNSHIP_BATTLE, NOT_STARTED);
- uint32 gunshipEntry = TeamIdInInstance == TEAM_HORDE ? GO_ORGRIMS_HAMMER_H : GO_THE_SKYBREAKER_A;
+ uint32 gunshipEntry = GetTeamIdInInstance() == TEAM_HORDE ? GO_ORGRIMS_HAMMER_H : GO_THE_SKYBREAKER_A;
if (MotionTransport* gunship = sTransportMgr->CreateTransport(gunshipEntry, 0, instance))
{
GunshipGUID = gunship->GetGUID();
@@ -1880,7 +1786,7 @@ class instance_icecrown_citadel : public InstanceMapScript
}
break;
case EVENT_ENEMY_GUNSHIP_COMBAT:
- if (Creature* captain = source->FindNearestCreature(TeamIdInInstance == TEAM_HORDE ? NPC_IGB_HIGH_OVERLORD_SAURFANG : NPC_IGB_MURADIN_BRONZEBEARD, 200.0f))
+ if (Creature* captain = source->FindNearestCreature(GetTeamIdInInstance() == TEAM_HORDE ? NPC_IGB_HIGH_OVERLORD_SAURFANG : NPC_IGB_MURADIN_BRONZEBEARD, 200.0f))
{
captain->AI()->DoAction(ACTION_ENEMY_GUNSHIP_TALK);
}
@@ -1900,7 +1806,7 @@ class instance_icecrown_citadel : public InstanceMapScript
//After movement is stopped remove the backpack
RemoveBackPack();
}
- if (Creature* captain = source->FindNearestCreature(TeamIdInInstance == TEAM_HORDE ? NPC_IGB_HIGH_OVERLORD_SAURFANG : NPC_IGB_MURADIN_BRONZEBEARD, 200.0f))
+ if (Creature* captain = source->FindNearestCreature(GetTeamIdInInstance() == TEAM_HORDE ? NPC_IGB_HIGH_OVERLORD_SAURFANG : NPC_IGB_MURADIN_BRONZEBEARD, 200.0f))
captain->AI()->DoAction(ACTION_EXIT_SHIP);
break;
@@ -2066,7 +1972,6 @@ class instance_icecrown_citadel : public InstanceMapScript
ObjectGuid FrozenBolvarGUID;
ObjectGuid PillarsChainedGUID;
ObjectGuid PillarsUnchainedGUID;
- TeamId TeamIdInInstance;
uint32 ColdflameJetsState;
std::set FrostwyrmGUIDs;
std::set SpinestalkerTrash;
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
index 28c44cedcf00c3..f0dd4c766f2582 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp
@@ -49,85 +49,40 @@ class instance_nexus : public InstanceMapScript
SetHeaders(DataHeader);
SetBossNumber(MAX_ENCOUNTERS);
LoadDoorData(doorData);
-
- TeamIdInInstance = TEAM_NEUTRAL;
}
void OnCreatureCreate(Creature* creature) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* pPlayer = players.begin()->GetSource())
- {
- if (Group* group = pPlayer->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = pPlayer->GetTeamId();
- }
- else
- TeamIdInInstance = pPlayer->GetTeamId();
- }
- }
-
switch (creature->GetEntry())
{
case NPC_ALLIANCE_RANGER:
creature->SetFaction(FACTION_MONSTER_2);
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_HORDE_RANGER);
break;
case NPC_ALLIANCE_BERSERKER:
creature->SetFaction(FACTION_MONSTER_2);
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_HORDE_BERSERKER);
break;
case NPC_ALLIANCE_COMMANDER:
creature->SetFaction(FACTION_MONSTER_2);
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_HORDE_COMMANDER);
break;
case NPC_ALLIANCE_CLERIC:
creature->SetFaction(FACTION_MONSTER_2);
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_HORDE_CLERIC);
break;
case NPC_COMMANDER_STOUTBEARD:
creature->SetFaction(FACTION_MONSTER_2);
- if (TeamIdInInstance == TEAM_ALLIANCE)
+ if (GetTeamIdInInstance() == TEAM_ALLIANCE)
creature->UpdateEntry(NPC_COMMANDER_KOLURG);
break;
}
}
- void OnPlayerEnter(Player* player) override
- {
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
-
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFaction((TeamIdInInstance == TEAM_HORDE) ? 1610 : 1);
- }
-
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
void OnGameObjectCreate(GameObject* gameObject) override
{
switch (gameObject->GetEntry())
@@ -194,8 +149,6 @@ class instance_nexus : public InstanceMapScript
(*i)->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
return true;
}
- protected:
- TeamId TeamIdInInstance;
};
};
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
index 1a137d590242e3..2ed91f6f98bf22 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp
@@ -59,56 +59,11 @@ class instance_shattered_halls : public InstanceMapScript
SetBossNumber(ENCOUNTER_COUNT);
LoadObjectData(creatureData, nullptr);
LoadDoorData(doorData);
-
- TeamIdInInstance = TEAM_NEUTRAL;
RescueTimer = 100 * MINUTE * IN_MILLISECONDS;
}
- void OnPlayerEnter(Player* player) override
- {
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
-
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFaction((TeamIdInInstance == TEAM_HORDE) ? 1610 : 1);
- }
-
- void OnPlayerLeave(Player* player) override
- {
- if (sWorld->getBoolConfig(CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP))
- player->SetFactionForRace(player->getRace());
- }
-
void OnCreatureCreate(Creature* creature) override
{
- if (TeamIdInInstance == TEAM_NEUTRAL)
- {
- Map::PlayerList const& players = instance->GetPlayers();
- if (!players.IsEmpty())
- if (Player* player = players.begin()->GetSource())
- {
- if (Group* group = player->GetGroup())
- {
- if (Player* gLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID()))
- TeamIdInInstance = Player::TeamIdForRace(gLeader->getRace());
- else
- TeamIdInInstance = player->GetTeamId();
- }
- else
- TeamIdInInstance = player->GetTeamId();
- }
- }
-
switch (creature->GetEntry())
{
case NPC_SHATTERED_EXECUTIONER:
@@ -117,22 +72,22 @@ class instance_shattered_halls : public InstanceMapScript
ExecutionerGUID = creature->GetGUID();
break;
case NPC_RIFLEMAN_BROWNBEARD:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_KORAG_PROUDMANE);
PrisonerGUID[0] = creature->GetGUID();
break;
case NPC_CAPTAIN_ALINA:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_CAPTAIN_BONESHATTER);
PrisonerGUID[1] = creature->GetGUID();
break;
case NPC_PRIVATE_JACINT:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_SCOUT_ORGARR);
PrisonerGUID[2] = creature->GetGUID();
break;
case NPC_RANDY_WHIZZLESPROCKET:
- if (TeamIdInInstance == TEAM_HORDE)
+ if (GetTeamIdInInstance() == TEAM_HORDE)
creature->UpdateEntry(NPC_DRISELLA);
break;
}
@@ -147,7 +102,7 @@ class instance_shattered_halls : public InstanceMapScript
instance->LoadGrid(230, -80);
if (Creature* kargath = GetCreature(DATA_KARGATH))
- sCreatureTextMgr->SendChat(kargath, TeamIdInInstance == TEAM_ALLIANCE ? 3 : 4, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP);
+ sCreatureTextMgr->SendChat(kargath, GetTeamIdInInstance() == TEAM_ALLIANCE ? 3 : 4, nullptr, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_MAP);
RescueTimer = 80 * MINUTE * IN_MILLISECONDS;
}
@@ -213,7 +168,6 @@ class instance_shattered_halls : public InstanceMapScript
ObjectGuid ExecutionerGUID;
ObjectGuid PrisonerGUID[3];
uint32 RescueTimer;
- TeamId TeamIdInInstance;
};
};