aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/Player.cpp10
-rw-r--r--src/game/World.cpp2
-rw-r--r--src/game/World.h2
-rw-r--r--src/trinitycore/trinitycore.conf.dist10
4 files changed, 21 insertions, 3 deletions
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index 6482bf3b684..4f338cd4823 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -6111,14 +6111,18 @@ bool Player::SetOneFactionReputation(FactionEntry const* factionEntry, int32 sta
//Calculate total reputation percent player gain with quest/creature level
int32 Player::CalculateReputationGain(uint32 creatureOrQuestLevel, int32 rep, bool for_quest)
{
- // for grey creature kill received 20%, in other case 100.
- int32 percent = (!for_quest && (creatureOrQuestLevel <= MaNGOS::XP::GetGrayLevel(getLevel()))) ? 20 : 100;
+ float percent = 100.0f;
+
+ float rate = for_quest ? sWorld.getRate(RATE_REPUTATION_LOWLEVEL_QUEST) : sWorld.getRate(RATE_REPUTATION_LOWLEVEL_KILL);
+
+ if(rate != 1.0f && creatureOrQuestLevel <= MaNGOS::XP::GetGrayLevel(getLevel()))
+ percent *= rate;
int32 repMod = GetTotalAuraModifier(SPELL_AURA_MOD_REPUTATION_GAIN);
percent += rep > 0 ? repMod : -repMod;
- if(percent <=0)
+ if(percent <= 0.0f)
return 0;
return int32(sWorld.getRate(RATE_REPUTATION_GAIN)*rep*percent/100);
diff --git a/src/game/World.cpp b/src/game/World.cpp
index 3e25ff086c0..099914918b2 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -483,6 +483,8 @@ void World::LoadConfigSettings(bool reload)
rate_values[RATE_XP_QUEST] = sConfig.GetFloatDefault("Rate.XP.Quest", 1.0f);
rate_values[RATE_XP_EXPLORE] = sConfig.GetFloatDefault("Rate.XP.Explore", 1.0f);
rate_values[RATE_REPUTATION_GAIN] = sConfig.GetFloatDefault("Rate.Reputation.Gain", 1.0f);
+ rate_values[RATE_REPUTATION_LOWLEVEL_KILL] = sConfig.GetFloatDefault("Rate.Reputation.LowLevel.Kill", 1.0f);
+ rate_values[RATE_REPUTATION_LOWLEVEL_QUEST] = sConfig.GetFloatDefault("Rate.Reputation.LowLevel.Quest", 1.0f);
rate_values[RATE_CREATURE_NORMAL_DAMAGE] = sConfig.GetFloatDefault("Rate.Creature.Normal.Damage", 1.0f);
rate_values[RATE_CREATURE_ELITE_ELITE_DAMAGE] = sConfig.GetFloatDefault("Rate.Creature.Elite.Elite.Damage", 1.0f);
rate_values[RATE_CREATURE_ELITE_RAREELITE_DAMAGE] = sConfig.GetFloatDefault("Rate.Creature.Elite.RAREELITE.Damage", 1.0f);
diff --git a/src/game/World.h b/src/game/World.h
index e997f34f089..f6d9045a406 100644
--- a/src/game/World.h
+++ b/src/game/World.h
@@ -243,6 +243,8 @@ enum Rates
RATE_XP_QUEST,
RATE_XP_EXPLORE,
RATE_REPUTATION_GAIN,
+ RATE_REPUTATION_LOWLEVEL_KILL,
+ RATE_REPUTATION_LOWLEVEL_QUEST,
RATE_CREATURE_NORMAL_HP,
RATE_CREATURE_ELITE_ELITE_HP,
RATE_CREATURE_ELITE_RAREELITE_HP,
diff --git a/src/trinitycore/trinitycore.conf.dist b/src/trinitycore/trinitycore.conf.dist
index 4a463e7b95e..7e483380843 100644
--- a/src/trinitycore/trinitycore.conf.dist
+++ b/src/trinitycore/trinitycore.conf.dist
@@ -1072,6 +1072,14 @@ Visibility.Distance.Grey.Object = 10
# Reputation Gain rate
# Default: 1
#
+# Rate.Reputation.LowLevel.Kill
+# Reputation Gain form low level kill (grey creture)
+# Default: 1
+#
+# Rate.Reputation.LowLevel.Quest
+# Reputation Gain rate
+# Default: 1
+#
# Rate.InstanceResetTime
# Multiplier for the number of days in between global raid/heroic instance resets.
# Default: 1
@@ -1166,6 +1174,8 @@ Rate.Mining.Amount = 1
Rate.Mining.Next = 1
Rate.Talent = 1
Rate.Reputation.Gain = 1
+Rate.Reputation.LowLevel.Kill = 1
+Rate.Reputation.LowLevel.Quest = 1
Rate.InstanceResetTime = 1
SkillGain.Crafting = 1
SkillGain.Defense = 1