Checks observers against hidden's position, and returns true only on the call
that first brings one within range - the discoverer's move should be spent on that
call, and that call alone, never on every later check while the unit stays in range.
Already-detected units always return false here; read isDetected for their
ongoing state instead.
hides the unit again - a smoke bomb, breaking line of sight for long enough, a new floor
Tracks one hidden unit's detection state. Detection is one-way and sticky: once found, a unit stays found until something explicitly re-hides it (
reset), the same way a real ambush does not un-happen because the enemy that spotted you wandered off again.Example