From 323c97bb3bda6899ae2906098ea34030759d2f01 Mon Sep 17 00:00:00 2001 From: megamage Date: Sat, 20 Dec 2008 19:33:03 -0600 Subject: *Update spell target selection code. --HG-- branch : trunk --- src/game/SpellMgr.cpp | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) (limited to 'src/game/SpellMgr.cpp') diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 0032f9f7e67..7a67018fc3c 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -1729,7 +1729,7 @@ void SpellMgr::LoadSpellScriptTarget() } } - mSpellScriptTarget.insert(SpellScriptTarget::value_type(spellId,SpellTargetEntry(SpellTargetType(type),targetEntry))); + mSpellScriptTarget.insert(SpellScriptTarget::value_type(spellId,SpellTargetEntry(SpellScriptTargetType(type),targetEntry))); ++count; } while (result->NextRow()); @@ -1953,6 +1953,7 @@ void SpellMgr::LoadSpellCustomAttr() case SPELL_EFFECT_ADD_FARSIGHT: case SPELL_EFFECT_TRIGGER_SPELL_2: //ritual of summon case SPELL_EFFECT_TRIGGER_MISSILE: + case SPELL_EFFECT_PERSISTENT_AREA_AURA: EffectTargetType[i] = SPELL_REQUIRE_DEST; break; case SPELL_EFFECT_PARRY: // 0 @@ -1968,6 +1969,74 @@ void SpellMgr::LoadSpellCustomAttr() break; } } + + for(int i = 0; i < TOTAL_SPELL_TARGETS; ++i) + { + switch(i) + { + case TARGET_UNIT_CASTER: + case TARGET_UNIT_CASTER_FISHING: + case TARGET_UNIT_MASTER: + case TARGET_UNIT_PET: + SpellTargetType[i] = TARGET_TYPE_UNIT_CASTER; + break; + case TARGET_UNIT_MINIPET: + case TARGET_UNIT_TARGET_ALLY: + case TARGET_UNIT_TARGET_RAID: + case TARGET_UNIT_TARGET_ANY: + case TARGET_UNIT_SINGLE_UNKNOWN: + case TARGET_UNIT_TARGET_ENEMY: + SpellTargetType[i] = TARGET_TYPE_UNIT_TARGET; + break; + case TARGET_UNIT_CHANNEL: + case TARGET_DEST_CHANNEL: + SpellTargetType[i] = TARGET_TYPE_CHANNEL; + break; + case TARGET_UNIT_AREA_ENEMY_GROUND: + case TARGET_UNIT_AREA_ENEMY: + case TARGET_UNIT_AREA_ALLY_GROUND: + case TARGET_UNIT_AREA_ALLY: + case TARGET_UNIT_AREA_ENTRY_GROUND: + case TARGET_UNIT_AREA_ENTRY: + case TARGET_UNIT_AREA_ENEMY_CHANNEL: + SpellTargetType[i] = TARGET_TYPE_AREA_DEST; + break; + case TARGET_DEST_TARGET_ENEMY: + case TARGET_DEST_TARGET_ENEMY_UNKNOWN: + case TARGET_DEST_TARGET_FRONT: + case TARGET_DEST_TARGET_BACK: + case TARGET_DEST_TARGET_RIGHT: + case TARGET_DEST_TARGET_LEFT: + case TARGET_DEST_TARGET_RANDOM: + case TARGET_DEST_TARGET_RADIUS: + SpellTargetType[i] = TARGET_TYPE_DEST_TARGET; + break; + case TARGET_DEST_CASTER_GROUND: + case TARGET_DEST_CASTER: + case TARGET_DEST_CASTER_FRONT_LEFT: + case TARGET_DEST_CASTER_BACK_LEFT: + case TARGET_DEST_CASTER_BACK_RIGHT: + case TARGET_DEST_CASTER_FRONT_RIGHT: + case TARGET_DEST_CASTER_FRONT: + case TARGET_MINION: + case TARGET_DEST_CASTER_FRONT_LEAP: + case TARGET_DEST_CASTER_FRONT_UNKNOWN: + case TARGET_DEST_CASTER_BACK: + case TARGET_DEST_CASTER_RIGHT: + case TARGET_DEST_CASTER_LEFT: + case TARGET_DEST_CASTER_RANDOM: + case TARGET_DEST_CASTER_RADIUS: + SpellTargetType[i] = TARGET_TYPE_DEST_CASTER; + break; + case TARGET_DEST_DEST_RANDOM: + case TARGET_DEST_DEST: + SpellTargetType[i] = TARGET_TYPE_DEST_DEST; + break; + default: + SpellTargetType[i] = TARGET_TYPE_DEFAULT; + + } + } } void SpellMgr::LoadSpellLinked() -- cgit v1.2.3