aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/ReputationMgr.cpp9
-rw-r--r--src/game/ReputationMgr.h7
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);