diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/game/ReputationMgr.cpp | 9 | ||||
-rw-r--r-- | src/game/ReputationMgr.h | 7 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/game/ReputationMgr.cpp b/src/game/ReputationMgr.cpp index ec661c37b7b..006f47980ac 100644 --- a/src/game/ReputationMgr.cpp +++ b/src/game/ReputationMgr.cpp @@ -357,7 +357,9 @@ void ReputationMgr::SetVisible(FactionTemplateEntry const*factionTemplateEntry) return; if(FactionEntry const *factionEntry = sFactionStore.LookupEntry(factionTemplateEntry->faction)) - SetVisible(factionEntry); + // Never show factions of the opposing team + if(!(factionEntry->BaseRepRaceMask[1] & m_player->getRaceMask() && factionEntry->BaseRepValue[1] == Reputation_Bottom) ) + SetVisible(factionEntry); } void ReputationMgr::SetVisible(FactionEntry const *factionEntry) @@ -376,10 +378,7 @@ void ReputationMgr::SetVisible(FactionState* faction) { // always invisible or hidden faction can't be make visible // except if faction has FACTION_FLAG_SPECIAL - if(faction->Flags & FACTION_FLAG_INVISIBLE_FORCED && !(faction->Flags & FACTION_FLAG_SPECIAL) ) - return; - - if(faction->Flags & FACTION_FLAG_HIDDEN) + if(faction->Flags & (FACTION_FLAG_INVISIBLE_FORCED|FACTION_FLAG_HIDDEN) && !(faction->Flags & FACTION_FLAG_SPECIAL) ) return; // already set diff --git a/src/game/ReputationMgr.h b/src/game/ReputationMgr.h index f4d998ab7ce..6c78e0fa3b5 100644 --- a/src/game/ReputationMgr.h +++ b/src/game/ReputationMgr.h @@ -33,6 +33,7 @@ static uint32 ReputationRankStrIndex[MAX_REPUTATION_RANK] = enum FactionFlags { + FACTION_FLAG_NONE = 0x00, // no faction flag FACTION_FLAG_VISIBLE = 0x01, // makes visible in client (set or can be set at interaction with target of this faction) FACTION_FLAG_AT_WAR = 0x02, // enable AtWar-button in client. player controlled (except opposition team always war state), Flag only set on initial creation FACTION_FLAG_HIDDEN = 0x04, // hidden faction from reputation pane in client (player can gain reputation, but this update not sent to client) @@ -48,14 +49,12 @@ struct FactionState { uint32 ID; RepListID ReputationListID; - uint32 Flags; + uint8 Flags; int32 Standing; bool Changed; }; typedef std::map<RepListID,FactionState> FactionStateList; -typedef std::pair<FactionStateList::const_iterator,FactionStateList::const_iterator> FactionStateListPair; - typedef std::map<uint32,ReputationRank> ForcedReactions; class Player; @@ -133,7 +132,7 @@ class ReputationMgr private: // internal helper functions void Initialize(); - uint32 GetDefaultStateFlags(const FactionEntry *factionEntry) const; + uint32 GetDefaultStateFlags(FactionEntry const* factionEntry) const; bool SetReputation(FactionEntry const* factionEntry, int32 standing, bool incremental); bool SetOneFactionReputation(FactionEntry const* factionEntry, int32 standing, bool incremental); void SetVisible(FactionState* faction); |