diff --git a/src/game/DBCStructure.h b/src/game/DBCStructure.h index 8cf299d3c..f4d73cfa1 100644 --- a/src/game/DBCStructure.h +++ b/src/game/DBCStructure.h @@ -821,6 +821,20 @@ struct FactionEntry // 39 string flags //char* description[16]; // 40-55 m_description_lang // 56 string flags + + // helpers + + int GetIndexFitTo(uint32 raceMask, uint32 classMask) const + { + for (int i = 0; i < 4; ++i) + { + if ((BaseRepRaceMask[i] == 0 || (BaseRepRaceMask[i] & raceMask)) && + (BaseRepClassMask[i] == 0 || (BaseRepClassMask[i] & classMask))) + return i; + } + + return -1; + } }; struct FactionTemplateEntry diff --git a/src/game/ReputationMgr.cpp b/src/game/ReputationMgr.cpp index 6075bf627..e41a929e0 100644 --- a/src/game/ReputationMgr.cpp +++ b/src/game/ReputationMgr.cpp @@ -56,16 +56,10 @@ int32 ReputationMgr::GetBaseReputation(FactionEntry const* factionEntry) const uint32 raceMask = m_player->getRaceMask(); 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) ) ) - return factionEntry->BaseRepValue[i]; - } - // in faction.dbc exist factions with (RepListId >=0, listed in character reputation list) with all BaseRepRaceMask[i]==0 - return 0; + int idx = factionEntry->GetIndexFitTo(raceMask, classMask); + + return idx >= 0 ? factionEntry->BaseRepValue[idx] : 0; } int32 ReputationMgr::GetReputation(FactionEntry const* factionEntry) const @@ -107,14 +101,10 @@ uint32 ReputationMgr::GetDefaultStateFlags(FactionEntry const* factionEntry) con uint32 raceMask = m_player->getRaceMask(); 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) ) ) - return factionEntry->ReputationFlags[i]; - } - return 0; + + int idx = factionEntry->GetIndexFitTo(raceMask, classMask); + + return idx >= 0 ? factionEntry->ReputationFlags[idx] : 0; } void ReputationMgr::SendForceReactions() diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index b0aeb483a..8bfa06ad0 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "10664" + #define REVISION_NR "10665" #endif // __REVISION_NR_H__