diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 58e82733abe..b069ff31eb7 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -161,10 +161,13 @@ #define ui_bot_pull "EAST-2:26,SOUTH:7" //Ghosts -#define ui_ghost_jumptomob "SOUTH:6,CENTER-2:24" -#define ui_ghost_orbit "SOUTH:6,CENTER-1:24" -#define ui_ghost_reenter_corpse "SOUTH:6,CENTER:24" -#define ui_ghost_teleport "SOUTH:6,CENTER+1:24" +#define ui_ghost_jumptomob "SOUTH:6,CENTER-2" +#define ui_ghost_orbit "SOUTH:6,CENTER-1" +#define ui_ghost_reenter_corpse "SOUTH:6,CENTER" +#define ui_ghost_teleport "SOUTH:6,CENTER+1" +#define ui_ghost_respawn_list "SOUTH:6,CENTER+2" +#define ui_ghost_respawn_mob "SOUTH:6+1,CENTER+2" +#define ui_ghost_respawn_pai "SOUTH:6+2,CENTER+2" //HUD styles. Please ensure HUD_VERSIONS is the same as the maximum index. Index order defines how they are cycled in F12. #define HUD_STYLE_STANDARD 1 diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index 600c1105e8e..a291120fb85 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -40,6 +40,52 @@ var/mob/dead/observer/G = usr G.dead_tele() +/obj/screen/ghost/respawn_list + name = "Ghost spawns" + icon = 'icons/mob/screen_midnight.dmi' + icon_state = "template" + +/obj/screen/ghost/respawn_list/Initialize(mapload) + . = ..() + update_hidden_state() + +/obj/screen/ghost/respawn_list/Click() + var/client/C = hud.mymob.client + hud.inventory_shown = !hud.inventory_shown + if(hud.inventory_shown) + C.screen += hud.toggleable_inventory + else + C.screen -= hud.toggleable_inventory + update_hidden_state() + +/obj/screen/ghost/respawn_list/proc/update_hidden_state() + var/matrix/M = matrix(transform) + M.Turn(-90) + + overlays.Cut() + var/image/img = image('icons/mob/actions/actions.dmi', src, (hud && hud.inventory_shown) ? "hide" : "show") + img.transform = M + overlays += img + +/obj/screen/ghost/respawn_mob + name = "Mob spawners" + icon_state = "mob_spawner" + +/obj/screen/ghost/respawn_mob/Click() + var/mob/dead/observer/G = usr + G.open_spawners_menu() + +/obj/screen/ghost/respawn_pai + name = "Configure pAI" + icon_state = "pai" + +/obj/screen/ghost/respawn_pai/Click() + var/mob/dead/observer/G = usr + GLOB.paiController.recruitWindow(G) + +/datum/hud/ghost + inventory_shown = FALSE + /datum/hud/ghost/New(mob/owner) ..() var/obj/screen/using @@ -59,6 +105,22 @@ using = new /obj/screen/ghost/teleport() using.screen_loc = ui_ghost_teleport static_inventory += using + static_inventory += using + + using = new /obj/screen/ghost/respawn_list() + using.screen_loc = ui_ghost_respawn_list + static_inventory += using + + using = new /obj/screen/ghost/respawn_mob() + using.screen_loc = ui_ghost_respawn_mob + toggleable_inventory += using + + using = new /obj/screen/ghost/respawn_pai() + using.screen_loc = ui_ghost_respawn_pai + toggleable_inventory += using + + for(var/obj/screen/S in (static_inventory + toggleable_inventory)) + S.hud = src /datum/hud/ghost/show_hud() mymob.client.screen = list() diff --git a/icons/mob/screen_ghost.dmi b/icons/mob/screen_ghost.dmi index 6519d00aa97..e0e85a6939c 100644 Binary files a/icons/mob/screen_ghost.dmi and b/icons/mob/screen_ghost.dmi differ