From 9816a02981b3aaba6c4c652b864bc9f6b858cab0 Mon Sep 17 00:00:00 2001 From: BurpleBineapple <67706292+BurpleBineapple@users.noreply.github.com> Date: Sat, 17 Dec 2022 18:37:52 -0500 Subject: [PATCH] Adds a handheld video game console (#15323) --- aurorastation.dme | 1 + .../loadout/loadout_general.dm | 22 ++++ code/modules/games/gamehelm.dm | 110 ++++++++++++++++++ html/changelogs/PurplePineapple-PR-15323.yml | 42 +++++++ icons/obj/gamehelm.dmi | Bin 0 -> 3970 bytes 5 files changed, 175 insertions(+) create mode 100644 code/modules/games/gamehelm.dm create mode 100644 html/changelogs/PurplePineapple-PR-15323.yml create mode 100644 icons/obj/gamehelm.dmi diff --git a/aurorastation.dme b/aurorastation.dme index 5afb580da57..f19f00418f7 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1850,6 +1850,7 @@ #include "code\modules\games\boardgame.dm" #include "code\modules\games\cardemon.dm" #include "code\modules\games\cards.dm" +#include "code\modules\games\gamehelm.dm" #include "code\modules\games\spaceball_cards.dm" #include "code\modules\games\tarot.dm" #include "code\modules\ghostroles\spawner\base.dm" diff --git a/code/modules/client/preference_setup/loadout/loadout_general.dm b/code/modules/client/preference_setup/loadout/loadout_general.dm index b687f0149da..7ce0c86c667 100644 --- a/code/modules/client/preference_setup/loadout/loadout_general.dm +++ b/code/modules/client/preference_setup/loadout/loadout_general.dm @@ -39,6 +39,28 @@ display_name = "spaceball booster pack" path = /obj/item/pack/spaceball +/datum/gear/gamehelm + display_name = "handheld video game console" + description = "A selection of various Game-Helm consoles." + cost = 1 + path = /obj/item/gamehelm + +/datum/gear/gamehelm/New() + ..() + var/list/gamehelm = list() + gamehelm["red game-helm"] = /obj/item/gamehelm/red + gamehelm["blue game-helm"] = /obj/item/gamehelm/blue + gamehelm["green game-helm"] = /obj/item/gamehelm/green + gamehelm["yellow game-helm"] = /obj/item/gamehelm/yellow + gamehelm["pink game-helm"] = /obj/item/gamehelm/pink + gamehelm["black game-helm"] = /obj/item/gamehelm/black + gamehelm["weathered game-helm"] = /obj/item/gamehelm/weathered + gamehelm["brown game-helm"] = /obj/item/gamehelm/brown + gamehelm["turquoise game-helm"] = /obj/item/gamehelm/turquoise + gamehelm["white game-helm"] = /obj/item/gamehelm + gamehelm["purple game-helm"] = /obj/item/gamehelm/purple + gear_tweaks += new /datum/gear_tweak/path(gamehelm) + /datum/gear/flask display_name = "flask" path = /obj/item/reagent_containers/food/drinks/flask/barflask diff --git a/code/modules/games/gamehelm.dm b/code/modules/games/gamehelm.dm new file mode 100644 index 00000000000..0ca60a2b95a --- /dev/null +++ b/code/modules/games/gamehelm.dm @@ -0,0 +1,110 @@ +/obj/item/gamehelm + name = "\improper InUs Game-Helm" + desc = "The latest device in any self respecting gamer's arsenal, brought to you by the Ingi Usang Entertainment Corporation. Remember to hide it under your desk if the captain walks by." + desc_extended = "The Game-Helm was designed by a subsidiary of NanoTrasen, Ingi Usang Entertainment Co., with games \ + being able to be purchased from an online marketplace hosted by InUs. Thousands of popular and obscure titles are available on the \ + console. Besides being the perfect present, it's also capable of video streaming and sharing files over authorized \ + connections. A quick and easy way to upload your latest montage to the extranet." + desc_info = "You can ALT-click the game-helm to open it up and turn it on. Click on the open device to play." + icon = 'icons/obj/gamehelm.dmi' + w_class = ITEMSIZE_SMALL + var/open = "open_white" + var/closed = "closed_white" + +/obj/item/gamehelm/Initialize() + . = ..() + icon_state = closed + add_overlay("buttons_closed") + +/obj/item/gamehelm/AltClick() + if(use_check(usr)) + return + if(icon_state == open) //Toggle the lid, turn it off. + icon_state = closed + cut_overlays() + add_overlay("buttons_closed") + else if(icon_state == closed) //Otherwise open it up + icon_state = open + cut_overlays() + add_overlay("buttons_open") + +/obj/item/gamehelm/attack_self(mob/user) + if(icon_state == open) + var/choice = input("What do you want to play?") as null|anything in list("anime game", "shooter game", "simulation game", "strategy game", "piloting game", "horror game", "exploration game", "video service", "music service", "turn off the system") + cut_overlays() + add_overlay("buttons_open") + if(choice != "turn off the system") + to_chat(user, "You start the application on your Game-Helm and begin playing.") + else + to_chat(user, "You turn the Game-Helm off.") + if(choice == "anime game") + add_overlay("screen_anime") + if(choice == "shooter game") + add_overlay("screen_shooter") + if(choice == "strategy game") + add_overlay("screen_strategy") + if(choice == "piloting game") + add_overlay("screen_pilot") + if(choice == "horror game") + add_overlay("screen_dread") + if(choice == "simulation game") + add_overlay("screen_emotive") + if(choice == "exploration game") + add_overlay("screen_exploration") + if(choice == "music service") + add_overlay("screen_music") + if(choice == "video service") + add_overlay("screen_video") + else + ..() + +//The colours! +/obj/item/gamehelm/blue + open = "open_blue" + closed = "closed_blue" + icon_state = "closed_blue" + +/obj/item/gamehelm/red + open = "open_red" + closed = "closed_red" + icon_state = "closed_red" + +/obj/item/gamehelm/black + open = "open_black" + closed = "closed_black" + icon_state = "closed_black" + +/obj/item/gamehelm/pink + open = "open_pink" + closed = "closed_pink" + icon_state = "closed_pink" + +/obj/item/gamehelm/purple + open = "open_purple" + closed = "closed_purple" + icon_state = "closed_purple" + +/obj/item/gamehelm/brown + open = "open_brown" + closed = "closed_brown" + icon_state = "closed_brown" + +/obj/item/gamehelm/green + open = "open_green" + closed = "closed_green" + icon_state = "closed_green" + +/obj/item/gamehelm/yellow + open = "open_yellow" + closed = "closed_yellow" + icon_state = "closed_yellow" + +/obj/item/gamehelm/turquoise + open = "open_turquoise" + closed = "closed_turquoise" + icon_state = "closed_turquoise" + +/obj/item/gamehelm/weathered + open = "open_weathered" + closed = "closed_weathered" + icon_state = "closed_weathered" diff --git a/html/changelogs/PurplePineapple-PR-15323.yml b/html/changelogs/PurplePineapple-PR-15323.yml new file mode 100644 index 00000000000..4b111f3fe5c --- /dev/null +++ b/html/changelogs/PurplePineapple-PR-15323.yml @@ -0,0 +1,42 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +# balance +# admin +# backend +# security +# refactor +################################# + +# Your name. +author: PurplePineapple + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added a handheld video game device in the loadout selection called the GameHelm." + - imageadd: "Icons for the GameHelm device. Icon credit goes to Azlan#0852 and PinkestKitten#8019." diff --git a/icons/obj/gamehelm.dmi b/icons/obj/gamehelm.dmi new file mode 100644 index 0000000000000000000000000000000000000000..46fb88062c48afe2d80a967a483141e3f220e6a1 GIT binary patch literal 3970 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 BcZvW2 literal 0 HcmV?d00001