18#ifndef TRINITY_FORMULAS_H
19#define TRINITY_FORMULAS_H
36 float honor = multiplier * level * 1.55f;
37 sScriptMgr->OnHonorCalculation(honor, level, multiplier);
55 else if (pl_level <= 39)
56 level = pl_level - 5 - pl_level / 10;
57 else if (pl_level <= 59)
58 level = pl_level - 1 - pl_level / 5;
62 sScriptMgr->OnGrayLevelCalculation(level, pl_level);
70 if (mob_level >= pl_level + 5)
72 else if (mob_level >= pl_level + 3)
74 else if (mob_level >= pl_level - 2)
81 sScriptMgr->OnColorCodeCalculation(color, pl_level, mob_level);
91 else if (pl_level < 10)
93 else if (pl_level < 12)
95 else if (pl_level < 16)
97 else if (pl_level < 20)
99 else if (pl_level < 30)
101 else if (pl_level < 40)
103 else if (pl_level < 45)
105 else if (pl_level < 50)
107 else if (pl_level < 55)
109 else if (pl_level < 60)
114 sScriptMgr->OnZeroDifferenceCalculation(diff, pl_level);
135 TC_LOG_ERROR(
"misc",
"BaseGain: Unsupported content level {}", content);
140 if (mob_level >= pl_level)
142 uint8 nLevelDiff = mob_level - pl_level;
146 baseGain = ((pl_level * 5 + nBaseExp) * (20 + nLevelDiff) / 10 + 1) / 2;
151 if (mob_level > gray_level)
154 baseGain = (pl_level * 5 + nBaseExp) * (ZD + mob_level - pl_level) / ZD;
164 baseGain = std::max(baseGainMin, baseGain);
167 sScriptMgr->OnBaseGainCalculation(baseGain, pl_level, mob_level, content);
182 if (gain && creature)
200 gain =
uint32(gain * xpMod);
203 sScriptMgr->OnGainCalculation(gain, player, u);
237 sScriptMgr->OnGroupRateCalculation(rate, count, isRaid);
ContentLevels GetContentLevelsForMapAndZone(uint32 mapid, uint32 zoneId)
#define TC_LOG_ERROR(filterType__,...)
bool CanGiveExperience() const
CreatureTemplate const * GetCreatureTemplate() const
static Creature * ToCreature(Object *o)
uint32 GetMaxHealth() const
@ CONFIG_MIN_CREATURE_SCALED_XP_RATIO
float hk_honor_at_level_f(uint8 level, float multiplier=1.0f)
uint32 hk_honor_at_level(uint8 level, float multiplier=1.0f)
XPColorChar GetColorCode(uint8 pl_level, uint8 mob_level)
uint32 Gain(Player *player, Unit *u, bool isBattleGround=false)
uint32 BaseGain(uint8 pl_level, uint8 mob_level, ContentLevels content)
float xp_in_group_rate(uint32 count, bool isRaid)
uint8 GetZeroDifference(uint8 pl_level)
uint8 GetGrayLevel(uint8 pl_level)