diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 14 | ||||
-rw-r--r-- | src/server/game/Spells/SpellInfo.cpp | 4 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index bcceb3eebbc..2e9f2aabd73 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3407,7 +3407,7 @@ void Spell::_handle_immediate_phase() } } // Proc damage for spells which have only dest targets (2484 should proc 51486 for example) - m_originalCaster->ProcDamageAndSpell(0, procAttacker, 0, m_procEx | PROC_EX_NORMAL_HIT, 0, BASE_ATTACK, m_spellInfo, m_triggeredByAuraSpell); + m_originalCaster->ProcDamageAndSpell(NULL, procAttacker, 0, m_procEx | PROC_EX_NORMAL_HIT, 0, BASE_ATTACK, m_spellInfo, m_triggeredByAuraSpell); } } @@ -4577,7 +4577,10 @@ SpellCastResult Spell::CheckCast(bool strict) } if (m_spellInfo->AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL && !m_caster->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHEAT_SPELLS)) - return SPELL_FAILED_SPELL_UNAVAILABLE; + { + m_customError = SPELL_CUSTOM_ERROR_GM_ONLY; + return SPELL_FAILED_CUSTOM_ERROR; + } // Check global cooldown if (strict && !(_triggeredCastFlags & TRIGGERED_IGNORE_GCD) && HasGlobalCooldown()) @@ -4626,7 +4629,12 @@ SpellCastResult Spell::CheckCast(bool strict) } } - bool reqCombat=true; + Unit::AuraEffectList const& blockSpells = m_caster->GetAuraEffectsByType(SPELL_AURA_BLOCK_SPELL_FAMILY); + for (Unit::AuraEffectList::const_iterator blockItr = blockSpells.begin(); blockItr != blockSpells.end(); ++blockItr) + if ((*blockItr)->GetMiscValue() == m_spellInfo->SpellFamilyName) + return SPELL_FAILED_SPELL_UNAVAILABLE; + + bool reqCombat = true; Unit::AuraEffectList const& stateAuras = m_caster->GetAuraEffectsByType(SPELL_AURA_ABILITY_IGNORE_AURASTATE); for (Unit::AuraEffectList::const_iterator j = stateAuras.begin(); j != stateAuras.end(); ++j) { diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 8b831dd6c1a..543baa82789 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1597,10 +1597,10 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, Unit const* target, b if (target != caster && (caster->IsControlledByPlayer() || !IsPositive()) && target->GetTypeId() == TYPEID_PLAYER) { if (!target->ToPlayer()->IsVisible()) - return SPELL_FAILED_BAD_TARGETS; + return SPELL_FAILED_BM_OR_INVISGOD; if (target->ToPlayer()->isGameMaster()) - return SPELL_FAILED_BAD_TARGETS; + return SPELL_FAILED_BM_OR_INVISGOD; } // not allow casting on flying player |