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"