mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 15:40:45 +01:00
Scripts/Spells: Implement Demon Hunter Base Spell "Glide"
This commit is contained in:
4
sql/updates/world/master/2021_11_20_00_world.sql
Normal file
4
sql/updates/world/master/2021_11_20_00_world.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_dh_glide','spell_dh_glide_timer');
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(131347,'spell_dh_glide'),
|
||||
(197154,'spell_dh_glide_timer');
|
||||
@@ -21,10 +21,13 @@
|
||||
* Scriptnames of files in this file should be prefixed with "spell_dh_".
|
||||
*/
|
||||
|
||||
#include "ScriptMgr.h"
|
||||
#include "AreaTrigger.h"
|
||||
#include "AreaTriggerAI.h"
|
||||
#include "Player.h"
|
||||
#include "ScriptMgr.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "SpellAuras.h"
|
||||
#include "SpellHistory.h"
|
||||
#include "SpellMgr.h"
|
||||
#include "SpellScript.h"
|
||||
#include "Unit.h"
|
||||
@@ -357,6 +360,90 @@ struct areatrigger_dh_sigil_of_chains : AreaTriggerAI
|
||||
}
|
||||
};
|
||||
|
||||
// 131347 - Glide
|
||||
class spell_dh_glide : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_dh_glide);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DH_GLIDE_KNOCKBACK, SPELL_DH_GLIDE_DURATION, SPELL_DH_VENGEFUL_RETREAT_TRIGGER, SPELL_DH_FEL_RUSH });
|
||||
}
|
||||
|
||||
SpellCastResult CheckCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (caster->IsMounted() || caster->GetVehicleBase())
|
||||
return SPELL_FAILED_DONT_REPORT;
|
||||
|
||||
if (!caster->IsFalling())
|
||||
return SPELL_FAILED_NOT_ON_GROUND;
|
||||
|
||||
return SPELL_CAST_OK;
|
||||
}
|
||||
|
||||
void HandleCast()
|
||||
{
|
||||
Player* caster = GetCaster()->ToPlayer();
|
||||
if (!caster)
|
||||
return;
|
||||
|
||||
caster->CastSpell(caster, SPELL_DH_GLIDE_KNOCKBACK, true);
|
||||
caster->CastSpell(caster, SPELL_DH_GLIDE_DURATION, true);
|
||||
|
||||
caster->GetSpellHistory()->StartCooldown(sSpellMgr->AssertSpellInfo(SPELL_DH_VENGEFUL_RETREAT_TRIGGER, GetCastDifficulty()), 0, nullptr, false, 250ms);
|
||||
caster->GetSpellHistory()->StartCooldown(sSpellMgr->AssertSpellInfo(SPELL_DH_FEL_RUSH, GetCastDifficulty()), 0, nullptr, false, 250ms);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCheckCast += SpellCheckCastFn(spell_dh_glide::CheckCast);
|
||||
BeforeCast += SpellCastFn(spell_dh_glide::HandleCast);
|
||||
}
|
||||
};
|
||||
|
||||
// 131347 - Glide
|
||||
class spell_dh_glide_AuraScript : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_dh_glide_AuraScript);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DH_GLIDE_DURATION });
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
GetTarget()->RemoveAura(SPELL_DH_GLIDE_DURATION);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_dh_glide_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_FEATHER_FALL, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
// 197154 - Glide
|
||||
class spell_dh_glide_timer : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_dh_glide_timer);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_DH_GLIDE });
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
GetTarget()->RemoveAura(SPELL_DH_GLIDE);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_dh_glide_timer::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_demon_hunter_spell_scripts()
|
||||
{
|
||||
RegisterAuraScript(spell_dh_chaos_strike);
|
||||
@@ -384,4 +471,9 @@ void AddSC_demon_hunter_spell_scripts()
|
||||
RegisterSpellScript(spell_dh_blade_dance);
|
||||
RegisterSpellScript(spell_dh_blade_dance_damage);
|
||||
|
||||
// Vengeance & Havoc
|
||||
|
||||
RegisterSpellAndAuraScriptPair(spell_dh_glide, spell_dh_glide_AuraScript);
|
||||
RegisterAuraScript(spell_dh_glide_timer);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user