From 495a45841e200e7bc1318e9189b1cd62df80008e Mon Sep 17 00:00:00 2001 From: Metis <100518708+sheepishgoat@users.noreply.github.com> Date: Fri, 15 Nov 2024 22:18:47 -0500 Subject: [PATCH] makes cyborg playable --- .../code/modules/research/designs/borg.dm | 26 +++++++++++++++++++ .../modules/research/designs/nutri_designs.dm | 9 +++++++ code/__HELPERS/do_after.dm | 4 ++- .../mob/living/silicon/robot/robot_modules.dm | 16 ++++++++++++ .../research/techweb/nodes/robotics_nodes.dm | 2 +- tgstation.dme | 1 + 6 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 GainStation13/code/modules/research/designs/borg.dm diff --git a/GainStation13/code/modules/research/designs/borg.dm b/GainStation13/code/modules/research/designs/borg.dm new file mode 100644 index 0000000000..ba31cf5616 --- /dev/null +++ b/GainStation13/code/modules/research/designs/borg.dm @@ -0,0 +1,26 @@ +/obj/item/borg/upgrade/feeding_arm + name = "food gripper module" + desc = "An extra module that allows cyborgs to grab food and drinks, and feed them to people." + icon_state = "cyborg_upgrade3" + +/obj/item/borg/upgrade/feeding_arm/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/gripper/food/S = new(R.module) + R.module.basic_modules += S + R.module.add_module(S, FALSE, TRUE) + +/obj/item/borg/upgrade/feeding_arm/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/gripper/food/S = locate() in R.module + R.module.remove_module(S, TRUE) + +/obj/item/gripper/food + name = "food gripper" + desc = "A simple grasping tool for interacting with various food and drink related items." + item_flags = NOBLUDGEON + + can_hold = list( + /obj/item/reagent_containers, + ) diff --git a/GainStation13/code/modules/research/designs/nutri_designs.dm b/GainStation13/code/modules/research/designs/nutri_designs.dm index a70f925bc6..6ba48d0c46 100644 --- a/GainStation13/code/modules/research/designs/nutri_designs.dm +++ b/GainStation13/code/modules/research/designs/nutri_designs.dm @@ -129,6 +129,15 @@ construction_time = 100 category = list("Cyborg Upgrade Modules") +/datum/design/borg_foodgrip + name = "Cyborg Upgrade (Food Gripper)" + id = "borg_upgrade_foodgrip" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/feeding_arm + materials = list(/datum/material/iron = 8000, /datum/material/glass = 6000) + construction_time = 100 + category = list("Cyborg Upgrade Modules") + //todo: make a seperate file for extra borg modules /obj/item/borg/upgrade/cookiesynth diff --git a/code/__HELPERS/do_after.dm b/code/__HELPERS/do_after.dm index 9f98b0e10e..ea87dea222 100644 --- a/code/__HELPERS/do_after.dm +++ b/code/__HELPERS/do_after.dm @@ -14,6 +14,7 @@ var/holding = user.get_active_held_item() var/datum/progressbar/progbar + var/is_food_gripper = istype(user.get_active_held_item(), /obj/item/gripper/food) //GS13 EDIT if (progress) progbar = new(user, time, target) @@ -34,7 +35,8 @@ || (!(timed_action_flags & IGNORE_TARGET_IN_DOAFTERS) && !(target in user.do_afters)) \ || (!(timed_action_flags & IGNORE_USER_LOC_CHANGE) && !drifting && user.loc != user_loc) \ || (!(timed_action_flags & IGNORE_TARGET_LOC_CHANGE) && target.loc != target_loc) \ - || (!(timed_action_flags & IGNORE_HELD_ITEM) && user.get_active_held_item() != holding) \ + //GS13 EDIT + || (!(timed_action_flags & IGNORE_HELD_ITEM) && !is_food_gripper && user.get_active_held_item() != holding) \ || (!(timed_action_flags & IGNORE_INCAPACITATED) && user.incapacitated()) \ || (extra_checks && !extra_checks.Invoke()) \ ) diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 0e2d27889e..b259c9f2d3 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -281,6 +281,7 @@ /obj/item/t_scanner/adv_mining_scanner, /obj/item/restraints/handcuffs/cable/zipties, /obj/item/soap/nanotrasen, + /obj/item/gripper/food, //GS13 EDIT /obj/item/borg/cyborghug) emag_modules = list(/obj/item/melee/transforming/energy/sword/cyborg) ratvar_modules = list( @@ -317,6 +318,7 @@ /obj/item/organ_storage, /obj/item/borg/lollipop, /obj/item/sensor_device, + /obj/item/gripper/food, //GS13 EDIT /obj/item/shockpaddles/cyborg) emag_modules = list(/obj/item/reagent_containers/borghypo/hacked) ratvar_modules = list( @@ -421,6 +423,7 @@ /obj/item/storage/part_replacer/cyborg, /obj/item/holosign_creator/combifan, /obj/item/gripper, + /obj/item/gripper/food, //GS13 EDIT /obj/item/lightreplacer/cyborg, /obj/item/geiger_counter/cyborg, /obj/item/assembly/signaler/cyborg, @@ -527,6 +530,9 @@ /obj/item/melee/baton/loaded, /obj/item/gun/energy/disabler/cyborg, /obj/item/clothing/mask/gas/sechailer/cyborg, + /obj/item/gripper/food, //GS13 EDIT + /obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT + /obj/item/gun/energy/fatoray/weak/cyborg, //GS13 EDIT /obj/item/pinpointer/crew) emag_modules = list(/obj/item/gun/energy/laser/cyborg) ratvar_modules = list(/obj/item/clockwork/slab/cyborg/security, @@ -632,6 +638,9 @@ /obj/item/holosign_creator/cyborg, /obj/item/borg/cyborghug/peacekeeper, /obj/item/megaphone, + /obj/item/gripper/food, //GS13 EDIT + /obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT + /obj/item/gun/energy/fatoray/weak/cyborg, //GS13 EDIT /obj/item/borg/projectile_dampen) emag_modules = list(/obj/item/reagent_containers/borghypo/peace/hacked) ratvar_modules = list( @@ -724,6 +733,8 @@ /obj/item/razor, //killbait material /obj/item/lipstick/purple, /obj/item/reagent_containers/spray/waterflower/cyborg, + /obj/item/gripper/food, //GS13 EDIT + /obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT /obj/item/borg/cyborghug/peacekeeper, /obj/item/borg/lollipop/clown, /obj/item/picket_sign/cyborg, @@ -764,6 +775,9 @@ /obj/item/soap/nanotrasen, /obj/item/storage/bag/trash/cyborg, /obj/item/mop/cyborg, + /obj/item/gripper/food, //GS13 EDIT + /obj/item/reagent_containers/borghypo/feeding_tube, //GS13 EDIT + /obj/item/cookiesynth, //GS13 EDIT /obj/item/lightreplacer/cyborg, /obj/item/holosign_creator, /obj/item/reagent_containers/spray/cyborg_drying) @@ -905,6 +919,7 @@ /obj/item/stack/marker_beacon/cyborg, /obj/item/dest_tagger, /obj/item/stack/packageWrap/cyborg, + /obj/item/gripper/food, //GS13 EDIT /obj/item/card/id/miningborg) emag_modules = list(/obj/item/borg/stun) ratvar_modules = list( @@ -986,6 +1001,7 @@ /obj/item/gun/ballistic/revolver/grenadelauncher/cyborg, /obj/item/card/emag, /obj/item/crowbar/cyborg, + /obj/item/gripper/food, //GS13 EDIT /obj/item/pinpointer/syndicate_cyborg) ratvar_modules = list( diff --git a/code/modules/research/techweb/nodes/robotics_nodes.dm b/code/modules/research/techweb/nodes/robotics_nodes.dm index ee4fbd261b..77748de74b 100644 --- a/code/modules/research/techweb/nodes/robotics_nodes.dm +++ b/code/modules/research/techweb/nodes/robotics_nodes.dm @@ -20,7 +20,7 @@ starting_node = TRUE display_name = "Cyborg Construction" description = "Sapient robots with preloaded tool modules and programmable laws." - design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload", + design_ids = list("robocontrol", "sflash", "borg_suit", "borg_head", "borg_chest", "borg_r_arm", "borg_l_arm", "borg_r_leg", "borg_l_leg", "borgupload", "borg_upgrade_foodgrip", //GS13 EDIT "cyborgrecharger", "borg_upgrade_restart", "borg_upgrade_rename") /datum/techweb_node/adv_robotics diff --git a/tgstation.dme b/tgstation.dme index a97963ab1c..7009f6e4e0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -4034,6 +4034,7 @@ #include "GainStation13\code\modules\reagents\reagent_containers\barrel_tank.dm" #include "GainStation13\code\modules\research\designs\autolathe.dm" #include "GainStation13\code\modules\research\designs\biogen.dm" +#include "GainStation13\code\modules\research\designs\borg.dm" #include "GainStation13\code\modules\research\designs\nutri_designs.dm" #include "GainStation13\code\modules\research\nanites\nanite_programs\fattening.dm" #include "GainStation13\code\modules\research\techweb\nutritech_nodes.dm"