I've been working on the offensive subs submerge/withdraw step and discovered that my idea of having a unified
valid()check that works for both
In the offensive subs submerge/withdraw step,
executeshouldn't run if there is a destroyer present. But
getNamesis called at the beginning of the round and there might be a destroyer present that will die before
executeis called. If
getNamesdoesn't return the submerge/withdraw step, then an error will occur.
I was actually able to trigger this error from the master branch when
Submersible Subsis false,
Sub Retreat Before Battleis false, and a destroyer is present at the beginning of the round but then is destroyed during the round. If
Submersible Subsis true and
Sub Retreat Before Battleis false, then this error doesn't occur because it doesn't check for destroyers.
I'm going to be removing
valid()as a public method from the
executewill do their own internal valid check. This check might be the same or different, depending on the step.