Skip to content

Latest commit

 

History

History
67 lines (45 loc) · 2.4 KB

File metadata and controls

67 lines (45 loc) · 2.4 KB

Reputation System

How reputation works: faction definitions, gain rates and spillover. Sources: src/game/ReputationMgr.cpp, tables faction, faction_template.


The Two Tables

  • faction - one row per reputation group players can hold standing with (e.g. Stormwind). Defines the rank thresholds, parent chain and spillover.
  • faction_template - the combat-side faction of every creature/GO (creature_template.faction). Its friend/enemy masks decide hostility; its reputationListID links a creature to a reputation group so killing it grants/denies rep.

Hostility is evaluated through FactionTemplateReaction: hated→hostile … friendly→friendly; players react to creatures via these templates, not via the rep table directly.


Gaining Reputation

Mechanic Where configured
Kill credit creature's faction_template → reputation list id
Quest rewards quest_template.RepObjectiveFaction/Value, plus RewRepFaction*
Items item spells granting rep
Rate multipliers reputation_reward_rate per faction & zone type

Rate.Reputation.Gain in mangosd.conf scales everything globally.


Ranks

Ranks run Hated → Exalted (REP_HATED=0 … REP_EXALTED=7, SharedDefines.h). The standing cut-offs between ranks come from Faction.dbc (per-faction ReputationMax values), not from SQL; conditions can test them with CONDITION_REPUTATION_RANK_MIN/MAX (conditions), e.g. vendor items visible only at Exalted.


Spillover

reputation_spillover defines which parent faction receives a fraction of gains (e.g. killing Defias raises Stormwind, and partially the other Alliance cities):

  • faction_id - the child faction gaining rep,
  • parent_faction - where spillover goes,
  • per-rank rate columns control percentages for hostile/unfriendly/friendly tiers.

Character Side

Standing per player persists in character_reputation (faction → standing + flags such as "at war").


Related Pages