aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQAston <none@none>2010-07-27 02:25:22 +0200
committerQAston <none@none>2010-07-27 02:25:22 +0200
commitdd8d6701b81c4ea66b21cb94a8cd7f0e309b6c05 (patch)
tree91133cfb0e921571b30dac9400e2364225f8ce97
parent6bb1c8f3f9046f6723931f57223f2a6e030aa1ca (diff)
*Implement RepRewardRate for spells.
--HG-- branch : trunk
-rw-r--r--src/server/game/Entities/Player/Player.cpp6
-rw-r--r--src/server/game/Globals/ObjectMgr.h2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp5
-rw-r--r--src/server/game/Spells/SpellMgr.cpp8
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;
}