aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp7
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp13
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/game/Spells/SpellInfo.cpp143
-rw-r--r--src/server/game/Spells/SpellInfo.h24
5 files changed, 6 insertions, 183 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index f9d287d271a..f006b4c07c0 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -13903,12 +13903,7 @@ void CharmInfo::InitCharmCreateSpells()
newstate = ACT_PASSIVE;
else
{
- bool autocast = false;
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS && !autocast; ++i)
- if (spellInfo->Effects[i].TargetA.GetType() == TARGET_TYPE_UNIT_TARGET)
- autocast = true;
-
- if (autocast)
+ if (spellInfo->NeedsExplicitUnitTarget())
{
newstate = ACT_ENABLED;
ToggleCreatureAutocast(spellInfo, true);
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index b8d3c5318aa..e2cd360b844 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -5548,16 +5548,11 @@ SpellCastResult Spell::CheckPetCast(Unit* target)
if (!target && m_targets.GetUnitTarget())
target = m_targets.GetUnitTarget();
- for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i)
+ if (m_spellInfo->NeedsExplicitUnitTarget())
{
- if (m_spellInfo->Effects[i].TargetA.GetType() == TARGET_TYPE_UNIT_TARGET
- || m_spellInfo->Effects[i].TargetA.GetType() == TARGET_TYPE_DEST_TARGET)
- {
- if (!target)
- return SPELL_FAILED_BAD_IMPLICIT_TARGETS;
- m_targets.SetUnitTarget(target);
- break;
- }
+ if (!target)
+ return SPELL_FAILED_BAD_IMPLICIT_TARGETS;
+ m_targets.SetUnitTarget(target);
}
// cooldown
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 407ddbf6b21..2f04099f86b 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -1031,7 +1031,7 @@ void Spell::EffectTriggerMissileSpell(SpellEffIndex effIndex)
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(triggered_spell_id);
if (!spellInfo)
{
- sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "Spell::EffectTriggerSpell spell %u tried to trigger unknown spell %u", m_spellInfo->Id, triggered_spell_id);
+ sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "Spell::EffectTriggerMissileSpell spell %u tried to trigger unknown spell %u", m_spellInfo->Id, triggered_spell_id);
return;
}
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 3365aad1cd9..626e0a3653e 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -61,11 +61,6 @@ bool SpellImplicitTargetInfo::IsArea() const
return GetSelectionCategory() == TARGET_SELECT_CATEGORY_AREA || GetSelectionCategory() == TARGET_SELECT_CATEGORY_CONE;
}
-SpellSelectTargetTypes SpellImplicitTargetInfo::GetType() const
-{
- return Type[_target];
-}
-
SpellTargetSelectionCategories SpellImplicitTargetInfo::GetSelectionCategory() const
{
return _data[_target].SelectionCategory;
@@ -207,144 +202,6 @@ uint32 SpellImplicitTargetInfo::GetExplicitTargetMask(bool& srcSet, bool& dstSet
return targetMask;
}
-bool SpellImplicitTargetInfo::InitStaticData()
-{
- InitTypeData();
- return true;
-}
-
-void SpellImplicitTargetInfo::InitTypeData()
-{
- for (uint8 i = 0; i < TOTAL_SPELL_TARGETS; ++i)
- {
- switch (i)
- {
- case TARGET_UNIT_CASTER:
- case TARGET_DEST_CASTER_FISHING:
- case TARGET_UNIT_MASTER:
- case TARGET_UNIT_PET:
- case TARGET_UNIT_CASTER_AREA_PARTY:
- case TARGET_UNIT_CASTER_AREA_RAID:
- case TARGET_UNIT_VEHICLE:
- case TARGET_UNIT_PASSENGER_0:
- case TARGET_UNIT_PASSENGER_1:
- case TARGET_UNIT_PASSENGER_2:
- case TARGET_UNIT_PASSENGER_3:
- case TARGET_UNIT_PASSENGER_4:
- case TARGET_UNIT_PASSENGER_5:
- case TARGET_UNIT_PASSENGER_6:
- case TARGET_UNIT_PASSENGER_7:
- case TARGET_UNIT_SUMMONER:
- Type[i] = TARGET_TYPE_UNIT_CASTER;
- break;
- case TARGET_UNIT_TARGET_MINIPET:
- case TARGET_UNIT_TARGET_ALLY:
- case TARGET_UNIT_TARGET_RAID:
- case TARGET_UNIT_TARGET_ANY:
- case TARGET_UNIT_TARGET_ENEMY:
- case TARGET_UNIT_TARGET_PARTY:
- case TARGET_UNIT_TARGET_PASSENGER:
- case TARGET_UNIT_LASTTARGET_AREA_PARTY:
- case TARGET_UNIT_TARGET_AREA_RAID_CLASS:
- case TARGET_UNIT_TARGET_CHAINHEAL_ALLY:
- Type[i] = TARGET_TYPE_UNIT_TARGET;
- break;
- case TARGET_UNIT_NEARBY_ENEMY:
- case TARGET_UNIT_NEARBY_ALLY:
- case TARGET_UNIT_NEARBY_ENTRY:
- case TARGET_UNIT_NEARBY_PARTY:
- case TARGET_UNIT_NEARBY_RAID:
- case TARGET_GAMEOBJECT_NEARBY_ENTRY:
- Type[i] = TARGET_TYPE_UNIT_NEARBY;
- break;
- case TARGET_UNIT_SRC_AREA_ENEMY:
- case TARGET_UNIT_SRC_AREA_ALLY:
- case TARGET_UNIT_SRC_AREA_ENTRY:
- case TARGET_UNIT_SRC_AREA_PARTY:
- case TARGET_GAMEOBJECT_SRC_AREA:
- Type[i] = TARGET_TYPE_AREA_SRC;
- break;
- case TARGET_UNIT_DEST_AREA_ENEMY:
- case TARGET_UNIT_DEST_AREA_ALLY:
- case TARGET_UNIT_DEST_AREA_ENTRY:
- case TARGET_UNIT_DEST_AREA_PARTY:
- case TARGET_GAMEOBJECT_DEST_AREA:
- Type[i] = TARGET_TYPE_AREA_DST;
- break;
- case TARGET_UNIT_CONE_ENEMY_24:
- case TARGET_UNIT_CONE_ALLY:
- case TARGET_UNIT_CONE_ENTRY:
- case TARGET_UNIT_CONE_ENEMY_54:
- case TARGET_UNIT_CONE_ENEMY_104:
- case TARGET_GAMEOBJECT_CONE:
- Type[i] = TARGET_TYPE_AREA_CONE;
- break;
- case TARGET_DEST_CASTER:
- case TARGET_SRC_CASTER:
- case TARGET_DEST_CASTER_SUMMON:
- case TARGET_DEST_CASTER_FRONT_LEAP:
- case TARGET_DEST_CASTER_FRONT:
- case TARGET_DEST_CASTER_BACK:
- case TARGET_DEST_CASTER_RIGHT:
- case TARGET_DEST_CASTER_LEFT:
- 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_RANDOM:
- case TARGET_DEST_CASTER_RADIUS:
- Type[i] = TARGET_TYPE_DEST_CASTER;
- break;
- case TARGET_DEST_TARGET_ENEMY:
- case TARGET_DEST_TARGET_ANY:
- case TARGET_DEST_TARGET_FRONT:
- case TARGET_DEST_TARGET_BACK:
- case TARGET_DEST_TARGET_RIGHT:
- case TARGET_DEST_TARGET_LEFT:
- case TARGET_DEST_TARGET_FRONT_LEFT:
- case TARGET_DEST_TARGET_BACK_LEFT:
- case TARGET_DEST_TARGET_BACK_RIGHT:
- case TARGET_DEST_TARGET_FRONT_RIGHT:
- case TARGET_DEST_TARGET_RANDOM:
- case TARGET_DEST_TARGET_RADIUS:
- Type[i] = TARGET_TYPE_DEST_TARGET;
- break;
- case TARGET_DEST_DYNOBJ_ENEMY:
- case TARGET_DEST_DYNOBJ_ALLY:
- case TARGET_DEST_DYNOBJ_NONE:
- case TARGET_DEST_DEST:
- case TARGET_DEST_TRAJ:
- case TARGET_DEST_DEST_FRONT_LEFT:
- case TARGET_DEST_DEST_BACK_LEFT:
- case TARGET_DEST_DEST_BACK_RIGHT:
- case TARGET_DEST_DEST_FRONT_RIGHT:
- case TARGET_DEST_DEST_FRONT:
- case TARGET_DEST_DEST_BACK:
- case TARGET_DEST_DEST_RIGHT:
- case TARGET_DEST_DEST_LEFT:
- case TARGET_DEST_DEST_RANDOM:
- case TARGET_DEST_DEST_RADIUS:
- Type[i] = TARGET_TYPE_DEST_DEST;
- break;
- case TARGET_DEST_DB:
- case TARGET_DEST_HOME:
- case TARGET_DEST_NEARBY_ENTRY:
- Type[i] = TARGET_TYPE_DEST_SPECIAL;
- break;
- case TARGET_UNIT_CHANNEL_TARGET:
- case TARGET_DEST_CHANNEL_TARGET:
- case TARGET_DEST_CHANNEL_CASTER:
- Type[i] = TARGET_TYPE_CHANNEL;
- break;
- default:
- Type[i] = TARGET_TYPE_DEFAULT;
- }
- }
-}
-
-bool SpellImplicitTargetInfo::Init = SpellImplicitTargetInfo::InitStaticData();
-SpellSelectTargetTypes SpellImplicitTargetInfo::Type[TOTAL_SPELL_TARGETS];
-
SpellImplicitTargetInfo::StaticData SpellImplicitTargetInfo::_data[TOTAL_SPELL_TARGETS] =
{
{TARGET_OBJECT_TYPE_NONE, TARGET_REFERENCE_TYPE_NONE, TARGET_SELECT_CATEGORY_NYI, TARGET_CHECK_DEFAULT, TARGET_DIR_NONE}, //
diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h
index 69ea07f7563..9c33db7f708 100644
--- a/src/server/game/Spells/SpellInfo.h
+++ b/src/server/game/Spells/SpellInfo.h
@@ -133,22 +133,6 @@ enum SpellTargetDirectionTypes
TARGET_DIR_ENTRY,
};
-enum SpellSelectTargetTypes
-{
- TARGET_TYPE_DEFAULT,
- TARGET_TYPE_UNIT_CASTER,
- TARGET_TYPE_UNIT_TARGET,
- TARGET_TYPE_UNIT_NEARBY,
- TARGET_TYPE_AREA_SRC,
- TARGET_TYPE_AREA_DST,
- TARGET_TYPE_AREA_CONE,
- TARGET_TYPE_DEST_CASTER,
- TARGET_TYPE_DEST_TARGET,
- TARGET_TYPE_DEST_DEST,
- TARGET_TYPE_DEST_SPECIAL,
- TARGET_TYPE_CHANNEL,
-};
-
enum SpellEffectImplicitTargetTypes
{
EFFECT_IMPLICIT_TARGET_NONE = 0,
@@ -218,7 +202,6 @@ public:
SpellImplicitTargetInfo(uint32 target);
bool IsArea() const;
- SpellSelectTargetTypes GetType() const;
SpellTargetSelectionCategories GetSelectionCategory() const;
SpellTargetReferenceTypes GetReferenceType() const;
SpellTargetObjectTypes GetObjectType() const;
@@ -229,14 +212,7 @@ public:
Targets GetTarget() const;
uint32 GetExplicitTargetMask(bool& srcSet, bool& dstSet) const;
- // temporarily avalible to public
- static SpellSelectTargetTypes Type[TOTAL_SPELL_TARGETS];
private:
- static bool InitStaticData();
- static void InitTypeData();
-
- static bool Init;
-
struct StaticData
{
SpellTargetObjectTypes ObjectType; // type of object returned by target type