Core/Spells: Improvements in selecting default targets based on effect type.
This commit is contained in:
@@ -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];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user