Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions code/__DEFINES/equipment.dm
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@
#define MAP_COLOR_INDEX (1<<21)
/// If an object will fall through open space, use this when dashing \ jumping for example
#define NO_ZFALL (1<<22)
/// Allows a non-mob movable to use multi-Z stairs
#define CAN_USE_MULTIZ_STAIRS (1<<23)

//==========================================================================================

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/multiz_stairs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

/obj/structure/stairs/multiz/proc/on_stairs_moved(turf/source, atom/movable/enterer)
SIGNAL_HANDLER
if(!istype(enterer, /mob))
if(!istype(enterer, /mob) && !(enterer.flags_atom & CAN_USE_MULTIZ_STAIRS))
return

RegisterSignal(enterer, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(on_premove))
Expand Down
51 changes: 48 additions & 3 deletions code/modules/vehicles/powerloader.dm
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
var/open_state = "powerloader_open"
var/overlay_state = "powerloader_overlay"
var/wreckage = /obj/structure/powerloader_wreckage
var/crate_hauler_only = FALSE //restricts claws to standard and large crates
var/obj/item/powerloader_clamp/PC_left
var/obj/item/powerloader_clamp/PC_right

Expand Down Expand Up @@ -124,7 +125,7 @@
icon_state = base_state
overlays += image(icon_state = overlay_state, layer = MOB_LAYER + 0.1)
if(M.mind && M.skills)
move_delay = max(4, move_delay - 2 * M.skills.get_skill_level(SKILL_POWERLOADER))
move_delay -= 2 * M.skills.get_skill_level(SKILL_POWERLOADER)
if(!M.put_in_l_hand(PC_left))
PC_left.forceMove(src)
unbuckle()
Expand Down Expand Up @@ -164,13 +165,17 @@

/obj/item/powerloader_clamp/Destroy()
if(loaded)
loaded.forceMove(get_turf(src))
var/turf/drop_turf = get_turf(src)
if(drop_turf)
loaded.forceMove(drop_turf)
loaded = null
linked_powerloader = null
return ..()

/obj/item/powerloader_clamp/dropped(mob/user)
if(!linked_powerloader)
if(!linked_powerloader || QDELETED(linked_powerloader))
qdel(src)
return
..()
forceMove(linked_powerloader)
if(linked_powerloader.buckled_mob && linked_powerloader.buckled_mob == user)
Expand Down Expand Up @@ -314,6 +319,16 @@
if(!linked_powerloader)
qdel(src)
return
if(linked_powerloader.crate_hauler_only && !istype(target, /obj/structure/closet/crate) && !istype(target, /obj/structure/largecrate))
var/obj/vehicle/powerloader/overloaded_loader = linked_powerloader
overloaded_loader.visible_message(SPAN_DANGER("\The [overloaded_loader]'s frame groans and begins to buckle under the strain of lifting \the [target]!"))
playsound(overloaded_loader.loc, "alien_doorpry", 25, TRUE)
if(!do_after(user, 5 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE, overloaded_loader, INTERRUPT_MOVED, BUSY_ICON_HOSTILE))
return
if(QDELETED(overloaded_loader) || linked_powerloader != overloaded_loader)
return
overloaded_loader.explode()
return
loaded = target
loaded.forceMove(src)
to_chat(user, SPAN_NOTICE("You grab \the [target] with \the [src]."))
Expand Down Expand Up @@ -406,3 +421,33 @@
open_state = "powerloader_open_ft"
overlay_state = "powerloader_overlay_ft"
wreckage = /obj/structure/powerloader_wreckage/ft

/obj/vehicle/powerloader/ft/lightweight
name = "\improper Ferret Heavy Industries Mk4-L Crate Loader"
desc = "A lightweight crate hauler produced shortly before Ferret Heavy Industries collapsed. Its stripped frame is quicker than a standard Mk4, but the cheap clamps catastrophically break under non-crate loads. A warning label reads: 'NOT FLIGHT RATED - FRAME WILL NOT WITHSTAND DROPSHIP TURBULENCE.'"
flags_atom = FPRINT|CAN_USE_MULTIZ_STAIRS
move_delay = 7
crate_hauler_only = TRUE
var/dropship_transit = FALSE

/obj/vehicle/powerloader/ft/lightweight/explode()
var/turf/drop_turf = get_turf(src)
if(drop_turf && PC_left?.loaded)
PC_left.loaded.forceMove(drop_turf)
PC_left.loaded = null
if(drop_turf && PC_right?.loaded)
PC_right.loaded.forceMove(drop_turf)
PC_right.loaded = null
return ..()

/obj/vehicle/powerloader/ft/lightweight/beforeShuttleMove(turf/newT, rotation, move_mode, obj/docking_port/mobile/moving_dock)
. = ..()
dropship_transit = istype(moving_dock, /obj/docking_port/mobile/marine_dropship)

/obj/vehicle/powerloader/ft/lightweight/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
. = ..()
if(!dropship_transit)
return
dropship_transit = FALSE
visible_message(SPAN_DANGER("Dropship turbulence violently shakes \the [src]'s flimsy frame apart!"))
explode()
8 changes: 6 additions & 2 deletions maps/map_files/USS_Almayer/USS_Almayer.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,10 @@
/obj/structure/lattice,
/turf/open/space/basic,
/area/space)
"aaD" = (
/obj/vehicle/powerloader/ft/lightweight,
/turf/open/floor/plating,
/area/almayer/maint/lower/constr)
"aaE" = (
/obj/effect/decal/cleanable/blood/oil,
/turf/open/floor/almayer/plating_striped/south,
Expand Down Expand Up @@ -36633,7 +36637,7 @@
/turf/open/floor/almayer/orange/north,
/area/almayer/engineering/lower)
"bLX" = (
/obj/vehicle/powerloader,
/obj/vehicle/powerloader/ft/lightweight,
/turf/open/floor/almayer/cargo,
/area/almayer/squads/req)
"bLY" = (
Expand Down Expand Up @@ -141902,7 +141906,7 @@ bcm
uTk
tTC
tTC
tTC
aaD
cyR
tTC
hOV
Expand Down