diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 180 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.h | 19 |
2 files changed, 195 insertions, 4 deletions
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 8202d0a05a8..069864dfd74 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -544,6 +544,16 @@ SpellEffectTargetTypes SpellEffectInfo::GetRequiredTargetType() const return RequiredTargetType[Effect]; } +SpellTargetObjectTypes SpellEffectInfo::GetImplicitTargetObjectType() const +{ + return _data[Effect].ImplicitObjectType; +} + +SpellTargetObjectTypes SpellEffectInfo::GetRequiredTargetObjectType() const +{ + return _data[Effect].RequiredObjectType; +} + bool SpellEffectInfo::InitStaticData() { InitRequiredTargetTypeData(); @@ -620,6 +630,176 @@ void SpellEffectInfo::InitRequiredTargetTypeData() bool SpellEffectInfo::Init = SpellEffectInfo::InitStaticData(); SpellEffectTargetTypes SpellEffectInfo::RequiredTargetType[TOTAL_SPELL_EFFECTS]; +SpellEffectInfo::StaticData SpellEffectInfo::_data[TOTAL_SPELL_EFFECTS] = +{ + // implicit target required target + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 0 + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 1 SPELL_EFFECT_INSTAKILL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 2 SPELL_EFFECT_SCHOOL_DAMAGE + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 3 SPELL_EFFECT_DUMMY + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 4 SPELL_EFFECT_PORTAL_TELEPORT + {TARGET_OBJECT_TYPE_UNIT_AND_DEST,TARGET_OBJECT_TYPE_UNIT_AND_DEST},// 5 SPELL_EFFECT_TELEPORT_UNITS + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 6 SPELL_EFFECT_APPLY_AURA + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 7 SPELL_EFFECT_ENVIRONMENTAL_DAMAGE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 8 SPELL_EFFECT_POWER_DRAIN + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 9 SPELL_EFFECT_HEALTH_LEECH + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 10 SPELL_EFFECT_HEAL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 11 SPELL_EFFECT_BIND + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 12 SPELL_EFFECT_PORTAL + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 13 SPELL_EFFECT_RITUAL_BASE + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 14 SPELL_EFFECT_RITUAL_SPECIALIZE + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 15 SPELL_EFFECT_RITUAL_ACTIVATE_PORTAL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 16 SPELL_EFFECT_QUEST_COMPLETE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 17 SPELL_EFFECT_WEAPON_DAMAGE_NOSCHOOL + {TARGET_OBJECT_TYPE_CORPSE, TARGET_OBJECT_TYPE_CORPSE}, // 18 SPELL_EFFECT_RESURRECT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 19 SPELL_EFFECT_ADD_EXTRA_ATTACKS + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 20 SPELL_EFFECT_DODGE + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 21 SPELL_EFFECT_EVADE + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 22 SPELL_EFFECT_PARRY + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 23 SPELL_EFFECT_BLOCK + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 24 SPELL_EFFECT_CREATE_ITEM + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 25 SPELL_EFFECT_WEAPON + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 26 SPELL_EFFECT_DEFENSE + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 27 SPELL_EFFECT_PERSISTENT_AREA_AURA + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 28 SPELL_EFFECT_SUMMON + {TARGET_OBJECT_TYPE_UNIT_AND_DEST, TARGET_OBJECT_TYPE_UNIT_AND_DEST},// 29 SPELL_EFFECT_LEAP + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 30 SPELL_EFFECT_ENERGIZE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 31 SPELL_EFFECT_WEAPON_PERCENT_DAMAGE + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 32 SPELL_EFFECT_TRIGGER_MISSILE + {TARGET_OBJECT_TYPE_GOBJ_ITEM, TARGET_OBJECT_TYPE_GOBJ_ITEM}, // 33 SPELL_EFFECT_OPEN_LOCK + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 34 SPELL_EFFECT_SUMMON_CHANGE_ITEM + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 35 SPELL_EFFECT_APPLY_AREA_AURA_PARTY + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 36 SPELL_EFFECT_LEARN_SPELL + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 37 SPELL_EFFECT_SPELL_DEFENSE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 38 SPELL_EFFECT_DISPEL + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 39 SPELL_EFFECT_LANGUAGE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 40 SPELL_EFFECT_DUAL_WIELD + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 41 SPELL_EFFECT_JUMP + {TARGET_OBJECT_TYPE_UNIT_AND_DEST,TARGET_OBJECT_TYPE_UNIT_AND_DEST},// 42 SPELL_EFFECT_JUMP_DEST + {TARGET_OBJECT_TYPE_UNIT_AND_DEST,TARGET_OBJECT_TYPE_UNIT_AND_DEST},// 43 SPELL_EFFECT_TELEPORT_UNITS_FACE_CASTER + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 44 SPELL_EFFECT_SKILL_STEP + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 45 SPELL_EFFECT_ADD_HONOR + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 46 SPELL_EFFECT_SPAWN + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 47 SPELL_EFFECT_TRADE_SKILL + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 48 SPELL_EFFECT_STEALTH + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 49 SPELL_EFFECT_DETECT + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 50 SPELL_EFFECT_TRANS_DOOR + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 51 SPELL_EFFECT_FORCE_CRITICAL_HIT + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 52 SPELL_EFFECT_GUARANTEE_HIT + {TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_ITEM}, // 53 SPELL_EFFECT_ENCHANT_ITEM + {TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_ITEM}, // 54 SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 55 SPELL_EFFECT_TAMECREATURE + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 56 SPELL_EFFECT_SUMMON_PET + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 57 SPELL_EFFECT_LEARN_PET_SPELL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 58 SPELL_EFFECT_WEAPON_DAMAGE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 59 SPELL_EFFECT_CREATE_RANDOM_ITEM + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 60 SPELL_EFFECT_PROFICIENCY + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 61 SPELL_EFFECT_SEND_EVENT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 62 SPELL_EFFECT_POWER_BURN + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 63 SPELL_EFFECT_THREAT + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 64 SPELL_EFFECT_TRIGGER_SPELL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 65 SPELL_EFFECT_APPLY_AREA_AURA_RAID + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 66 SPELL_EFFECT_CREATE_MANA_GEM + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 67 SPELL_EFFECT_HEAL_MAX_HEALTH + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 68 SPELL_EFFECT_INTERRUPT_CAST + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 69 SPELL_EFFECT_DISTRACT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 70 SPELL_EFFECT_PULL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 71 SPELL_EFFECT_PICKPOCKET + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 72 SPELL_EFFECT_ADD_FARSIGHT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 73 SPELL_EFFECT_UNTRAIN_TALENTS + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 74 SPELL_EFFECT_APPLY_GLYPH + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 75 SPELL_EFFECT_HEAL_MECHANICAL + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 76 SPELL_EFFECT_SUMMON_OBJECT_WILD + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 77 SPELL_EFFECT_SCRIPT_EFFECT + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 78 SPELL_EFFECT_ATTACK + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 79 SPELL_EFFECT_SANCTUARY + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 80 SPELL_EFFECT_ADD_COMBO_POINTS + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 81 SPELL_EFFECT_CREATE_HOUSE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 82 SPELL_EFFECT_BIND_SIGHT + {TARGET_OBJECT_TYPE_UNIT_AND_DEST,TARGET_OBJECT_TYPE_UNIT_AND_DEST},// 83 SPELL_EFFECT_DUEL + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 84 SPELL_EFFECT_STUCK + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 85 SPELL_EFFECT_SUMMON_PLAYER + {TARGET_OBJECT_TYPE_GOBJ, TARGET_OBJECT_TYPE_GOBJ}, // 86 SPELL_EFFECT_ACTIVATE_OBJECT + {TARGET_OBJECT_TYPE_GOBJ, TARGET_OBJECT_TYPE_GOBJ}, // 87 SPELL_EFFECT_GAMEOBJECT_DAMAGE + {TARGET_OBJECT_TYPE_GOBJ, TARGET_OBJECT_TYPE_GOBJ}, // 88 SPELL_EFFECT_GAMEOBJECT_REPAIR + {TARGET_OBJECT_TYPE_GOBJ, TARGET_OBJECT_TYPE_GOBJ}, // 89 SPELL_EFFECT_GAMEOBJECT_SET_DESTRUCTION_STATE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 90 SPELL_EFFECT_KILL_CREDIT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 91 SPELL_EFFECT_THREAT_ALL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 92 SPELL_EFFECT_ENCHANT_HELD_ITEM + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 93 SPELL_EFFECT_FORCE_DESELECT + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 94 SPELL_EFFECT_SELF_RESURRECT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 95 SPELL_EFFECT_SKINNING + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 96 SPELL_EFFECT_CHARGE + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 97 SPELL_EFFECT_CAST_BUTTON + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 98 SPELL_EFFECT_KNOCK_BACK + {TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_ITEM}, // 99 SPELL_EFFECT_DISENCHANT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 100 SPELL_EFFECT_INEBRIATE + {TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_ITEM}, // 101 SPELL_EFFECT_FEED_PET + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 102 SPELL_EFFECT_DISMISS_PET + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 103 SPELL_EFFECT_REPUTATION + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 104 SPELL_EFFECT_SUMMON_OBJECT_SLOT1 + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 105 SPELL_EFFECT_SUMMON_OBJECT_SLOT2 + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 106 SPELL_EFFECT_SUMMON_OBJECT_SLOT3 + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 107 SPELL_EFFECT_SUMMON_OBJECT_SLOT4 + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 108 SPELL_EFFECT_DISPEL_MECHANIC + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 109 SPELL_EFFECT_SUMMON_DEAD_PET + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 110 SPELL_EFFECT_DESTROY_ALL_TOTEMS + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 111 SPELL_EFFECT_DURABILITY_DAMAGE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 112 SPELL_EFFECT_112 + {TARGET_OBJECT_TYPE_CORPSE, TARGET_OBJECT_TYPE_CORPSE}, // 113 SPELL_EFFECT_RESURRECT_NEW + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 114 SPELL_EFFECT_ATTACK_ME + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 115 SPELL_EFFECT_DURABILITY_DAMAGE_PCT + {TARGET_OBJECT_TYPE_CORPSE, TARGET_OBJECT_TYPE_CORPSE}, // 116 SPELL_EFFECT_SKIN_PLAYER_CORPSE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 117 SPELL_EFFECT_SPIRIT_HEAL + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 118 SPELL_EFFECT_SKILL + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 119 SPELL_EFFECT_APPLY_AREA_AURA_PET + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 120 SPELL_EFFECT_TELEPORT_GRAVEYARD + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 121 SPELL_EFFECT_NORMALIZED_WEAPON_DMG + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 122 SPELL_EFFECT_122 + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 123 SPELL_EFFECT_SEND_TAXI + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 124 SPELL_EFFECT_PULL_TOWARDS + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 125 SPELL_EFFECT_MODIFY_THREAT_PERCENT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 126 SPELL_EFFECT_STEAL_BENEFICIAL_BUFF + {TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_ITEM}, // 127 SPELL_EFFECT_PROSPECTING + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 128 SPELL_EFFECT_APPLY_AREA_AURA_FRIEND + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 129 SPELL_EFFECT_APPLY_AREA_AURA_ENEMY + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 130 SPELL_EFFECT_REDIRECT_THREAT + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 131 SPELL_EFFECT_131 + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 132 SPELL_EFFECT_PLAY_MUSIC + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 133 SPELL_EFFECT_UNLEARN_SPECIALIZATION + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 134 SPELL_EFFECT_KILL_CREDIT2 + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 135 SPELL_EFFECT_CALL_PET + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 136 SPELL_EFFECT_HEAL_PCT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 137 SPELL_EFFECT_ENERGIZE_PCT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 138 SPELL_EFFECT_LEAP_BACK + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 139 SPELL_EFFECT_CLEAR_QUEST + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 140 SPELL_EFFECT_FORCE_CAST + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 141 SPELL_EFFECT_FORCE_CAST_WITH_VALUE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 142 SPELL_EFFECT_TRIGGER_SPELL_WITH_VALUE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 143 SPELL_EFFECT_APPLY_AREA_AURA_OWNER + {TARGET_OBJECT_TYPE_UNIT_AND_DEST,TARGET_OBJECT_TYPE_UNIT_AND_DEST},// 144 SPELL_EFFECT_KNOCK_BACK_DEST + {TARGET_OBJECT_TYPE_UNIT_AND_DEST,TARGET_OBJECT_TYPE_UNIT_AND_DEST},// 145 SPELL_EFFECT_PULL_TOWARDS_DEST + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 146 SPELL_EFFECT_ACTIVATE_RUNE + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 147 SPELL_EFFECT_QUEST_FAIL + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 148 SPELL_EFFECT_148 + {TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_DEST}, // 149 SPELL_EFFECT_CHARGE_DEST + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 150 SPELL_EFFECT_QUEST_START + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 151 SPELL_EFFECT_TRIGGER_SPELL_2 + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_NONE}, // 152 SPELL_EFFECT_SUMMON_RAF_FRIEND + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 153 SPELL_EFFECT_CREATE_TAMED_PET + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 154 SPELL_EFFECT_DISCOVER_TAXI + {TARGET_OBJECT_TYPE_NONE, TARGET_OBJECT_TYPE_UNIT}, // 155 SPELL_EFFECT_TITAN_GRIP + {TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_ITEM}, // 156 SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 157 SPELL_EFFECT_CREATE_ITEM_2 + {TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_ITEM}, // 158 SPELL_EFFECT_MILLING + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 159 SPELL_EFFECT_ALLOW_RENAME_PET + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 160 SPELL_EFFECT_160 + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 161 SPELL_EFFECT_TALENT_SPEC_COUNT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 162 SPELL_EFFECT_TALENT_SPEC_SELECT + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 163 SPELL_EFFECT_163 + {TARGET_OBJECT_TYPE_UNIT, TARGET_OBJECT_TYPE_UNIT}, // 164 SPELL_EFFECT_REMOVE_AURA +}; + SpellInfo::SpellInfo(SpellEntry const* spellEntry) { Id = spellEntry->Id; diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 09251ff44be..5abf3851279 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -69,6 +69,7 @@ enum SpellTargetObjectTypes TARGET_OBJECT_TYPE_SRC, TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_UNIT, + TARGET_OBJECT_TYPE_UNIT_AND_DEST, TARGET_OBJECT_TYPE_GOBJ, TARGET_OBJECT_TYPE_GOBJ_ITEM, TARGET_OBJECT_TYPE_ITEM, @@ -200,11 +201,11 @@ private: struct StaticData { - SpellTargetObjectTypes ObjectType; - SpellTargetReferenceTypes ReferenceType; + SpellTargetObjectTypes ObjectType; // type of object returned by target type + SpellTargetReferenceTypes ReferenceType; // defines which object is used as a reference when selecting target SpellTargetSelectionCategories SelectionCategory; - SpellTargetSelectionCheckTypes SelectionCheckType; - SpellTargetDirectionTypes DirectionType; + SpellTargetSelectionCheckTypes SelectionCheckType; // defines selection criteria + SpellTargetDirectionTypes DirectionType; // direction for cone and dest targets }; static StaticData _data[TOTAL_SPELL_TARGETS]; }; @@ -258,12 +259,22 @@ public: SpellEffectTargetTypes GetRequiredTargetType() const; + SpellTargetObjectTypes GetImplicitTargetObjectType() const; + SpellTargetObjectTypes GetRequiredTargetObjectType() const; + private: static bool InitStaticData(); static void InitRequiredTargetTypeData(); static bool Init; static SpellEffectTargetTypes RequiredTargetType[TOTAL_SPELL_EFFECTS]; + + struct StaticData + { + SpellTargetObjectTypes ImplicitObjectType; // defines if explicit target can be added to effect target list if there's no valid target type provided for effect + SpellTargetObjectTypes RequiredObjectType; // defines valid target object type for spell effect + }; + static StaticData _data[TOTAL_SPELL_EFFECTS]; }; class SpellInfo |