diff options
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.h | 2 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 5 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.cpp | 8 |
4 files changed, 7 insertions, 14 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index c6cd332d5c7..094a3d55acc 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -6493,14 +6493,10 @@ int32 Player::CalculateReputationGain(uint32 creatureOrQuestLevel, int32 rep, in float percent = 100.0f; // Get the generic rate first - if (const RepRewardRate *repData = objmgr.GetRepRewardRate(faction)) + if (RepRewardRate const * repData = objmgr.GetRepRewardRate(faction)) { float repRate = for_quest ? repData->quest_rate : repData->creature_rate; percent *= repRate; - - // for custom, a rate of 0.0 will totally disable reputation gain for this faction/type - if (repRate <= 0.0f) - percent = repRate; } float rate = for_quest ? sWorld.getRate(RATE_REPUTATION_LOWLEVEL_QUEST) : sWorld.getRate(RATE_REPUTATION_LOWLEVEL_KILL); diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h index b44225dc5e6..53be3a0e1e0 100644 --- a/src/server/game/Globals/ObjectMgr.h +++ b/src/server/game/Globals/ObjectMgr.h @@ -203,7 +203,7 @@ struct RepRewardRate { float quest_rate; // We allow rate = 0.0 in database. For this case, it means that float creature_rate; // no reputation are given at all for this faction/rate type. - float spell_rate; // not implemented yet (SPELL_EFFECT_REPUTATION) + float spell_rate; }; struct ReputationOnKillEntry diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 181822c39e2..50241314a6b 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -7024,6 +7024,11 @@ void Spell::EffectReputation(uint32 i) if (!factionEntry) return; + if (RepRewardRate const * repData = objmgr.GetRepRewardRate(faction_id)) + { + rep_change = (float)rep_change * repData->spell_rate; + } + _player->GetReputationMgr().ModifyReputation(factionEntry, rep_change); } diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 0f06598afe7..3ffed954437 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3836,14 +3836,6 @@ void SpellMgr::LoadSpellCustomAttr() spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_NO_INITIAL_AGGRO; count++; break; - case 61306: // Kirin Tor Commendation Badge - case 61308: // Wyrmrest Commendation Badge - case 61311: // Argent Crusade Commendation Badge - case 61312: // Ebon Blade Commendadtion Badge - case 69757: // Sons of Hodir Commendation Badge - spellInfo->EffectBasePoints[0] = 519; // Some suggest a global multiplier is used for rep gain - count++; // but basepoints * 1,3 hard coded in the tooltip says - break; // otherwise. default: break; } |