aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellEffects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r--src/server/game/Spells/SpellEffects.cpp25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index ed41f43af6f..a72e9e83401 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -6536,25 +6536,26 @@ void Spell::EffectLeap(uint32 i)
void Spell::EffectReputation(uint32 i)
{
- if (!unitTarget)
+ if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)
return;
- if (Player *_player = unitTarget->ToPlayer())
- {
- int32 rep_change = damage;//+1; // field store reputation change -1
- uint32 faction_id = m_spellInfo->EffectMiscValue[i];
+ Player *_player = (Player*)unitTarget;
- FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction_id);
- if (!factionEntry)
- return;
+ int32 rep_change = damage;//+1; // field store reputation change -1
- if (RepRewardRate const * repData = sObjectMgr.GetRepRewardRate(faction_id))
- rep_change = (float)rep_change * repData->spell_rate;
+ uint32 faction_id = m_spellInfo->EffectMiscValue[i];
- rep_change = _player->CalculateReputationGain(REPUTATION_SOURCE_SPELL, rep_change, faction_id);
+ FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction_id);
- _player->GetReputationMgr().ModifyReputation(factionEntry, rep_change);
+ if (!factionEntry)
+ return;
+
+ if (RepRewardRate const * repData = sObjectMgr.GetRepRewardRate(faction_id))
+ {
+ rep_change = (float)rep_change * repData->spell_rate;
}
+
+ _player->GetReputationMgr().ModifyReputation(factionEntry, rep_change);
}
void Spell::EffectQuestComplete(uint32 i)