Files
Aurora.3/code/modules/games/gamehelm.dm
Wowzewow (Wezzy) 6166877f67 CNY Bugfixes (#20433)
Fixes #20421
Fixes #18097
Fixes #19989
Fixes #19950
Fixes #18933
Fixes #18060
Fixes #17723
Fixes #17497
Fixes #17113
Fixes #14905
Fixes #20202
Fixes #20439

---------

Signed-off-by: Wowzewow (Wezzy) <42310821+alsoandanswer@users.noreply.github.com>
Co-authored-by: hazelrat <83198434+hazelrat@users.noreply.github.com>
2025-02-03 07:35:28 +00:00

161 lines
5.5 KiB
Plaintext

/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 = WEIGHT_CLASS_SMALL
update_icon_on_init = TRUE
var/case_color = "white"
var/open = FALSE
var/playing_game = FALSE
var/current_screen_state = null
var/static/list/game_type_to_state = list(
"anime game" = "screen_anime",
"shooter game" = "screen_shooter",
"strategy game" = "screen_strategy",
"piloting game" = "screen_pilot",
"horror game" = "screen_dread",
"simulation game" = "screen_emotive",
"exploration game" = "screen_exploration",
"music service" = "screen_music",
"video service" = "screen_video",
"toggle device mute" = null,
"turn off the system" = null
)
var/static/list/non_game_states = list(
"screen_music",
"screen_video"
)
var/static/list/game_actions = list(
"hits all the buttons at the same time" = "hit all the buttons at the same time",
"rapidly hits a bunch of buttons" = "rapidly hit a bunch of buttons",
"tilts the %NAME% to the right" = "tilt the %NAME% to the right",
"tilts the %NAME% to the left" = "tilt the %NAME% to the left",
"swipes across the %NAME%'s screen" = "swipe across the %NAME%'s screen"
)
var/next_action_time = 0
var/action_time_cooldown = 10 SECONDS
var/muted = FALSE
/obj/item/gamehelm/update_icon()
ClearOverlays()
if(open)
icon_state = "open_[case_color]"
AddOverlays("buttons_open")
else
icon_state = "closed_[case_color]"
AddOverlays("buttons_closed")
if(current_screen_state)
AddOverlays(current_screen_state)
/obj/item/gamehelm/process()
if(world.time < next_action_time)
return
next_action_time = world.time + action_time_cooldown
if(playing_game)
if(!muted)
playsound(loc, /singleton/sound_category/quick_arcade, 20)
if(ismob(loc))
var/picked_action = pick(game_actions)
var/self_action = game_actions[picked_action]
picked_action = replacetext(picked_action, "%NAME%", name)
self_action = replacetext(self_action, "%NAME%", name)
loc.visible_message("<b>[loc]</b> [picked_action]!", SPAN_NOTICE("You [self_action]!"), range = 3)
else
if(!muted)
playsound(loc, /singleton/sound_category/computerbeep_sound, 20)
/obj/item/gamehelm/AltClick(mob/user)
if(use_check(user))
return
toggle_state(user)
/obj/item/gamehelm/proc/toggle_state(mob/user)
open = !open
update_icon()
if(open)
user.visible_message("<b>[user]</b> flips open \the [src] with a satisfying snap!", SPAN_NOTICE("You flip open \the [src] with a satisfying snap!"), range = 3)
else
user.visible_message("<b>[user]</b> flips \the [src] shut with a satisfying snap!", SPAN_NOTICE("You flip \the [src] shut with a satisfying snap!"), range = 3)
set_game(null)
playsound(user, 'sound/weapons/blade_open.ogg', 30)
/obj/item/gamehelm/proc/set_game(var/screen_type)
current_screen_state = screen_type
playing_game = !(current_screen_state in non_game_states)
update_icon()
if(current_screen_state)
START_PROCESSING(SSprocessing, src)
else
STOP_PROCESSING(SSprocessing, src)
/obj/item/gamehelm/attack_self(mob/user)
if(open)
var/choice = tgui_input_list(user, "What do you want to play?", "Game Helm", game_type_to_state)
if(choice == "turn off the system")
user.visible_message("<b>[user]</b> hits the power button on \the [src] and it quickly shuts down.", SPAN_NOTICE("You hit the power button on \the [src] and it quickly shuts down."), range = 3)
if(!muted)
playsound(loc, 'sound/machines/softbeep.ogg', 20)
set_game(null)
return
if(choice == "toggle device mute")
muted = !muted
to_chat(user, SPAN_NOTICE("You hit the mute button, [muted ? "disabling" : "enabling"] the device audio."))
if(!muted)
playsound(loc, 'sound/machines/softbeep.ogg', 20)
return
if(current_screen_state)
user.visible_message("<b>[user]</b> taps on a few buttons and \the [src] swaps to a different application!", SPAN_NOTICE("You tap on a few buttons and \the [src] swaps to a different application!"), range = 3)
else
user.visible_message("<b>[user]</b> taps on a few buttons and \the [src] springs to life!", SPAN_NOTICE("You tap on a few buttons and \the [src] springs to life!"), range = 3)
if(!muted)
playsound(loc, /singleton/sound_category/boops, 25)
set_game(game_type_to_state[choice])
return ..()
/obj/item/gamehelm/Destroy()
STOP_PROCESSING(SSprocessing, src)
return ..()
//The colours!
/obj/item/gamehelm/blue
case_color = "blue"
/obj/item/gamehelm/red
case_color = "red"
/obj/item/gamehelm/black
case_color = "black"
/obj/item/gamehelm/pink
case_color = "pink"
/obj/item/gamehelm/purple
case_color = "purple"
/obj/item/gamehelm/brown
case_color = "brown"
/obj/item/gamehelm/green
case_color = "green"
/obj/item/gamehelm/yellow
case_color = "yellow"
/obj/item/gamehelm/turquoise
case_color = "turquoise"
/obj/item/gamehelm/weathered
case_color = "weathered"