open Position open Global open Node let rec process kill_me id kill local_kill = await kill(k) in if List.mem id k then emit local_kill else run (kill_me id kill local_kill) let process preemptible_node id pos_init move make_msg kill = signal local_kill in do run (node id pos_init move make_msg) until local_kill done || run (kill_me id kill local_kill) let rec process add new_node start = await one new_node (pos) in run (add new_node start) || await immediate start; let pos = { x = if pos.x > 0 then min pos.x max_x else 0; y = if pos.y > 0 then min pos.y max_y else 0; } in run (node (get_new_id()) pos (Move.random_waypoint (max_x/4) pos) Msg.make)