25 if (standing >= limit)
37 SF_LOG_ERROR(
"misc",
"ReputationMgr::IsAtWar: Can't get AtWar flag of %s for unknown faction (faction id) #%u.",
_player->GetName().c_str(), faction_id);
60 SF_LOG_ERROR(
"misc",
"ReputationMgr::GetReputation: Can't get reputation of %s for unknown faction (faction id) #%u.",
_player->GetName().c_str(), faction_id);
74 for (
int i = 0; i < 4; i++)
128 for (
int i = 0; i < 4; i++)
149 data <<
uint32(itr->first);
150 data <<
uint32(itr->second);
153 _player->SendDirectMessage(&data);
161 size_t countPos = data.
bitwpos();
172 for (FactionStateList::iterator itr =
_factions.begin(); itr !=
_factions.end(); ++itr)
174 if (itr->second.needSend)
176 itr->second.needSend =
false;
179 data <<
uint32(itr->second.ReputationListID);
180 data <<
uint32(itr->second.Standing);
190 data.
PutBits(countPos, count, 21);
191 _player->SendDirectMessage(&data);
202 for (FactionStateList::iterator itr =
_factions.begin(); itr !=
_factions.end(); ++itr)
205 for (; a != itr->first; ++a)
213 data <<
uint8(itr->second.Flags);
214 data <<
uint32(itr->second.Standing);
219 itr->second.needSend =
false;
225 for (; a != count; ++a)
235 _player->SendDirectMessage(&data);
240 for (FactionStateList::iterator itr =
_factions.begin(); itr !=
_factions.end(); ++itr)
246 if (
_player->GetSession()->PlayerLoading())
252 _player->SendDirectMessage(&data);
264 for (
unsigned int i = 1; i <
sFactionStore.GetNumRows(); i++)
271 newFaction.
ID = factionEntry->
ID;
297 if (repTemplate->faction[i])
299 if (
_player->GetReputationRank(repTemplate->faction[i]) <=
ReputationRank(repTemplate->faction_rank[i]))
302 int32 spilloverRep =
int32(standing * repTemplate->faction_rate[i]);
310 float spillOverRepOut = float(standing);
319 FactionStateList::iterator parentState =
_factions.find(parent->reputationListID);
334 for (SimpleFactionsList::const_iterator itr = flist->begin(); itr != flist->end(); ++itr)
338 if (factionEntryCalc == factionEntry ||
GetRank(factionEntryCalc) >
ReputationRank(factionEntryCalc->spilloverMaxRankIn))
340 int32 spilloverRep =
int32(spillOverRepOut * factionEntryCalc->spilloverRateIn);
341 if (spilloverRep != 0 || !incremental)
370 standing += itr->second.Standing + BaseRep;
381 itr->second.Standing = standing - BaseRep;
382 itr->second.needSend =
true;
383 itr->second.needSave =
true;
390 if (new_rank > old_rank)
395 _player->ReputationChanged(factionEntry);
409 if (!factionTemplateEntry->
faction)
414 if (!(factionEntry->BaseRepRaceMask[1] &
_player->getRaceMask() && factionEntry->BaseRepValue[1] ==
Reputation_Bottom))
452 FactionStateList::iterator itr =
_factions.find(FactionIndexID);
465 FactionStateList::iterator itr =
_factions.find(FactionIndexID);
536 Field* fields = result->Fetch();
574 if (faction->
Flags == dbFactionFlags)
580 }
while (result->NextRow());
586 for (FactionStateList::iterator itr =
_factions.begin(); itr !=
_factions.end(); ++itr)
588 if (itr->second.needSave)
598 stmt->
setInt32(2, itr->second.Standing);
602 itr->second.needSave =
false;
@ CHAR_INS_CHAR_REPUTATION_BY_FACTION
@ CHAR_DEL_CHAR_REPUTATION_BY_FACTION
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_EXALTED_REPUTATION
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REVERED_REPUTATION
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_REPUTATION
@ ACHIEVEMENT_CRITERIA_TYPE_KNOWN_FACTIONS
@ ACHIEVEMENT_CRITERIA_TYPE_GAIN_HONORED_REPUTATION
DBCStorage< FactionEntry > sFactionStore(FactionEntryfmt)
SimpleFactionsList const * GetFactionTeamList(uint32 faction)
std::list< uint32 > SimpleFactionsList
#define SF_LOG_ERROR(filterType__,...)
Skyfire::AutoPtr< PreparedResultSet, Skyfire::Mutex > PreparedQueryResult
@ FACTION_FLAG_PEACE_FORCED
@ FACTION_FLAG_INVISIBLE_FORCED
#define MAX_REPUTATION_RANK
#define MIN_REPUTATION_RANK
#define MAX_SPILLOVER_FACTIONS
Skyfire::AutoPtr< Transaction, Skyfire::Mutex > SQLTransaction
@ PLAYER_FIELD_LFG_BONUS_FACTION_ID
bool WriteBit(uint32 bit)
size_t bitwpos() const
Returns position of last written bit.
void PutBits(size_t pos, T value, uint32 bitCount)
void WriteBits(T value, size_t bits)
void setUInt16(const uint8 index, const uint16 value)
void setUInt32(const uint8 index, const uint32 value)
void setInt32(const uint8 index, const int32 value)
uint8 _honoredFactionCount
ReputationRank GetBaseRank(FactionEntry const *factionEntry) const
float GetLFGBonus(FactionEntry const *factionEntry)
void SetVisible(FactionTemplateEntry const *factionTemplateEntry)
int32 GetBaseReputation(FactionEntry const *factionEntry) const
uint8 _visibleFactionCount
void SendVisible(FactionState const *faction) const
static const int32 PointsInRank[MAX_REPUTATION_RANK]
void SetAtWar(FactionIndex FactionIndexID)
void SendState(FactionState const *faction)
int32 GetReputation(uint32 faction_id) const
uint32 GetDefaultStateFlags(FactionEntry const *factionEntry) const
void SaveToDB(SQLTransaction &trans)
bool SetReputation(FactionEntry const *factionEntry, int32 standing)
void ApplyForceReaction(uint32 faction_id, ReputationRank rank, bool apply)
ReputationRank GetRank(FactionEntry const *factionEntry) const
void SendInitialReputations()
uint8 _exaltedFactionCount
FactionState const * GetState(FactionEntry const *factionEntry) const
uint8 _reveredFactionCount
FactionStateList _factions
ForcedReactions _forcedReactions
static const int32 Reputation_Bottom
bool IsAtWar(uint32 faction_id) const
bool SetOneFactionReputation(FactionEntry const *factionEntry, int32 standing, bool incremental)
Public for chat command needs.
bool _sendFactionIncreased
void SetNotAtWar(FactionIndex FactionIndexID)
void SendForceReactions()
static ReputationRank ReputationToRank(int32 standing)
void UpdateRankCounters(ReputationRank old_rank, ReputationRank new_rank)
static const int32 Reputation_Cap
void LoadFromDB(PreparedQueryResult result)
void SetInactive(RepListID repListID, bool on)
CharacterDatabaseWorkerPool CharacterDatabase
Accessor to the character database.
@ SMSG_SET_FACTION_VISIBLE
@ SMSG_SET_FACTION_STANDING
@ SMSG_INITIALIZE_FACTIONS
@ SMSG_SET_FORCED_REACTIONS
@ RATE_REPUTATION_LFG_BONUS
uint32 BaseRepRaceMask[4]
uint32 ReputationFlags[4]
uint32 BaseRepClassMask[4]
RepListID ReputationListID