Use fixed point arithmetic for progress/quality

This commit is contained in:
Asriel Camora
2023-11-04 11:43:34 -07:00
parent 9ca83bfe23
commit d08fedb247
23 changed files with 44 additions and 42 deletions
+1 -1
View File
@@ -9,5 +9,5 @@ internal sealed class AdvancedTouch : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => s.ActionStates.TouchComboIdx == 2 ? 18 : 46;
public override float Efficiency(Simulator s) => 1.50f;
public override int Efficiency(Simulator s) => 150;
}
+1 -1
View File
@@ -22,7 +22,7 @@ public abstract class BaseAction
// Instanced properties
public abstract int CPCost(Simulator s);
public virtual float Efficiency(Simulator s) => 0f;
public virtual int Efficiency(Simulator s) => 0;
public virtual float SuccessRate(Simulator s) => 1f;
public virtual bool CanUse(Simulator s) =>
+1 -1
View File
@@ -10,5 +10,5 @@ internal sealed class BasicSynthesis : BaseAction
public override int CPCost(Simulator s) => 0;
// Basic Synthesis Mastery Trait
public override float Efficiency(Simulator s) => s.Input.Stats.Level >= 31 ? 1.20f : 1.00f;
public override int Efficiency(Simulator s) => s.Input.Stats.Level >= 31 ? 120 : 100;
}
+1 -1
View File
@@ -9,5 +9,5 @@ internal sealed class BasicTouch : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => 18;
public override float Efficiency(Simulator s) => 1.00f;
public override int Efficiency(Simulator s) => 100;
}
+1 -1
View File
@@ -9,7 +9,7 @@ internal sealed class ByregotsBlessing : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => 24;
public override float Efficiency(Simulator s) => 1.00f + (0.20f * s.GetEffectStrength(EffectType.InnerQuiet));
public override int Efficiency(Simulator s) => 100 + (20 * s.GetEffectStrength(EffectType.InnerQuiet));
public override bool CanUse(Simulator s) => s.HasEffect(EffectType.InnerQuiet) && base.CanUse(s);
+1 -1
View File
@@ -10,5 +10,5 @@ internal sealed class CarefulSynthesis : BaseAction
public override int CPCost(Simulator s) => 7;
// Careful Synthesis Mastery Trait
public override float Efficiency(Simulator s) => s.Input.Stats.Level >= 82 ? 1.80f : 1.50f;
public override int Efficiency(Simulator s) => s.Input.Stats.Level >= 82 ? 180 : 150;
}
+1 -1
View File
@@ -10,5 +10,5 @@ internal sealed class DelicateSynthesis : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => 32;
public override float Efficiency(Simulator s) => 1.00f;
public override int Efficiency(Simulator s) => 100;
}
+1 -1
View File
@@ -9,6 +9,6 @@ internal sealed class FocusedSynthesis : BaseAction
public override bool IncreasesProgress => true;
public override int CPCost(Simulator s) => 5;
public override float Efficiency(Simulator s) => 2.00f;
public override int Efficiency(Simulator s) => 200;
public override float SuccessRate(Simulator s) => s.ActionStates.Observed ? 1.00f : 0.50f;
}
+1 -1
View File
@@ -9,6 +9,6 @@ internal sealed class FocusedTouch : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => 18;
public override float Efficiency(Simulator s) => 1.50f;
public override int Efficiency(Simulator s) => 150;
public override float SuccessRate(Simulator s) => s.ActionStates.Observed ? 1.00f : 0.50f;
}
+2 -2
View File
@@ -10,10 +10,10 @@ internal sealed class Groundwork : BaseAction
public override int DurabilityCost => 20;
public override int CPCost(Simulator s) => 18;
public override float Efficiency(Simulator s)
public override int Efficiency(Simulator s)
{
// Groundwork Mastery Trait
var ret = s.Input.Stats.Level >= 86 ? 3.60f : 3.00f;
var ret = s.Input.Stats.Level >= 86 ? 360 : 300;
return s.Durability < s.CalculateDurabilityCost(DurabilityCost) ? ret / 2 : ret;
}
}
+1 -1
View File
@@ -9,6 +9,6 @@ internal sealed class HastyTouch : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => 0;
public override float Efficiency(Simulator s) => 1.00f;
public override int Efficiency(Simulator s) => 100;
public override float SuccessRate(Simulator s) => 0.60f;
}
+1 -1
View File
@@ -9,7 +9,7 @@ internal sealed class IntensiveSynthesis : BaseAction
public override bool IncreasesProgress => true;
public override int CPCost(Simulator s) => 6;
public override float Efficiency(Simulator s) => 4.00f;
public override int Efficiency(Simulator s) => 400;
public override bool CanUse(Simulator s) =>
(s.Condition == Condition.Good || s.Condition == Condition.Excellent || s.HasEffect(EffectType.HeartAndSoul))
+1 -1
View File
@@ -9,7 +9,7 @@ internal sealed class MuscleMemory : BaseAction
public override bool IncreasesProgress => true;
public override int CPCost(Simulator s) => 6;
public override float Efficiency(Simulator s) => 3.00f;
public override int Efficiency(Simulator s) => 300;
public override bool CanUse(Simulator s) => s.IsFirstStep && base.CanUse(s);
+1 -1
View File
@@ -9,7 +9,7 @@ internal sealed class PreciseTouch : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => 18;
public override float Efficiency(Simulator s) => 1.50f;
public override int Efficiency(Simulator s) => 150;
public override bool CanUse(Simulator s) =>
(s.Condition == Condition.Good || s.Condition == Condition.Excellent || s.HasEffect(EffectType.HeartAndSoul))
+1 -1
View File
@@ -10,7 +10,7 @@ internal sealed class PreparatoryTouch : BaseAction
public override int DurabilityCost => 20;
public override int CPCost(Simulator s) => 40;
public override float Efficiency(Simulator s) => 2.00f;
public override int Efficiency(Simulator s) => 200;
public override void UseSuccess(Simulator s)
{
+1 -1
View File
@@ -10,7 +10,7 @@ internal sealed class PrudentSynthesis : BaseAction
public override int DurabilityCost => base.DurabilityCost / 2;
public override int CPCost(Simulator s) => 18;
public override float Efficiency(Simulator s) => 1.80f;
public override int Efficiency(Simulator s) => 180;
public override bool CanUse(Simulator s) =>
!(s.HasEffect(EffectType.WasteNot) || s.HasEffect(EffectType.WasteNot2))
+1 -1
View File
@@ -10,7 +10,7 @@ internal sealed class PrudentTouch : BaseAction
public override int DurabilityCost => base.DurabilityCost / 2;
public override int CPCost(Simulator s) => 25;
public override float Efficiency(Simulator s) => 1.00f;
public override int Efficiency(Simulator s) => 100;
public override bool CanUse(Simulator s) =>
!(s.HasEffect(EffectType.WasteNot) || s.HasEffect(EffectType.WasteNot2))
+1 -1
View File
@@ -10,6 +10,6 @@ internal sealed class RapidSynthesis : BaseAction
public override int CPCost(Simulator s) => 0;
// Rapid Synthesis Mastery Trait
public override float Efficiency(Simulator s) => s.Input.Stats.Level >= 63 ? 5.00f : 2.50f;
public override int Efficiency(Simulator s) => s.Input.Stats.Level >= 63 ? 500 : 250;
public override float SuccessRate(Simulator s) => 0.50f;
}
+1 -1
View File
@@ -9,7 +9,7 @@ internal sealed class Reflect : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => 6;
public override float Efficiency(Simulator s) => 1.00f;
public override int Efficiency(Simulator s) => 100;
public override bool CanUse(Simulator s) => s.IsFirstStep && base.CanUse(s);
+1 -1
View File
@@ -9,5 +9,5 @@ internal sealed class StandardTouch : BaseAction
public override bool IncreasesQuality => true;
public override int CPCost(Simulator s) => s.ActionStates.TouchComboIdx == 1 ? 18 : 32;
public override float Efficiency(Simulator s) => 1.25f;
public override int Efficiency(Simulator s) => 125;
}
+1 -1
View File
@@ -10,7 +10,7 @@ internal sealed class TrainedFinesse : BaseAction
public override int DurabilityCost => 0;
public override int CPCost(Simulator s) => 32;
public override float Efficiency(Simulator s) => 1.00f;
public override int Efficiency(Simulator s) => 100;
public override bool CanUse(Simulator s) =>
s.GetEffectStrength(EffectType.InnerQuiet) == 10