From f5399618d9da2f20a8c7fcc51175096d85521afa Mon Sep 17 00:00:00 2001 From: azazel Date: Mon, 9 Aug 2010 23:22:31 +0600 Subject: Implement reputation rates and aura effects for Spell::EffectReputation() (thanks Lynx3d) --HG-- branch : trunk --- src/server/game/Spells/SpellEffects.cpp | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) (limited to 'src/server/game/Spells/SpellEffects.cpp') diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index a72e9e83401..ed41f43af6f 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -6536,26 +6536,25 @@ void Spell::EffectLeap(uint32 i) void Spell::EffectReputation(uint32 i) { - if (!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER) + if (!unitTarget) return; - Player *_player = (Player*)unitTarget; - - int32 rep_change = damage;//+1; // field store reputation change -1 + if (Player *_player = unitTarget->ToPlayer()) + { + int32 rep_change = damage;//+1; // field store reputation change -1 + uint32 faction_id = m_spellInfo->EffectMiscValue[i]; - uint32 faction_id = m_spellInfo->EffectMiscValue[i]; + FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction_id); + if (!factionEntry) + return; - FactionEntry const* factionEntry = sFactionStore.LookupEntry(faction_id); + if (RepRewardRate const * repData = sObjectMgr.GetRepRewardRate(faction_id)) + rep_change = (float)rep_change * repData->spell_rate; - if (!factionEntry) - return; + rep_change = _player->CalculateReputationGain(REPUTATION_SOURCE_SPELL, rep_change, faction_id); - if (RepRewardRate const * repData = sObjectMgr.GetRepRewardRate(faction_id)) - { - rep_change = (float)rep_change * repData->spell_rate; + _player->GetReputationMgr().ModifyReputation(factionEntry, rep_change); } - - _player->GetReputationMgr().ModifyReputation(factionEntry, rep_change); } void Spell::EffectQuestComplete(uint32 i) -- cgit v1.2.3