diff options
| author | Wyrserth <43747507+Wyrserth@users.noreply.github.com> | 2019-05-30 20:07:46 +0200 |
|---|---|---|
| committer | Giacomo Pozzoni <giacomopoz@gmail.com> | 2019-05-30 20:07:46 +0200 |
| commit | 8bc5451864570c07eff6d427846335044f85a509 (patch) | |
| tree | 4234cd86a57975dabe56039d3d2b7f69a885585c /src/server/game/Spells/Spell.cpp | |
| parent | 9da81239596bf798b1beafc5ddeaeb37dcc330ff (diff) | |
Core/Misc: don't allow players to use/activate/loot non-allowed gameobjects while under the effect of a damage immunity aura (#23319)
* Core/Misc: don't allow players to use/activate/loot non-allowed gameobjects while under the effect of a damage immunity aura.
* Forgot to change this in last-second rename.
* Apply suggested changes, thanks Shauren!
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 3a4adeeec0b..6851f890ff0 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5010,6 +5010,13 @@ SpellCastResult Spell::CheckCast(bool strict, uint32* param1 /*= nullptr*/, uint if (m_caster->ToUnit() && !m_caster->ToUnit()->IsAlive() && !m_spellInfo->IsPassive() && !(m_spellInfo->HasAttribute(SPELL_ATTR0_CASTABLE_WHILE_DEAD) || (IsTriggered() && !m_triggeredByAuraSpell))) return SPELL_FAILED_CASTER_DEAD; + // Prevent cheating in case the player has an immunity effect and tries to interact with a non-allowed gameobject. The error message is handled by the client so we don't report anything here + if (m_caster->ToPlayer() && m_targets.GetGOTarget()) + { + if (m_targets.GetGOTarget()->GetGOInfo()->CannotBeUsedUnderImmunity() && m_caster->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE)) + return SPELL_FAILED_DONT_REPORT; + } + // check cooldowns to prevent cheating if (!m_spellInfo->IsPassive()) { |
