Nuclear Operative Jump Jets (#78088)

## About The Pull Request

This PR gives operative MODsuits access to "jump jets".
This is an activated module (starts pinned) with a 30 second cooldown
which removes your personal gravity for 5 seconds and (if possible)
pushes you upwards by one z level. In combination with your regular
jetpack this allows you to fly over gaps, and (most importantly) out of
pits such as you may inadvertently find yourself wandering into on
Icebox.
I have a few other changes I want to make specifically targetted at the
experience of Icebox station destruction causing people to fall several
z levels and get trapped, but this is the first one.

You have to stand still for 1 second to activate the jump jet. This is
because jetpack movement without gravity is actually usually faster than
an operative will walk, and I don't want them to just toggle it as a
sprint button while running around. If people find other tactical uses
for this though I think that's cool.

This module currently isn't available to crew on the tech web, although
maybe someone could add it later if they wanted to. It's not quite so
useful if you don't _also_ have a jetpack though.
I bumped the available complexity of the suits I attached it to up by
the complexity cost of this module so it's not taking up previously
available space.

## Why It's Good For The Game

It's funny when the whole ops team falls in a hole after an explosion
they caused and gets stuck in there fighting Snow Legions but they
should probably have some method for dealing with that.
It also lets them pop back up from the tram hole, a risky proposition
because any flying mob hit by the tram dies almost instantly.

## Changelog

🆑
add: Operative MODsuits now have an attached "jump jet" which sends you
upwards and allows you to use your jetpack under gravity for a few
seconds, perfect for navigating the pits and valleys of Icebox Station.
/🆑
This commit is contained in:
Jacquerel
2023-09-12 18:54:58 +02:00
committed by GitHub
parent 1552857ff4
commit 172f65989e
12 changed files with 115 additions and 8 deletions
+43 -1
View File
@@ -169,12 +169,54 @@
/obj/item/mod/module/jetpack/advanced
name = "MOD advanced ion jetpack module"
desc = "An improvement on the previous model of electric thrusters. This one achieves higher speeds through \
mounting of more jets and a red paint applied on it."
mounting of more jets and application of red paint."
icon_state = "jetpack_advanced"
overlay_state_inactive = "module_jetpackadv"
overlay_state_active = "module_jetpackadv_on"
full_speed = TRUE
/// Cooldown to use if we didn't actually launch a jump jet
#define FAILED_ACTIVATION_COOLDOWN 3 SECONDS
///Jump Jet - Briefly removes the effect of gravity and pushes you up one z-level if possible.
/obj/item/mod/module/jump_jet
name = "MOD ionic jump jet module"
desc = "A specialised ionic thruster which provides a short but powerful boost capable of pushing against gravity, \
after which time it needs to recharge."
icon_state = "jump_jet"
module_type = MODULE_USABLE
complexity = 3
cooldown_time = 30 SECONDS
use_power_cost = DEFAULT_CHARGE_DRAIN * 5
incompatible_modules = list(/obj/item/mod/module/jump_jet)
/obj/item/mod/module/jump_jet/on_use()
. = ..()
if (!.)
return FALSE
if (DOING_INTERACTION(mod.wearer, mod.wearer))
balloon_alert(mod.wearer, "busy!")
return
balloon_alert(mod.wearer, "launching...")
mod.wearer.Shake(duration = 1 SECONDS)
if (!do_after(mod.wearer, 1 SECONDS, target = mod.wearer))
start_cooldown(FAILED_ACTIVATION_COOLDOWN) // Don't go on full cooldown if we failed to launch
return FALSE
playsound(mod.wearer, 'sound/vehicles/rocketlaunch.ogg', 100, TRUE)
mod.wearer.apply_status_effect(/datum/status_effect/jump_jet)
var/turf/launch_from = get_turf(mod.wearer)
if (mod.wearer.zMove(UP, z_move_flags = ZMOVE_CHECK_PULLS))
launch_from.visible_message(span_warning("[mod.wearer] rockets into the air!"))
new /obj/effect/temp_visual/jet_plume(launch_from)
if (!HAS_TRAIT(mod.wearer, TRAIT_JETPACKING))
var/obj/item/mod/module/jetpack/linked_jetpack = locate() in mod.modules
if (!isnull(linked_jetpack))
linked_jetpack.on_activation()
return TRUE
#undef FAILED_ACTIVATION_COOLDOWN
///Status Readout - Puts a lot of information including health, nutrition, fingerprints, temperature to the suit TGUI.
/obj/item/mod/module/status_readout
name = "MOD status readout module"