From ec527adfa417920ca0ac5b6eeada170607230a4e Mon Sep 17 00:00:00 2001
From: Hatterhat <31829017+Hatterhat@users.noreply.github.com>
Date: Wed, 23 Dec 2020 02:49:17 -0600
Subject: [PATCH] Powered Exosuit Running Board (from /vg/station)
---
.../mecha/equipment/tools/running_board.dm | 17 +++++++++
code/game/mecha/mecha.dm | 34 ++++++++++++------
code/modules/research/mechfab_designs.dm | 8 +++++
icons/mecha/mecha_equipment.dmi | Bin 41106 -> 41773 bytes
vorestation.dme | 6 ++++
5 files changed, 54 insertions(+), 11 deletions(-)
create mode 100644 code/game/mecha/equipment/tools/running_board.dm
diff --git a/code/game/mecha/equipment/tools/running_board.dm b/code/game/mecha/equipment/tools/running_board.dm
new file mode 100644
index 00000000000..aa2748c7a78
--- /dev/null
+++ b/code/game/mecha/equipment/tools/running_board.dm
@@ -0,0 +1,17 @@
+// concept borrowed from vgstation-coders/vgstation13#26316 on GitHub
+/obj/item/mecha_parts/mecha_equipment/runningboard
+ name = "hacked powered exosuit running board"
+ desc = "A running board with a power-lifter attachment, to quickly catapult exosuit pilots into the cockpit. Fits any exosuit."
+ icon_state = "mecha_runningboard"
+ origin_tech = list(TECH_MATERIAL = 6)
+ equip_type = EQUIP_HULL
+
+/obj/item/mecha_parts/mecha_equipment/runningboard/limited
+ name = "powered exosuit running board"
+ desc = "A running board with a power-lifter attachment, to quickly catapult exosuit pilots into the cockpit. Only fits to working exosuits."
+
+/obj/item/mecha_parts/mecha_equipment/runningboard/limited/can_attach(obj/mecha/M)
+ if(istype(M, /obj/mecha/working)) // is this a ripley?
+ . = ..()
+ else
+ return FALSE
\ No newline at end of file
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index e9e3397bba8..548bb0fbe93 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -1803,6 +1803,14 @@
set src in oview(1)
move_inside()
+//returns an equipment object if we have one of that type, useful since is_type_in_list won't return the object
+//since is_type_in_list uses caching, this is a slower operation, so only use it if needed
+/obj/mecha/proc/get_equipment(var/equip_type)
+ for(var/obj/item/mecha_parts/mecha_equipment/ME in equipment)
+ if(istype(ME,equip_type))
+ return ME
+ return null
+
/obj/mecha/proc/move_inside()
if (usr.stat || !ishuman(usr))
return
@@ -1843,18 +1851,22 @@
return
// to_chat(usr, "You start climbing into [src.name]")
-
- visible_message("\The [usr] starts to climb into [src.name]")
-
- if(enter_after(40,usr))
- if(!src.occupant)
- moved_inside(usr)
- if(ishuman(occupant)) //Aeiou
- GrantActions(occupant, 1)
- else if(src.occupant!=usr)
- to_chat(usr, "[src.occupant] was faster. Try better next time, loser.")
+ if(get_equipment(/obj/item/mecha_parts/mecha_equipment/runningboard))
+ visible_message("\The [usr] is instantly lifted into [src.name] by the running board!")
+ moved_inside(usr)
+ if(ishuman(occupant))
+ GrantActions(occupant, 1)
else
- to_chat(usr, "You stop entering the exosuit.")
+ visible_message("\The [usr] starts to climb into [src.name]")
+ if(enter_after(40,usr))
+ if(!src.occupant)
+ moved_inside(usr)
+ if(ishuman(occupant)) //Aeiou
+ GrantActions(occupant, 1)
+ else if(src.occupant!=usr)
+ to_chat(usr, "[src.occupant] was faster. Try better next time, loser.")
+ else
+ to_chat(usr, "You stop entering the exosuit.")
return
/obj/mecha/proc/moved_inside(var/mob/living/carbon/human/H as mob)
diff --git a/code/modules/research/mechfab_designs.dm b/code/modules/research/mechfab_designs.dm
index 52b976e1877..7a041e8f428 100644
--- a/code/modules/research/mechfab_designs.dm
+++ b/code/modules/research/mechfab_designs.dm
@@ -679,6 +679,14 @@
materials = list(DEFAULT_WALL_MATERIAL = 5000, "osmium" = 3000, "silver" = 1000)
build_path = /obj/item/mecha_parts/mecha_equipment/tool/orescanner/advanced
+/datum/design/item/mecha/runningboard
+ name = "Powered Exosuit Running Board"
+ desc = "A running board with a power-lifter attachment, to quickly catapult exosuit pilots into the cockpit. Only fits to working exosuits."
+ id = "mech_runningboard"
+ req_tech = list(TECH_MATERIAL = 6)
+ materials = list(DEFAULT_WALL_MATERIAL = 10000)
+ build_path = /obj/item/mecha_parts/mecha_equipment/runningboard/limited
+
/datum/design/item/mecha/powerwrench
name = "hydraulic wrench"
desc = "A large, hydraulic wrench."
diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi
index 1fcdff0f72345c1281a450489e9d54ee453d604f..eb5944366a44818ad21bfff18068367e219f95c3 100644
GIT binary patch
delta 4824
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
CXc8a*
diff --git a/vorestation.dme b/vorestation.dme
index 7c0988cbada..d95678b3bdd 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -988,6 +988,7 @@
#include "code\game\mecha\equipment\tools\powertool.dm"
#include "code\game\mecha\equipment\tools\rcd.dm"
#include "code\game\mecha\equipment\tools\repair_droid.dm"
+#include "code\game\mecha\equipment\tools\running_board.dm"
#include "code\game\mecha\equipment\tools\shield.dm"
#include "code\game\mecha\equipment\tools\shield_omni.dm"
#include "code\game\mecha\equipment\tools\sleeper.dm"
@@ -1692,9 +1693,14 @@
#include "code\modules\ai\ai_holder_targeting_vr.dm"
#include "code\modules\ai\interfaces.dm"
#include "code\modules\ai\say_list.dm"
+<<<<<<< HEAD:vorestation.dme
#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai.dm"
#include "code\modules\ai\ai_holder_subtypes\simple_mob_ai_vr.dm"
#include "code\modules\ai\ai_holder_subtypes\slime_xenobio_ai.dm"
+=======
+#include "code\modules\ai\aI_holder_subtypes\simple_mob_ai.dm"
+#include "code\modules\ai\aI_holder_subtypes\slime_xenobio_ai.dm"
+>>>>>>> 1e91b20... running board (#7787):polaris.dme
#include "code\modules\alarm\alarm.dm"
#include "code\modules\alarm\alarm_handler.dm"
#include "code\modules\alarm\atmosphere_alarm.dm"