Logic for shooting explained in comments. Observations correctly saved through iterations
the problem is the fucking evaluation function of Evaluator (evaluate) Fuck that