Let's redefine "Base movement" to be any movement that relies only on data fields (including default movement), since these are constant per Spot. Knowing what is based only on data might be tricky, but we could always make a separate field for base movements. The Compiler script would then be able to produce one "default" movement time between two connected spots, which should aid #71 a bit, simplify the MovementState struct, and reduce the sizes of the relevant match statements.
Let's redefine "Base movement" to be any movement that relies only on data fields (including default movement), since these are constant per Spot. Knowing what is based only on data might be tricky, but we could always make a separate field for base movements. The Compiler script would then be able to produce one "default" movement time between two connected spots, which should aid #71 a bit, simplify the MovementState struct, and reduce the sizes of the relevant match statements.