From df2fc68b511dc75fc1701292752520e0cbe6307e Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Sun, 17 May 2020 17:49:51 -0400 Subject: [PATCH] Adds holoposter ads --- code/game/machinery/holoposter.dm | 108 ++++++++++++++++++ .../security levels/security levels.dm | 5 + icons/obj/holoposter_vr.dmi | Bin 0 -> 6025 bytes vorestation.dme | 1 + 4 files changed, 114 insertions(+) create mode 100644 code/game/machinery/holoposter.dm create mode 100644 icons/obj/holoposter_vr.dmi diff --git a/code/game/machinery/holoposter.dm b/code/game/machinery/holoposter.dm new file mode 100644 index 0000000000..030edf16c2 --- /dev/null +++ b/code/game/machinery/holoposter.dm @@ -0,0 +1,108 @@ +GLOBAL_LIST_EMPTY(holoposters) +/obj/machinery/holoposter + name = "Holographic Poster" + desc = "A wall-mounted holographic projector displaying advertisements by all manner of factions. How much do they pay to advertise here?" + icon = 'icons/obj/holoposter_vr.dmi' + icon_state = "off" + anchored = 1 + use_power = 1 + idle_power_usage = 80 + power_channel = ENVIRON + var/icon_forced = FALSE + var/examine_addon = "It appears to be powered off." + var/mytimer + + var/list/postertypes = list( + "hephaestus" = list(LIGHT_COLOR_CYAN, "Hephaestus Aeronautics, a subsidiary of Hephaestus Industries. Known to make the best - if pricy - atmospheric to orbit shuttles and gliders for the consumer market."), + "aether" = list(LIGHT_COLOR_CYAN, "Aether Atmospherics, one of the lesser-known TSCs. They're ubiquitious in the Periphery - the very air you're breathing was probably sold and delivered by them."), + "moreau" = list(LIGHT_COLOR_ORANGE, "Children of Moreau. The hologram is a call to action by the local Moreau sect. 'Terraform, Prosper, and Be Sustainable, children!'"), + "cybersun" = list(LIGHT_COLOR_GREEN, "Cybersun Industries. A complex diagram without labels, showing the inner workings of a backup implant sold by Cybersun. 'The highest quality, for an affordable price!' says the tagline."), + "veymed" = list(LIGHT_COLOR_GREEN, "Vey-Med. This is an advertisement for a local clinic a few systems away. The tagline reads 'The mark of a truly civilized civilization is rewriting what evolution could not'."), + "grayson" = list(LIGHT_COLOR_ORANGE, "Grayson Manufactories Ltd. An advertisement for a sale from Grayson, including up to 50% off on lathe parts. Truly, a delight for DIY tinkerers out there."), + "ares" = list(LIGHT_COLOR_PINK, "Friends of Ares. Who managed to slip this poster into the rotation? A local charity set up by the Ares Confederation to help workers unionize or found their own colonies. 'Donate today!'"), + "moebius" = list(LIGHT_COLOR_PURPLE, "Moebius. One of the few companies worth merit beyond their local bubble staffed completely by synthetics. 'For synths, by synths.'") + ) + +/obj/machinery/holoposter/Initialize() + . = ..() + set_rand_sprite() + GLOB.holoposters += src + mytimer = addtimer(CALLBACK(src, .proc/set_rand_sprite), 30 MINUTES + rand(0, 5 MINUTES), TIMER_STOPPABLE | TIMER_LOOP) + +/obj/machinery/holoposter/Destroy() + GLOB.holoposters -= src + return ..() + +/obj/machinery/holoposter/process() + return PROCESS_KILL + +/obj/machinery/holoposter/examine(mob/user, infix, suffix) + . = ..() + . += examine_addon + +/obj/machinery/holoposter/update_icon() + if(stat & NOPOWER) + icon_state = "off" + examine_addon = "It appears to be powered off." + set_light(0) + return + var/new_color = LIGHT_COLOR_HALOGEN + if(stat & BROKEN) + icon_state = "glitch" + examine_addon = "It appears to be malfunctioning." + new_color = "#6A6C71" + else + if((z in using_map.station_levels) && global.security_level) // 0 is fine, everything higher is alert levels + icon_state = "attention" + examine_addon = "It warns you to remain calm and contact your supervisor as soon as possible." + new_color = "#AA7039" + else if(icon_state in postertypes) + var/list/settings = postertypes[icon_state] + new_color = settings[1] + examine_addon = settings[2] + + set_light(l_range = 2, l_power = 2, l_color = new_color) + +/obj/machinery/holoposter/proc/set_rand_sprite() + if(icon_forced && mytimer) + deltimer(mytimer) + return + icon_state = pick(postertypes) + update_icon() + +/obj/machinery/holoposter/attackby(obj/item/W, mob/user) + src.add_fingerprint(user) + if(stat & (NOPOWER)) + return + if (W.is_multitool()) + playsound(user.loc, 'sound/items/penclick.ogg', 60, 1) + icon_state = input("Available Posters", "Holographic Poster") as null|anything in postertypes + "random" + if(!Adjacent(user)) + return + if(icon_state == "random") + stat &= ~BROKEN + icon_forced = FALSE + if(!mytimer) + mytimer = addtimer(CALLBACK(src, .proc/set_rand_sprite), 30 MINUTES + rand(0, 5 MINUTES), TIMER_STOPPABLE | TIMER_LOOP) + set_rand_sprite() + return + icon_forced = TRUE + if(mytimer) + deltimer(mytimer) + stat &= ~BROKEN + update_icon() + return + +/obj/machinery/holoposter/attack_ai(mob/user as mob) + return attack_hand(user) + +/obj/machinery/holoposter/power_change() + var/wasUnpowered = stat & NOPOWER + ..() + if(wasUnpowered != (stat & NOPOWER)) + update_icon() + +/obj/machinery/holoposter/emp_act() + stat |= BROKEN + update_icon() + diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm index 4929b62bd6..26619446fb 100644 --- a/code/modules/security levels/security levels.dm +++ b/code/modules/security levels/security levels.dm @@ -75,6 +75,11 @@ for(var/obj/machinery/status_display/FA in machines) if(FA.z in using_map.contact_levels) FA.on_alert_changed(newlevel) + //VOREStation Add + for(var/hp in GLOB.holoposters) + var/obj/machinery/holoposter/HP = hp + HP.update_icon() + //VOREStation Add End if(level >= SEC_LEVEL_RED) atc.reroute_traffic(yes = 1) // Tell them fuck off we're busy. diff --git a/icons/obj/holoposter_vr.dmi b/icons/obj/holoposter_vr.dmi new file mode 100644 index 0000000000000000000000000000000000000000..e05c77b3096e45568f4abdd28531f84666b20576 GIT binary patch literal 6025 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 M=$L4iYC44f51b)TtpET3 literal 0 HcmV?d00001 diff --git a/vorestation.dme b/vorestation.dme index 95d30d450f..3dcff27013 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -778,6 +778,7 @@ #include "code\game\machinery\floorlayer.dm" #include "code\game\machinery\frame.dm" #include "code\game\machinery\hologram.dm" +#include "code\game\machinery\holoposter.dm" #include "code\game\machinery\holosign.dm" #include "code\game\machinery\igniter.dm" #include "code\game\machinery\iv_drip.dm"