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 0000000000..aa2748c7a7 --- /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 e7e0d3b7dd..8e7480c6a2 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1804,6 +1804,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 @@ -1844,18 +1852,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 d3fb8179bf..53a0c98ddf 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 1fcdff0f72..eb5944366a 100644 Binary files a/icons/mecha/mecha_equipment.dmi and b/icons/mecha/mecha_equipment.dmi differ diff --git a/vorestation.dme b/vorestation.dme index a90a780389..1f71e9e7e0 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1027,6 +1027,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"