diff --git a/Source/Game/Spells/SpellManager.cs b/Source/Game/Spells/SpellManager.cs index c019985cd..11b5caadd 100644 --- a/Source/Game/Spells/SpellManager.cs +++ b/Source/Game/Spells/SpellManager.cs @@ -3233,7 +3233,8 @@ namespace Game.Entities 21855, // Challenge Flag 38762, // Force of Neltharaku 51122, // Fierce Lightning Stike - 71848 // Toxic Wasteling Find Target + 71848, // Toxic Wasteling Find Target + 36146 // Chains of Naberius }, spellInfo => { spellInfo.MaxAffectedTargets = 1; diff --git a/Source/Scripts/Spells/Generic.cs b/Source/Scripts/Spells/Generic.cs index b1b4efe07..0b5762f3b 100644 --- a/Source/Scripts/Spells/Generic.cs +++ b/Source/Scripts/Spells/Generic.cs @@ -586,27 +586,6 @@ namespace Scripts.Spells.Generic } } - [Script] - class spell_gen_arcane_charge : SpellScript - { - SpellCastResult CheckRequirement() - { - Unit target = GetExplTargetUnit(); - if (target != null) - { - if ((target.GetCreatureTypeMask() & (uint)CreatureType.MaskDemonOrUndead) == 0) - return SpellCastResult.DontReport; - } - - return SpellCastResult.SpellCastOk; - } - - public override void Register() - { - OnCheckCast.Add(new CheckCastHandler(CheckRequirement)); - } - } - // 430 Drink // 431 Drink // 432 Drink @@ -707,23 +686,6 @@ namespace Scripts.Spells.Generic } } - [Script] // 41337 Aura of Anger - class spell_gen_aura_of_anger : AuraScript - { - void HandleEffectPeriodicUpdate(AuraEffect aurEff) - { - AuraEffect aurEff1 = aurEff.GetBase().GetEffect(1); - if (aurEff1 != null) - aurEff1.ChangeAmount(aurEff1.GetAmount() + 5); - aurEff.SetAmount(100 * (int)aurEff.GetTickNumber()); - } - - public override void Register() - { - OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(HandleEffectPeriodicUpdate, 0, AuraType.PeriodicDamage)); - } - } - [Script] // 28313 - Aura of Fear class spell_gen_aura_of_fear : AuraScript { @@ -976,21 +938,6 @@ namespace Scripts.Spells.Generic } } - [Script] // 46394 Brutallus Burn - class spell_gen_burn_brutallus : AuraScript - { - void HandleEffectPeriodicUpdate(AuraEffect aurEff) - { - if (aurEff.GetTickNumber() % 11 == 0) - aurEff.SetAmount(aurEff.GetAmount() * 2); - } - - public override void Register() - { - OnEffectUpdatePeriodic.Add(new EffectUpdatePeriodicHandler(HandleEffectPeriodicUpdate, 0, AuraType.PeriodicDamage)); - } - } - [Script] // 48750 - Burning Depths Necrolyte Image class spell_gen_burning_depths_necrolyte_image : AuraScript { @@ -1287,6 +1234,31 @@ namespace Scripts.Spells.Generic } } + // 28865 - Consumption + [Script] // 64208 - Consumption + class spell_gen_consumption : SpellScript + { + void HandleDamageCalc(uint effIndex) + { + Unit caster = GetCaster(); + if (caster == null || !caster.IsCreature()) + return; + + int damage = 0; + SpellInfo createdBySpell = Global.SpellMgr.GetSpellInfo(caster.m_unitData.CreatedBySpell, GetCastDifficulty()); + if (createdBySpell != null) + damage = createdBySpell.GetEffect(2).CalcValue(); + + if (damage != 0) + SetEffectValue(damage); + } + + public override void Register() + { + OnEffectLaunchTarget.Add(new EffectHandler(HandleDamageCalc, 0, SpellEffectName.SchoolDamage)); + } + } + [Script] // 63845 - Create Lance class spell_gen_create_lance : SpellScript { @@ -2160,29 +2132,6 @@ namespace Scripts.Spells.Generic } } - [Script] // 46284 - Negative Energy Periodic - class spell_gen_negative_energy_periodic : AuraScript - { - public override bool Validate(SpellInfo spellInfo) - { - return !spellInfo.GetEffects().Empty() && ValidateSpellInfo(spellInfo.GetEffect(0).TriggerSpell); - } - - void PeriodicTick(AuraEffect aurEff) - { - PreventDefaultAction(); - - CastSpellExtraArgs args = new(aurEff); - args.AddSpellMod(SpellValueMod.MaxTargets, (int)aurEff.GetTickNumber() / 10 + 1); - GetTarget().CastSpell((Unit)null, aurEff.GetSpellEffectInfo().TriggerSpell, args); - } - - public override void Register() - { - OnEffectPeriodic.Add(new EffectPeriodicHandler(PeriodicTick, 0, AuraType.PeriodicTriggerSpell)); - } - } - [Script] // 28702 - Netherbloom class spell_gen_netherbloom : SpellScript { diff --git a/Source/Scripts/Spells/Items.cs b/Source/Scripts/Spells/Items.cs index 3de0cc937..eb251ca59 100644 --- a/Source/Scripts/Spells/Items.cs +++ b/Source/Scripts/Spells/Items.cs @@ -2608,22 +2608,6 @@ namespace Scripts.Spells.Items } } - [Script] - class spell_item_shimmering_vessel : SpellScript - { - void HandleDummy(uint effIndex) - { - Creature target = GetHitCreature(); - if (target) - target.SetDeathState(DeathState.JustRespawned); - } - - public override void Register() - { - OnEffectHitTarget.Add(new EffectHandler(HandleDummy, 0, SpellEffectName.Dummy)); - } - } - [Script] class spell_item_purify_helboar_meat : SpellScript { diff --git a/Source/Scripts/Spells/Quest.cs b/Source/Scripts/Spells/Quest.cs index a074d8535..01358a3c6 100644 --- a/Source/Scripts/Spells/Quest.cs +++ b/Source/Scripts/Spells/Quest.cs @@ -1775,6 +1775,36 @@ namespace Scripts.Spells.Quest AfterEffectRemove.Add(new EffectApplyHandler(OnRemove, 1, AuraType.Dummy, AuraEffectHandleModes.Real)); } } + + [Script] // 53099, 57896, 58418, 58420, 59064, 59065, 59439, 60900, 60940 + class spell_quest_portal_with_condition : SpellScript + { + public override bool Validate(SpellInfo spellInfo) + { + return spellInfo.GetEffects().Count > 1 + && ValidateSpellInfo((uint)spellInfo.GetEffect(0).CalcValue()) + && Global.ObjectMgr.GetQuestTemplate((uint)spellInfo.GetEffect(1).CalcValue()) != null; + } + + void HandleScriptEffect(uint effIndex) + { + Player target = GetHitPlayer(); + if (target == null) + return; + + uint spellId = (uint)GetEffectInfo().CalcValue(); + uint questId = (uint)GetEffectInfo(1).CalcValue(); + + // This probably should be a way to throw error in SpellCastResult + if (target.IsActiveQuest(questId)) + target.CastSpell(target, spellId, true); + } + + public override void Register() + { + OnEffectHitTarget.Add(new EffectHandler(HandleScriptEffect, 0, SpellEffectName.ScriptEffect)); + } + } [Script] // 48682 - Escape from Silverbrook - Periodic Dummy class spell_q12308_escape_from_silverbrook : SpellScript