mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-19 08:55:32 +01:00
Core/Spell: Properly rewrite previous change: 80dcf879de
* thx to @joschiwald for noticing problem and helping, see rest info in comment or previous fix
This commit is contained in:
@@ -1546,11 +1546,14 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta
|
||||
if (unitTarget->HasUnitState(UNIT_STATE_IN_FLIGHT))
|
||||
return SPELL_FAILED_BAD_TARGETS;
|
||||
|
||||
// TARGET_UNIT_MASTER gets blocked here for passengers, because the whole idea of this check is to
|
||||
// not allow passengers to be implicitly hit by spells, however this target type should be an exception,
|
||||
// if this is left it kills spells that award kill credit from vehicle to master and some or all* spells,
|
||||
// the use of these 2 covers passenger target check
|
||||
if (!(Targets & TARGET_UNIT_MASTER) && !caster->IsVehicle())
|
||||
/* TARGET_UNIT_MASTER gets blocked here for passengers, because the whole idea of this check is to
|
||||
not allow passengers to be implicitly hit by spells, however this target type should be an exception,
|
||||
if this is left it kills spells that award kill credit from vehicle to master (few spells),
|
||||
the use of these 2 covers passenger target check, logically, if vehicle cast this to master it should always hit
|
||||
him, because it would be it's passenger, there's no such case where this gets to fail legitimacy, this problem
|
||||
cannot be solved from within the check in other way since target type cannot be called for the spell currently
|
||||
Spell examples: [ID - 52864 Devour Water, ID - 52862 Devour Wind, ID - 49370 Wyrmrest Defender: Destabilize Azure Dragonshrine Effect] */
|
||||
if (!caster->IsVehicle() && !(caster->GetCharmerOrOwner() == target))
|
||||
{
|
||||
if (TargetAuraState && !unitTarget->HasAuraState(AuraStateType(TargetAuraState), this, caster))
|
||||
return SPELL_FAILED_TARGET_AURASTATE;
|
||||
|
||||
Reference in New Issue
Block a user