/datum/orbit_menu var/mob/dead/observer/owner /datum/orbit_menu/New(mob/dead/observer/new_owner) if(!istype(new_owner)) qdel(src) owner = new_owner /datum/orbit_menu/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.observer_state) if (!ui) ui = new(user, src, ui_key, "Orbit", "Orbit", 350, 700, master_ui, state) ui.open() /datum/orbit_menu/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) if (..()) return if (action == "orbit") var/list/pois = getpois(skip_mindless = 1) var/atom/movable/poi = pois[params["name"]] if (poi != null) owner.ManualFollow(poi) ui.close() /datum/orbit_menu/ui_data(mob/user) var/list/data = list() var/list/alive = list() var/list/antagonists = list() var/list/dead = list() var/list/ghosts = list() var/list/misc = list() var/list/npcs = list() var/list/pois = getpois(skip_mindless = 1) for (var/name in pois) var/list/serialized = list() serialized["name"] = name var/poi = pois[name] var/mob/M = poi if (istype(M)) if (isobserver(M)) ghosts += list(serialized) else if (M.stat == DEAD) dead += list(serialized) else if (M.mind == null) npcs += list(serialized) else var/number_of_orbiters = M.orbiters?.orbiters?.len if (number_of_orbiters) serialized["orbiters"] = number_of_orbiters var/datum/mind/mind = M.mind var/was_antagonist = FALSE for (var/_A in mind.antag_datums) var/datum/antagonist/A = _A if (A.show_to_ghosts) was_antagonist = TRUE serialized["antag"] = A.name antagonists += list(serialized) break if (!was_antagonist) alive += list(serialized) else misc += list(serialized) data["alive"] = alive data["antagonists"] = antagonists data["dead"] = dead data["ghosts"] = ghosts data["misc"] = misc data["npcs"] = npcs return data