From e62dcd7ee357a47e118c333b943d24b395f735fe Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Thu, 23 Nov 2023 12:10:08 +0300 Subject: [PATCH] [MIRROR] Adds some more engi borg modules and buffs the engi borg RPED [MDB IGNORE] (#785) * Adds some more engi borg modules and buffs the engi borg RPED (#79374) --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: Autisem <36102060+Autisem@users.noreply.github.com> --- code/__DEFINES/nozzle_define.dm | 4 +++ code/game/machinery/rechargestation.dm | 5 ++- .../objects/items/robot/robot_upgrades.dm | 33 ++++++++++++++++++- code/game/objects/items/tanks/watertank.dm | 5 --- .../designs/mechfabricator_designs.dm | 11 +++++++ code/modules/research/stock_parts.dm | 8 ++++- code/modules/research/techweb/all_nodes.dm | 1 + tgstation.dme | 1 + 8 files changed, 60 insertions(+), 8 deletions(-) create mode 100644 code/__DEFINES/nozzle_define.dm diff --git a/code/__DEFINES/nozzle_define.dm b/code/__DEFINES/nozzle_define.dm new file mode 100644 index 00000000000..06b43c1acc6 --- /dev/null +++ b/code/__DEFINES/nozzle_define.dm @@ -0,0 +1,4 @@ +/// 3 differnt modes for the firefighter extinquisher +#define EXTINGUISHER 0 +#define RESIN_LAUNCHER 1 +#define RESIN_FOAM 2 diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 415dacc9f17..f875617bd40 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -156,4 +156,7 @@ /obj/machinery/recharge_station/proc/process_occupant(seconds_per_tick) if(!occupant) return - SEND_SIGNAL(occupant, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, recharge_speed * seconds_per_tick / 2, repairs, sendmats) + var/main_draw = use_power_from_net(recharge_speed * seconds_per_tick, take_any = TRUE) //Pulls directly from the Powernet to dump into the cell + if(!main_draw) + return + SEND_SIGNAL(occupant, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, main_draw, repairs, sendmats) diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 37c95a418db..b029a099875 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -598,7 +598,6 @@ /obj/item/borg/upgrade/rped/action(mob/living/silicon/robot/R, user = usr) . = ..() if(.) - var/obj/item/storage/part_replacer/cyborg/RPED = locate() in R if(RPED) to_chat(user, span_warning("This unit is already equipped with a RPED module!")) @@ -615,6 +614,38 @@ if (RPED) R.model.remove_module(RPED, TRUE) +/obj/item/borg/upgrade/inducer + name = "engineering integrated power inducer" + desc = "An integrated inducer that can charge a device's internal cell from power provided by the cyborg." + require_model = TRUE + model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur) + model_flags = BORG_MODEL_ENGINEERING + +/obj/item/borg/upgrade/inducer/action(mob/living/silicon/robot/R, user = usr) + . = ..() + if(.) + var/obj/item/inducer/cyborg/inter_inducer = locate() in R + if(inter_inducer) + return FALSE + inter_inducer = new(R.model) + R.model.basic_modules += inter_inducer + R.model.add_module(inter_inducer, FALSE, TRUE) + inter_inducer.cell = R.cell + +/obj/item/borg/upgrade/inducer/deactivate(mob/living/silicon/robot/R, user = usr) + . = ..() + if (.) + var/obj/item/inducer/cyborg/inter_inducer = locate() in R.model + if (inter_inducer) + R.model.remove_module(inter_inducer, TRUE) + inter_inducer.cell = null + +/obj/item/inducer/cyborg + name = "Internal inducer" + powertransfer = 1500 + icon = 'icons/obj/tools.dmi' + icon_state = "inducer-engi" + /obj/item/borg/upgrade/pinpointer name = "medical cyborg crew pinpointer" desc = "A crew pinpointer module for the medical cyborg. Permits remote access to the crew monitor." diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 558c287e1e5..29dcdbcf702 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -205,11 +205,6 @@ to_chat(user, span_notice("You [amount_per_transfer_from_this == 10 ? "remove" : "affix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray.")) //ATMOS FIRE FIGHTING BACKPACK - -#define EXTINGUISHER 0 -#define RESIN_LAUNCHER 1 -#define RESIN_FOAM 2 - /obj/item/watertank/atmos name = "backpack firefighter tank" desc = "A refrigerated and pressurized backpack tank with extinguisher nozzle, intended to fight fires. Swaps between extinguisher, resin launcher and a smaller scale resin foamer." diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm index 6a86bcbaae1..8c1bfa246a7 100644 --- a/code/modules/research/designs/mechfabricator_designs.dm +++ b/code/modules/research/designs/mechfabricator_designs.dm @@ -1581,6 +1581,17 @@ RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ENGINEERING ) +/datum/design/borg_upgrade_inducer + name = "Cyborg inducer" + id = "borg_upgrade_inducer" + build_type = MECHFAB + build_path = /obj/item/borg/upgrade/inducer + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2) + construction_time = 120 + category = list( + RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ENGINEERING + ) + /datum/design/borg_upgrade_circuit_app name = "Circuit Manipulator" id = "borg_upgrade_circuitapp" diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 86b9f2dfafe..6638f56c1b4 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -197,12 +197,18 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good /obj/item/storage/part_replacer/cyborg //SKYRAT EDIT - ICON OVERRIDEN BY AESTHETICS - SEE MODULE name = "rapid part exchange device" - desc = "Special mechanical module made to store, sort, and apply standard machine parts." + desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has an extra large compartment for more parts." icon_state = "borgrped" inhand_icon_state = "RPED" lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi' +/obj/item/storage/part_replacer/cyborg/Initialize(mapload) + . = ..() + atom_storage.max_slots = 400 + atom_storage.max_total_storage = 800 + atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC + /obj/item/storage/part_replacer/proc/get_sorted_parts(ignore_stacks = FALSE) var/list/part_list = list() //Assemble a list of current parts, then sort them by their rating! diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index d46bb35d8c3..28710bbfb8d 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -1017,6 +1017,7 @@ "borg_upgrade_lavaproof", "borg_upgrade_rped", "borg_upgrade_hypermod", + "borg_upgrade_inducer", ) research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2000) diff --git a/tgstation.dme b/tgstation.dme index fe320badfde..f12d1d4b3dc 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -154,6 +154,7 @@ #include "code\__DEFINES\movespeed_modification.dm" #include "code\__DEFINES\multiz.dm" #include "code\__DEFINES\nitrile.dm" +#include "code\__DEFINES\nozzle_define.dm" #include "code\__DEFINES\nuclear_bomb.dm" #include "code\__DEFINES\obj_flags.dm" #include "code\__DEFINES\observers.dm"