Skip to content

Commit

Permalink
Ports a few Dropship PRs (#154)
Browse files Browse the repository at this point in the history
Haven't heard of any issue about this. Should be good for the game as a general improvement.
  • Loading branch information
private-tristan committed Mar 29, 2024
1 parent 9ca7e01 commit 2a371a9
Show file tree
Hide file tree
Showing 16 changed files with 218 additions and 96 deletions.
5 changes: 5 additions & 0 deletions code/__DEFINES/dropships.dm
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,8 @@
#define DROPSHIP_MIN_AUTO_DELAY 10 SECONDS
#define DROPSHIP_AUTO_RETRY_COOLDOWN 20 SECONDS
#define DROPSHIP_MEDEVAC_COOLDOWN 20 SECONDS

//Hatches states
#define SHUTTLE_DOOR_BROKEN -1
#define SHUTTLE_DOOR_UNLOCKED 0
#define SHUTTLE_DOOR_LOCKED 1
2 changes: 1 addition & 1 deletion code/game/machinery/door_control.dm
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@
if(is_mainship_level(z)) // on the almayer
return

shuttle.control_doors("lock", "all", force=FALSE)
shuttle.control_doors("force-lock", "all", force=FALSE)

/obj/structure/machinery/door_control/proc/handle_door()
for(var/obj/structure/machinery/door/airlock/D in range(range))
Expand Down
12 changes: 6 additions & 6 deletions code/game/machinery/doors/airlock_control.dm
Original file line number Diff line number Diff line change
Expand Up @@ -123,15 +123,15 @@
radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK)


/obj/structure/machinery/door/airlock/open(surpress_send)
/obj/structure/machinery/door/airlock/open(forced)
. = ..()
if(!surpress_send) send_status()
if(!forced)
send_status()


/obj/structure/machinery/door/airlock/close(surpress_send)
/obj/structure/machinery/door/airlock/close(forced)
. = ..()
if(!surpress_send) send_status()

if(!forced)
send_status()

/obj/structure/machinery/door/airlock/proc/set_frequency(new_frequency)
SSradio.remove_object(src, frequency)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/doors/door.dm
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@
flick("door_deny", src)
return

/obj/structure/machinery/door/proc/open(forced=0)
/obj/structure/machinery/door/proc/open(forced)
if(!density)
return TRUE
if(operating || !loc)
Expand Down
78 changes: 73 additions & 5 deletions code/game/machinery/doors/multi_tile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -241,10 +241,42 @@
no_panel = 1
not_weldable = 1
var/queen_pryable = TRUE
var/obj/docking_port/mobile/marine_dropship/linked_dropship

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ex_act(severity)
return

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/attackby(obj/item/item, mob/user)
if(HAS_TRAIT(item, TRAIT_TOOL_MULTITOOL))
var/direction
switch(id)
if("starboard_door")
direction = "starboard"
if("port_door")
direction = "port"
if("aft_door")
direction = "aft"
if(!linked_dropship || !linked_dropship.door_control.door_controllers[direction])
return ..()
var/datum/door_controller/single/control = linked_dropship.door_control.door_controllers[direction]
if (control.status != SHUTTLE_DOOR_BROKEN)
return ..()
if(!skillcheck(user, SKILL_ENGINEER, SKILL_ENGINEER_ENGI))
to_chat(user, SPAN_WARNING("You don't seem to understand how to restore a remote connection to [src]."))
return
if(user.action_busy)
return

to_chat(user, SPAN_WARNING("You begin to restore the remote connection to [src]."))
if(!do_after(user, 5 SECONDS, INTERRUPT_ALL, BUSY_ICON_BUILD))
to_chat(user, SPAN_WARNING("You fail to restore a remote connection to [src]."))
return
unlock(TRUE)
close(FALSE)
control.status = SHUTTLE_DOOR_UNLOCKED
to_chat(user, SPAN_WARNING("You successfully restored the remote connection to [src]."))
return
..()

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/unlock()
if(is_reserved_level(z))
Expand All @@ -258,13 +290,32 @@
if(!queen_pryable)
return ..()

if(!locked)
return ..()

to_chat(xeno, SPAN_NOTICE("You try and force the doors open"))
if(xeno.action_busy)
return

var/direction
switch(id)
if("starboard_door")
direction = "starboard"
if("port_door")
direction = "port"
if("aft_door")
direction = "aft"
var/datum/door_controller/single/control
if(linked_dropship && linked_dropship.door_control.door_controllers[direction])
control = linked_dropship.door_control.door_controllers[direction]

if(control && control.status == SHUTTLE_DOOR_BROKEN)
to_chat(xeno, SPAN_NOTICE("The door is already disabled."))
return

to_chat(xeno, SPAN_WARNING("You try and force the doors open!"))
if(do_after(xeno, 3 SECONDS, INTERRUPT_ALL, BUSY_ICON_HOSTILE))
if(control)
control.status = SHUTTLE_DOOR_BROKEN
unlock(TRUE)
open(1)
open(TRUE)
lock(TRUE)

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/ds1
Expand All @@ -275,6 +326,23 @@
name = "\improper Normandy cargo door"
icon = 'icons/obj/structures/doors/dropship2_cargo.dmi'

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside
width = 2

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1
name = "\improper Alamo crew hatch"
icon = 'icons/obj/structures/doors/dropship1_side2.dmi'

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds1/midway
name = "\improper Midway crew hatch"

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2
name = "\improper Normandy crew hatch"
icon = 'icons/obj/structures/doors/dropship2_side2.dmi'

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2/cyclone
name = "\improper Cyclone crew hatch"

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/upp
name = "\improper Akademia Nauk cargo door"
icon = 'icons/obj/structures/doors/dropshipupp_cargo.dmi'
Expand Down Expand Up @@ -329,7 +397,7 @@
continue
INVOKE_ASYNC(atom_movable, TYPE_PROC_REF(/atom/movable, throw_atom), projected, 1, SPEED_FAST, null, FALSE)

/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/connect_to_shuttle(obj/docking_port/mobile/port, obj/docking_port/stationary/dock, idnum, override)
/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/lifeboat/connect_to_shuttle(mapload, obj/docking_port/mobile/port, obj/docking_port/stationary/dock)
. = ..()
if(istype(port, /obj/docking_port/mobile/crashable/lifeboat))
var/obj/docking_port/mobile/crashable/lifeboat/lifeboat = port
Expand Down
2 changes: 1 addition & 1 deletion code/modules/shuttle/computers/escape_pod_computer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
.["docking_status"] = STATE_LAUNCHED
var/obj/structure/machinery/door/door = shuttle.door_handler.doors[1]
.["door_state"] = door.density
.["door_lock"] = shuttle.door_handler.is_locked
.["door_lock"] = shuttle.door_handler.status == SHUTTLE_DOOR_LOCKED
.["can_delay"] = TRUE//launch_status[2]
.["launch_without_evac"] = launch_without_evac

Expand Down
28 changes: 17 additions & 11 deletions code/modules/shuttle/helpers.dm
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
if(!door_controllers[direction])
var/datum/door_controller/single/new_controller = new()
new_controller.label = label
new_controller.is_locked = FALSE
new_controller.status = SHUTTLE_DOOR_UNLOCKED
door_controllers[direction] = new_controller

var/datum/door_controller/single/controller = door_controllers[direction]
Expand All @@ -29,12 +29,12 @@
if(direction == "all")
for(var/i in door_controllers)
var/datum/door_controller/single/control = door_controllers[i]
if(!control.is_locked)
if(control.status != SHUTTLE_DOOR_LOCKED)
return FALSE
return TRUE
if(door_controllers[direction])
var/datum/door_controller/single/single_controller = door_controllers[direction]
return single_controller.is_locked
return single_controller.status == SHUTTLE_DOOR_LOCKED
else
WARNING("Direction [direction] does not exist.")
return FALSE
Expand All @@ -60,9 +60,9 @@

for(var/direction in door_controllers)
var/datum/door_controller/single/controller = door_controllers[direction]
var/list/door_data = list("id" = direction, "value" = controller.is_locked)
var/list/door_data = list("id" = direction, "value" = controller.status)
. += list(door_data)
if(!controller.is_locked)
if(controller.status == SHUTTLE_DOOR_UNLOCKED)
all_locked = FALSE

var/list/door_data = list("id" = "all", "value" = all_locked)
Expand All @@ -74,7 +74,7 @@
/datum/door_controller/single
var/label = "dropship"
var/list/doors = list()
var/is_locked = FALSE
var/status = SHUTTLE_DOOR_UNLOCKED

/datum/door_controller/single/Destroy(force, ...)
. = ..()
Expand All @@ -93,23 +93,29 @@
if("close")
INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock, close))
if("force-lock")
if (status == SHUTTLE_DOOR_BROKEN)
continue
INVOKE_ASYNC(src, PROC_REF(lockdown_door), door)
is_locked = TRUE
status = SHUTTLE_DOOR_LOCKED
if("lock")
INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock, lock))
is_locked = TRUE
if (status != SHUTTLE_DOOR_BROKEN)
status = SHUTTLE_DOOR_LOCKED
if("unlock")
INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/structure/machinery/door/airlock, unlock))
is_locked = FALSE
if (status != SHUTTLE_DOOR_BROKEN)
status = SHUTTLE_DOOR_UNLOCKED
if("force-lock-launch")
if(asynchronous)
INVOKE_ASYNC(src, PROC_REF(lockdown_door_launch), door)
else
lockdown_door_launch(door)
is_locked = TRUE
if (status != SHUTTLE_DOOR_BROKEN)
status = SHUTTLE_DOOR_LOCKED
if("force-unlock")
INVOKE_ASYNC(src, PROC_REF(force_lock_open_door), door)
is_locked = FALSE
if (status != SHUTTLE_DOOR_BROKEN)
status = SHUTTLE_DOOR_UNLOCKED
else
CRASH("Unknown door command [action]")

Expand Down
3 changes: 3 additions & 0 deletions code/modules/shuttle/shuttles/dropship.dm
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@
door_control.add_door(air, "port")
if("aft_door")
door_control.add_door(air, "aft")
var/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/hatch = air
if(istype(hatch))
hatch.linked_dropship = src

/obj/docking_port/mobile/marine_dropship/Destroy(force)
. = ..()
Expand Down
Binary file added icons/obj/structures/doors/dropship1_side2.dmi
Binary file not shown.
Binary file added icons/obj/structures/doors/dropship2_side2.dmi
Binary file not shown.
44 changes: 35 additions & 9 deletions maps/map_files/LV522_Chances_Claim/LV522_Chances_Claim.dmm
Original file line number Diff line number Diff line change
Expand Up @@ -27970,6 +27970,16 @@
icon_state = "plate"
},
/area/lv522/atmos/cargo_intake)
"lgw" = (
/obj/structure/machinery/door/poddoor/shutters/almayer{
dir = 4;
id = "UD6 East";
indestructible = 1
},
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"lgR" = (
/obj/structure/largecrate/random/secure,
/turf/open/floor/plating,
Expand Down Expand Up @@ -41284,6 +41294,20 @@
icon_state = "platingdmg3"
},
/area/lv522/indoors/a_block/dorms)
"qjy" = (
/obj/structure/machinery/door/poddoor/shutters/almayer{
dir = 4;
id = "UD6 East";
indestructible = 1
},
/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{
dir = 1;
name = "\improper Tornado crew hatch"
},
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
},
/area/lv522/landing_zone_forecon/UD6_Tornado)
"qjC" = (
/obj/item/stack/rods,
/turf/open/floor/prison,
Expand Down Expand Up @@ -42172,8 +42196,9 @@
/turf/open/floor/wood,
/area/lv522/indoors/a_block/fitness/glass)
"qzp" = (
/obj/structure/machinery/door/airlock/dropship_hatch/two{
dir = 8
/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{
dir = 1;
name = "\improper Typhoon crew hatch"
},
/turf/open/shuttle/dropship{
icon_state = "rasputin3"
Expand Down Expand Up @@ -62477,8 +62502,9 @@
},
/area/lv522/outdoors/colony_streets/north_street)
"xRM" = (
/obj/structure/machinery/door/airlock/dropship_hatch/two{
dir = 8
/obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear/dropshipside/ds2{
dir = 1;
name = "\improper Tornado crew hatch"
},
/obj/structure/machinery/door/poddoor/shutters/almayer{
dir = 4;
Expand Down Expand Up @@ -66220,7 +66246,7 @@ pRK
qmM
qGQ
qTh
qzp
rjP
qzp
nfq
fDg
Expand Down Expand Up @@ -67582,7 +67608,7 @@ pUc
qst
qLz
qVl
qzp
rjP
qzp
rFp
sdE
Expand Down Expand Up @@ -103011,7 +103037,7 @@ sCp
toY
uwQ
wzg
xRM
lgw
xRM
bpZ
wRL
Expand Down Expand Up @@ -104373,8 +104399,8 @@ tcu
tSo
vjv
wCr
xRM
xRM
lgw
qjy
fXn
uSB
ecP
Expand Down
Loading

0 comments on commit 2a371a9

Please sign in to comment.