diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 979fb6f4e..827aa3063 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4318,12 +4318,15 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_EFFECT_TAMECREATURE: { - if (m_caster->GetTypeId() != TYPEID_PLAYER || + // Spell can be triggered, we need to check original caster prior to caster + Unit* caster = m_originalCaster ? m_originalCaster : m_caster; + + if (caster->GetTypeId() != TYPEID_PLAYER || !m_targets.getUnitTarget() || m_targets.getUnitTarget()->GetTypeId() == TYPEID_PLAYER) return SPELL_FAILED_BAD_TARGETS; - Player* plrCaster = (Player*)m_caster; + Player* plrCaster = (Player*)caster; if(plrCaster->getClass() != CLASS_HUNTER) { diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 2c38fd922..f03f5d5db 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -4158,7 +4158,8 @@ void Spell::EffectEnchantItemTmp(uint32 i) void Spell::EffectTameCreature(uint32 /*i*/) { // Caster must be player, checked in Spell::CheckCast - Player* plr = (Player*)m_caster; + // Spell can be triggered, we need to check original caster prior to caster + Player* plr = (Player*)(m_originalCaster ? m_originalCaster : m_caster); Creature* creatureTarget = (Creature*)unitTarget; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 3ab755447..674719724 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8716" + #define REVISION_NR "8717" #endif // __REVISION_NR_H__