aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/SpellInfo.h
diff options
context:
space:
mode:
authorQAston <qaston@gmail.com>2011-09-23 11:58:01 +0200
committerQAston <qaston@gmail.com>2011-09-23 11:58:40 +0200
commit13a1d90130a8d5bb49ffa5c193640f0cb4396f26 (patch)
tree56c0ec1bd9cdfe789e423f43102f349ee60ef1ca /src/server/game/Spells/SpellInfo.h
parentab023e847a81804c52c22bf3af2f2165e8e3a45d (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.h40
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];
};