Standardize more action code

This commit is contained in:
Asriel Camora
2023-06-14 10:35:43 -07:00
parent 20172c2290
commit 0ac51b2002
32 changed files with 52 additions and 71 deletions
@@ -10,7 +10,5 @@ internal class AdvancedTouch : BaseAction
public override int CPCost => Simulation.GetPreviousAction() is StandardTouch && Simulation.GetPreviousAction(2) is BasicTouch ? 18 : 46; public override int CPCost => Simulation.GetPreviousAction() is StandardTouch && Simulation.GetPreviousAction(2) is BasicTouch ? 18 : 46;
public override float Efficiency => 1.50f; public override float Efficiency => 1.50f;
public override bool IncreasesQuality => true;
public override void UseSuccess() =>
Simulation.IncreaseQuality(Efficiency);
} }
+14 -2
View File
@@ -25,9 +25,12 @@ public abstract class BaseAction
public abstract int ActionId { get; } public abstract int ActionId { get; }
public abstract int CPCost { get; } public abstract int CPCost { get; }
public abstract float Efficiency { get; } public virtual float Efficiency => 0f;
public virtual bool IncreasesProgress => false;
public virtual bool IncreasesQuality => false;
public virtual float SuccessRate => 1f; public virtual float SuccessRate => 1f;
public virtual int DurabilityCost => 10; public virtual int DurabilityCost => 10;
public virtual bool IncreasesStepCount => true;
private (CraftAction? CraftAction, Action? Action) GetActionRow(ClassJob classJob) private (CraftAction? CraftAction, Action? Action) GetActionRow(ClassJob classJob)
{ {
@@ -95,5 +98,14 @@ public abstract class BaseAction
UseSuccess(); UseSuccess();
} }
public abstract void UseSuccess(); public virtual void UseSuccess()
{
if (Efficiency != 0f)
{
if (IncreasesProgress)
Simulation.IncreaseProgress(Efficiency);
if (IncreasesQuality)
Simulation.IncreaseQuality(Efficiency);
}
}
} }
@@ -11,7 +11,5 @@ internal class BasicSynthesis : BaseAction
public override int CPCost => 0; public override int CPCost => 0;
// Basic Synthesis Mastery Trait // Basic Synthesis Mastery Trait
public override float Efficiency => Simulation.Stats.Level >= 31 ? 1.20f : 1.00f; public override float Efficiency => Simulation.Stats.Level >= 31 ? 1.20f : 1.00f;
public override bool IncreasesProgress => true;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
+1 -3
View File
@@ -10,7 +10,5 @@ internal class BasicTouch : BaseAction
public override int CPCost => 18; public override int CPCost => 18;
public override float Efficiency => 1.00f; public override float Efficiency => 1.00f;
public override bool IncreasesQuality => true;
public override void UseSuccess() =>
Simulation.IncreaseQuality(Efficiency);
} }
@@ -9,13 +9,14 @@ internal class ByregotsBlessing : BaseAction
public override int ActionId => 100339; public override int ActionId => 100339;
public override int CPCost => 24; public override int CPCost => 24;
public override float Efficiency => 1.00f + 0.20f * (Simulation.GetEffect(Effect.InnerQuiet)?.Strength ?? 0); public override float Efficiency => 1.00f + (0.20f * (Simulation.GetEffect(Effect.InnerQuiet)?.Strength ?? 0));
public override bool IncreasesQuality => true;
public override bool CanUse => Simulation.HasEffect(Effect.InnerQuiet) && base.CanUse; public override bool CanUse => Simulation.HasEffect(Effect.InnerQuiet) && base.CanUse;
public override void UseSuccess() public override void UseSuccess()
{ {
Simulation.IncreaseQuality(Efficiency); base.UseSuccess();
Simulation.RemoveEffect(Effect.InnerQuiet); Simulation.RemoveEffect(Effect.InnerQuiet);
} }
} }
@@ -11,7 +11,5 @@ internal class CarefulSynthesis : BaseAction
public override int CPCost => 7; public override int CPCost => 7;
// Careful Synthesis Mastery Trait // Careful Synthesis Mastery Trait
public override float Efficiency => Simulation.Stats.Level >= 82 ? 1.80f : 1.50f; public override float Efficiency => Simulation.Stats.Level >= 82 ? 1.80f : 1.50f;
public override bool IncreasesProgress => true;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
@@ -10,10 +10,6 @@ internal class DelicateSynthesis : BaseAction
public override int CPCost => 32; public override int CPCost => 32;
public override float Efficiency => 1.00f; public override float Efficiency => 1.00f;
public override bool IncreasesProgress => true;
public override void UseSuccess() public override bool IncreasesQuality => true;
{
Simulation.IncreaseQuality(Efficiency);
Simulation.IncreaseProgress(Efficiency);
}
} }
@@ -9,8 +9,8 @@ internal class FinalAppraisal : BaseAction
public override int ActionId => 19012; public override int ActionId => 19012;
public override int CPCost => 1; public override int CPCost => 1;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override bool IncreasesStepCount => false;
public override void UseSuccess() => public override void UseSuccess() =>
Simulation.AddEffect(Effect.FinalAppraisal, 5); Simulation.AddEffect(Effect.FinalAppraisal, 5);
@@ -10,8 +10,6 @@ internal class FocusedSynthesis : BaseAction
public override int CPCost => 5; public override int CPCost => 5;
public override float Efficiency => 2.00f; public override float Efficiency => 2.00f;
public override bool IncreasesProgress => true;
public override float SuccessRate => Simulation.GetPreviousAction() is Observe ? 1.00f : 0.50f; public override float SuccessRate => Simulation.GetPreviousAction() is Observe ? 1.00f : 0.50f;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
@@ -10,8 +10,6 @@ internal class FocusedTouch : BaseAction
public override int CPCost => 18; public override int CPCost => 18;
public override float Efficiency => 1.50f; public override float Efficiency => 1.50f;
public override bool IncreasesQuality => true;
public override float SuccessRate => Simulation.GetPreviousAction() is Observe ? 1.00f : 0.50f; public override float SuccessRate => Simulation.GetPreviousAction() is Observe ? 1.00f : 0.50f;
public override void UseSuccess() =>
Simulation.IncreaseQuality(Efficiency);
} }
@@ -9,7 +9,6 @@ internal class GreatStrides : BaseAction
public override int ActionId => 260; public override int ActionId => 260;
public override int CPCost => 32; public override int CPCost => 32;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() => public override void UseSuccess() =>
+9 -4
View File
@@ -10,9 +10,14 @@ internal class Groundwork : BaseAction
public override int CPCost => 18; public override int CPCost => 18;
// Groundwork Mastery Trait // Groundwork Mastery Trait
public override float Efficiency => Simulation.Stats.Level >= 86 ? 3.60f : 3.00f; public override float Efficiency
{
get
{
var ret = Simulation.Stats.Level >= 86 ? 3.60f : 3.00f;
return Simulation.Durability < DurabilityCost ? ret / 2 : ret;
}
}
public override bool IncreasesProgress => true;
public override int DurabilityCost => 20; public override int DurabilityCost => 20;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
+1 -3
View File
@@ -10,8 +10,6 @@ internal class HastyTouch : BaseAction
public override int CPCost => 0; public override int CPCost => 0;
public override float Efficiency => 1.00f; public override float Efficiency => 1.00f;
public override bool IncreasesQuality => true;
public override float SuccessRate => 0.60f; public override float SuccessRate => 0.60f;
public override void UseSuccess() =>
Simulation.IncreaseQuality(Efficiency);
} }
@@ -9,7 +9,6 @@ internal class Innovation : BaseAction
public override int ActionId => 19004; public override int ActionId => 19004;
public override int CPCost => 18; public override int CPCost => 18;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() => public override void UseSuccess() =>
@@ -10,11 +10,9 @@ internal class IntensiveSynthesis : BaseAction
public override int CPCost => 6; public override int CPCost => 6;
public override float Efficiency => 4.00f; public override float Efficiency => 4.00f;
public override bool IncreasesProgress => true;
public override bool CanUse => public override bool CanUse =>
(Simulation.Condition == Condition.Good || Simulation.Condition == Condition.Excellent) (Simulation.Condition == Condition.Good || Simulation.Condition == Condition.Excellent)
&& base.CanUse; && base.CanUse;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
@@ -9,7 +9,6 @@ internal class Manipulation : BaseAction
public override int ActionId => 4574; public override int ActionId => 4574;
public override int CPCost => 96; public override int CPCost => 96;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() => public override void UseSuccess() =>
@@ -9,7 +9,6 @@ internal class MastersMend : BaseAction
public override int ActionId => 100003; public override int ActionId => 100003;
public override int CPCost => 88; public override int CPCost => 88;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() => public override void UseSuccess() =>
@@ -10,12 +10,13 @@ internal class MuscleMemory : BaseAction
public override int CPCost => 6; public override int CPCost => 6;
public override float Efficiency => 3.00f; public override float Efficiency => 3.00f;
public override bool IncreasesProgress => true;
public override bool CanUse => Simulation.IsFirstStep && base.CanUse; public override bool CanUse => Simulation.IsFirstStep && base.CanUse;
public override void UseSuccess() public override void UseSuccess()
{ {
Simulation.IncreaseProgress(Efficiency); base.UseSuccess();
Simulation.AddEffect(Effect.MuscleMemory, 5); Simulation.AddEffect(Effect.MuscleMemory, 5);
} }
} }
-3
View File
@@ -9,8 +9,5 @@ internal class Observe : BaseAction
public override int ActionId => 100010; public override int ActionId => 100010;
public override int CPCost => 7; public override int CPCost => 7;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() { }
} }
@@ -10,6 +10,7 @@ internal class PreciseTouch : BaseAction
public override int CPCost => 18; public override int CPCost => 18;
public override float Efficiency => 1.50f; public override float Efficiency => 1.50f;
public override bool IncreasesQuality => true;
public override bool CanUse => public override bool CanUse =>
(Simulation.Condition == Condition.Good || Simulation.Condition == Condition.Excellent) (Simulation.Condition == Condition.Good || Simulation.Condition == Condition.Excellent)
@@ -17,7 +18,7 @@ internal class PreciseTouch : BaseAction
public override void UseSuccess() public override void UseSuccess()
{ {
Simulation.IncreaseQuality(Efficiency); base.UseSuccess();
Simulation.StrengthenEffect(Effect.InnerQuiet); Simulation.StrengthenEffect(Effect.InnerQuiet);
} }
} }
@@ -10,11 +10,12 @@ internal class PreparatoryTouch : BaseAction
public override int CPCost => 40; public override int CPCost => 40;
public override float Efficiency => 2.00f; public override float Efficiency => 2.00f;
public override bool IncreasesQuality => true;
public override int DurabilityCost => 20; public override int DurabilityCost => 20;
public override void UseSuccess() public override void UseSuccess()
{ {
Simulation.IncreaseQuality(Efficiency); base.UseSuccess();
Simulation.StrengthenEffect(Effect.InnerQuiet); Simulation.StrengthenEffect(Effect.InnerQuiet);
} }
} }
@@ -10,12 +10,10 @@ internal class PrudentSynthesis : BaseAction
public override int CPCost => 18; public override int CPCost => 18;
public override float Efficiency => 1.80f; public override float Efficiency => 1.80f;
public override bool IncreasesProgress => true;
public override int DurabilityCost => base.DurabilityCost / 2; public override int DurabilityCost => base.DurabilityCost / 2;
public override bool CanUse => public override bool CanUse =>
!(Simulation.HasEffect(Effect.WasteNot) || Simulation.HasEffect(Effect.WasteNot2)) !(Simulation.HasEffect(Effect.WasteNot) || Simulation.HasEffect(Effect.WasteNot2))
&& base.CanUse; && base.CanUse;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
@@ -10,12 +10,10 @@ internal class PrudentTouch : BaseAction
public override int CPCost => 25; public override int CPCost => 25;
public override float Efficiency => 1.00f; public override float Efficiency => 1.00f;
public override bool IncreasesQuality => true;
public override int DurabilityCost => base.DurabilityCost / 2; public override int DurabilityCost => base.DurabilityCost / 2;
public override bool CanUse => public override bool CanUse =>
!(Simulation.HasEffect(Effect.WasteNot) || Simulation.HasEffect(Effect.WasteNot2)) !(Simulation.HasEffect(Effect.WasteNot) || Simulation.HasEffect(Effect.WasteNot2))
&& base.CanUse; && base.CanUse;
public override void UseSuccess() =>
Simulation.IncreaseQuality(Efficiency);
} }
@@ -11,8 +11,6 @@ internal class RapidSynthesis : BaseAction
public override int CPCost => 0; public override int CPCost => 0;
// Rapid Synthesis Mastery Trait // Rapid Synthesis Mastery Trait
public override float Efficiency => Simulation.Stats.Level >= 63 ? 5.00f : 2.50f; public override float Efficiency => Simulation.Stats.Level >= 63 ? 5.00f : 2.50f;
public override bool IncreasesProgress => true;
public override float SuccessRate => 0.50f; public override float SuccessRate => 0.50f;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
+2 -1
View File
@@ -10,12 +10,13 @@ internal class Reflect : BaseAction
public override int CPCost => 6; public override int CPCost => 6;
public override float Efficiency => 1.00f; public override float Efficiency => 1.00f;
public override bool IncreasesQuality => true;
public override bool CanUse => Simulation.IsFirstStep && base.CanUse; public override bool CanUse => Simulation.IsFirstStep && base.CanUse;
public override void UseSuccess() public override void UseSuccess()
{ {
Simulation.IncreaseQuality(Efficiency); base.UseSuccess();
Simulation.StrengthenEffect(Effect.InnerQuiet); Simulation.StrengthenEffect(Effect.InnerQuiet);
} }
} }
@@ -10,7 +10,5 @@ internal class StandardTouch : BaseAction
public override int CPCost => Simulation.GetPreviousAction() is BasicTouch ? 18 : 32; public override int CPCost => Simulation.GetPreviousAction() is BasicTouch ? 18 : 32;
public override float Efficiency => 1.25f; public override float Efficiency => 1.25f;
public override bool IncreasesQuality => true;
public override void UseSuccess() =>
Simulation.IncreaseQuality(Efficiency);
} }
+2 -2
View File
@@ -9,10 +9,10 @@ internal class TrainedEye : BaseAction
public override int ActionId => 100283; public override int ActionId => 100283;
public override int CPCost => 250; public override int CPCost => 250;
public override float Efficiency => 0f; public override bool IncreasesQuality => true;
public override bool CanUse => Simulation.IsFirstStep && base.CanUse; public override bool CanUse => Simulation.IsFirstStep && base.CanUse;
public override void UseSuccess() => public override void UseSuccess() =>
Simulation.IncreaseQuality(float.PositiveInfinity); Simulation.IncreaseQualityRaw(Simulation.MaxQuality - Simulation.Quality);
} }
@@ -10,12 +10,10 @@ internal class TrainedFinesse : BaseAction
public override int CPCost => 32; public override int CPCost => 32;
public override float Efficiency => 1.00f; public override float Efficiency => 1.00f;
public override bool IncreasesQuality => true;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override bool CanUse => public override bool CanUse =>
(Simulation.GetEffect(Effect.InnerQuiet)?.Strength ?? 0) == 10 (Simulation.GetEffect(Effect.InnerQuiet)?.Strength ?? 0) == 10
&& base.CanUse; && base.CanUse;
public override void UseSuccess() =>
Simulation.IncreaseProgress(Efficiency);
} }
@@ -9,7 +9,6 @@ internal class TricksOfTheTrade : BaseAction
public override int ActionId => 100371; public override int ActionId => 100371;
public override int CPCost => 0; public override int CPCost => 0;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override bool CanUse => public override bool CanUse =>
@@ -9,7 +9,6 @@ internal class Veneration : BaseAction
public override int ActionId => 19297; public override int ActionId => 19297;
public override int CPCost => 18; public override int CPCost => 18;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() => public override void UseSuccess() =>
@@ -9,7 +9,6 @@ internal class WasteNot : BaseAction
public override int ActionId => 4631; public override int ActionId => 4631;
public override int CPCost => 56; public override int CPCost => 56;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() public override void UseSuccess()
@@ -9,7 +9,6 @@ internal class WasteNot2 : BaseAction
public override int ActionId => 4639; public override int ActionId => 4639;
public override int CPCost => 98; public override int CPCost => 98;
public override float Efficiency => 0f;
public override int DurabilityCost => 0; public override int DurabilityCost => 0;
public override void UseSuccess() public override void UseSuccess()