aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Entities/Object
diff options
context:
space:
mode:
authorbrotalnia <brotalnia@gmail.com>2019-05-10 19:58:26 +0300
committerShauren <shauren.trinity@gmail.com>2021-12-05 14:37:13 +0100
commitab988dc98284285b8ed0253f0bca1ddeb7eb9982 (patch)
treedfc4d2d644ed68a69de75f7dd5131b1b22ae79a6 /src/server/game/Entities/Object
parentae52409ad9caf759ed23a384565d71922bf2470d (diff)
Core/Spells: Return CheckCast result from CastSpell (#23236)
* Return CheckCast result from CastSpell * Return cast result from UnitAI methods too. (cherry picked from commit 49d0a5bbb69dd352bac0009625ded2c472b66805)
Diffstat (limited to 'src/server/game/Entities/Object')
-rw-r--r--src/server/game/Entities/Object/Object.cpp8
-rw-r--r--src/server/game/Entities/Object/Object.h2
2 files changed, 5 insertions, 5 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp
index c6c7a1b8eb1..9feb2fb30ea 100644
--- a/src/server/game/Entities/Object/Object.cpp
+++ b/src/server/game/Entities/Object/Object.cpp
@@ -2584,19 +2584,19 @@ bool WorldObject::IsNeutralToAll() const
return my_faction->IsNeutralToAll();
}
-void WorldObject::CastSpell(CastSpellTargetArg const& targets, uint32 spellId, CastSpellExtraArgs const& args /*= { }*/)
+SpellCastResult WorldObject::CastSpell(CastSpellTargetArg const& targets, uint32 spellId, CastSpellExtraArgs const& args /*= { }*/)
{
SpellInfo const* info = sSpellMgr->GetSpellInfo(spellId, args.CastDifficulty != DIFFICULTY_NONE ? args.CastDifficulty : GetMap()->GetDifficultyID());
if (!info)
{
TC_LOG_ERROR("entities.unit", "CastSpell: unknown spell %u by caster %s", spellId, GetGUID().ToString().c_str());
- return;
+ return SPELL_FAILED_SPELL_UNAVAILABLE;
}
if (!targets.Targets)
{
TC_LOG_ERROR("entities.unit", "CastSpell: Invalid target passed to spell cast %u by %s", spellId, GetGUID().ToString().c_str());
- return;
+ return SPELL_FAILED_BAD_TARGETS;
}
Spell* spell = new Spell(this, info, args.TriggerFlags, args.OriginalCaster, args.OriginalCastId);
@@ -2604,7 +2604,7 @@ void WorldObject::CastSpell(CastSpellTargetArg const& targets, uint32 spellId, C
spell->SetSpellValue(pair.first, pair.second);
spell->m_CastItem = args.CastItem;
- spell->prepare(*targets.Targets, args.TriggeringAura);
+ return spell->prepare(*targets.Targets, args.TriggeringAura);
}
// function based on function Unit::CanAttack from 13850 client
diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h
index 24c48e8ccb6..a609595cbc3 100644
--- a/src/server/game/Entities/Object/Object.h
+++ b/src/server/game/Entities/Object/Object.h
@@ -598,7 +598,7 @@ class TC_GAME_API WorldObject : public Object, public WorldLocation
bool IsNeutralToAll() const;
// CastSpell's third arg can be a variety of things - check out CastSpellExtraArgs' constructors!
- void CastSpell(CastSpellTargetArg const& targets, uint32 spellId, CastSpellExtraArgs const& args = { });
+ SpellCastResult CastSpell(CastSpellTargetArg const& targets, uint32 spellId, CastSpellExtraArgs const& args = { });
bool IsValidAttackTarget(WorldObject const* target, SpellInfo const* bySpell = nullptr) const;
bool IsValidAssistTarget(WorldObject const* target, SpellInfo const* bySpell = nullptr) const;