mirror of
https://github.com/mangosfour/server.git
synced 2025-12-23 07:37:01 +00:00
[10649] Enchanted spell 8017 and ranks should apply to weapon by client auto selection
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
09d468e7ab
commit
e87008b339
3 changed files with 15 additions and 22 deletions
|
|
@ -5816,23 +5816,26 @@ SpellCastResult Spell::CheckItems()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// check target item
|
// check target item (for triggered case not report error)
|
||||||
if(m_targets.getItemTargetGUID())
|
if(m_targets.getItemTargetGUID())
|
||||||
{
|
{
|
||||||
if(m_caster->GetTypeId() != TYPEID_PLAYER)
|
if(m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||||
return SPELL_FAILED_BAD_TARGETS;
|
return m_IsTriggeredSpell && !(m_targets.m_targetMask & TARGET_FLAG_TRADE_ITEM)
|
||||||
|
? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_BAD_TARGETS;
|
||||||
|
|
||||||
if(!m_targets.getItemTarget())
|
if(!m_targets.getItemTarget())
|
||||||
return SPELL_FAILED_ITEM_GONE;
|
return m_IsTriggeredSpell && !(m_targets.m_targetMask & TARGET_FLAG_TRADE_ITEM)
|
||||||
|
? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_ITEM_GONE;
|
||||||
|
|
||||||
if(!m_targets.getItemTarget()->IsFitToSpellRequirements(m_spellInfo))
|
if(!m_targets.getItemTarget()->IsFitToSpellRequirements(m_spellInfo))
|
||||||
return SPELL_FAILED_EQUIPPED_ITEM_CLASS;
|
return m_IsTriggeredSpell && !(m_targets.m_targetMask & TARGET_FLAG_TRADE_ITEM)
|
||||||
|
? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_EQUIPPED_ITEM_CLASS;
|
||||||
}
|
}
|
||||||
// if not item target then required item must be equipped
|
// if not item target then required item must be equipped (for triggered case not report error)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(m_caster->GetTypeId() == TYPEID_PLAYER && !((Player*)m_caster)->HasItemFitToSpellReqirements(m_spellInfo))
|
if(m_caster->GetTypeId() == TYPEID_PLAYER && !((Player*)m_caster)->HasItemFitToSpellReqirements(m_spellInfo))
|
||||||
return SPELL_FAILED_EQUIPPED_ITEM_CLASS;
|
return m_IsTriggeredSpell ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_EQUIPPED_ITEM_CLASS;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check spell focus object
|
// check spell focus object
|
||||||
|
|
|
||||||
|
|
@ -4795,7 +4795,7 @@ void Spell::EffectEnchantItemTmp(SpellEffectIndex eff_idx)
|
||||||
|
|
||||||
Player* p_caster = (Player*)m_caster;
|
Player* p_caster = (Player*)m_caster;
|
||||||
|
|
||||||
// Rockbiter Weapon apply to both weapon
|
// Rockbiter Weapon
|
||||||
if (m_spellInfo->SpellFamilyName == SPELLFAMILY_SHAMAN && m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000000400000))
|
if (m_spellInfo->SpellFamilyName == SPELLFAMILY_SHAMAN && m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000000400000))
|
||||||
{
|
{
|
||||||
uint32 spell_id = 0;
|
uint32 spell_id = 0;
|
||||||
|
|
@ -4822,7 +4822,6 @@ void Spell::EffectEnchantItemTmp(SpellEffectIndex eff_idx)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spell_id);
|
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spell_id);
|
||||||
if (!spellInfo)
|
if (!spellInfo)
|
||||||
{
|
{
|
||||||
|
|
@ -4830,19 +4829,10 @@ void Spell::EffectEnchantItemTmp(SpellEffectIndex eff_idx)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int j = BASE_ATTACK; j <= OFF_ATTACK; ++j)
|
|
||||||
{
|
|
||||||
if (Item* item = p_caster->GetWeaponForAttack(WeaponAttackType(j)))
|
|
||||||
{
|
|
||||||
if (item->IsFitToSpellRequirements(m_spellInfo))
|
|
||||||
{
|
|
||||||
Spell *spell = new Spell(m_caster, spellInfo, true);
|
Spell *spell = new Spell(m_caster, spellInfo, true);
|
||||||
SpellCastTargets targets;
|
SpellCastTargets targets;
|
||||||
targets.setItemTarget( item );
|
targets.setItemTarget( itemTarget );
|
||||||
spell->prepare(&targets);
|
spell->prepare(&targets);
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "10648"
|
#define REVISION_NR "10649"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue