From 03f9cae0882324131a26f7f82ef6f2a9733dd2b1 Mon Sep 17 00:00:00 2001 From: sichii Date: Sun, 29 Dec 2024 08:19:55 -0500 Subject: [PATCH] Component changes - source script is now propagated through ComponentVars automatically --- .../AbilityComponents/DamageAbilityComponent.cs | 7 ++++--- .../Components/AbilityComponents/HealAbilityComponent.cs | 7 ++++--- .../AbilityComponents/LayReactorAbilityComponent.cs | 6 ++++-- .../AbilityComponents/ManaBasedDamageAbilityComponent.cs | 7 ++++--- .../Scripting/Components/Execution/ComponentExecutor.cs | 6 ++++++ Chaos/Scripting/Components/Execution/ComponentVars.cs | 5 +++++ Chaos/Scripting/ItemScripts/VitalityConsumableScript.cs | 4 ---- .../ReactorTileScripts/CascadingDamageTileScript.cs | 5 ----- Chaos/Scripting/ReactorTileScripts/TrapScript.cs | 3 --- Chaos/Scripting/SkillScripts/DamageScript.cs | 8 +------- Chaos/Scripting/SkillScripts/HealScript.cs | 9 +-------- Chaos/Scripting/SpellScripts/CascadingDamageScript.cs | 5 ----- Chaos/Scripting/SpellScripts/DamageScript.cs | 9 +-------- Chaos/Scripting/SpellScripts/HealScript.cs | 9 +-------- Chaos/Services/MapperProfiles/AislingMapperProfile.cs | 1 - 15 files changed, 31 insertions(+), 60 deletions(-) diff --git a/Chaos/Scripting/Components/AbilityComponents/DamageAbilityComponent.cs b/Chaos/Scripting/Components/AbilityComponents/DamageAbilityComponent.cs index bf47fee1a2..e7e619add9 100644 --- a/Chaos/Scripting/Components/AbilityComponents/DamageAbilityComponent.cs +++ b/Chaos/Scripting/Components/AbilityComponents/DamageAbilityComponent.cs @@ -1,11 +1,12 @@ +#region using Chaos.Common.Utilities; using Chaos.DarkAges.Definitions; using Chaos.Models.Data; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.Abstractions; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; +#endregion namespace Chaos.Scripting.Components.AbilityComponents; @@ -16,6 +17,7 @@ public void Execute(ActivationContext context, ComponentVars vars) { var options = vars.GetOptions(); var targets = vars.GetTargets(); + var sourceScript = vars.GetSourceScript(); foreach (var target in targets) { @@ -33,7 +35,7 @@ public void Execute(ActivationContext context, ComponentVars vars) options.ApplyDamageScript.ApplyDamage( context.Source, target, - options.SourceScript, + sourceScript, damage, options.Element); } @@ -74,6 +76,5 @@ public interface IDamageComponentOptions decimal? DamageStatMultiplier { get; init; } Element? Element { get; init; } decimal? PctHpDamage { get; init; } - IScript SourceScript { get; init; } } } \ No newline at end of file diff --git a/Chaos/Scripting/Components/AbilityComponents/HealAbilityComponent.cs b/Chaos/Scripting/Components/AbilityComponents/HealAbilityComponent.cs index d1d10dc755..28f00d19b4 100644 --- a/Chaos/Scripting/Components/AbilityComponents/HealAbilityComponent.cs +++ b/Chaos/Scripting/Components/AbilityComponents/HealAbilityComponent.cs @@ -1,11 +1,12 @@ +#region using Chaos.Common.Utilities; using Chaos.DarkAges.Definitions; using Chaos.Models.Data; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.Abstractions; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; +#endregion namespace Chaos.Scripting.Components.AbilityComponents; @@ -16,6 +17,7 @@ public void Execute(ActivationContext context, ComponentVars vars) { var options = vars.GetOptions(); var targets = vars.GetTargets(); + var sourceScript = vars.GetSourceScript(); foreach (var target in targets) { @@ -33,7 +35,7 @@ public void Execute(ActivationContext context, ComponentVars vars) options.ApplyHealScript.ApplyHeal( context.Source, target, - options.SourceScript, + sourceScript, heal); } } @@ -72,6 +74,5 @@ public interface IHealComponentOptions Stat? HealStat { get; init; } decimal? HealStatMultiplier { get; init; } decimal? PctHpHeal { get; init; } - IScript SourceScript { get; init; } } } \ No newline at end of file diff --git a/Chaos/Scripting/Components/AbilityComponents/LayReactorAbilityComponent.cs b/Chaos/Scripting/Components/AbilityComponents/LayReactorAbilityComponent.cs index 5d1f6b2468..acd96bc57e 100644 --- a/Chaos/Scripting/Components/AbilityComponents/LayReactorAbilityComponent.cs +++ b/Chaos/Scripting/Components/AbilityComponents/LayReactorAbilityComponent.cs @@ -1,8 +1,10 @@ +#region using Chaos.Models.Data; using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.Abstractions; using Chaos.Scripting.Components.Execution; using Chaos.Services.Factories.Abstractions; +#endregion namespace Chaos.Scripting.Components.AbilityComponents; @@ -12,6 +14,7 @@ public struct LayReactorAbilityComponent : IComponent public void Execute(ActivationContext context, ComponentVars vars) { var options = vars.GetOptions(); + var sourceScript = vars.GetSourceScript(); var map = context.TargetMap; if (string.IsNullOrEmpty(options.ReactorTileTemplateKey)) @@ -26,7 +29,7 @@ public void Execute(ActivationContext context, ComponentVars vars) map, point, owner: context.Source, - sourceScript: options.SourceScript); + sourceScript: sourceScript); map.SimpleAdd(trap); } @@ -36,6 +39,5 @@ public interface ILayReactorComponentOptions { IReactorTileFactory ReactorTileFactory { get; init; } string? ReactorTileTemplateKey { get; init; } - IScript? SourceScript { get; init; } } } \ No newline at end of file diff --git a/Chaos/Scripting/Components/AbilityComponents/ManaBasedDamageAbilityComponent.cs b/Chaos/Scripting/Components/AbilityComponents/ManaBasedDamageAbilityComponent.cs index f72b9058c9..af3c675ea4 100644 --- a/Chaos/Scripting/Components/AbilityComponents/ManaBasedDamageAbilityComponent.cs +++ b/Chaos/Scripting/Components/AbilityComponents/ManaBasedDamageAbilityComponent.cs @@ -1,11 +1,12 @@ +#region using Chaos.Common.Utilities; using Chaos.DarkAges.Definitions; using Chaos.Models.Data; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.Abstractions; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; +#endregion namespace Chaos.Scripting.Components.AbilityComponents; @@ -16,6 +17,7 @@ public void Execute(ActivationContext context, ComponentVars vars) { var options = vars.GetOptions(); var targets = vars.GetTargets(); + var sourceScript = vars.GetSourceScript(); var damage = CalculateDamage(context, options); @@ -26,7 +28,7 @@ public void Execute(ActivationContext context, ComponentVars vars) options.ApplyDamageScript.ApplyDamage( context.Source, target, - options.SourceScript, + sourceScript, damage, options.Element); } @@ -62,6 +64,5 @@ public interface IManaBasedDamageComponentOptions decimal? FinalMultiplier { get; init; } decimal? PctOfMana { get; init; } decimal? PctOfManaMultiplier { get; init; } - IScript SourceScript { get; init; } } } \ No newline at end of file diff --git a/Chaos/Scripting/Components/Execution/ComponentExecutor.cs b/Chaos/Scripting/Components/Execution/ComponentExecutor.cs index f9fa0caf59..90bfcd0fb3 100644 --- a/Chaos/Scripting/Components/Execution/ComponentExecutor.cs +++ b/Chaos/Scripting/Components/Execution/ComponentExecutor.cs @@ -1,8 +1,11 @@ +#region using Chaos.Collections; using Chaos.Geometry.Abstractions; using Chaos.Models.Data; using Chaos.Models.World.Abstractions; +using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.Abstractions; +#endregion namespace Chaos.Scripting.Components.Execution; @@ -60,6 +63,9 @@ public ComponentExecutor WithOptions(object options) { Vars.SetOptions(options); + if (options is IScript script) + Vars.SetSourceScript(script); + return this; } diff --git a/Chaos/Scripting/Components/Execution/ComponentVars.cs b/Chaos/Scripting/Components/Execution/ComponentVars.cs index 78230da92d..03613e1a33 100644 --- a/Chaos/Scripting/Components/Execution/ComponentVars.cs +++ b/Chaos/Scripting/Components/Execution/ComponentVars.cs @@ -1,6 +1,7 @@ #region using Chaos.Collections.Common; using Chaos.Models.World.Abstractions; +using Chaos.Scripting.Abstractions; #endregion namespace Chaos.Scripting.Components.Execution; @@ -12,6 +13,7 @@ public class ComponentVars : StaticVars private const string OPTIONS_KEY = "options"; private const string POINTS_KEY = "points"; private const string TARGETS_KEY = "targets"; + private const string SOURCE_SCRIPT_KEY = "source_script"; public virtual List GetAllPoints() => GetRequired>(CASCADE_ALL_POINTS_KEY); @@ -19,6 +21,8 @@ public class ComponentVars : StaticVars public virtual IReadOnlyCollection GetPoints() => GetRequired>(POINTS_KEY); + public virtual IScript GetSourceScript() => GetRequired(SOURCE_SCRIPT_KEY); + public virtual int GetStage() => GetRequired(CASCADE_STAGE_KEY); public virtual IReadOnlyCollection GetTargets() @@ -29,6 +33,7 @@ public virtual IReadOnlyCollection GetTargets() public virtual void SetAllPoints(List points) => Set(CASCADE_ALL_POINTS_KEY, points); public virtual void SetOptions(object options) => Set(OPTIONS_KEY, options); public virtual void SetPoints(IReadOnlyCollection points) => Set(POINTS_KEY, points); + public virtual void SetSourceScript(IScript script) => Set(SOURCE_SCRIPT_KEY, script); public virtual void SetStage(int stage) => Set(CASCADE_STAGE_KEY, stage); diff --git a/Chaos/Scripting/ItemScripts/VitalityConsumableScript.cs b/Chaos/Scripting/ItemScripts/VitalityConsumableScript.cs index 9f23bb7912..67ab4a5cdb 100644 --- a/Chaos/Scripting/ItemScripts/VitalityConsumableScript.cs +++ b/Chaos/Scripting/ItemScripts/VitalityConsumableScript.cs @@ -5,7 +5,6 @@ using Chaos.Models.Data; using Chaos.Models.Panel; using Chaos.Models.World; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -33,7 +32,6 @@ public VitalityConsumableScript(Item subject) ApplyDamageScript.DamageFormula = DamageFormulae.PureDamage; ApplyHealScript = ApplyNonAlertingHealScript.Create(); ApplyHealScript.HealFormula = HealFormulae.Default; - SourceScript = this; ItemName = Subject.DisplayName; } @@ -126,8 +124,6 @@ public override void OnUse(Aisling source) /// public decimal? PctHpHeal { get; init; } - public IScript SourceScript { get; init; } - /// public int? ManaDrain { get; init; } diff --git a/Chaos/Scripting/ReactorTileScripts/CascadingDamageTileScript.cs b/Chaos/Scripting/ReactorTileScripts/CascadingDamageTileScript.cs index 9122a69201..a9796671f4 100644 --- a/Chaos/Scripting/ReactorTileScripts/CascadingDamageTileScript.cs +++ b/Chaos/Scripting/ReactorTileScripts/CascadingDamageTileScript.cs @@ -4,7 +4,6 @@ using Chaos.Models.Data; using Chaos.Models.World; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -35,7 +34,6 @@ public CascadingDamageTileScript(ReactorTile subject) : base(subject) { ApplyDamageScript = ApplyAttackDamageScript.Create(); - SourceScript = this; CascadeTimer = new IntervalTimer(TimeSpan.FromMilliseconds(CascadeIntervalMs)); SoundTimer = new IntervalTimer(TimeSpan.FromMilliseconds(MinSoundIntervalMs)); @@ -171,9 +169,6 @@ public override void Update(TimeSpan delta) /// public decimal? PctHpDamage { get; init; } - /// - public IScript SourceScript { get; init; } - /// public byte? Sound { get; init; } diff --git a/Chaos/Scripting/ReactorTileScripts/TrapScript.cs b/Chaos/Scripting/ReactorTileScripts/TrapScript.cs index f1fb935e62..bd193dbc39 100644 --- a/Chaos/Scripting/ReactorTileScripts/TrapScript.cs +++ b/Chaos/Scripting/ReactorTileScripts/TrapScript.cs @@ -6,7 +6,6 @@ using Chaos.Models.Data; using Chaos.Models.World; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -48,7 +47,6 @@ public TrapScript(ReactorTile subject, IEffectFactory effectFactory) ApplyDamageScript = ApplyNonAttackDamageScript.Create(); ApplyDamageScript.DamageFormula = DamageFormulae.PureDamage; - SourceScript = this; } /// @@ -113,7 +111,6 @@ public override void Update(TimeSpan delta) public Stat? DamageStat { get; init; } public decimal? DamageStatMultiplier { get; init; } public decimal? PctHpDamage { get; init; } - public IScript SourceScript { get; init; } public Element? Element { get; init; } public int? DurationSecs { get; init; } public int? MaxTriggers { get; init; } diff --git a/Chaos/Scripting/SkillScripts/DamageScript.cs b/Chaos/Scripting/SkillScripts/DamageScript.cs index a2cefa66e3..0d56010536 100644 --- a/Chaos/Scripting/SkillScripts/DamageScript.cs +++ b/Chaos/Scripting/SkillScripts/DamageScript.cs @@ -4,7 +4,6 @@ using Chaos.Models.Data; using Chaos.Models.Panel; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -21,10 +20,7 @@ public class DamageScript : ConfigurableSkillScriptBase, /// public DamageScript(Skill subject) : base(subject) - { - ApplyDamageScript = ApplyAttackDamageScript.Create(); - SourceScript = this; - } + => ApplyDamageScript = ApplyAttackDamageScript.Create(); /// public override void OnUse(ActivationContext context) @@ -86,8 +82,6 @@ public override void OnUse(ActivationContext context) /// public decimal? PctHpDamage { get; init; } - public IScript SourceScript { get; init; } - /// public int? ManaCost { get; init; } diff --git a/Chaos/Scripting/SkillScripts/HealScript.cs b/Chaos/Scripting/SkillScripts/HealScript.cs index 47caeacc6c..4811266770 100644 --- a/Chaos/Scripting/SkillScripts/HealScript.cs +++ b/Chaos/Scripting/SkillScripts/HealScript.cs @@ -4,7 +4,6 @@ using Chaos.Models.Data; using Chaos.Models.Panel; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -19,10 +18,7 @@ public class HealScript : ConfigurableSkillScriptBase, { public HealScript(Skill subject) : base(subject) - { - ApplyHealScript = FunctionalScripts.ApplyHealing.ApplyHealScript.Create(); - SourceScript = this; - } + => ApplyHealScript = FunctionalScripts.ApplyHealing.ApplyHealScript.Create(); /// public override void OnUse(ActivationContext context) @@ -82,9 +78,6 @@ public override void OnUse(ActivationContext context) /// public decimal? PctHpHeal { get; init; } - /// - public IScript SourceScript { get; init; } - /// public int? ManaCost { get; init; } diff --git a/Chaos/Scripting/SpellScripts/CascadingDamageScript.cs b/Chaos/Scripting/SpellScripts/CascadingDamageScript.cs index 27262c2048..528ce545a1 100644 --- a/Chaos/Scripting/SpellScripts/CascadingDamageScript.cs +++ b/Chaos/Scripting/SpellScripts/CascadingDamageScript.cs @@ -5,7 +5,6 @@ using Chaos.Models.Data; using Chaos.Models.Panel; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -27,7 +26,6 @@ public CascadingDamageScript(Spell subject, IReactorTileFactory reactorTileFacto : base(subject) { ApplyDamageScript = ApplyAttackDamageScript.Create(); - SourceScript = this; ReactorTileFactory = reactorTileFactory; CascadeScriptVars ??= Subject.Template.ScriptVars; } @@ -85,9 +83,6 @@ public override void OnUse(SpellContext context) /// public decimal? PctHpDamage { get; init; } - /// - public IScript SourceScript { get; init; } - /// public Animation? Animation { get; init; } diff --git a/Chaos/Scripting/SpellScripts/DamageScript.cs b/Chaos/Scripting/SpellScripts/DamageScript.cs index 210b35bbc9..79d11f2c7e 100644 --- a/Chaos/Scripting/SpellScripts/DamageScript.cs +++ b/Chaos/Scripting/SpellScripts/DamageScript.cs @@ -4,7 +4,6 @@ using Chaos.Models.Data; using Chaos.Models.Panel; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -21,10 +20,7 @@ public class DamageScript : ConfigurableSpellScriptBase, /// public DamageScript(Spell subject) : base(subject) - { - ApplyDamageScript = ApplyAttackDamageScript.Create(); - SourceScript = this; - } + => ApplyDamageScript = ApplyAttackDamageScript.Create(); /// public override void OnUse(SpellContext context) @@ -90,9 +86,6 @@ public override void OnUse(SpellContext context) /// public decimal? PctHpDamage { get; init; } - /// - public IScript SourceScript { get; init; } - /// public int? ManaCost { get; init; } diff --git a/Chaos/Scripting/SpellScripts/HealScript.cs b/Chaos/Scripting/SpellScripts/HealScript.cs index f510c83f04..8baa33ffea 100644 --- a/Chaos/Scripting/SpellScripts/HealScript.cs +++ b/Chaos/Scripting/SpellScripts/HealScript.cs @@ -4,7 +4,6 @@ using Chaos.Models.Data; using Chaos.Models.Panel; using Chaos.Models.World.Abstractions; -using Chaos.Scripting.Abstractions; using Chaos.Scripting.Components.AbilityComponents; using Chaos.Scripting.Components.Execution; using Chaos.Scripting.FunctionalScripts.Abstractions; @@ -20,10 +19,7 @@ public class HealScript : ConfigurableSpellScriptBase, /// public HealScript(Spell subject) : base(subject) - { - ApplyHealScript = FunctionalScripts.ApplyHealing.ApplyHealScript.Create(); - SourceScript = this; - } + => ApplyHealScript = FunctionalScripts.ApplyHealing.ApplyHealScript.Create(); /// public override void OnUse(SpellContext context) @@ -86,9 +82,6 @@ public override void OnUse(SpellContext context) /// public decimal? PctHpHeal { get; init; } - /// - public IScript SourceScript { get; init; } - /// public int? ManaCost { get; init; } diff --git a/Chaos/Services/MapperProfiles/AislingMapperProfile.cs b/Chaos/Services/MapperProfiles/AislingMapperProfile.cs index 71196f21a0..7ccfdfa914 100644 --- a/Chaos/Services/MapperProfiles/AislingMapperProfile.cs +++ b/Chaos/Services/MapperProfiles/AislingMapperProfile.cs @@ -11,7 +11,6 @@ using Chaos.Networking.Entities.Server; using Chaos.Schemas.Aisling; using Chaos.Scripting.Abstractions; -using Chaos.Services.Servers.Options; using Chaos.Storage.Abstractions; using Chaos.TypeMapper.Abstractions; #endregion