diff --git a/Simulator/SimulationInput.cs b/Simulator/SimulationInput.cs index a496616..075612d 100644 --- a/Simulator/SimulationInput.cs +++ b/Simulator/SimulationInput.cs @@ -10,11 +10,11 @@ public sealed class SimulationInput public int BaseProgressGain { get; } public int BaseQualityGain { get; } - public SimulationInput(CharacterStats stats, RecipeInfo recipe, int startingQuality = 0, int? seed = null) + public SimulationInput(CharacterStats stats, RecipeInfo recipe, int startingQuality, Random random) { Stats = stats; Recipe = recipe; - Random = seed == null ? new() : new(seed.Value); + Random = random; StartingQuality = startingQuality; // https://github.com/NotRanged/NotRanged.github.io/blob/0f4aee074f969fb05aad34feaba605057c08ffd1/app/js/ffxivcraftmodel.js#L88 @@ -32,5 +32,10 @@ public sealed class SimulationInput } } + public SimulationInput(CharacterStats stats, RecipeInfo recipe, int startingQuality = 0, int? seed = null) : this(stats, recipe, startingQuality, seed == null ? new Random() : new Random(seed.Value)) + { + + } + public Condition[] AvailableConditions => ConditionUtils.GetPossibleConditions(Recipe.ConditionsFlag); } diff --git a/Simulator/Simulator.cs b/Simulator/Simulator.cs index c04ade6..5abd80c 100644 --- a/Simulator/Simulator.cs +++ b/Simulator/Simulator.cs @@ -55,6 +55,8 @@ public class Simulator { if (baseAction.Level > Input.Stats.Level) return ActionResponse.ActionNotUnlocked; + if (action == ActionType.Manipulation && !Input.Stats.CanUseManipulation) + return ActionResponse.ActionNotUnlocked; if (baseAction.CPCost(this) > CP) return ActionResponse.NotEnoughCP; return ActionResponse.CannotUseAction; diff --git a/Simulator/SimulatorNoRandom.cs b/Simulator/SimulatorNoRandom.cs new file mode 100644 index 0000000..d41a158 --- /dev/null +++ b/Simulator/SimulatorNoRandom.cs @@ -0,0 +1,11 @@ +namespace Craftimizer.Simulator; + +public class SimulatorNoRandom : Simulator +{ + public SimulatorNoRandom(SimulationState state) : base(state) + { + } + + public sealed override bool RollSuccessRaw(float successRate) => successRate == 1; + public sealed override void StepCondition() { } +} diff --git a/Solver/Crafty/Simulator.cs b/Solver/Crafty/Simulator.cs index 9eac0c4..d420cc0 100644 --- a/Solver/Crafty/Simulator.cs +++ b/Solver/Crafty/Simulator.cs @@ -2,11 +2,10 @@ using Craftimizer.Simulator; using Craftimizer.Simulator.Actions; using System.Diagnostics.Contracts; using System.Runtime.CompilerServices; -using Sim = Craftimizer.Simulator.Simulator; namespace Craftimizer.Solver.Crafty; -public sealed class Simulator : Sim +public sealed class Simulator : SimulatorNoRandom { private readonly int maxStepCount; @@ -21,10 +20,6 @@ public sealed class Simulator : Sim this.maxStepCount = maxStepCount; } - // Disable randomization - public override bool RollSuccessRaw(float successRate) => successRate == 1; - public override void StepCondition() { } - public static readonly ActionType[] AcceptedActions = new[] { ActionType.TrainedFinesse,