Change success rates to integers
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
|
||||
namespace Craftimizer.Simulator.Actions;
|
||||
@@ -9,7 +10,7 @@ public abstract class BaseAction(
|
||||
int durabilityCost = 10, bool increasesStepCount = true,
|
||||
int defaultCPCost = 0,
|
||||
int defaultEfficiency = 0,
|
||||
float defaultSuccessRate = 1)
|
||||
int defaultSuccessRate = 100)
|
||||
{
|
||||
// Non-instanced properties
|
||||
|
||||
@@ -31,16 +32,19 @@ public abstract class BaseAction(
|
||||
// Instanced properties
|
||||
public readonly int DefaultCPCost = defaultCPCost;
|
||||
public readonly int DefaultEfficiency = defaultEfficiency;
|
||||
public readonly float DefaultSuccessRate = defaultSuccessRate;
|
||||
public readonly int DefaultSuccessRate = defaultSuccessRate; // out of 100
|
||||
|
||||
// Instanced properties
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public virtual int CPCost(Simulator s) =>
|
||||
DefaultCPCost;
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public virtual int Efficiency(Simulator s) =>
|
||||
DefaultEfficiency;
|
||||
|
||||
public virtual float SuccessRate(Simulator s) =>
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public virtual int SuccessRate(Simulator s) =>
|
||||
DefaultSuccessRate;
|
||||
|
||||
// Return true if it can be in the action pool now or in the future
|
||||
@@ -116,8 +120,8 @@ public abstract class BaseAction(
|
||||
}
|
||||
if (!IncreasesStepCount)
|
||||
builder.AppendLine($"Does Not Increase Step Count");
|
||||
if (success != 1)
|
||||
builder.AppendLine($"{s.CalculateSuccessRate(success) * 100:##}% Success Rate");
|
||||
if (success != 100)
|
||||
builder.AppendLine($"{s.CalculateSuccessRate(success)}% Success Rate");
|
||||
return builder.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ internal abstract class BaseBuffAction(
|
||||
int durabilityCost = 0, bool increasesStepCount = true,
|
||||
int defaultCPCost = 0,
|
||||
int defaultEfficiency = 0,
|
||||
float defaultSuccessRate = 1) :
|
||||
int defaultSuccessRate = 100) :
|
||||
BaseAction(
|
||||
category, level, actionId,
|
||||
macroWaitTime,
|
||||
|
||||
@@ -5,9 +5,9 @@ internal sealed class FocusedSynthesis() : BaseAction(
|
||||
increasesProgress: true,
|
||||
defaultCPCost: 5,
|
||||
defaultEfficiency: 200,
|
||||
defaultSuccessRate: 0.50f
|
||||
defaultSuccessRate: 50
|
||||
)
|
||||
{
|
||||
public override float SuccessRate(Simulator s) =>
|
||||
s.ActionStates.Observed ? 1.00f : 0.50f;
|
||||
public override int SuccessRate(Simulator s) =>
|
||||
s.ActionStates.Observed ? 100 : 50;
|
||||
}
|
||||
|
||||
@@ -5,9 +5,9 @@ internal sealed class FocusedTouch() : BaseAction(
|
||||
increasesQuality: true,
|
||||
defaultCPCost: 18,
|
||||
defaultEfficiency: 150,
|
||||
defaultSuccessRate: 0.50f
|
||||
defaultSuccessRate: 50
|
||||
)
|
||||
{
|
||||
public override float SuccessRate(Simulator s) =>
|
||||
s.ActionStates.Observed ? 1.00f : 0.50f;
|
||||
public override int SuccessRate(Simulator s) =>
|
||||
s.ActionStates.Observed ? 100 : 50;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ internal sealed class HastyTouch() : BaseAction(
|
||||
increasesQuality: true,
|
||||
defaultCPCost: 0,
|
||||
defaultEfficiency: 100,
|
||||
defaultSuccessRate: 0.60f
|
||||
defaultSuccessRate: 60
|
||||
)
|
||||
{
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ internal sealed class RapidSynthesis() : BaseAction(
|
||||
increasesProgress: true,
|
||||
defaultCPCost: 0,
|
||||
defaultEfficiency: 250,
|
||||
defaultSuccessRate: 0.50f
|
||||
defaultSuccessRate: 50
|
||||
)
|
||||
{
|
||||
// Rapid Synthesis Mastery Trait
|
||||
|
||||
@@ -124,10 +124,10 @@ public class Simulator
|
||||
public bool HasEffect(EffectType effect) =>
|
||||
ActiveEffects.HasEffect(effect);
|
||||
|
||||
public virtual bool RollSuccessRaw(float successRate) =>
|
||||
successRate >= Input.Random.NextSingle();
|
||||
public virtual bool RollSuccessRaw(int successRate) =>
|
||||
successRate >= Input.Random.NextSingle() * 100f;
|
||||
|
||||
public bool RollSuccess(float successRate) =>
|
||||
public bool RollSuccess(int successRate) =>
|
||||
RollSuccessRaw(CalculateSuccessRate(successRate));
|
||||
|
||||
public void IncreaseStepCount()
|
||||
@@ -189,11 +189,12 @@ public class Simulator
|
||||
CP = Input.Stats.CP;
|
||||
}
|
||||
|
||||
public float CalculateSuccessRate(float successRate)
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public int CalculateSuccessRate(int successRate)
|
||||
{
|
||||
if (Condition == Condition.Centered)
|
||||
successRate += 0.25f;
|
||||
return Math.Clamp(successRate, 0, 1);
|
||||
successRate += 25;
|
||||
return Math.Clamp(successRate, 0, 100);
|
||||
}
|
||||
|
||||
public int CalculateDurabilityCost(int amount)
|
||||
|
||||
@@ -2,6 +2,6 @@ namespace Craftimizer.Simulator;
|
||||
|
||||
public class SimulatorNoRandom : Simulator
|
||||
{
|
||||
public sealed override bool RollSuccessRaw(float successRate) => successRate == 1;
|
||||
public sealed override bool RollSuccessRaw(int successRate) => successRate == 100;
|
||||
public sealed override Condition GetNextRandomCondition() => Condition.Normal;
|
||||
}
|
||||
|
||||
+2
-2
@@ -38,7 +38,7 @@ internal sealed class Simulator : SimulatorNoRandom
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
private bool CouldUseAction(BaseAction baseAction)
|
||||
{
|
||||
if (CalculateSuccessRate(baseAction.SuccessRate(this)) != 1)
|
||||
if (CalculateSuccessRate(baseAction.SuccessRate(this)) != 100)
|
||||
return false;
|
||||
|
||||
// don't allow quality moves at max quality
|
||||
@@ -56,7 +56,7 @@ internal sealed class Simulator : SimulatorNoRandom
|
||||
private bool ShouldUseAction(ActionType action, BaseAction baseAction)
|
||||
#pragma warning restore MA0051 // Method is too long
|
||||
{
|
||||
if (CalculateSuccessRate(baseAction.SuccessRate(this)) != 1)
|
||||
if (CalculateSuccessRate(baseAction.SuccessRate(this)) != 100)
|
||||
return false;
|
||||
|
||||
// don't allow quality moves at max quality
|
||||
|
||||
Reference in New Issue
Block a user