mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 12:56:10 +01:00
8ebd7c9ad5
**Overview:** The first huge fuckoff mapping PR for giving the Horizon enough extra space to be able to comfortably map on it for the duration before NBT2 and not be super cramped (extends aft by 6 turfs). Includes a SECOND vault to heist at the back of the ship and a lot of maint area people can repurpose. Notably, this also removes the Xenobio Hazardous Containment room and the Medical Emergency Storage room (contents of the latter have been moved). Otherwise, y'all got more ship. **Map Images (OUTDATED NOW):** <img width="2453" height="868" alt="Screenshot 2025-10-16 141649" src="https://github.com/user-attachments/assets/be9a540d-af92-46b4-b59f-e298204a678a" /> <img width="2450" height="940" alt="Screenshot 2025-10-16 141702" src="https://github.com/user-attachments/assets/b96f3f3e-dd4b-4457-9c5c-1f09f8bb7a00" /> <img width="2452" height="895" alt="Screenshot 2025-10-16 141714" src="https://github.com/user-attachments/assets/9a16e55d-8386-46d9-a3d3-d4e5a0ff6ec0" /> **Misc Features:** <img width="1069" height="685" alt="Screenshot 2025-10-16 141727" src="https://github.com/user-attachments/assets/89c14f85-f476-4f91-bd02-7c36f36a4418" /> <img width="983" height="825" alt="Screenshot 2025-10-16 141736" src="https://github.com/user-attachments/assets/6b20da20-982c-4ec1-b252-3507f1211e94" /> <img width="1382" height="951" alt="Screenshot 2025-10-16 141743" src="https://github.com/user-attachments/assets/fdfd683d-33a4-47e3-9df8-dec1f9286598" /> <img width="2405" height="863" alt="Screenshot 2025-10-16 141803" src="https://github.com/user-attachments/assets/c539c4bd-4a8f-4326-a30b-5a1d09eca26b" /> **changes:** - qol: "Hugely expands the Horizon's maints and adjusts/expands much of the aft of the ship." - rscadd: "Adds a new Vault to Horizon (Deck 3 aft, behind the Gym)." - rscdel: "Removes Xenobiology Hazardous Specimens compartment." - rscdel: "Removes Medical Emergency Storage compartment." - spellcheck: "Replaces a few mentions of 'room' with 'compartment.'" - spellcheck: "Renames the Bridge Break Room to Bridge Wardroom." - spellcheck: "Renames the Kitchen to the Galley." - spellcheck: "Renames the Dining Hall to the Mess Hall." - spellcheck: "Renames each Washroom to the Head."
165 lines
4.9 KiB
Plaintext
165 lines
4.9 KiB
Plaintext
/obj/item/holomenu
|
|
name = "holo-menu"
|
|
desc = "A hologram projector, this one has been set up to display text above itself."
|
|
icon = 'icons/obj/holomenu.dmi'
|
|
icon_state = "holomenu"
|
|
|
|
layer = ABOVE_OBJ_LAYER
|
|
|
|
light_color = LIGHT_COLOR_CYAN
|
|
light_range = 1.4
|
|
|
|
req_one_access = list(ACCESS_BAR, ACCESS_GALLEY, ACCESS_HYDROPONICS)
|
|
|
|
var/rave_mode = FALSE
|
|
var/menu_text = ""
|
|
var/border_on = FALSE
|
|
|
|
var/image/holo_lights
|
|
var/image/holo_text
|
|
var/image/holo_border
|
|
|
|
/obj/item/holomenu/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "If you have Bar, Galley, or Hydroponics access, you can swipe your ID on this to anchor it in place."
|
|
. += "You can enter text manually by clicking it with an empty hand, or you can use a paper on the [src] to transfer its written contents."
|
|
. += "ALT-click the [src] to toggle its border."
|
|
. += "CTRL-click the [src] to toggle RAVE MODE."
|
|
|
|
/obj/item/holomenu/Initialize()
|
|
. = ..()
|
|
holo_lights = image(icon, null, "holomenu-lights")
|
|
holo_text = image(icon, null, "holomenu-text")
|
|
holo_border = image(icon, null, "holomenu-border")
|
|
|
|
/obj/item/holomenu/Destroy()
|
|
STOP_PROCESSING(SSfast_process, src)
|
|
return ..()
|
|
|
|
/obj/item/holomenu/process()
|
|
update_icon()
|
|
|
|
/obj/item/holomenu/update_icon()
|
|
ClearOverlays()
|
|
if(anchored)
|
|
set_light(2)
|
|
if(rave_mode)
|
|
var/color_rotate = color_rotation(rand(-80, 80))
|
|
holo_lights.color = color_rotate
|
|
holo_text.color = color_rotate
|
|
holo_border.color = color_rotate
|
|
else
|
|
holo_lights.color = null
|
|
holo_text.color = null
|
|
holo_border.color = null
|
|
AddOverlays(holo_lights)
|
|
if(length(menu_text))
|
|
AddOverlays(holo_text)
|
|
if(border_on)
|
|
AddOverlays(holo_border)
|
|
else
|
|
set_light(0)
|
|
|
|
/obj/item/holomenu/attackby(obj/item/attacking_item, mob/user)
|
|
var/obj/item/card/id/ID = attacking_item.GetID()
|
|
if(istype(ID))
|
|
if(check_access(ID))
|
|
anchored = !anchored
|
|
to_chat(user, SPAN_NOTICE("You [anchored ? "" : "un"]anchor \the [src]."))
|
|
update_icon()
|
|
else
|
|
to_chat(user, SPAN_WARNING("Access denied."))
|
|
return TRUE
|
|
if(istype(attacking_item, /obj/item/paper) && allowed(user))
|
|
var/obj/item/paper/P = attacking_item
|
|
to_chat(user, SPAN_NOTICE("You scan \the [attacking_item.name] into \the [name]."))
|
|
menu_text = P.info
|
|
menu_text = replacetext(menu_text, "color=black>", "color=white>")
|
|
update_icon()
|
|
return TRUE
|
|
return ..()
|
|
|
|
/obj/item/holomenu/examine(mob/user, distance, is_adjacent, infix, suffix, show_extended)
|
|
if(anchored && length(menu_text))
|
|
interact(user)
|
|
return TRUE
|
|
else
|
|
. = ..()
|
|
|
|
/obj/item/holomenu/attack_hand(mob/user)
|
|
if(anchored)
|
|
if(allowed(user))
|
|
var/new_text = sanitize(input(user, "Enter new text for the holo-menu to display.", "Holo-Menu Display", html2pencode(menu_text, TRUE)) as null|message)
|
|
if(!isnull(new_text))
|
|
menu_text = pencode2html(new_text)
|
|
update_icon()
|
|
else
|
|
interact(user)
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/holomenu/interact(mob/user)
|
|
var/datum/browser/holomenu_win = new(user, "holomenu", "Holo-Display", 450, 500)
|
|
holomenu_win.set_content(menu_text)
|
|
holomenu_win.open()
|
|
|
|
/obj/item/holomenu/AltClick(mob/user)
|
|
if(Adjacent(user))
|
|
if(allowed(user))
|
|
border_on = !border_on
|
|
to_chat(user, SPAN_NOTICE("You toggle \the [src]'s border to be [border_on ? "on" : "off"]."))
|
|
update_icon()
|
|
else
|
|
to_chat(user, SPAN_WARNING("Access denied."))
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/holomenu/CtrlClick(mob/user)
|
|
if(Adjacent(user))
|
|
if(allowed(user))
|
|
rave_mode = !rave_mode
|
|
to_chat(user, SPAN_NOTICE("You toggle \the [src]'s rave mode [rave_mode ? "on" : "off"]."))
|
|
update_icon()
|
|
if(rave_mode)
|
|
START_PROCESSING(SSfast_process, src)
|
|
light_color = LIGHT_COLOR_HALOGEN // a more generic lighting
|
|
else
|
|
STOP_PROCESSING(SSfast_process, src)
|
|
light_color = initial(light_color)
|
|
else
|
|
to_chat(user, SPAN_WARNING("Access denied."))
|
|
return
|
|
return ..()
|
|
|
|
/obj/item/holomenu/holodeck
|
|
name = "holodeck status projector"
|
|
desc = "A hologram projector, this one has been set up to display text."
|
|
icon = 'icons/obj/holomenu_holodeck.dmi'
|
|
anchored = 1
|
|
layer = 4
|
|
|
|
req_one_access = list()
|
|
|
|
/obj/item/holomenu/holodeck/mechanics_hints(mob/user, distance, is_adjacent)
|
|
. += ..()
|
|
. += "Note that holodecks do not support RAVE MODE."
|
|
|
|
/obj/item/holomenu/holodeck/attack_hand(mob/user)
|
|
var/new_text = sanitize(input(user, "Enter new text for the hologram to display.", "Hologram Display", html2pencode(menu_text, TRUE)) as null|message)
|
|
if(!isnull(new_text))
|
|
menu_text = pencode2html(new_text)
|
|
update_icon()
|
|
|
|
/obj/item/holomenu/holodeck/attackby(obj/item/attacking_item, mob/user)
|
|
var/obj/item/card/id/ID = attacking_item.GetID()
|
|
if(istype(ID))
|
|
return TRUE
|
|
if(istype(attacking_item, /obj/item/paper))
|
|
var/obj/item/paper/P = attacking_item
|
|
to_chat(user, SPAN_NOTICE("You scan \the [attacking_item.name] into \the [name]."))
|
|
menu_text = P.info
|
|
menu_text = replacetext(menu_text, "color=black>", "color=white>")
|
|
update_icon()
|
|
return TRUE
|
|
return ..()
|