Files
Bubberstation/code/datums/actions/items/toggles.dm
T
GhomandGitHub a1366fc905 Night Vision Goggles update (#84594)
## About The Pull Request
This is a reboot of #84550 but with way less unbearable: mesons are off
the table and I've made the night vision tonalities lighter now, while
also improving the darkness cutoffs of some of them. Btw, you can also
turn night vision googles on/off now. Each pair of departmental night
vision goggles now comes with their own tint to boot.

As always, this doesn't affect nukies and ninjas. They're almost
garaunteed to keep their googles equipped and on at all time, so it
would honestly adulterate the overall experience a little.

Now, for some pictures...

In the dark, **top** row is **old**, **bottom** row is **new**. from
left to right: security, science, standard/meson, diagnostic, health:

![dank](https://github.com/tgstation/tgstation/assets/42542238/4eb0dc3d-5b3a-47b1-ad65-d3da138a9213)

In the light: security, science, no goggles, standard/meson, diagnostic,
health:

![lite](https://github.com/tgstation/tgstation/assets/42542238/6e56262f-8ed6-4ea9-bab7-2110bc589d65)

The screenshots were taken from varedited goggles on the servers because
it's bit faster than booting up a local server, plus I had to finetune a
few things.

## Why It's Good For The Game
So, I kinda wanted to give a bit of screen colors to goggles that was
not some sort of "optional, by default turned off" kind of crap nobody
cares about, however my previous PR was met with a lot of criticism,
which made me rethink how to do it. I honestly don't want it to be a
burden, but I do want to make them a bit fancier tho.

Also the the medical NVs (and perhaps sec NVs) were a bit crappier than
the rest.

## Changelog

🆑
add: Night vision goggles now subtly tint your screen.
add: You can turn your night vision goggles off. Doing so removes the
tint and the eye protection malus.
/🆑
2024-07-07 15:17:37 -04:00

152 lines
4.4 KiB
Plaintext

/datum/action/item_action/toggle
/datum/action/item_action/toggle/New(Target)
..()
var/obj/item/item_target = target
name = "Toggle [item_target.name]"
/datum/action/item_action/toggle_light
name = "Toggle Light"
/datum/action/item_action/toggle_computer_light
name = "Toggle Flashlight"
/datum/action/item_action/toggle_hood
name = "Toggle Hood"
/datum/action/item_action/toggle_firemode
name = "Toggle Firemode"
/datum/action/item_action/toggle_gunlight
name = "Toggle Gunlight"
/datum/action/item_action/toggle_mode
name = "Toggle Mode"
/datum/action/item_action/toggle_barrier_spread
name = "Toggle Barrier Spread"
/datum/action/item_action/toggle_paddles
name = "Toggle Paddles"
/datum/action/item_action/toggle_mister
name = "Toggle Mister"
/datum/action/item_action/toggle_helmet_light
name = "Toggle Helmet Light"
/datum/action/item_action/toggle_welding_screen
name = "Toggle Welding Screen"
/datum/action/item_action/toggle_spacesuit
name = "Toggle Suit Thermal Regulator"
button_icon = 'icons/mob/actions/actions_spacesuit.dmi'
button_icon_state = "thermal_off"
/datum/action/item_action/toggle_spacesuit/apply_button_icon(atom/movable/screen/movable/action_button/button, force)
var/obj/item/clothing/suit/space/suit = target
if(istype(suit))
button_icon_state = "thermal_[suit.thermal_on ? "on" : "off"]"
return ..()
/datum/action/item_action/toggle_helmet_flashlight
name = "Toggle Helmet Flashlight"
/datum/action/item_action/toggle_helmet_mode
name = "Toggle Helmet Mode"
/datum/action/item_action/toggle_voice_box
name = "Toggle Voice Box"
/datum/action/item_action/toggle_human_head
name = "Toggle Human Head"
/datum/action/item_action/toggle_helmet
name = "Toggle Helmet"
/datum/action/item_action/toggle_seclight
name = "Toggle Seclight"
/datum/action/item_action/toggle_jetpack
name = "Toggle Jetpack"
/datum/action/item_action/jetpack_stabilization
name = "Toggle Jetpack Stabilization"
/datum/action/item_action/jetpack_stabilization/IsAvailable(feedback = FALSE)
var/obj/item/tank/jetpack/linked_jetpack = target
if(!istype(linked_jetpack) || !linked_jetpack.on)
return FALSE
return ..()
/datum/action/item_action/toggle_hud
name = "Toggle Implant HUD"
desc = "Disables your HUD implant's visuals. You can still access examine information."
/datum/action/item_action/toggle_hud/Trigger(trigger_flags)
. = ..()
if(!.)
return
var/obj/item/organ/internal/cyberimp/eyes/hud/hud_implant = target
hud_implant.toggle_hud(owner)
/datum/action/item_action/wheelys
name = "Toggle Wheels"
desc = "Pops out or in your shoes' wheels."
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "wheelys"
/datum/action/item_action/kindle_kicks
name = "Activate Kindle Kicks"
desc = "Kick you feet together, activating the lights in your Kindle Kicks."
button_icon = 'icons/mob/actions/actions_items.dmi'
button_icon_state = "kindleKicks"
/datum/action/item_action/storage_gather_mode
name = "Switch gathering mode"
desc = "Switches the gathering mode of a storage object."
background_icon = 'icons/mob/actions/actions_items.dmi'
background_icon_state = "storage_gather_switch"
overlay_icon_state = "bg_tech_border"
/datum/action/item_action/flip
name = "Flip"
/datum/action/item_action/call_link
name = "Call MODlink"
/datum/action/item_action/toggle_nv
name = "Toggle Night Vision"
var/stored_cutoffs
var/stored_colour
/datum/action/item_action/toggle_nv/New(obj/item/clothing/glasses/target)
. = ..()
target.AddElement(/datum/element/update_icon_updates_onmob)
/datum/action/item_action/toggle_nv/Trigger(trigger_flags)
if(!istype(target, /obj/item/clothing/glasses))
return ..()
var/obj/item/clothing/glasses/goggles = target
var/mob/holder = goggles.loc
if(!istype(holder) || holder.get_slot_by_item(goggles) != ITEM_SLOT_EYES)
holder = null
if(stored_cutoffs)
goggles.color_cutoffs = stored_cutoffs
goggles.flash_protect = FLASH_PROTECTION_SENSITIVE
stored_cutoffs = null
if(stored_colour)
goggles.change_glass_color(stored_colour)
playsound(goggles, 'sound/items/night_vision_on.ogg', 30, TRUE, -3)
else
stored_cutoffs = goggles.color_cutoffs
stored_colour = goggles.glass_colour_type
goggles.color_cutoffs = list()
goggles.flash_protect = FLASH_PROTECTION_NONE
if(stored_colour)
goggles.change_glass_color(null)
playsound(goggles, 'sound/machines/click.ogg', 30, TRUE, -3)
holder?.update_sight()
goggles.update_appearance()