From bec6653d487a49aa2b5a8e0c97bed9612f620211 Mon Sep 17 00:00:00 2001
From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com>
Date: Fri, 10 May 2024 12:45:42 +0300
Subject: [PATCH] Falling Falcons: Paratroopers Edition (#6150)
# About the pull request
Replaces rappel system with paradrop system. You need a parachute on
your back to paradrop (successfully). You also can drop objects from the
above, but in most cases it's not a great idea (they can break). Crates
can be paradropped too, so this can be an interesting alternative to req
drops. In order for marines to paradrop, PO needs to choose a flare on
the console and lock the paradrop system to the signal. After that the
aft hatch will be open and you are free to jump! Just don't forget the
parachute. (SGs can wear parachutes with armor)
Credits to @SubjectD9341 for the sprites.
# Explain why it's good for the game
It's cooler than rappel.
# Testing Photographs and Procedure
https://github.com/cmss13-devs/cmss13/assets/115417687/53ec9ddb-5ff5-4af2-9df5-17835e5bc2bc
https://github.com/cmss13-devs/cmss13/assets/115417687/f296c1c7-1cfe-4f8f-89c0-233f612d8542
https://github.com/cmss13-devs/cmss13/assets/115417687/579dac1c-9248-4a7c-b0f7-c9466a131335
https://github.com/cmss13-devs/cmss13/assets/115417687/35728d57-7c83-4539-bf84-accb99127ad7
# Changelog
:cl: ihatethisengine
add: Added paradropping
del: Removed rappeling
/:cl:
---------
Co-authored-by: fira
Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com>
---
code/__DEFINES/equipment.dm | 2 +
code/datums/supply_packs/gear.dm | 29 +++
.../machinery/computer/dropship_weapons.dm | 55 +++++
code/game/machinery/doors/multi_tile.dm | 7 +-
.../vending/vendor_types/requisitions.dm | 2 +-
code/game/objects/items/misc.dm | 15 +-
code/game/turfs/transit.dm | 190 ++++++++++++++----
.../suits/marine_armor/smartgunner.dm | 5 +-
code/modules/cm_marines/dropship_equipment.dm | 123 +-----------
code/modules/shuttle/shuttles/dropship.dm | 1 +
icons/mob/humans/onmob/back.dmi | Bin 117202 -> 118092 bytes
icons/mob/humans/onmob/items_lefthand_0.dmi | Bin 140491 -> 140748 bytes
icons/mob/humans/onmob/items_righthand_0.dmi | Bin 139632 -> 139969 bytes
icons/obj/items/clothing/backpacks.dmi | Bin 64772 -> 65883 bytes
maps/map_files/USS_Almayer/USS_Almayer.dmm | 8 +-
.../tgui/interfaces/DropshipFlightControl.tsx | 5 +-
.../interfaces/MfdPanels/ParadropPanel.tsx | 76 +++++++
.../interfaces/MfdPanels/SupportPanel.tsx | 4 +
.../tgui/interfaces/MfdPanels/types.ts | 5 +
19 files changed, 363 insertions(+), 164 deletions(-)
create mode 100644 tgui/packages/tgui/interfaces/MfdPanels/ParadropPanel.tsx
diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm
index b37ae0d59d64..7ed2658bba21 100644
--- a/code/__DEFINES/equipment.dm
+++ b/code/__DEFINES/equipment.dm
@@ -86,6 +86,8 @@
#define IGNITING_ITEM (1<<13)
/// Overrides NODROP in some cases (stripping)
#define FORCEDROP_CONDITIONAL (1<<14)
+/// Overrides smartgunner not being able to wear backpacks
+#define SMARTGUNNER_BACKPACK_OVERRIDE (1<<15)
//==========================================================================================
diff --git a/code/datums/supply_packs/gear.dm b/code/datums/supply_packs/gear.dm
index 54a2ae221c9d..5343b93dabbd 100644
--- a/code/datums/supply_packs/gear.dm
+++ b/code/datums/supply_packs/gear.dm
@@ -63,3 +63,32 @@
containertype = /obj/structure/closet/crate/ammo
containername = "fulton recovery device crate"
group = "Gear"
+
+/datum/supply_packs/parachute
+ name = "parachute crate (x20)"
+ contains = list(
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ /obj/item/parachute,
+ )
+ cost = 40
+ containertype = /obj/structure/closet/crate/supply
+ containername = "parachute crate"
+ group = "Gear"
diff --git a/code/game/machinery/computer/dropship_weapons.dm b/code/game/machinery/computer/dropship_weapons.dm
index 017a5f0736ca..5d61ed536618 100644
--- a/code/game/machinery/computer/dropship_weapons.dm
+++ b/code/game/machinery/computer/dropship_weapons.dm
@@ -453,6 +453,61 @@
initiate_firemission(user, fm_tag, direction, text2num(offset_x_value), text2num(offset_y_value))
return TRUE
+ if("paradrop-lock")
+ var/obj/docking_port/mobile/marine_dropship/linked_shuttle = SSshuttle.getShuttle(shuttle_tag)
+ if(!linked_shuttle)
+ return FALSE
+ if(linked_shuttle.mode != SHUTTLE_CALL)
+ return FALSE
+ if(linked_shuttle.paradrop_signal)
+ clear_locked_turf_and_lock_aft()
+ return TRUE
+ var/datum/cas_signal/sig = get_cas_signal(camera_target_id)
+ if(!sig)
+ to_chat(user, SPAN_WARNING("No signal chosen."))
+ return FALSE
+ var/turf/location = get_turf(sig.signal_loc)
+ var/area/location_area = get_area(location)
+ if(CEILING_IS_PROTECTED(location_area.ceiling, CEILING_PROTECTION_TIER_1))
+ to_chat(user, SPAN_WARNING("Target is obscured."))
+ return FALSE
+ var/equipment_tag = params["equipment_id"]
+ for(var/obj/structure/dropship_equipment/equipment as anything in shuttle.equipments)
+ var/mount_point = equipment.ship_base.attach_id
+ if(mount_point != equipment_tag)
+ continue
+ if(istype(equipment, /obj/structure/dropship_equipment/paradrop_system))
+ var/obj/structure/dropship_equipment/paradrop_system/paradrop_system = equipment
+ if(paradrop_system.system_cooldown > world.time)
+ to_chat(user, SPAN_WARNING("You toggled the system too recently."))
+ return
+ paradrop_system.system_cooldown = world.time + 5 SECONDS
+ paradrop_system.visible_message(SPAN_NOTICE("[equipment] hums as it locks to a signal."))
+ break
+ linked_shuttle.paradrop_signal = sig
+ addtimer(CALLBACK(src, PROC_REF(open_aft_for_paradrop)), 2 SECONDS)
+ RegisterSignal(linked_shuttle.paradrop_signal, COMSIG_PARENT_QDELETING, PROC_REF(clear_locked_turf_and_lock_aft))
+ RegisterSignal(linked_shuttle, COMSIG_SHUTTLE_SETMODE, PROC_REF(clear_locked_turf_and_lock_aft))
+ return TRUE
+
+/obj/structure/machinery/computer/dropship_weapons/proc/open_aft_for_paradrop()
+ var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttle_tag)
+ if(!shuttle || !shuttle.paradrop_signal || shuttle.mode != SHUTTLE_CALL)
+ return
+ shuttle.door_control.control_doors("force-unlock", "aft", TRUE)
+
+/obj/structure/machinery/computer/dropship_weapons/proc/clear_locked_turf_and_lock_aft()
+ SIGNAL_HANDLER
+ var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttle_tag)
+ if(!shuttle)
+ return
+ shuttle.door_control.control_doors("force-lock", "aft", TRUE)
+ visible_message(SPAN_WARNING("[src] displays an alert as it loses the paradrop target."))
+ for(var/obj/structure/dropship_equipment/paradrop_system/parad in shuttle.equipments)
+ parad.visible_message(SPAN_WARNING("[parad] displays an alert as it loses the paradrop target."))
+ UnregisterSignal(shuttle.paradrop_signal, COMSIG_PARENT_QDELETING)
+ UnregisterSignal(shuttle, COMSIG_SHUTTLE_SETMODE)
+ shuttle.paradrop_signal = null
/obj/structure/machinery/computer/dropship_weapons/proc/get_weapon(eqp_tag)
var/obj/docking_port/mobile/marine_dropship/dropship = SSshuttle.getShuttle(shuttle_tag)
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index 1e7fcbf40155..f95ef09e812f 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -279,8 +279,8 @@
return
..()
-/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/unlock()
- if(is_reserved_level(z))
+/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/unlock(forced=FALSE)
+ if(is_reserved_level(z) && !forced)
return // in orbit
..()
@@ -294,6 +294,9 @@
if(xeno.action_busy)
return
+ if(is_reserved_level(z)) //no prying in space even though it's funny
+ return
+
var/direction
switch(id)
if("starboard_door")
diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm
index 6eb5a333ec81..29199ed741fb 100644
--- a/code/game/machinery/vending/vendor_types/requisitions.dm
+++ b/code/game/machinery/vending/vendor_types/requisitions.dm
@@ -77,6 +77,7 @@
list("Technician Welder-Satchel", round(scale * 5), /obj/item/storage/backpack/marine/engineerpack/satchel, VENDOR_ITEM_REGULAR),
list("IMP Ammo Rack", round(scale * 2), /obj/item/storage/backpack/marine/ammo_rack, VENDOR_ITEM_REGULAR),
list("Radio Telephone Pack", round(scale * 2), /obj/item/storage/backpack/marine/satchel/rto, VENDOR_ITEM_REGULAR),
+ list("Parachute", round(scale * 20), /obj/item/parachute, VENDOR_ITEM_REGULAR),
list("BELTS", -1, null, null),
list("G8-A General Utility Pouch", round(scale * 2), /obj/item/storage/backpack/general_belt, VENDOR_ITEM_REGULAR),
@@ -89,7 +90,6 @@
list("M276 M82F Holster Rig", round(scale * 2), /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR),
list("M276 Shotgun Shell Loading Rig", round(scale * 10), /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR),
list("M276 Mortar Operator Belt", round(scale * 2), /obj/item/storage/belt/gun/mortarbelt, VENDOR_ITEM_REGULAR),
- list("Rappel Harness", round(scale * 20), /obj/item/rappel_harness, VENDOR_ITEM_REGULAR),
list("POUCHES", -1, null, null),
list("Autoinjector Pouch", round(scale * 1), /obj/item/storage/pouch/autoinjector, VENDOR_ITEM_REGULAR),
diff --git a/code/game/objects/items/misc.dm b/code/game/objects/items/misc.dm
index a7df88374b29..8c0f88ddb7ca 100644
--- a/code/game/objects/items/misc.dm
+++ b/code/game/objects/items/misc.dm
@@ -292,11 +292,12 @@
new /obj/item/evidencebag(src)
new /obj/item/evidencebag(src)
-/obj/item/rappel_harness
- name = "rappel harness"
- desc = "A simple, uncomfortable rappel harness with just enough safety straps to make RnD pass health and safety. It comes with an in-built descender, but has no pouches for ammunition."
- icon = 'icons/obj/items/clothing/belts.dmi'
- icon_state = "rappel_harness"
- item_state = "rappel_harness"
+/obj/item/parachute
+ name = "parachute"
+ desc = "A surprisingly small yet bulky pack with just enough safety straps to make RnD pass health and safety. The label says the pack comes with two parachutes - main and reserve, but you doubt the pack can fit even one."
+ icon = 'icons/obj/items/clothing/backpacks.dmi'
+ icon_state = "parachute_pack"
+ item_state = "parachute_pack"
w_class = SIZE_MASSIVE
- flags_equip_slot = SLOT_WAIST
+ flags_equip_slot = SLOT_BACK
+ flags_item = SMARTGUNNER_BACKPACK_OVERRIDE
diff --git a/code/game/turfs/transit.dm b/code/game/turfs/transit.dm
index dd6a8d920f6f..00175ac5e365 100644
--- a/code/game/turfs/transit.dm
+++ b/code/game/turfs/transit.dm
@@ -11,7 +11,7 @@
if(isobserver(crosser) || crosser.anchored)
return
- if(!isitem(crosser) && !isliving(crosser))
+ if(!isobj(crosser) && !isliving(crosser))
return
if(!istype(old_loc, /turf/open/space))
@@ -24,6 +24,8 @@
/turf/open/space/transit/proc/handle_crosser(atom/movable/crosser)
if(QDELETED(crosser))
return
+ if(crosser.can_paradrop()) //let's not delete people who arent meant to be deleted... This shouldn't happen normally, but if it does, congratulations, you gamed the system
+ return
qdel(crosser)
/turf/open/space/transit/dropship
@@ -39,14 +41,42 @@
if(!istype(dropship) || dropship.mode != SHUTTLE_CALL)
return ..()
- if(dropship.destination.id != DROPSHIP_LZ1 && dropship.destination.id != DROPSHIP_LZ2)
- return ..() // we're not heading towards the LZs
-
// you just jumped out of a dropship heading towards the LZ, have fun living on the way down!
var/list/ground_z_levels = SSmapping.levels_by_trait(ZTRAIT_GROUND)
if(!length(ground_z_levels))
return ..()
+ if(dropship.paradrop_signal) //if dropship in paradrop mode, drop them near the signal. Whether they have a parachute or not
+ var/list/valid_turfs = list()
+ var/turf/location = get_turf(dropship.paradrop_signal.signal_loc)
+ for(var/turf/turf as anything in RANGE_TURFS(crosser.get_paradrop_scatter(), location))
+ var/area/turf_area = get_area(turf)
+ if(!turf_area || CEILING_IS_PROTECTED(turf_area.ceiling, CEILING_PROTECTION_TIER_1))
+ continue
+ if(turf.density)
+ continue
+ var/found_dense = FALSE
+ for(var/atom/turf_atom in turf)
+ if(turf_atom.density && turf_atom.can_block_movement)
+ found_dense = TRUE
+ break
+ if(found_dense)
+ continue
+ if(protected_by_pylon(TURF_PROTECTION_MORTAR, turf))
+ continue
+ valid_turfs += turf
+ var/turf/deploy_turf
+ if(length(valid_turfs)) //if we found a fitting place near the landing zone...
+ deploy_turf = pick(valid_turfs)
+ else //if we somehow did not. Drop them right on the signal then, there is nothing we can do
+ deploy_turf = location
+ if(crosser.can_paradrop())
+ INVOKE_ASYNC(crosser, TYPE_PROC_REF(/atom/movable, handle_paradrop), deploy_turf, dropship.name)
+ return
+ INVOKE_ASYNC(crosser, TYPE_PROC_REF(/atom/movable, handle_airdrop), deploy_turf, dropship.name)
+ return
+
+ //find a random spot to drop them
var/list/area/potential_areas = shuffle(SSmapping.areas_in_z["[ground_z_levels[1]]"])
for(var/area/maybe_this_area in potential_areas)
@@ -67,53 +97,141 @@
continue // couldnt find one in 10 loops, check another area
// we found a good turf, lets drop em
- INVOKE_ASYNC(src, PROC_REF(handle_drop), crosser, possible_turf, dropship.name)
+ if(crosser.can_paradrop())
+ INVOKE_ASYNC(crosser, TYPE_PROC_REF(/atom/movable, handle_paradrop), possible_turf, dropship.name)
+ return
+ INVOKE_ASYNC(crosser, TYPE_PROC_REF(/atom/movable, handle_airdrop), possible_turf, dropship.name)
return
+ //we didn't find a turf to drop them... This shouldn't happen usually
+ if(crosser.can_paradrop()) //don't delete them if they were supposed to paradrop
+ to_chat(crosser, SPAN_BOLDWARNING("Your harness got stuck and you got thrown back in the dropship."))
+ var/turf/projected = get_ranged_target_turf(crosser.loc, turn(dir, 180), 15)
+ INVOKE_ASYNC(crosser, TYPE_PROC_REF(/atom/movable, throw_atom), projected, 50, SPEED_FAST, null, TRUE)
+ return
return ..() // they couldn't be dropped, just delete them
-/turf/open/space/transit/dropship/proc/handle_drop(atom/movable/crosser, turf/target, dropship_name)
- if(QDELETED(crosser))
- return
- ADD_TRAIT(crosser, TRAIT_IMMOBILIZED, TRAIT_SOURCE_DROPSHIP_INTERACTION)
+/atom/movable/proc/can_paradrop()
+ return FALSE
+
+/atom/movable/proc/get_paradrop_scatter()
+ return 7
+
+/mob/living/carbon/human/can_paradrop()
+ if(istype(back, /obj/item/parachute))
+ return TRUE
+ return ..()
+
+/obj/structure/closet/crate/can_paradrop() //for now all crates can be paradropped
+ return TRUE
+
+/obj/structure/closet/crate/get_paradrop_scatter() //crates land closer to the signal
+ return 4
- crosser.pixel_z = 360
- crosser.forceMove(target)
- crosser.visible_message(SPAN_WARNING("[crosser] falls out of the sky."), SPAN_HIGHDANGER("As you fall out of the [dropship_name], you plummet towards the ground."))
- animate(crosser, time = 6, pixel_z = 0, flags = ANIMATION_PARALLEL)
+/obj/structure/largecrate/can_paradrop()
+ return TRUE
- REMOVE_TRAIT(crosser, TRAIT_IMMOBILIZED, TRAIT_SOURCE_DROPSHIP_INTERACTION)
- if(isitem(crosser))
- var/obj/item/item = crosser
- item.explosion_throw(200) // give it a bit of a kick
+/obj/structure/largecrate/get_paradrop_scatter()
+ return 4
+
+/atom/movable/proc/handle_paradrop(turf/target, dropship_name)
+ clear_active_explosives()
+ ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_DROPSHIP_INTERACTION)
+ ADD_TRAIT(src, TRAIT_UNDENSE, TRAIT_SOURCE_DROPSHIP_INTERACTION)
+ var/image/cables = image('icons/obj/structures/droppod_32x64.dmi', src, "chute_cables_static")
+ overlays += cables
+ var/image/chute = image('icons/obj/structures/droppod_64x64.dmi', src, "chute_static")
+
+ chute.pixel_x -= 16
+ chute.pixel_y += 16
+
+ overlays += chute
+ pixel_z = 360
+ forceMove(target)
+ playsound(src, 'sound/items/fulton.ogg', 30, 1)
+ animate(src, time = 3.5 SECONDS, pixel_z = 0, flags = ANIMATION_PARALLEL)
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/turf, ceiling_debris)), 2 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(clear_parachute), cables, chute), 3.5 SECONDS)
+
+/mob/living/carbon/handle_paradrop(turf/target, dropship_name)
+ ..()
+ if(client)
+ playsound_client(client, 'sound/items/fulton.ogg', src, 50, 1) //for some reason you don't hear the sound while dropping, maybe because of force move?
+
+/atom/movable/proc/clear_parachute(image/cables, image/chute)
+ if(QDELETED(src))
return
+ REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_DROPSHIP_INTERACTION)
+ REMOVE_TRAIT(src, TRAIT_UNDENSE, TRAIT_SOURCE_DROPSHIP_INTERACTION)
+ overlays -= cables
+ overlays -= chute
+
+/atom/movable/proc/clear_active_explosives()
+ for(var/obj/item/explosive/explosive in contents)
+ if(!explosive.active)
+ continue
+ explosive.deconstruct(FALSE)
+
+/atom/movable/proc/handle_airdrop(turf/target, dropship_name)
+ clear_active_explosives()
+ ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_DROPSHIP_INTERACTION)
+ pixel_z = 360
+ forceMove(target)
+ animate(src, time = 6, pixel_z = 0, flags = ANIMATION_PARALLEL)
+ INVOKE_ASYNC(target, TYPE_PROC_REF(/turf, ceiling_debris))
+ REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_DROPSHIP_INTERACTION)
+
+/obj/handle_airdrop(turf/target, dropship_name)
+ ..()
+ if(!indestructible && prob(30)) // throwing objects from the air is not always a good idea
+ deconstruct(FALSE)
+
+/obj/structure/closet/handle_airdrop(turf/target, dropship_name) // good idea but no
+ if(!opened)
+ for(var/atom/movable/content in src)
+ INVOKE_ASYNC(content, TYPE_PROC_REF(/atom/movable, handle_airdrop), target, dropship_name)
+ open()
+ . = ..()
- if(!isliving(crosser))
- return // don't know how you got here, but you shouldnt be here.
- var/mob/living/fallen_mob = crosser
+/obj/item/handle_airdrop(turf/target, dropship_name)
+ ..()
+ if(QDELETED(src))
+ return
+ if(!indestructible && w_class < SIZE_MEDIUM) //tiny and small items will be lost, good riddance
+ deconstruct(FALSE)
+ return
+ explosion_throw(200) // give it a bit of a kick
+
+/obj/item/explosive/handle_airdrop(turf/target, dropship_name)
+ if(active)
+ deconstruct(FALSE)
+ return
+ ..()
+/mob/living/handle_airdrop(turf/target, dropship_name)
+ ..()
playsound(target, "punch", rand(20, 70), TRUE)
playsound(target, "punch", rand(20, 70), TRUE)
playsound(target, "bone_break", rand(20, 70), TRUE)
playsound(target, "bone_break", rand(20, 70), TRUE)
- fallen_mob.KnockDown(10) // 10 seconds
- fallen_mob.Stun(3) // 3 seconds
-
-
- if(ishuman(fallen_mob))
- var/mob/living/carbon/human/human = fallen_mob
- human.last_damage_data = create_cause_data("falling from [dropship_name]", human)
- // I'd say falling from space is pretty much like getting hit by an explosion
- human.take_overall_armored_damage(300, ARMOR_BOMB, limb_damage_chance = 100)
- // but just in case, you will still take a ton of damage.
- human.take_overall_damage(200, used_weapon = "falling", limb_damage_chance = 100)
- if(human.stat != DEAD)
- human.death(human.last_damage_data)
- fallen_mob.status_flags |= PERMANENTLY_DEAD
- return
+ KnockDown(10)
+ Stun(3)
// take a little bit more damage otherwise
- fallen_mob.take_overall_damage(400, used_weapon = "falling", limb_damage_chance = 100)
+ take_overall_damage(400, used_weapon = "falling", limb_damage_chance = 100)
+ visible_message(SPAN_WARNING("[src] falls out of the sky."), SPAN_HIGHDANGER("As you fall out of the [dropship_name], you plummet towards the ground."))
+
+/mob/living/carbon/human/handle_airdrop(turf/target, dropship_name)
+ ..()
+ last_damage_data = create_cause_data("falling from [dropship_name]", src)
+ // I'd say falling from space is pretty much like getting hit by an explosion
+ take_overall_armored_damage(300, ARMOR_BOMB, limb_damage_chance = 100)
+ // but just in case, you will still take a ton of damage.
+ take_overall_damage(200, used_weapon = "falling", limb_damage_chance = 100)
+ if(stat < DEAD)
+ death(last_damage_data)
+ status_flags |= PERMANENTLY_DEAD
+
/turf/open/space/transit/dropship/alamo
shuttle_tag = DROPSHIP_ALAMO
diff --git a/code/modules/clothing/suits/marine_armor/smartgunner.dm b/code/modules/clothing/suits/marine_armor/smartgunner.dm
index 430942fbbef8..8f39ef83045c 100644
--- a/code/modules/clothing/suits/marine_armor/smartgunner.dm
+++ b/code/modules/clothing/suits/marine_armor/smartgunner.dm
@@ -32,7 +32,7 @@
/obj/item/clothing/suit/storage/marine/smartgunner/mob_can_equip(mob/equipping_mob, slot, disable_warning = FALSE)
. = ..()
- if(equipping_mob.back)
+ if(equipping_mob.back && !(equipping_mob.back.flags_item & SMARTGUNNER_BACKPACK_OVERRIDE))
to_chat(equipping_mob, SPAN_WARNING("You can't equip [src] while wearing a backpack."))
return FALSE
@@ -48,6 +48,9 @@
if(slot != WEAR_BACK)
return
+ if(equipping_item.flags_item & SMARTGUNNER_BACKPACK_OVERRIDE)
+ return
+
. = COMPONENT_HUMAN_CANCEL_ATTEMPT_EQUIP
if(equipping_item.flags_equip_slot == SLOT_BACK)
diff --git a/code/modules/cm_marines/dropship_equipment.dm b/code/modules/cm_marines/dropship_equipment.dm
index af06f468adcd..1ddee8e85d20 100644
--- a/code/modules/cm_marines/dropship_equipment.dm
+++ b/code/modules/cm_marines/dropship_equipment.dm
@@ -1290,130 +1290,29 @@
fulton_cooldown = world.time + 50
// Rappel deployment system
-/obj/structure/dropship_equipment/rappel_system
- name = "\improper HPU-1 Rappel Deployment System"
- shorthand = "Rappel"
+/obj/structure/dropship_equipment/paradrop_system
+ name = "\improper HPU-1 Paradrop Deployment System"
+ shorthand = "PDS"
equip_categories = list(DROPSHIP_CREW_WEAPON)
icon_state = "rappel_module_packaged"
point_cost = 50
combat_equipment = FALSE
+ var/system_cooldown
- var/harness = /obj/item/rappel_harness
+/obj/structure/dropship_equipment/paradrop_system/ui_data(mob/user)
+ . = list()
+ .["signal"] = "[linked_shuttle.paradrop_signal]"
+ .["locked"] = !!linked_shuttle.paradrop_signal
-/obj/structure/dropship_equipment/rappel_system/update_equipment()
+/obj/structure/dropship_equipment/paradrop_system/update_equipment()
if(ship_base)
icon_state = "rappel_hatch_closed"
density = FALSE
else
icon_state = "rappel_module_packaged"
-/obj/effect/warning/rappel
- color = "#17d17a"
-
-/obj/structure/dropship_equipment/rappel_system/attack_hand(mob/living/carbon/human/user)
- var/datum/cas_iff_group/cas_group = GLOB.cas_groups[FACTION_MARINE]
- var/list/targets = cas_group.cas_signals
-
- if(!LAZYLEN(targets))
- to_chat(user, SPAN_NOTICE("No CAS signals found."))
- return
-
- if(!can_use(user))
- return
-
- var/user_input = tgui_input_list(user, "Choose a target to jump to.", name, targets)
- if(!user_input)
- return
-
- if(!can_use(user))
- return
-
- var/datum/cas_signal/LT = user_input
- if(!istype(LT) || !LT.valid_signal())
- return
-
- var/turf/location = get_turf(LT.signal_loc)
- var/area/location_area = get_area(location)
- if(CEILING_IS_PROTECTED(location_area.ceiling, CEILING_PROTECTION_TIER_1))
- to_chat(user, SPAN_WARNING("You cannot jump to the target. It is probably underground."))
- return
-
- var/list/valid_turfs = list()
- for(var/turf/T as anything in RANGE_TURFS(2, location))
- var/area/t_area = get_area(T)
- if(!t_area || CEILING_IS_PROTECTED(t_area.ceiling, CEILING_PROTECTION_TIER_1))
- continue
- if(T.density)
- continue
- var/found_dense = FALSE
- for(var/atom/A in T)
- if(A.density && A.can_block_movement)
- found_dense = TRUE
- break
- if(found_dense)
- continue
- if(protected_by_pylon(TURF_PROTECTION_MORTAR, T))
- continue
- valid_turfs += T
-
- if(!length(valid_turfs))
- to_chat(user, SPAN_WARNING("There's nowhere safe for you to land, the landing zone is too congested."))
- return
-
- var/turf/deploy_turf = pick(valid_turfs)
-
- var/obj/effect/warning/rappel/warning_zone = new(deploy_turf)
- flick("rappel_hatch_opening", src)
- icon_state = "rappel_hatch_open"
- user.forceMove(loc)
- user.client?.perspective = EYE_PERSPECTIVE
- user.client?.eye = deploy_turf
-
- if(!do_after(user, 4 SECONDS, INTERRUPT_NO_NEEDHAND, BUSY_ICON_FRIENDLY, user, INTERRUPT_MOVED) || !can_use(user) || protected_by_pylon(TURF_PROTECTION_MORTAR, deploy_turf))
- qdel(warning_zone)
- flick("rappel_hatch_closing", src)
- icon_state = "rappel_hatch_closed"
- user.client?.perspective = MOB_PERSPECTIVE
- user.client?.eye = user
- return
-
- new /obj/effect/rappel_rope(deploy_turf)
- user.forceMove(deploy_turf)
- INVOKE_ASYNC(user, TYPE_PROC_REF(/mob/living/carbon/human, animation_rappel))
- user.client?.perspective = MOB_PERSPECTIVE
- user.client?.eye = user
- deploy_turf.ceiling_debris_check(2)
- playsound(deploy_turf, 'sound/items/rappel.ogg', 50, TRUE)
-
- flick("rappel_hatch_closing", src)
- icon_state = "rappel_hatch_closed"
- qdel(warning_zone)
-
-/obj/structure/dropship_equipment/rappel_system/proc/can_use(mob/living/carbon/human/user)
- if(linked_shuttle.mode != SHUTTLE_CALL)
- to_chat(user, SPAN_WARNING("\The [src] can only be used while in flight."))
- return FALSE
-
- if(!linked_shuttle.in_flyby)
- to_chat(user, SPAN_WARNING("\The [src] requires a flyby flight to be used."))
- return FALSE
-
- if(user.buckled)
- to_chat(user, SPAN_WARNING("You cannot rappel while buckled!"))
- return FALSE
-
- if(user.is_mob_incapacitated())
- to_chat(user, SPAN_WARNING("You are in no state to do that!"))
- return FALSE
-
- if(!istype(user.belt, harness))
- to_chat(user, SPAN_WARNING("You must have a rappel harness equipped in order to use \the [src]!"))
- return FALSE
-
- if(user.action_busy)
- return FALSE
-
- return TRUE
+/obj/structure/dropship_equipment/paradrop_system/attack_hand(mob/living/carbon/human/user)
+ return
// used in the simulation room for cas runs, removed the sound and ammo depletion methods.
// copying code is definitely bad, but adding an unnecessary sim or not sim boolean check in the open_fire_firemission just doesn't seem right.
diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm
index cb04d9a81ddb..86e869b3361e 100644
--- a/code/modules/shuttle/shuttles/dropship.dm
+++ b/code/modules/shuttle/shuttles/dropship.dm
@@ -29,6 +29,7 @@
var/automated_lz_id
var/automated_delay
var/automated_timer
+ var/datum/cas_signal/paradrop_signal
/obj/docking_port/mobile/marine_dropship/Initialize(mapload)
diff --git a/icons/mob/humans/onmob/back.dmi b/icons/mob/humans/onmob/back.dmi
index 42d46bcc9abe324f83cecfff3a69d57c3e8e8b7b..128b05455d6e4cd6b85437dfced6cfa1cf885904 100644
GIT binary patch
delta 13113
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
delta 12216
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
diff --git a/icons/mob/humans/onmob/items_lefthand_0.dmi b/icons/mob/humans/onmob/items_lefthand_0.dmi
index 4e8c1d59a41a8446ba3f284062ce308235734e06..7d887799815bcf4e33153e16eceed488d2cb0ea6 100644
GIT binary patch
delta 121503
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