Right now, Condition is stored separately from the crafting state. This was done because the solver doesn't always want to randomly roll a condition, and since StateDelta doesn't hold an Rng (for good reason) and we want to use it with +, it's not great to reroll condition there.
However, this makes the effects of certain specialist actions... wonky, and we're going to want to allow specialist stuff for expert recipes.
Really, the easiest fix is that the semantics of the time_passed field aren't right. This is the difference between FinalAppraisal and CarefulObservation, and currently we essentially treat them the same making this a bug in semantics. While encapsulating the condition in the CraftingState may or may not be the right things to do, ultimately the most important thing to do is to fix the semantics of gen_succ by addings something like a separate condition_cycle: bool field.
Right now,
Condition
is stored separately from the crafting state. This was done because the solver doesn't always want to randomly roll a condition, and sinceStateDelta
doesn't hold anRng
(for good reason) and we want to use it with+
, it's not great to reroll condition there.However, this makes the effects of certain specialist actions... wonky, and we're going to want to allow specialist stuff for expert recipes.
Really, the easiest fix is that the semantics of the
time_passed
field aren't right. This is the difference betweenFinalAppraisal
andCarefulObservation
, and currently we essentially treat them the same making this a bug in semantics. While encapsulating the condition in theCraftingState
may or may not be the right things to do, ultimately the most important thing to do is to fix the semantics ofgen_succ
by addings something like a separatecondition_cycle: bool
field.