Core/Scripts: implemented Fungal Decay & Tail Sting
Port From (https://github.com/TrinityCore/TrinityCore/commit/d36f8bb7547c5ebef067f834c79754c57ff66a34)
This commit is contained in:
@@ -1465,7 +1465,7 @@ namespace Game.Scripting
|
|||||||
void RefreshDuration() { m_aura.RefreshDuration(); }
|
void RefreshDuration() { m_aura.RefreshDuration(); }
|
||||||
long GetApplyTime() { return m_aura.GetApplyTime(); }
|
long GetApplyTime() { return m_aura.GetApplyTime(); }
|
||||||
public int GetMaxDuration() { return m_aura.GetMaxDuration(); }
|
public int GetMaxDuration() { return m_aura.GetMaxDuration(); }
|
||||||
void SetMaxDuration(int duration) { m_aura.SetMaxDuration(duration); }
|
public void SetMaxDuration(int duration) { m_aura.SetMaxDuration(duration); }
|
||||||
int CalcMaxDuration() { return m_aura.CalcMaxDuration(); }
|
int CalcMaxDuration() { return m_aura.CalcMaxDuration(); }
|
||||||
// expired - duration just went to 0
|
// expired - duration just went to 0
|
||||||
public bool IsExpired() { return m_aura.IsExpired(); }
|
public bool IsExpired() { return m_aura.IsExpired(); }
|
||||||
|
|||||||
@@ -364,6 +364,12 @@ namespace Scripts.Spells.Generic
|
|||||||
public const uint A_ValiantOfSilvermoon = 13696;
|
public const uint A_ValiantOfSilvermoon = 13696;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct Misc
|
||||||
|
{
|
||||||
|
//FungalDecay
|
||||||
|
public const int AuraDuration = 12600; // found in sniffs, there is no duration entry we can possibly use
|
||||||
|
}
|
||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
class spell_gen_absorb0_hitlimit1 : AuraScript
|
class spell_gen_absorb0_hitlimit1 : AuraScript
|
||||||
{
|
{
|
||||||
@@ -596,7 +602,7 @@ namespace Scripts.Spells.Generic
|
|||||||
OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(UpdatePeriodic, 1, AuraType.PeriodicDummy));
|
OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(UpdatePeriodic, 1, AuraType.PeriodicDummy));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Script] // 41337 Aura of Anger
|
[Script] // 41337 Aura of Anger
|
||||||
class spell_gen_aura_of_anger : AuraScript
|
class spell_gen_aura_of_anger : AuraScript
|
||||||
{
|
{
|
||||||
@@ -636,7 +642,7 @@ namespace Scripts.Spells.Generic
|
|||||||
OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 0, AuraType.PeriodicTriggerSpell));
|
OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 0, AuraType.PeriodicTriggerSpell));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
class spell_gen_aura_service_uniform : AuraScript
|
class spell_gen_aura_service_uniform : AuraScript
|
||||||
{
|
{
|
||||||
@@ -966,7 +972,7 @@ namespace Scripts.Spells.Generic
|
|||||||
OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(UpdatePeriodic, 1, AuraType.PeriodicDummy));
|
OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(UpdatePeriodic, 1, AuraType.PeriodicDummy));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
class spell_gen_chaos_blast : SpellScript
|
class spell_gen_chaos_blast : SpellScript
|
||||||
{
|
{
|
||||||
@@ -1270,6 +1276,91 @@ namespace Scripts.Spells.Generic
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Script] // 32065 - Fungal Decay
|
||||||
|
class spell_gen_decay_over_time_fungal_decay_SpellScript : SpellScript
|
||||||
|
{
|
||||||
|
void ModAuraStack()
|
||||||
|
{
|
||||||
|
Aura aur = GetHitAura();
|
||||||
|
if (aur != null)
|
||||||
|
aur.SetStackAmount((byte)GetSpellInfo().StackAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
AfterHit.Add(new HitHandler(ModAuraStack));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Script] // 32065 - Fungal Decay
|
||||||
|
class spell_gen_decay_over_time_fungal_decay_AuraScript : AuraScript
|
||||||
|
{
|
||||||
|
void ModDuration(AuraEffect aurEff, AuraEffectHandleModes mode)
|
||||||
|
{
|
||||||
|
// only on actual reapply, not on stack decay
|
||||||
|
if (GetDuration() == GetMaxDuration())
|
||||||
|
{
|
||||||
|
SetMaxDuration(Misc.AuraDuration);
|
||||||
|
SetDuration(Misc.AuraDuration);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool CheckProc(ProcEventInfo eventInfo)
|
||||||
|
{
|
||||||
|
return eventInfo.GetSpellInfo() == GetSpellInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Decay(ProcEventInfo eventInfo)
|
||||||
|
{
|
||||||
|
PreventDefaultAction();
|
||||||
|
ModStackAmount(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
DoCheckProc.Add(new CheckProcHandler(CheckProc));
|
||||||
|
OnProc.Add(new AuraProcHandler(Decay));
|
||||||
|
OnEffectApply.Add(new EffectApplyHandler(ModDuration, 0, AuraType.ModDecreaseSpeed, AuraEffectHandleModes.RealOrReapplyMask));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Script] // 36659 - Tail Sting
|
||||||
|
class spell_gen_decay_over_time_tail_sting_SpellScript : SpellScript
|
||||||
|
{
|
||||||
|
void ModAuraStack()
|
||||||
|
{
|
||||||
|
Aura aur = GetHitAura();
|
||||||
|
if (aur != null)
|
||||||
|
aur.SetStackAmount((byte)GetSpellInfo().StackAmount);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
AfterHit.Add(new HitHandler(ModAuraStack));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Script] // 36659 - Tail Sting
|
||||||
|
class spell_gen_decay_over_time_tail_sting_AuraScript : AuraScript
|
||||||
|
{
|
||||||
|
bool CheckProc(ProcEventInfo eventInfo)
|
||||||
|
{
|
||||||
|
return eventInfo.GetSpellInfo() == GetSpellInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Decay(ProcEventInfo eventInfo)
|
||||||
|
{
|
||||||
|
PreventDefaultAction();
|
||||||
|
ModStackAmount(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Register()
|
||||||
|
{
|
||||||
|
DoCheckProc.Add(new CheckProcHandler(CheckProc));
|
||||||
|
OnProc.Add(new AuraProcHandler(Decay));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
class spell_gen_despawn_self : SpellScript
|
class spell_gen_despawn_self : SpellScript
|
||||||
{
|
{
|
||||||
@@ -1742,7 +1833,7 @@ namespace Scripts.Spells.Generic
|
|||||||
OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 0, AuraType.PeriodicTriggerSpell));
|
OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 0, AuraType.PeriodicTriggerSpell));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Script] // 28702 - Netherbloom
|
[Script] // 28702 - Netherbloom
|
||||||
class spell_gen_netherbloom : SpellScript
|
class spell_gen_netherbloom : SpellScript
|
||||||
{
|
{
|
||||||
@@ -1825,10 +1916,10 @@ namespace Scripts.Spells.Generic
|
|||||||
|
|
||||||
public override void Register()
|
public override void Register()
|
||||||
{
|
{
|
||||||
OnEffectPeriodic .Add(new EffectPeriodicHandler(PeriodicTick, 1, AuraType.PeriodicTriggerSpell));
|
OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 1, AuraType.PeriodicTriggerSpell));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Script] // 27539 - Obsidian Armor
|
[Script] // 27539 - Obsidian Armor
|
||||||
class spell_gen_obsidian_armor : AuraScript
|
class spell_gen_obsidian_armor : AuraScript
|
||||||
{
|
{
|
||||||
@@ -2010,7 +2101,7 @@ namespace Scripts.Spells.Generic
|
|||||||
OnProc.Add(new AuraProcHandler(HandleChargeDrop));
|
OnProc.Add(new AuraProcHandler(HandleChargeDrop));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Script] // 45472 Parachute
|
[Script] // 45472 Parachute
|
||||||
class spell_gen_parachute : AuraScript
|
class spell_gen_parachute : AuraScript
|
||||||
{
|
{
|
||||||
@@ -2240,7 +2331,7 @@ namespace Scripts.Spells.Generic
|
|||||||
|
|
||||||
public override void Register()
|
public override void Register()
|
||||||
{
|
{
|
||||||
OnEffectPeriodic .Add(new EffectPeriodicHandler(PeriodicTick, 0, AuraType.PeriodicDamage));
|
OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 0, AuraType.PeriodicDamage));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2261,10 +2352,10 @@ namespace Scripts.Spells.Generic
|
|||||||
|
|
||||||
public override void Register()
|
public override void Register()
|
||||||
{
|
{
|
||||||
OnEffectPeriodic .Add(new EffectPeriodicHandler(PeriodicTick, 2, AuraType.PeriodicDamagePercent));
|
OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 2, AuraType.PeriodicDamagePercent));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
class spell_gen_replenishment : SpellScript
|
class spell_gen_replenishment : SpellScript
|
||||||
{
|
{
|
||||||
@@ -2472,7 +2563,7 @@ namespace Scripts.Spells.Generic
|
|||||||
|
|
||||||
[Script]
|
[Script]
|
||||||
class spell_gen_spectator_cheer_trigger : SpellScript
|
class spell_gen_spectator_cheer_trigger : SpellScript
|
||||||
{
|
{
|
||||||
readonly static Emote[] EmoteArray = { Emote.OneshotCheer, Emote.OneshotExclamation, Emote.OneshotApplaud };
|
readonly static Emote[] EmoteArray = { Emote.OneshotCheer, Emote.OneshotExclamation, Emote.OneshotApplaud };
|
||||||
|
|
||||||
void HandleDummy(uint effIndex)
|
void HandleDummy(uint effIndex)
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
DELETE FROM `spell_proc` WHERE `SpellId` IN (32065, 36659);
|
||||||
|
INSERT INTO `spell_proc` (`SpellId`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `ProcsPerMinute`, `Chance`, `Cooldown`, `Charges`) VALUES
|
||||||
|
(32065, 0x0, 0, 0x00000000, 0x00000000, 0x00000000, 0x80000, 0x1, 0x0, 0x0, 0x0, 0, 0, 0, 0),
|
||||||
|
(36659, 0x0, 0, 0x00000000, 0x00000000, 0x00000000, 0x80000, 0x1, 0x0, 0x0, 0x0, 0, 0, 0, 0);
|
||||||
|
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_gen_decay_over_time_fungal_decay','spell_gen_decay_over_time_tail_sting');
|
||||||
|
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||||
|
(32065, 'spell_gen_decay_over_time_fungal_decay'),
|
||||||
|
(36659, 'spell_gen_decay_over_time_tail_sting');
|
||||||
Reference in New Issue
Block a user