diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 9e56a833b..b9d653f6d 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -4124,8 +4124,7 @@ SpellCastResult Spell::CheckCast(bool strict) (m_spellInfo->EffectImplicitTargetB[j] == TARGET_SCRIPT && m_spellInfo->EffectImplicitTargetA[j] != TARGET_SELF) || m_spellInfo->EffectImplicitTargetA[j] == TARGET_SCRIPT_COORDINATES || m_spellInfo->EffectImplicitTargetB[j] == TARGET_SCRIPT_COORDINATES || - // Check possible in DB targets only for spells with no implicit spell focus - (m_spellInfo->EffectImplicitTargetA[j] == TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT && !m_spellInfo->RequiresSpellFocus)) + m_spellInfo->EffectImplicitTargetA[j] == TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT) { SpellScriptTargetBounds bounds = spellmgr.GetSpellScriptTargetBounds(m_spellInfo->Id); @@ -4242,11 +4241,17 @@ SpellCastResult Spell::CheckCast(bool strict) //Missing DB Entry or targets for this spellEffect. else { - // not report target not existence for triggered spells - if(m_triggeredByAuraSpell || m_IsTriggeredSpell) - return SPELL_FAILED_DONT_REPORT; - else - return SPELL_FAILED_BAD_TARGETS; + /* For TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT makes DB targets optional not required for now + * TODO: Makes more research for this target type + */ + if (m_spellInfo->EffectImplicitTargetA[j] != TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT) + { + // not report target not existence for triggered spells + if(m_triggeredByAuraSpell || m_IsTriggeredSpell) + return SPELL_FAILED_DONT_REPORT; + else + return SPELL_FAILED_BAD_TARGETS; + } } } } diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 544a84079..f2971702a 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -2205,31 +2205,6 @@ void SpellMgr::LoadSpellScriptTarget() continue; } - // More checks on TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT - bool ok = true; - for (int i = 0; i < 3; ++i) - { - if (spellProto->EffectImplicitTargetA[i] == TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT || - spellProto->EffectImplicitTargetB[i] == TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT) - { - if (spellProto->RequiresSpellFocus) - { - sLog.outErrorDb("Table `spell_script_target`: spellId %u for TargetEnty %u of type TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT is wrong because spell has implicit ReqSpellFocus %u.", spellId, targetEntry, spellProto->RequiresSpellFocus); - ok = false; - break; - } - - if (type != SPELL_TARGET_TYPE_GAMEOBJECT) - { - sLog.outErrorDb("Table `spell_script_target`: spellId %u has target type TARGET_FOCUS_OR_SCRIPTED_GAMEOBJECT but target in table is creature (must be gameobject).", spellId); - ok = false; - break; - } - } - } - if (!ok) - continue; - // Checks by target type switch (type) { diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 224e103f3..9e02251d4 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8686" + #define REVISION_NR "8687" #endif // __REVISION_NR_H__