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; }; };