Skip to content

Commit

Permalink
Component changes
Browse files Browse the repository at this point in the history
- source script is now propagated through ComponentVars automatically
  • Loading branch information
Sichii committed Dec 29, 2024
1 parent e0930b3 commit 03f9cae
Show file tree
Hide file tree
Showing 15 changed files with 31 additions and 60 deletions.
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -16,6 +17,7 @@ public void Execute(ActivationContext context, ComponentVars vars)
{
var options = vars.GetOptions<IDamageComponentOptions>();
var targets = vars.GetTargets<Creature>();
var sourceScript = vars.GetSourceScript();

foreach (var target in targets)
{
Expand All @@ -33,7 +35,7 @@ public void Execute(ActivationContext context, ComponentVars vars)
options.ApplyDamageScript.ApplyDamage(
context.Source,
target,
options.SourceScript,
sourceScript,
damage,
options.Element);
}
Expand Down Expand Up @@ -74,6 +76,5 @@ public interface IDamageComponentOptions
decimal? DamageStatMultiplier { get; init; }
Element? Element { get; init; }
decimal? PctHpDamage { get; init; }
IScript SourceScript { get; init; }
}
}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -16,6 +17,7 @@ public void Execute(ActivationContext context, ComponentVars vars)
{
var options = vars.GetOptions<IHealComponentOptions>();
var targets = vars.GetTargets<Creature>();
var sourceScript = vars.GetSourceScript();

foreach (var target in targets)
{
Expand All @@ -33,7 +35,7 @@ public void Execute(ActivationContext context, ComponentVars vars)
options.ApplyHealScript.ApplyHeal(
context.Source,
target,
options.SourceScript,
sourceScript,
heal);
}
}
Expand Down Expand Up @@ -72,6 +74,5 @@ public interface IHealComponentOptions
Stat? HealStat { get; init; }
decimal? HealStatMultiplier { get; init; }
decimal? PctHpHeal { get; init; }
IScript SourceScript { get; init; }
}
}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -12,6 +14,7 @@ public struct LayReactorAbilityComponent : IComponent
public void Execute(ActivationContext context, ComponentVars vars)
{
var options = vars.GetOptions<ILayReactorComponentOptions>();
var sourceScript = vars.GetSourceScript();
var map = context.TargetMap;

if (string.IsNullOrEmpty(options.ReactorTileTemplateKey))
Expand All @@ -26,7 +29,7 @@ public void Execute(ActivationContext context, ComponentVars vars)
map,
point,
owner: context.Source,
sourceScript: options.SourceScript);
sourceScript: sourceScript);

map.SimpleAdd(trap);
}
Expand All @@ -36,6 +39,5 @@ public interface ILayReactorComponentOptions
{
IReactorTileFactory ReactorTileFactory { get; init; }
string? ReactorTileTemplateKey { get; init; }
IScript? SourceScript { get; init; }
}
}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -16,6 +17,7 @@ public void Execute(ActivationContext context, ComponentVars vars)
{
var options = vars.GetOptions<IManaBasedDamageComponentOptions>();
var targets = vars.GetTargets<Creature>();
var sourceScript = vars.GetSourceScript();

var damage = CalculateDamage(context, options);

Expand All @@ -26,7 +28,7 @@ public void Execute(ActivationContext context, ComponentVars vars)
options.ApplyDamageScript.ApplyDamage(
context.Source,
target,
options.SourceScript,
sourceScript,
damage,
options.Element);
}
Expand Down Expand Up @@ -62,6 +64,5 @@ public interface IManaBasedDamageComponentOptions
decimal? FinalMultiplier { get; init; }
decimal? PctOfMana { get; init; }
decimal? PctOfManaMultiplier { get; init; }
IScript SourceScript { get; init; }
}
}
6 changes: 6 additions & 0 deletions Chaos/Scripting/Components/Execution/ComponentExecutor.cs
Original file line number Diff line number Diff line change
@@ -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;

Expand Down Expand Up @@ -60,6 +63,9 @@ public ComponentExecutor WithOptions(object options)
{
Vars.SetOptions(options);

if (options is IScript script)
Vars.SetSourceScript(script);

return this;
}

Expand Down
5 changes: 5 additions & 0 deletions Chaos/Scripting/Components/Execution/ComponentVars.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#region
using Chaos.Collections.Common;
using Chaos.Models.World.Abstractions;
using Chaos.Scripting.Abstractions;
#endregion

namespace Chaos.Scripting.Components.Execution;
Expand All @@ -12,13 +13,16 @@ 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<Point> GetAllPoints() => GetRequired<List<Point>>(CASCADE_ALL_POINTS_KEY);

public virtual TOptions GetOptions<TOptions>() => GetRequired<TOptions>(OPTIONS_KEY);

public virtual IReadOnlyCollection<Point> GetPoints() => GetRequired<IReadOnlyCollection<Point>>(POINTS_KEY);

public virtual IScript GetSourceScript() => GetRequired<IScript>(SOURCE_SCRIPT_KEY);

public virtual int GetStage() => GetRequired<int>(CASCADE_STAGE_KEY);

public virtual IReadOnlyCollection<T> GetTargets<T>()
Expand All @@ -29,6 +33,7 @@ public virtual IReadOnlyCollection<T> GetTargets<T>()
public virtual void SetAllPoints(List<Point> points) => Set(CASCADE_ALL_POINTS_KEY, points);
public virtual void SetOptions(object options) => Set(OPTIONS_KEY, options);
public virtual void SetPoints(IReadOnlyCollection<Point> 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);

Expand Down
4 changes: 0 additions & 4 deletions Chaos/Scripting/ItemScripts/VitalityConsumableScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -33,7 +32,6 @@ public VitalityConsumableScript(Item subject)
ApplyDamageScript.DamageFormula = DamageFormulae.PureDamage;
ApplyHealScript = ApplyNonAlertingHealScript.Create();
ApplyHealScript.HealFormula = HealFormulae.Default;
SourceScript = this;
ItemName = Subject.DisplayName;
}

Expand Down Expand Up @@ -126,8 +124,6 @@ public override void OnUse(Aisling source)
/// <inheritdoc />
public decimal? PctHpHeal { get; init; }

public IScript SourceScript { get; init; }

/// <inheritdoc />
public int? ManaDrain { get; init; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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));

Expand Down Expand Up @@ -171,9 +169,6 @@ public override void Update(TimeSpan delta)
/// <inheritdoc />
public decimal? PctHpDamage { get; init; }

/// <inheritdoc />
public IScript SourceScript { get; init; }

/// <inheritdoc />
public byte? Sound { get; init; }

Expand Down
3 changes: 0 additions & 3 deletions Chaos/Scripting/ReactorTileScripts/TrapScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -48,7 +47,6 @@ public TrapScript(ReactorTile subject, IEffectFactory effectFactory)

ApplyDamageScript = ApplyNonAttackDamageScript.Create();
ApplyDamageScript.DamageFormula = DamageFormulae.PureDamage;
SourceScript = this;
}

/// <inheritdoc />
Expand Down Expand Up @@ -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; }
Expand Down
8 changes: 1 addition & 7 deletions Chaos/Scripting/SkillScripts/DamageScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -21,10 +20,7 @@ public class DamageScript : ConfigurableSkillScriptBase,
/// <inheritdoc />
public DamageScript(Skill subject)
: base(subject)
{
ApplyDamageScript = ApplyAttackDamageScript.Create();
SourceScript = this;
}
=> ApplyDamageScript = ApplyAttackDamageScript.Create();

/// <inheritdoc />
public override void OnUse(ActivationContext context)
Expand Down Expand Up @@ -86,8 +82,6 @@ public override void OnUse(ActivationContext context)
/// <inheritdoc />
public decimal? PctHpDamage { get; init; }

public IScript SourceScript { get; init; }

/// <inheritdoc />
public int? ManaCost { get; init; }

Expand Down
9 changes: 1 addition & 8 deletions Chaos/Scripting/SkillScripts/HealScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();

/// <inheritdoc />
public override void OnUse(ActivationContext context)
Expand Down Expand Up @@ -82,9 +78,6 @@ public override void OnUse(ActivationContext context)
/// <inheritdoc />
public decimal? PctHpHeal { get; init; }

/// <inheritdoc />
public IScript SourceScript { get; init; }

/// <inheritdoc />
public int? ManaCost { get; init; }

Expand Down
5 changes: 0 additions & 5 deletions Chaos/Scripting/SpellScripts/CascadingDamageScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -27,7 +26,6 @@ public CascadingDamageScript(Spell subject, IReactorTileFactory reactorTileFacto
: base(subject)
{
ApplyDamageScript = ApplyAttackDamageScript.Create();
SourceScript = this;
ReactorTileFactory = reactorTileFactory;
CascadeScriptVars ??= Subject.Template.ScriptVars;
}
Expand Down Expand Up @@ -85,9 +83,6 @@ public override void OnUse(SpellContext context)
/// <inheritdoc />
public decimal? PctHpDamage { get; init; }

/// <inheritdoc />
public IScript SourceScript { get; init; }

/// <inheritdoc />
public Animation? Animation { get; init; }

Expand Down
9 changes: 1 addition & 8 deletions Chaos/Scripting/SpellScripts/DamageScript.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -21,10 +20,7 @@ public class DamageScript : ConfigurableSpellScriptBase,
/// <inheritdoc />
public DamageScript(Spell subject)
: base(subject)
{
ApplyDamageScript = ApplyAttackDamageScript.Create();
SourceScript = this;
}
=> ApplyDamageScript = ApplyAttackDamageScript.Create();

/// <inheritdoc />
public override void OnUse(SpellContext context)
Expand Down Expand Up @@ -90,9 +86,6 @@ public override void OnUse(SpellContext context)
/// <inheritdoc />
public decimal? PctHpDamage { get; init; }

/// <inheritdoc />
public IScript SourceScript { get; init; }

/// <inheritdoc />
public int? ManaCost { get; init; }

Expand Down
Loading

0 comments on commit 03f9cae

Please sign in to comment.