Index: src/game/SharedDefines.h =================================================================== --- src/game/SharedDefines.h (revision 5788) +++ src/game/SharedDefines.h (working copy) @@ -291,7 +291,7 @@ SPELL_EFFECT_SUMMON_GUARDIAN = 42, SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER= 43, SPELL_EFFECT_SKILL_STEP = 44, - SPELL_EFFECT_UNDEFINED_45 = 45, + SPELL_EFFECT_ADDHONOR = 45, SPELL_EFFECT_SPAWN = 46, SPELL_EFFECT_TRADE_SKILL = 47, SPELL_EFFECT_STEALTH = 48, Index: src/game/Spell.cpp =================================================================== --- src/game/Spell.cpp (revision 5788) +++ src/game/Spell.cpp (working copy) @@ -1935,7 +1935,17 @@ // Pass cast spell event to handler (not send triggered by aura spells) if (m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_MELEE && m_spellInfo->DmgClass != SPELL_DAMAGE_CLASS_RANGED && !m_triggeredByAuraSpell) { - m_caster->ProcDamageAndSpell(m_targets.getUnitTarget(), PROC_FLAG_CAST_SPELL, PROC_FLAG_NONE, 0, m_spellInfo, m_IsTriggeredSpell); + if(m_spellInfo->Attributes == 8388608) + { + for(uint32 i = 0; i<3; ++i) + { + HandleEffects(m_targets.getUnitTarget(), NULL, NULL, i, m_spellInfo->DmgMultiplier[i]); + } + } + else + { + m_caster->ProcDamageAndSpell(m_targets.getUnitTarget(), PROC_FLAG_CAST_SPELL, PROC_FLAG_NONE, 0, m_spellInfo, m_IsTriggeredSpell); + } // update pointers base at GUIDs to prevent access to non-existed already object UpdatePointers(); // pointers can be invalidate at triggered spell casting Index: src/game/SpellEffects.cpp =================================================================== --- src/game/SpellEffects.cpp (revision 5788) +++ src/game/SpellEffects.cpp (working copy) @@ -2977,18 +2977,22 @@ ((Player*)unitTarget)->SetSkill(skillid,skillval?skillval:1,damage*75); } -void Spell::EffectAddHonor(uint32 /*i*/) +void Spell::EffectAddHonor(uint32 i) { if(unitTarget->GetTypeId() != TYPEID_PLAYER) return; - sLog.outDebug("SpellEffect::AddHonor called for spell_id %u , that rewards %d honor points to player: %u", m_spellInfo->Id, this->damage, ((Player*)unitTarget)->GetGUIDLow()); + sLog.outDebug("SpellEffect::AddHonor called for spell_id %u , that rewards %d honor points to player: %u", m_spellInfo->Id, this->m_currentBasePoints[i], ((Player*)unitTarget)->GetGUIDLow()); + ((Player*)unitTarget)->RewardHonor(NULL, 1, this->m_currentBasePoints[i]); + //TODO find formula for honor reward based on player's level! //now fixed only for lvl 70 players: if (((Player*)unitTarget)->getLevel() == 70) + { ((Player*)unitTarget)->RewardHonor(NULL, 1, this->damage); + } } void Spell::EffectTradeSkill(uint32 /*i*/)