diff options
| author | QAston <qaston@gmail.com> | 2011-09-23 11:58:01 +0200 |
|---|---|---|
| committer | QAston <qaston@gmail.com> | 2011-09-23 11:58:40 +0200 |
| commit | 13a1d90130a8d5bb49ffa5c193640f0cb4396f26 (patch) | |
| tree | 56c0ec1bd9cdfe789e423f43102f349ee60ef1ca /src/server/game/Spells/SpellInfo.h | |
| parent | ab023e847a81804c52c22bf3af2f2165e8e3a45d (diff) | |
Core/Spells: Improvements in selecting default targets based on effect type.
Diffstat (limited to 'src/server/game/Spells/SpellInfo.h')
| -rw-r--r-- | src/server/game/Spells/SpellInfo.h | 40 |
1 files changed, 18 insertions, 22 deletions
diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index 77d27a908d3..f7bdbd52c5d 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -66,16 +66,7 @@ enum SpellCastTargetFlags | TARGET_FLAG_UNIT_ENEMY | TARGET_FLAG_UNIT_ALLY | TARGET_FLAG_UNIT_DEAD | TARGET_FLAG_UNIT_MINIPET | TARGET_FLAG_UNIT_PASSENGER, TARGET_FLAG_GAMEOBJECT_MASK = TARGET_FLAG_GAMEOBJECT | TARGET_FLAG_GAMEOBJECT_ITEM, TARGET_FLAG_CORPSE_MASK = TARGET_FLAG_CORPSE_ALLY | TARGET_FLAG_CORPSE_ENEMY, -}; - -enum SpellEffectTargetTypes -{ - SPELL_REQUIRE_NONE, - SPELL_REQUIRE_UNIT, - SPELL_REQUIRE_DEST, - SPELL_REQUIRE_ITEM, - SPELL_REQUIRE_CASTER, - SPELL_REQUIRE_GOBJECT, + TARGET_FLAG_ITEM_MASK = TARGET_FLAG_TRADE_ITEM | TARGET_FLAG_ITEM | TARGET_FLAG_GAMEOBJECT_ITEM, }; enum SpellTargetSelectionCategories @@ -100,7 +91,7 @@ enum SpellTargetReferenceTypes enum SpellTargetObjectTypes { - TARGET_OBJECT_TYPE_NONE, + TARGET_OBJECT_TYPE_NONE = 0, TARGET_OBJECT_TYPE_SRC, TARGET_OBJECT_TYPE_DEST, TARGET_OBJECT_TYPE_UNIT, @@ -109,6 +100,9 @@ enum SpellTargetObjectTypes TARGET_OBJECT_TYPE_GOBJ_ITEM, TARGET_OBJECT_TYPE_ITEM, TARGET_OBJECT_TYPE_CORPSE, + // only for effect target type + TARGET_OBJECT_TYPE_CORPSE_ENEMY, + TARGET_OBJECT_TYPE_CORPSE_ALLY, }; enum SpellTargetSelectionCheckTypes @@ -153,6 +147,14 @@ enum SpellSelectTargetTypes TARGET_TYPE_CHANNEL, }; +enum SpellEffectImplicitTargetTypes +{ + EFFECT_IMPLICIT_TARGET_NONE = 0, + EFFECT_IMPLICIT_TARGET_EXPLICIT, + EFFECT_IMPLICIT_TARGET_CASTER, + EFFECT_IMPLICIT_TARGET_PET, +}; + // Spell clasification enum SpellSpecificType { @@ -294,22 +296,16 @@ public: bool HasRadius() const; float CalcRadius(Unit* caster = NULL, Spell* = NULL) const; - SpellEffectTargetTypes GetRequiredTargetType() const; + uint32 GetMissingTargetMask(bool srcSet = false, bool destSet = false, uint32 mask = 0) const; - SpellTargetObjectTypes GetImplicitTargetObjectType() const; - SpellTargetObjectTypes GetRequiredTargetObjectType() const; + SpellEffectImplicitTargetTypes GetImplicitTargetType() const; + SpellTargetObjectTypes GetUsedTargetObjectType() 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 + SpellEffectImplicitTargetTypes ImplicitTargetType; // defines what target can be added to effect target list if there's no valid target type provided for effect + SpellTargetObjectTypes UsedTargetObjectType; // defines valid target object type for spell effect }; static StaticData _data[TOTAL_SPELL_EFFECTS]; }; |
