aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorazazel <none@none>2010-08-19 16:20:06 +0600
committerazazel <none@none>2010-08-19 16:20:06 +0600
commitd4605c5f7f5bf1a0283d7d58a137e505315c9554 (patch)
tree49bba3a4af24a0ed48c023e76210aead0320af29 /src
parent72e13547d0d53efee4b41cba7fff46ebf667b0f0 (diff)
Fix (in theory) bug (already tapped error) for spells with banish mechanics (Banish, Cyclone).
Closes issue #1945. Closes issue #2402. --HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/Spell.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 6c5726092cb..7d85b70d498 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4836,11 +4836,11 @@ SpellCastResult Spell::CheckCast(bool strict)
if (m_caster->GetTypeId() == TYPEID_PLAYER)
{
- // Not allow banish not self target
+ // Do not allow to banish target tapped by someone not in caster's group
if (m_spellInfo->Mechanic == MECHANIC_BANISH)
- if (target->GetTypeId() == TYPEID_UNIT &&
- !m_caster->ToPlayer()->isAllowedToLoot(target->ToCreature()))
- return SPELL_FAILED_CANT_CAST_ON_TAPPED;
+ if (Creature *targetCreature = target->ToCreature())
+ if (targetCreature->hasLootRecipient() && !targetCreature->isTappedBy(m_caster->ToPlayer()))
+ return SPELL_FAILED_CANT_CAST_ON_TAPPED;
if (m_customAttr & SPELL_ATTR_CU_PICKPOCKET)
{
@@ -4855,7 +4855,8 @@ SpellCastResult Spell::CheckCast(bool strict)
{
if (target->GetTypeId() == TYPEID_PLAYER)
{
- if (!target->ToPlayer()->GetWeaponForAttack(BASE_ATTACK) || !target->ToPlayer()->IsUseEquipedWeapon(true))
+ Player *player = target->ToPlayer();
+ if (!player->GetWeaponForAttack(BASE_ATTACK) || !player->IsUseEquipedWeapon(true))
return SPELL_FAILED_TARGET_NO_WEAPONS;
}
else if (!target->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID))