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 1fcdff0f723..eb5944366a4 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 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"