fix to be identical to crafty, remove debugs

This commit is contained in:
Asriel Camora
2023-06-18 03:50:48 -07:00
parent e190368d62
commit bae48844b5
23 changed files with 203 additions and 148 deletions
+8 -5
View File
@@ -32,14 +32,17 @@ public abstract class BaseAction
public virtual void Use()
{
if (Simulation.RollSuccess(SuccessRate))
UseSuccess();
Simulation.ReduceCP(CPCost);
Simulation.ReduceDurability(DurabilityCost);
if (Simulation.HasEffect(EffectType.Manipulation))
Simulation.RestoreDurability(5);
if (Simulation.RollSuccess(SuccessRate))
UseSuccess();
if (Simulation.Durability > 0)
{
if (Simulation.HasEffect(EffectType.Manipulation))
Simulation.RestoreDurability(5);
}
if (IncreasesStepCount)
Simulation.IncreaseStepCount();
+4 -3
View File
@@ -4,7 +4,8 @@ namespace Craftimizer.Simulator.Actions;
internal abstract class BaseBuffAction : BaseAction
{
public abstract Effect Effect { get; }
public abstract EffectType Effect { get; }
public virtual byte Duration => 1;
public virtual EffectType[] ConflictingEffects => Array.Empty<EffectType>();
public override int DurabilityCost => 0;
@@ -14,13 +15,13 @@ internal abstract class BaseBuffAction : BaseAction
if (ConflictingEffects.Length != 0)
foreach(var effect in ConflictingEffects)
Simulation.RemoveEffect(effect);
Simulation.AddEffect(Effect.Type, Effect.Duration, Effect.Strength);
Simulation.AddEffect(Effect, Duration);
}
public override string GetTooltip(bool addUsability)
{
var builder = new StringBuilder(base.GetTooltip(addUsability));
builder.AppendLine($"{Effect.Duration} Steps");
builder.AppendLine($"{Duration} Steps");
return builder.ToString();
}
}
+1 -1
View File
@@ -7,7 +7,7 @@ internal class ByregotsBlessing : BaseAction
public override uint ActionId => 100339;
public override int CPCost => 24;
public override float Efficiency => 1.00f + (0.20f * (Simulation.GetEffect(EffectType.InnerQuiet)?.Strength ?? 0));
public override float Efficiency => 1.00f + (0.20f * Simulation.GetEffectStrength(EffectType.InnerQuiet));
public override bool IncreasesQuality => true;
public override bool CanUse => Simulation.HasEffect(EffectType.InnerQuiet) && base.CanUse;
+2 -1
View File
@@ -9,5 +9,6 @@ internal class FinalAppraisal : BaseBuffAction
public override int CPCost => 1;
public override bool IncreasesStepCount => false;
public override Effect Effect => new() { Type = EffectType.FinalAppraisal, Duration = 5 };
public override EffectType Effect => EffectType.FinalAppraisal;
public override byte Duration => 5;
}
+2 -1
View File
@@ -8,5 +8,6 @@ internal class GreatStrides : BaseBuffAction
public override int CPCost => 32;
public override Effect Effect => new() { Type = EffectType.GreatStrides, Duration = 3 };
public override EffectType Effect => EffectType.GreatStrides;
public override byte Duration => 3;
}
+1 -2
View File
@@ -13,8 +13,7 @@ internal class Groundwork : BaseAction
get
{
var ret = Simulation.Input.Stats.Level >= 86 ? 3.60f : 3.00f;
// TODO: does not account for waste not
return Simulation.Durability < DurabilityCost ? ret / 2 : ret;
return Simulation.Durability < Simulation.CalculateDurabilityCost(DurabilityCost) ? ret / 2 : ret;
}
}
public override bool IncreasesProgress => true;
+1 -1
View File
@@ -9,7 +9,7 @@ internal class HeartAndSoul : BaseBuffAction
public override int CPCost => 0;
public override bool IncreasesStepCount => false;
public override Effect Effect => new() { Type = EffectType.HeartAndSoul };
public override EffectType Effect => EffectType.HeartAndSoul;
public override bool CanUse => Simulation.Input.Stats.IsSpecialist && Simulation.CountPreviousAction(ActionType.HeartAndSoul) == 0;
}
+2 -1
View File
@@ -8,5 +8,6 @@ internal class Innovation : BaseBuffAction
public override int CPCost => 18;
public override Effect Effect => new() { Type = EffectType.Innovation, Duration = 4 };
public override EffectType Effect => EffectType.Innovation;
public override byte Duration => 4;
}
+15 -1
View File
@@ -8,5 +8,19 @@ internal class Manipulation : BaseBuffAction
public override int CPCost => 96;
public override Effect Effect => new() { Type = EffectType.Manipulation, Duration = 8 };
public override EffectType Effect => EffectType.Manipulation;
public override byte Duration => 8;
public override void Use()
{
if (Simulation.HasEffect(EffectType.Manipulation))
Simulation.RestoreDurability(5);
Simulation.ReduceCP(CPCost);
Simulation.ReduceDurability(DurabilityCost);
UseSuccess();
Simulation.IncreaseStepCount();
}
}
+1 -1
View File
@@ -12,6 +12,6 @@ internal class TrainedFinesse : BaseAction
public override int DurabilityCost => 0;
public override bool CanUse =>
(Simulation.GetEffect(EffectType.InnerQuiet)?.Strength ?? 0) == 10
Simulation.GetEffectStrength(EffectType.InnerQuiet) == 10
&& base.CanUse;
}
+2 -1
View File
@@ -9,5 +9,6 @@ internal class Veneration : BaseBuffAction
public override int CPCost => 18;
public override int DurabilityCost => 0;
public override Effect Effect => new() { Type = EffectType.Veneration, Duration = 4 };
public override EffectType Effect => EffectType.Veneration;
public override byte Duration => 4;
}
+2 -1
View File
@@ -8,6 +8,7 @@ internal class WasteNot : BaseBuffAction
public override int CPCost => 56;
public override Effect Effect => new() { Type = EffectType.WasteNot, Duration = 4 };
public override EffectType Effect => EffectType.WasteNot;
public override byte Duration => 4;
public override EffectType[] ConflictingEffects => new[] { EffectType.WasteNot2 };
}
+2 -1
View File
@@ -8,6 +8,7 @@ internal class WasteNot2 : BaseBuffAction
public override int CPCost => 98;
public override Effect Effect => new() { Type = EffectType.WasteNot2, Duration = 8 };
public override EffectType Effect => EffectType.WasteNot2;
public override byte Duration => 8;
public override EffectType[] ConflictingEffects => new[] { EffectType.WasteNot };
}