diff options
author | Machiavelli <none@none> | 2009-10-11 02:29:52 +0200 |
---|---|---|
committer | Machiavelli <none@none> | 2009-10-11 02:29:52 +0200 |
commit | 914fccad2a35db56c5f412d04175bf25486b1370 (patch) | |
tree | 7d360eecd6b9bc7a3f9d67836d9953144985635f /src | |
parent | ebe28e287049e915548bd435060f157e986fc686 (diff) |
Implement FACTION_FLAG_SPECIAL(128) for home cities and their northrend representatives. Fixes bug that Alliance Vanguard rep updates were not sent to the client.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/ReputationMgr.cpp | 19 | ||||
-rw-r--r-- | src/game/ReputationMgr.h | 5 |
2 files changed, 16 insertions, 8 deletions
diff --git a/src/game/ReputationMgr.cpp b/src/game/ReputationMgr.cpp index dbe14fb3350..ec661c37b7b 100644 --- a/src/game/ReputationMgr.cpp +++ b/src/game/ReputationMgr.cpp @@ -112,9 +112,12 @@ uint32 ReputationMgr::GetDefaultStateFlags(FactionEntry const* factionEntry) con uint32 classMask = m_player->getClassMask(); for (int i=0; i < 4; i++) { - if( (factionEntry->BaseRepRaceMask[i] & raceMask) && - (factionEntry->BaseRepClassMask[i]==0 || - (factionEntry->BaseRepClassMask[i] & classMask) ) ) + if( (factionEntry->BaseRepRaceMask[i] & raceMask || + (factionEntry->BaseRepRaceMask[i] == 0 && + factionEntry->BaseRepClassMask[i] != 0 ) ) && + (factionEntry->BaseRepClassMask[i] & classMask || + factionEntry->BaseRepClassMask[i] == 0 ) + ) return factionEntry->ReputationFlags[i]; } return 0; @@ -199,7 +202,7 @@ void ReputationMgr::SendVisible(FactionState const* faction) const m_player->SendDirectMessage(&data); } -void ReputationMgr::Initilize() +void ReputationMgr::Initialize() { m_factions.clear(); m_visibleFactionCount = 0; @@ -372,7 +375,11 @@ void ReputationMgr::SetVisible(FactionEntry const *factionEntry) void ReputationMgr::SetVisible(FactionState* faction) { // always invisible or hidden faction can't be make visible - if(faction->Flags & (FACTION_FLAG_INVISIBLE_FORCED|FACTION_FLAG_HIDDEN)) + // 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) return; // already set @@ -448,7 +455,7 @@ void ReputationMgr::SetInactive(FactionState* faction, bool inactive) void ReputationMgr::LoadFromDB(QueryResult *result) { // Set initial reputations (so everything is nifty before DB data load) - Initilize(); + Initialize(); //QueryResult *result = CharacterDatabase.PQuery("SELECT faction,standing,flags FROM character_reputation WHERE guid = '%u'",GetGUIDLow()); diff --git a/src/game/ReputationMgr.h b/src/game/ReputationMgr.h index d63c518eb82..f4d998ab7ce 100644 --- a/src/game/ReputationMgr.h +++ b/src/game/ReputationMgr.h @@ -39,7 +39,8 @@ enum FactionFlags FACTION_FLAG_INVISIBLE_FORCED = 0x08, // always overwrite FACTION_FLAG_VISIBLE and hide faction in rep.list, used for hide opposite team factions FACTION_FLAG_PEACE_FORCED = 0x10, // always overwrite FACTION_FLAG_AT_WAR, used for prevent war with own team factions FACTION_FLAG_INACTIVE = 0x20, // player controlled, state stored in characters.data ( CMSG_SET_FACTION_INACTIVE ) - FACTION_FLAG_RIVAL = 0x40 // flag for the two competing outland factions + FACTION_FLAG_RIVAL = 0x40, // flag for the two competing outland factions + FACTION_FLAG_SPECIAL = 0x80 // horde and alliance home cities and their northrend allies have this flag }; typedef uint32 RepListID; @@ -131,7 +132,7 @@ class ReputationMgr void SendStates() const; private: // internal helper functions - void Initilize(); + void Initialize(); uint32 GetDefaultStateFlags(const FactionEntry *factionEntry) const; bool SetReputation(FactionEntry const* factionEntry, int32 standing, bool incremental); bool SetOneFactionReputation(FactionEntry const* factionEntry, int32 standing, bool incremental); |