From 99ca21e4ddb5b078944e2d09f9b59006757ff4e6 Mon Sep 17 00:00:00 2001 From: Tyrone Trevorrow <819705+tyrone-sudeium@users.noreply.github.com> Date: Wed, 11 Feb 2026 13:31:31 +1100 Subject: [PATCH] Support Robust condition from 7.41 --- Craftimizer/SimulatorUtils.cs | 1 + Simulator/Condition.cs | 2 ++ Simulator/Simulator.cs | 4 +++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/Craftimizer/SimulatorUtils.cs b/Craftimizer/SimulatorUtils.cs index 4e02f6f..9287f8b 100644 --- a/Craftimizer/SimulatorUtils.cs +++ b/Craftimizer/SimulatorUtils.cs @@ -219,6 +219,7 @@ private static (uint Name, uint Description) AddonIds(this Condition me) => Condition.Malleable => (13455, 14208), Condition.Primed => (13454, 14207), Condition.GoodOmen => (14214, 14215), + Condition.Robust => (14218, 14219), _ => (226, 14200) // Unknown }; diff --git a/Simulator/Condition.cs b/Simulator/Condition.cs index 0f9e6d7..b37d4a8 100644 --- a/Simulator/Condition.cs +++ b/Simulator/Condition.cs @@ -13,6 +13,7 @@ public enum Condition : byte Malleable, Primed, GoodOmen, + Robust, } public static class ConditionUtils @@ -31,6 +32,7 @@ private enum ConditionMask : ushort Malleable = 1 << 7, // 0x0080 Primed = 1 << 8, // 0x0100 GoodOmen = 1 << 9, // 0x0200 + Robust = 1 << 10, // 0x0400 } public static Condition[] GetPossibleConditions(ushort conditionsFlag) => diff --git a/Simulator/Simulator.cs b/Simulator/Simulator.cs index 62856fe..b5b43f8 100644 --- a/Simulator/Simulator.cs +++ b/Simulator/Simulator.cs @@ -144,6 +144,7 @@ private static float GetConditionChance(SimulationInput input, Condition conditi Condition.Malleable => 0.13f, Condition.Primed => 0.15f, Condition.GoodOmen => 0.12f, // https://github.com/ffxiv-teamcraft/simulator/issues/77 + Condition.Robust => 0.10f, // https://github.com/ffxiv-teamcraft/simulator/commit/4b2949f935450d54324cba84f9214fcb945ecbcb _ => 0.00f }; @@ -166,6 +167,7 @@ public void StepCondition() Condition.Good => Condition.Normal, Condition.Excellent => Condition.Poor, Condition.GoodOmen => Condition.Good, + Condition.Robust => Condition.Sturdy, _ => GetNextRandomCondition() }; } @@ -214,7 +216,7 @@ public int CalculateDurabilityCost(int amount, bool dryRun = true) var amt = (double)amount; if (HasEffect(EffectType.WasteNot) || HasEffect(EffectType.WasteNot2)) amt /= 2; - if (Condition == Condition.Sturdy) + if (Condition == Condition.Sturdy || Condition == Condition.Robust) amt /= 2; return (int)Math.Ceiling(amt); }