From c9ffd1becef9f5f3e47f18b4c541297e3bb307b3 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Tue, 19 Jul 2016 20:44:06 +0200 Subject: [PATCH] [AZTH] moved zone check in our setFactionForRace function --- .../src/server/game/AzthPlayer.cpp | 15 +++++++++++++ .../azerothshard/src/server/game/AzthPlayer.h | 5 ++++- .../plugins/CrossFaction/CrossFaction.cpp | 22 ------------------- .../plugins/CrossFaction/CrossFaction.h | 13 +++++------ 4 files changed, 25 insertions(+), 30 deletions(-) diff --git a/modules/azerothshard/src/server/game/AzthPlayer.cpp b/modules/azerothshard/src/server/game/AzthPlayer.cpp index 0c177a8b57..685b5f6adc 100644 --- a/modules/azerothshard/src/server/game/AzthPlayer.cpp +++ b/modules/azerothshard/src/server/game/AzthPlayer.cpp @@ -32,6 +32,21 @@ uint32 AzthPlayer::getOriginalTeam() { } bool AzthPlayer::setFactionForRace(uint8 race) { + + bool disable = true; + + CrossFaction *cf = sCrossFaction; + + // Check disables + if (cf->isMapEnabled(player->GetMapId()) && cf->isZoneEnabled(player->GetZoneId()) && cf->isAreaEnabled(player->GetAreaId())) + disable = false; + else + { + player->Whisper("Quest'area ha il crossfaction disabilitato", LANG_UNIVERSAL, player->GetGUID()); + sLog->outError("Crossfaction disabled for player %s", player->GetName().c_str()); + return false; + } + if (player->InBattleground()) { if (Battleground * bg = player->GetBattleground()) { player->m_team = player->GetBgTeamId(); diff --git a/modules/azerothshard/src/server/game/AzthPlayer.h b/modules/azerothshard/src/server/game/AzthPlayer.h index dace112a21..1147cf4a8b 100644 --- a/modules/azerothshard/src/server/game/AzthPlayer.h +++ b/modules/azerothshard/src/server/game/AzthPlayer.h @@ -4,9 +4,12 @@ #include "Config.h" #include "Define.h" #include "Player.h" +#include "CrossFaction.h" + +class CrossFaction; /* [TODO] fix and re-enable */ - class AzthPlayer { +class AzthPlayer { public: explicit AzthPlayer(Player *origin); ~AzthPlayer(); diff --git a/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.cpp b/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.cpp index 9eb42f0bf6..2e14517cf0 100644 --- a/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.cpp +++ b/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.cpp @@ -14,28 +14,6 @@ void CrossFaction::UpdatePlayerTeam(Group* group, uint64 guid, bool reset /* = f Player* player = ObjectAccessor::FindPlayer(guid); if (player) { - bool disable = true; - - // Check disables - if (isMapEnabled(player->GetMapId()) && isZoneEnabled(player->GetZoneId()) && isAreaEnabled(player->GetAreaId())) - disable = false; - else - { - player->Whisper("This specific area has crossfaction disabled", LANG_UNIVERSAL, player->GetGUID()); - sLog->outError("Crossfaction disabled for player %s", player->GetName().c_str()); - } - - // check conditions and set new faction - if (!reset) - if(!disable) - if (group) - if (Player* groupLeader = ObjectAccessor::FindPlayer(group->GetLeaderGUID())) - { - player->setFactionForRace(groupLeader->getRace()); - return; - } - - // ANY OTHER CASE: just reset it back player->setFactionForRace(player->getRace()); } } diff --git a/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.h b/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.h index 7315c4e490..5a9835a8bf 100644 --- a/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.h +++ b/modules/azerothshard/src/server/plugins/CrossFaction/CrossFaction.h @@ -19,6 +19,11 @@ class CrossFaction void LoadConfig(bool reload); void UpdatePlayerTeam(Group* group, uint64 guid, bool reset = false); + // Check functions + bool isMapEnabled(uint32 mapid) { return std::find(mapDisable.begin(), mapDisable.end(), mapid) == mapDisable.end(); }; + bool isZoneEnabled(uint32 mapid) { return std::find(zoneDisable.begin(), zoneDisable.end(), mapid) == zoneDisable.end(); }; + bool isAreaEnabled(uint32 mapid) { return std::find(areaDisable.begin(), areaDisable.end(), mapid) == areaDisable.end(); }; + private: typedef std::vector CrossFactionDisableList; @@ -26,15 +31,9 @@ class CrossFaction CrossFactionDisableList mapDisable; CrossFactionDisableList zoneDisable; CrossFactionDisableList areaDisable; - - // Check functions - bool isMapEnabled(uint32 mapid) { return std::find(mapDisable.begin(), mapDisable.end(), mapid) == mapDisable.end(); }; - bool isZoneEnabled(uint32 mapid) { return std::find(zoneDisable.begin(), zoneDisable.end(), mapid) == zoneDisable.end(); }; - bool isAreaEnabled(uint32 mapid) { return std::find(areaDisable.begin(), areaDisable.end(), mapid) == areaDisable.end(); }; - }; #define sCrossFaction ACE_Singleton::instance() -#endif \ No newline at end of file +#endif