diff options
| -rw-r--r-- | src/game/Spell.cpp | 25 | ||||
| -rw-r--r-- | src/game/SpellMgr.cpp | 7 | ||||
| -rw-r--r-- | src/game/SpellMgr.h | 1 | 
3 files changed, 23 insertions, 10 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 694ba2ceaa7..6f5dd73f724 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -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_DEST  -                && m_targets.HasDest() && m_spellInfo->speed > 0.0f) +            if(spellmgr.EffectTargetType[m_spellInfo->Effect[i]] == SPELL_REQUIRE_DEST)              { -                float dist = m_caster->GetDistance(m_targets.m_destX, m_targets.m_destY, m_targets.m_destZ); -                if (dist < 5.0f) dist = 5.0f; -                m_delayMoment = (uint64) floor(dist / m_spellInfo->speed * 1000.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); +                    if (dist < 5.0f) dist = 5.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;          }          if(!targetA && !targetB) -            AddUnitTarget(m_caster, i); -        else if(tmpUnitMap.empty())          {              // add here custom effects that need default target.              // FOR EVERY TARGET TYPE THERE IS A DIFFERENT FILL!! @@ -504,10 +509,10 @@ void Spell::FillTargetMap()                  case SPELL_EFFECT_RESURRECT:                  case SPELL_EFFECT_CREATE_ITEM:                  case SPELL_EFFECT_TRIGGER_SPELL: -                //case SPELL_EFFECT_TRIGGER_MISSILE: ??                  case SPELL_EFFECT_SKILL_STEP:                  case SPELL_EFFECT_SELF_RESURRECT:                  case SPELL_EFFECT_REPUTATION: +                case SPELL_EFFECT_LEARN_SPELL:                      if(m_targets.getUnitTarget())                          tmpUnitMap.push_back(m_targets.getUnitTarget());                      else @@ -545,14 +550,14 @@ void Spell::FillTargetMap()                      if(Pet* pet = m_caster->GetPet())                          tmpUnitMap.push_back(pet);                      break; -                case SPELL_EFFECT_ENCHANT_ITEM: +                /*case SPELL_EFFECT_ENCHANT_ITEM:                  case SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY:                  case SPELL_EFFECT_DISENCHANT:                  case SPELL_EFFECT_FEED_PET:                  case SPELL_EFFECT_PROSPECTING:                      if(m_targets.getItemTarget())                          AddItemTarget(m_targets.getItemTarget(), i); -                    break; +                    break;*/                  case SPELL_EFFECT_APPLY_AURA:                      switch(m_spellInfo->EffectApplyAuraName[i])                      { diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 41faea5b8fb..78175708cba 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -66,6 +66,13 @@ SpellMgr::SpellMgr()              case SPELL_EFFECT_PROFICIENCY: // 0                  EffectTargetType[i] = SPELL_REQUIRE_NONE;                  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:                  EffectTargetType[i] = SPELL_REQUIRE_UNIT;                  break; diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 51e6fbd1d56..d8b4b866655 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -238,6 +238,7 @@ enum SpellEffectTargetTypes      SPELL_REQUIRE_NONE,      SPELL_REQUIRE_UNIT,      SPELL_REQUIRE_DEST, +    SPELL_REQUIRE_ITEM,  };  enum SpellSelectTargetTypes  | 
