mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 16:38:42 +01:00
Core/Spells: Partial revert of 5ddf90c5fe, use checkcast hook for disallowing spells to be casted directly
Closes #2108
This commit is contained in:
@@ -1976,6 +1976,11 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
( 25281, 'spell_gen_turkey_marker'),
|
||||
(-55428, 'spell_gen_lifeblood'),
|
||||
( 65917, 'spell_gen_magic_rooster'),
|
||||
( 4073, 'spell_gen_allow_cast_from_item_only'),
|
||||
( 19804, 'spell_gen_allow_cast_from_item_only'),
|
||||
( 12749, 'spell_gen_allow_cast_from_item_only'),
|
||||
( 13258, 'spell_gen_allow_cast_from_item_only'),
|
||||
( 13166, 'spell_gen_allow_cast_from_item_only'),
|
||||
-- instances
|
||||
-- Black Temple
|
||||
( 41475, 'spell_boss_lady_malande_shield'),
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN(4073,19804,12749,13258,13166);
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(4073,'spell_gen_allow_cast_from_item_only'),
|
||||
(19804,'spell_gen_allow_cast_from_item_only'),
|
||||
(12749,'spell_gen_allow_cast_from_item_only'),
|
||||
(13258,'spell_gen_allow_cast_from_item_only'),
|
||||
(13166,'spell_gen_allow_cast_from_item_only');
|
||||
@@ -4652,9 +4652,6 @@ 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;
|
||||
|
||||
if (m_castedClientside && m_spellInfo->Attributes & SPELL_ATTR0_HIDDEN_CLIENTSIDE && m_caster->GetTypeId() == TYPEID_PLAYER && !m_CastItem)
|
||||
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
|
||||
|
||||
// Check global cooldown
|
||||
if (strict && !m_IsTriggeredSpell && HasGlobalCooldown())
|
||||
return SPELL_FAILED_NOT_READY;
|
||||
|
||||
@@ -1125,6 +1125,35 @@ class spell_gen_magic_rooster : public SpellScriptLoader
|
||||
}
|
||||
};
|
||||
|
||||
class spell_gen_allow_cast_from_item_only : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_gen_allow_cast_from_item_only() : SpellScriptLoader("spell_gen_allow_cast_from_item_only") { }
|
||||
|
||||
class spell_gen_allow_cast_from_item_only_SpellScript : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_gen_allow_cast_from_item_only_SpellScript);
|
||||
|
||||
SpellCastResult CheckRequirement()
|
||||
{
|
||||
if (!GetCastItem())
|
||||
return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW;
|
||||
|
||||
return SPELL_CAST_OK;
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnCheckCast += SpellCheckCastFn(spell_gen_allow_cast_from_item_only_SpellScript::CheckRequirement);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_gen_allow_cast_from_item_only_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_generic_spell_scripts()
|
||||
{
|
||||
new spell_gen_absorb0_hitlimit1();
|
||||
@@ -1151,4 +1180,5 @@ void AddSC_generic_spell_scripts()
|
||||
new spell_gen_turkey_marker();
|
||||
new spell_gen_lifeblood();
|
||||
new spell_gen_magic_rooster();
|
||||
new spell_gen_allow_cast_by_item_only();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user