From 40b0a2cd927e499759005267e4457ced7949621c Mon Sep 17 00:00:00 2001 From: ApoC Date: Fri, 23 Oct 2009 21:42:23 +0200 Subject: [PATCH] [8717] Fixed SPELL_EFFECT_TAMECREATURE broken after [8686] Signed-off-by: ApoC --- src/game/Spell.cpp | 7 +++++-- src/game/SpellEffects.cpp | 3 ++- src/shared/revision_nr.h | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) 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__