mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-15 18:10:26 +00:00
fix(Core/Spells): Fixed spell error when players tries to disarm rang… (#12885)
fix(Core/Spells): Fixed spell error when players tries to disarm ranged-armed victim. Fixes #11803
This commit is contained in:
@@ -1788,14 +1788,42 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta
|
||||
// Not allow disarm unarmed player
|
||||
if (Mechanic == MECHANIC_DISARM)
|
||||
{
|
||||
if (unitTarget->GetTypeId() == TYPEID_PLAYER)
|
||||
bool valid = false;
|
||||
for (uint8 i = BASE_ATTACK; i < MAX_ATTACK; ++i)
|
||||
{
|
||||
Player const* player = unitTarget->ToPlayer();
|
||||
if (!player->GetWeaponForAttack(BASE_ATTACK, true))
|
||||
return SPELL_FAILED_TARGET_NO_WEAPONS;
|
||||
AuraType disarmAuraType = SPELL_AURA_MOD_DISARM;
|
||||
switch (i)
|
||||
{
|
||||
case OFF_ATTACK:
|
||||
disarmAuraType = SPELL_AURA_MOD_DISARM_OFFHAND;
|
||||
break;
|
||||
case RANGED_ATTACK:
|
||||
disarmAuraType = SPELL_AURA_MOD_DISARM_RANGED;
|
||||
break;
|
||||
}
|
||||
|
||||
if (HasAura(disarmAuraType))
|
||||
{
|
||||
if (Player const* player = unitTarget->ToPlayer())
|
||||
{
|
||||
if (player->GetWeaponForAttack(WeaponAttackType(BASE_ATTACK + i), true))
|
||||
{
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (unitTarget->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + i))
|
||||
{
|
||||
valid = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (!unitTarget->GetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID))
|
||||
|
||||
if (!valid)
|
||||
{
|
||||
return SPELL_FAILED_TARGET_NO_WEAPONS;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user