Issue 1: When your laws change in the middle of stating laws, things can get weird due to this being a proc that sleeps and may end stating early or some other undesired behaviour.
Issue 2: Issue's 1 behaviour can also runtime.
This caches all relevant vars when a law state starts so that it can continue uninterrupted and as expected.
This seemed the simplest solution and was a concept suggested by a couple of other maintainers. My implementation may be utterly terrible though, so please review.