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