diff options
Diffstat (limited to 'src/server/game/Spells/SpellEffects.cpp')
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 25 |
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) |