*Fix broken item spells.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-12-24 18:45:06 -06:00
parent 84a21f8f4b
commit f481c04eac
3 changed files with 23 additions and 10 deletions
+12 -7
View File
@@ -425,19 +425,24 @@ void Spell::FillTargetMap()
if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] != SPELL_REQUIRE_UNIT) if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] != SPELL_REQUIRE_UNIT)
{ {
if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] == SPELL_REQUIRE_DEST if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] == SPELL_REQUIRE_DEST)
&& m_targets.HasDest() && m_spellInfo->speed > 0.0f) {
if(m_targets.HasDest() && m_spellInfo->speed > 0.0f)
{ {
float dist = m_caster->GetDistance(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ); float dist = m_caster->GetDistance(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ);
if (dist < 5.0f) dist = 5.0f; if (dist < 5.0f) dist = 5.0f;
m_delayMoment = (uint64) floor(dist / m_spellInfo->speed * 1000.0f); m_delayMoment = (uint64) floor(dist / m_spellInfo->speed * 1000.0f);
} }
}
else if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] == SPELL_REQUIRE_ITEM)
{
if(m_targets.getItemTarget())
AddItemTarget(m_targets.getItemTarget(), i);
}
continue; continue;
} }
if(!targetA && !targetB) if(!targetA && !targetB)
AddUnitTarget(m_caster, i);
else if(tmpUnitMap.empty())
{ {
// add here custom effects that need default target. // add here custom effects that need default target.
// FOR EVERY TARGET TYPE THERE IS A DIFFERENT FILL!! // FOR EVERY TARGET TYPE THERE IS A DIFFERENT FILL!!
@@ -504,10 +509,10 @@ void Spell::FillTargetMap()
case SPELL_EFFECT_RESURRECT: case SPELL_EFFECT_RESURRECT:
case SPELL_EFFECT_CREATE_ITEM: case SPELL_EFFECT_CREATE_ITEM:
case SPELL_EFFECT_TRIGGER_SPELL: case SPELL_EFFECT_TRIGGER_SPELL:
//case SPELL_EFFECT_TRIGGER_MISSILE: ??
case SPELL_EFFECT_SKILL_STEP: case SPELL_EFFECT_SKILL_STEP:
case SPELL_EFFECT_SELF_RESURRECT: case SPELL_EFFECT_SELF_RESURRECT:
case SPELL_EFFECT_REPUTATION: case SPELL_EFFECT_REPUTATION:
case SPELL_EFFECT_LEARN_SPELL:
if(m_targets.getUnitTarget()) if(m_targets.getUnitTarget())
tmpUnitMap.push_back(m_targets.getUnitTarget()); tmpUnitMap.push_back(m_targets.getUnitTarget());
else else
@@ -545,14 +550,14 @@ void Spell::FillTargetMap()
if(Pet* pet = m_caster->GetPet()) if(Pet* pet = m_caster->GetPet())
tmpUnitMap.push_back(pet); tmpUnitMap.push_back(pet);
break; break;
case SPELL_EFFECT_ENCHANT_ITEM: /*case SPELL_EFFECT_ENCHANT_ITEM:
case SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY: case SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY:
case SPELL_EFFECT_DISENCHANT: case SPELL_EFFECT_DISENCHANT:
case SPELL_EFFECT_FEED_PET: case SPELL_EFFECT_FEED_PET:
case SPELL_EFFECT_PROSPECTING: case SPELL_EFFECT_PROSPECTING:
if(m_targets.getItemTarget()) if(m_targets.getItemTarget())
AddItemTarget(m_targets.getItemTarget(), i); AddItemTarget(m_targets.getItemTarget(), i);
break; break;*/
case SPELL_EFFECT_APPLY_AURA: case SPELL_EFFECT_APPLY_AURA:
switch(m_spellInfo->EffectApplyAuraName[i]) switch(m_spellInfo->EffectApplyAuraName[i])
{ {
+7
View File
@@ -66,6 +66,13 @@ SpellMgr::SpellMgr()
case SPELL_EFFECT_PROFICIENCY: // 0 case SPELL_EFFECT_PROFICIENCY: // 0
EffectTargetType[i] = SPELL_REQUIRE_NONE; EffectTargetType[i] = SPELL_REQUIRE_NONE;
break; break;
case SPELL_EFFECT_ENCHANT_ITEM:
case SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY:
case SPELL_EFFECT_DISENCHANT:
case SPELL_EFFECT_FEED_PET:
case SPELL_EFFECT_PROSPECTING:
EffectTargetType[i] = SPELL_REQUIRE_ITEM;
break;
default: default:
EffectTargetType[i] = SPELL_REQUIRE_UNIT; EffectTargetType[i] = SPELL_REQUIRE_UNIT;
break; break;
+1
View File
@@ -238,6 +238,7 @@ enum SpellEffectTargetTypes
SPELL_REQUIRE_NONE, SPELL_REQUIRE_NONE,
SPELL_REQUIRE_UNIT, SPELL_REQUIRE_UNIT,
SPELL_REQUIRE_DEST, SPELL_REQUIRE_DEST,
SPELL_REQUIRE_ITEM,
}; };
enum SpellSelectTargetTypes enum SpellSelectTargetTypes