Honor & PvP¶
How honour, dishonour and PvP flags work in VMaNGOS (src/game/HonorMgr.cpp).
The Honour Day¶
Honour is calculated once per week per realm (on the configured maintenance day):
- The core stores accumulated honour contribution points (CP) per character in
character_honor_cpduring the day. - At the weekly maintenance tick the standing calculation runs over all characters, awards ranks/titles and writes history.
- The tick date is persisted in
saved_variables.
The whole pipeline can be emulated for a specific client timeline using the PvP.Accurate*
config toggles (mangosd.conf).
Dishonour & Kills¶
- Killing civilians and other dishonourable targets subtracts CP / gives dishonourable kills.
PvP.DishonorableKillsconfigures the behaviour.- Honour gains scale with the victim's level/rank and group size; the gain formula itself is
hardcoded in
MaNGOS::Honor::GetHonorGain(Formulas.h), with no rate config options.
PvP Flags¶
| Mechanic | Where |
|---|---|
| Player vs. player flagging | UnitDefines.h unit flags; set by attacking, zones, spells |
| Duel handling | core, no DB data |
| Battlegrounds | own flag rules inside instances |
DB scripts can toggle PvP state on players with command 86 SET_PVP
(DB Script Tables).
Rank System Internals¶
From HonorMgr.h/.cpp and MaNGOS::Honor::GetHonorGain (Formulas.h):
- 19 ranks total: 4 negative (dishonour) + 15 positive; the client rank bar visualises
-4 … +14. - Rank points thresholds: first positive rank at
2000 RP, then one rank per additional5000 RP; dishonour ranks mirror this downward. - Minimum honour kills for ranking: 25 pre-1.10, 15 post-1.10
(
MIN_HONOR_KILLS_PRE/POST_1_10). - HK diminishing returns: repeated kills of the same victim lose value: 25 % per repeat
pre-1.12, 10 % post-1.12 (progression-aware via
ACCURATE_PVP_REWARDS). - Honour per kill:
with
gain = levelCoeff(killerLevel) × sameVictimPenalty × expFactor × e^(0.05331 × victimVisualRank) × levelDiffPenalty / groupSizeexpFactor = 157.4pre-1.8 and188.3after. - Dishonourable kills vs civilians grant penalty CP by victim level (10 → capped 100).
- Weekly tick redistributes standings (
DistributeRankPoints), decays inactive players (InactiveDecayRankPoints) and persists rank/RP/standing into thecharacterscolumns.