まぁ普通は自分で書いたんだから規定通りに動くに決まってんだろって思うじゃん?
デバッガで追ってみて初めてまさかそんなことが起きるのかよって事が起きるからバグるんだよ

https://d.ku★ku.lu/pgkt7ukuu (ngワードになるので★入れたけど、ホント面倒くさいな)
インターフェイスを使ったシンプルなfsmを適当に作ってみた
赤は1、青は2、緑は3しかキーが効かないようになってる
メソッドがないから他の動作はしない

敵のAIに使って例えば、patrol、serch、chase、attack、escapeのように
stateを分解してしまえば、最初からstateで既定した動作以外しなくなる
複雑怪奇なif文を書くより遥かにスッキリするよ