Added buff action base class

This commit is contained in:
Asriel Camora
2023-06-14 10:45:21 -07:00
parent 0ac51b2002
commit bf74e14d19
8 changed files with 45 additions and 33 deletions
@@ -0,0 +1,22 @@
using System;
namespace Craftimizer.Simulator.Actions;
public abstract class BaseBuffAction : BaseAction
{
public BaseBuffAction(Simulation simulation) : base(simulation) { }
public abstract Effect Effect { get; }
public abstract int EffectDuration { get; }
public virtual Effect[] ConflictingEffects => Array.Empty<Effect>();
public override int DurabilityCost => 0;
public override void UseSuccess()
{
if (ConflictingEffects.Length != 0)
foreach(var effect in ConflictingEffects)
Simulation.RemoveEffect(effect);
Simulation.AddEffect(Effect, EffectDuration);
}
}
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions; namespace Craftimizer.Simulator.Actions;
internal class FinalAppraisal : BaseAction internal class FinalAppraisal : BaseBuffAction
{ {
public FinalAppraisal(Simulation simulation) : base(simulation) { } public FinalAppraisal(Simulation simulation) : base(simulation) { }
@@ -9,9 +9,8 @@ internal class FinalAppraisal : BaseAction
public override int ActionId => 19012; public override int ActionId => 19012;
public override int CPCost => 1; public override int CPCost => 1;
public override int DurabilityCost => 0;
public override bool IncreasesStepCount => false; public override bool IncreasesStepCount => false;
public override void UseSuccess() => public override Effect Effect => Effect.FinalAppraisal;
Simulation.AddEffect(Effect.FinalAppraisal, 5); public override int EffectDuration => 5;
} }
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions; namespace Craftimizer.Simulator.Actions;
internal class GreatStrides : BaseAction internal class GreatStrides : BaseBuffAction
{ {
public GreatStrides(Simulation simulation) : base(simulation) { } public GreatStrides(Simulation simulation) : base(simulation) { }
@@ -9,8 +9,7 @@ internal class GreatStrides : BaseAction
public override int ActionId => 260; public override int ActionId => 260;
public override int CPCost => 32; public override int CPCost => 32;
public override int DurabilityCost => 0;
public override void UseSuccess() => public override Effect Effect => Effect.GreatStrides;
Simulation.AddEffect(Effect.GreatStrides, 3); public override int EffectDuration => 3;
} }
+3 -4
View File
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions; namespace Craftimizer.Simulator.Actions;
internal class Innovation : BaseAction internal class Innovation : BaseBuffAction
{ {
public Innovation(Simulation simulation) : base(simulation) { } public Innovation(Simulation simulation) : base(simulation) { }
@@ -9,8 +9,7 @@ internal class Innovation : BaseAction
public override int ActionId => 19004; public override int ActionId => 19004;
public override int CPCost => 18; public override int CPCost => 18;
public override int DurabilityCost => 0;
public override void UseSuccess() => public override Effect Effect => Effect.Innovation;
Simulation.AddEffect(Effect.Innovation, 4); public override int EffectDuration => 4;
} }
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions; namespace Craftimizer.Simulator.Actions;
internal class Manipulation : BaseAction internal class Manipulation : BaseBuffAction
{ {
public Manipulation(Simulation simulation) : base(simulation) { } public Manipulation(Simulation simulation) : base(simulation) { }
@@ -9,8 +9,7 @@ internal class Manipulation : BaseAction
public override int ActionId => 4574; public override int ActionId => 4574;
public override int CPCost => 96; public override int CPCost => 96;
public override int DurabilityCost => 0;
public override void UseSuccess() => public override Effect Effect => Effect.Manipulation;
Simulation.AddEffect(Effect.Manipulation, 8); public override int EffectDuration => 8;
} }
+3 -3
View File
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions; namespace Craftimizer.Simulator.Actions;
internal class Veneration : BaseAction internal class Veneration : BaseBuffAction
{ {
public Veneration(Simulation simulation) : base(simulation) { } public Veneration(Simulation simulation) : base(simulation) { }
@@ -11,6 +11,6 @@ internal class Veneration : BaseAction
public override int CPCost => 18; public override int CPCost => 18;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() => public override Effect Effect => Effect.Veneration;
Simulation.AddEffect(Effect.Veneration, 4); public override int EffectDuration => 4;
} }
+4 -7
View File
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions; namespace Craftimizer.Simulator.Actions;
internal class WasteNot : BaseAction internal class WasteNot : BaseBuffAction
{ {
public WasteNot(Simulation simulation) : base(simulation) { } public WasteNot(Simulation simulation) : base(simulation) { }
@@ -9,11 +9,8 @@ internal class WasteNot : BaseAction
public override int ActionId => 4631; public override int ActionId => 4631;
public override int CPCost => 56; public override int CPCost => 56;
public override int DurabilityCost => 0;
public override void UseSuccess() public override Effect Effect => Effect.WasteNot;
{ public override int EffectDuration => 4;
Simulation.RemoveEffect(Effect.WasteNot2); public override Effect[] ConflictingEffects => new[] { Effect.WasteNot2 };
Simulation.AddEffect(Effect.WasteNot, 4);
}
} }
+4 -7
View File
@@ -1,6 +1,6 @@
namespace Craftimizer.Simulator.Actions; namespace Craftimizer.Simulator.Actions;
internal class WasteNot2 : BaseAction internal class WasteNot2 : BaseBuffAction
{ {
public WasteNot2(Simulation simulation) : base(simulation) { } public WasteNot2(Simulation simulation) : base(simulation) { }
@@ -9,11 +9,8 @@ internal class WasteNot2 : BaseAction
public override int ActionId => 4639; public override int ActionId => 4639;
public override int CPCost => 98; public override int CPCost => 98;
public override int DurabilityCost => 0;
public override void UseSuccess() public override Effect Effect => Effect.WasteNot2;
{ public override int EffectDuration => 8;
Simulation.RemoveEffect(Effect.WasteNot); public override Effect[] ConflictingEffects => new[] { Effect.WasteNot };
Simulation.AddEffect(Effect.WasteNot2, 8);
}
} }