From 0918437d53419fca5c7f2118d7d3fe34fc50130c Mon Sep 17 00:00:00 2001
From: Aliceee2ch <160794176+Aliceee2ch@users.noreply.github.com>
Date: Tue, 16 Sep 2025 14:12:27 +0300
Subject: [PATCH] BORGENING! Borg changes and QOLs (#92303)
## About The Pull Request
Adds a few new items and upgrades for different cyborg modules or
reworks some of them.
pic unrelated :)
### Main changes:
### Medical model
**Medical cyborg** gets chembag by default and a new bluespace syringe
upgrade!
### Engineering model
**Engineering cyborg** recieved a few new features. Now you can put your
regular RPED inside of a cyborg, but mind that it has way less storage,
than RPED upgrade from robotics. Robotics RPED upgrade were renamed into
expanded RPED and now cost the same amount of material to produce it as
BS RPED.
Worth to mention adding decal painter with own sprite (yes it uses cell
instead of regular toner)
Circuit manipulator was renamed to engineering apparatus, as its can no
longer hold only circuits. Additionally, it can also hold tubes/bulbs
now.
### Mining model
**Mining cyborg** now has mesons removed and remade into a new toggle
button, you dont need to use one of your modules just to be able to see
through darkness of lavaland caves.
**Mining cyborg** got a new shield module. It helps you fighting
lavaland fauna (..or annoying humans, if youre evil) in low pressure by
absorbing 50% of incoming damage when activated. Takes some amount of
your charge per absorbed hit.
Example:

## Why It's Good For The Game
I feel big lack of some cyborg modules or even features. This PR is
supposed to fix missing gap, aswell as rebalance some of existing
models.
## Changelog
:cl:
qol: Added new helpful modules, such as decal painter for engineering
and chembag for medical borg.
add: Added miner cyborg shield module. In lavaland (low) pressure, it
protects you from 50% of incoming damage in exchange of your cell
charge.
add: Added BS syringe upgrade for medical cyborg.
/:cl:
---
.../game/objects/items/robot/items/generic.dm | 31 +++++++
.../game/objects/items/robot/items/storage.dm | 29 +++----
.../objects/items/robot/robot_upgrades.dm | 44 ++++++++--
.../items/tools/painter/decal_painter.dm | 15 ++++
.../modules/mob/living/silicon/robot/robot.dm | 6 ++
.../mob/living/silicon/robot/robot_defense.dm | 40 +++++++++
.../mob/living/silicon/robot/robot_model.dm | 79 +++++++++++++++++-
code/modules/paperwork/photocopier.dm | 6 ++
.../projectiles/ammunition/energy/plasma.dm | 1 +
.../projectiles/projectile/special/plasma.dm | 1 +
.../designs/mechfabricator_designs.dm | 31 +++++--
code/modules/research/part_replacer.dm | 5 ++
.../research/techweb/nodes/cyborg_nodes.dm | 3 +-
icons/mob/actions/actions_mecha.dmi | Bin 17766 -> 17882 bytes
icons/mob/effects/durand_shield.dmi | Bin 12111 -> 15614 bytes
icons/obj/devices/tool.dmi | Bin 17689 -> 17910 bytes
icons/obj/weapons/guns/energy.dmi | Bin 46530 -> 50294 bytes
17 files changed, 260 insertions(+), 31 deletions(-)
diff --git a/code/game/objects/items/robot/items/generic.dm b/code/game/objects/items/robot/items/generic.dm
index 3c8141459d1..d282ae01b7f 100644
--- a/code/game/objects/items/robot/items/generic.dm
+++ b/code/game/objects/items/robot/items/generic.dm
@@ -402,6 +402,37 @@
COOLDOWN_START(src, alarm_cooldown, HARM_ALARM_NO_SAFETY_COOLDOWN)
user.log_message("used an emagged Cyborg Harm Alarm", LOG_ATTACK)
+/obj/item/shield_module
+ name = "Shield Activator"
+ icon = 'icons/mob/silicon/robot_items.dmi'
+ icon_state = "module_miner"
+ var/active = FALSE
+ var/mutable_appearance/shield_overlay
+
+/obj/item/shield_module/Initialize(mapload)
+ . = ..()
+ shield_overlay = mutable_appearance('icons/mob/effects/durand_shield.dmi', "borg_shield")
+
+/obj/item/shield_module/attack_self(mob/living/silicon/borg)
+ active = !active
+ if(active)
+ playsound(src, 'sound/vehicles/mecha/mech_shield_raise.ogg', 50, FALSE)
+ RegisterSignal(borg, COMSIG_ATOM_UPDATE_OVERLAYS, PROC_REF(on_shield_overlay_update), override = TRUE)
+ else
+ playsound(src, 'sound/vehicles/mecha/mech_shield_drop.ogg', 50, FALSE)
+ UnregisterSignal(borg, COMSIG_ATOM_UPDATE_OVERLAYS)
+ borg.update_appearance()
+
+/obj/item/shield_module/cyborg_unequip(mob/living/silicon/robot/borg)
+ active = FALSE
+ playsound(src, 'sound/vehicles/mecha/mech_shield_drop.ogg', 50, FALSE)
+ borg.cut_overlay(shield_overlay)
+
+/obj/item/shield_module/proc/on_shield_overlay_update(atom/source, list/overlays)
+ SIGNAL_HANDLER
+ if(active)
+ overlays += shield_overlay
+
#undef HUG_MODE_NICE
#undef HUG_MODE_HUG
#undef HUG_MODE_SHOCK
diff --git a/code/game/objects/items/robot/items/storage.dm b/code/game/objects/items/robot/items/storage.dm
index e7975fac9f2..88349a65f4d 100644
--- a/code/game/objects/items/robot/items/storage.dm
+++ b/code/game/objects/items/robot/items/storage.dm
@@ -253,11 +253,11 @@
///Apparatus to allow Engineering/Sabo borgs to manipulate any material sheets.
/obj/item/borg/apparatus/sheet_manipulator
name = "material manipulation apparatus"
- desc = "An apparatus for carrying, deploying, and manipulating sheets of material. The device can also carry custom floor tiles and shuttle frame rods."
+ desc = "An apparatus for carrying, deploying, and manipulating sheets of material. The device can also carry custom floor tiles and various rods."
icon_state = "borg_stack_apparatus"
storable = list(/obj/item/stack/sheet,
/obj/item/stack/tile,
- /obj/item/stack/rods/shuttle)
+ /obj/item/stack/rods)
/obj/item/borg/apparatus/sheet_manipulator/Initialize(mapload)
update_appearance()
@@ -285,21 +285,23 @@
. += "The apparatus currently has [stored] secured."
. += span_notice(" Alt-click will drop the currently stored sheets. ")
-///Apparatus allowing Engineer/Sabo borgs to manipulate Machine and Computer circuit boards
-/obj/item/borg/apparatus/circuit
- name = "circuit manipulation apparatus"
- desc = "A special apparatus for carrying and manipulating circuit boards and power cells."
+///Apparatus allowing Engineer/Sabo borgs to manipulate circuit boards and more
+/obj/item/borg/apparatus/engineering
+ name = "engineering apparatus"
+ desc = "A special apparatus for carrying and manipulating circuit boards, lights and power cells."
icon_state = "borg_hardware_apparatus"
- storable = list(/obj/item/circuitboard,
+ storable = list(
+ /obj/item/circuitboard,
/obj/item/electronics,
/obj/item/stock_parts/power_store,
+ /obj/item/light,
)
-/obj/item/borg/apparatus/circuit/Initialize(mapload)
+/obj/item/borg/apparatus/engineering/Initialize(mapload)
update_appearance()
return ..()
-/obj/item/borg/apparatus/circuit/update_overlays()
+/obj/item/borg/apparatus/engineering/update_overlays()
. = ..()
var/mutable_appearance/arm = mutable_appearance(icon, "borg_hardware_apparatus_arm1")
if(stored)
@@ -317,19 +319,19 @@
. += stored_copy
. += arm
-/obj/item/borg/apparatus/circuit/examine()
+/obj/item/borg/apparatus/engineering/examine()
. = ..()
if(stored)
. += "The apparatus currently has [stored] secured."
- . += span_notice(" Alt-click will drop the currently stored circuit. ")
+ . += span_notice(" Alt-click will drop the currently stored item. ")
-/obj/item/borg/apparatus/circuit/pre_attack(atom/atom, mob/living/user, list/modifiers, list/attack_modifiers)
+/obj/item/borg/apparatus/engineering/pre_attack(atom/atom, mob/living/user, list/modifiers, list/attack_modifiers)
if(istype(atom, /obj/item/ai_module) && !stored) //If an admin wants a borg to upload laws, who am I to stop them? Otherwise, we can hint that it fails
to_chat(user, span_warning("This circuit board doesn't seem to have standard robot apparatus pin holes. You're unable to pick it up."))
return ..()
// stops them from cell interactions with other borgos
-/obj/item/borg/apparatus/circuit/interact_with_atom(atom/movable/interacting_with, mob/living/user, list/modifiers)
+/obj/item/borg/apparatus/engineering/interact_with_atom(atom/movable/interacting_with, mob/living/user, list/modifiers)
if(iscyborg(user) && iscyborg(interacting_with))
balloon_alert(user, "your manipulator isn't dexterous enough to interact with this properly.")
return ITEM_INTERACT_FAILURE
@@ -347,7 +349,6 @@
/obj/item/reagent_containers/cup/soup_pot,
/obj/item/seeds,
/obj/item/graft,
- /obj/item/fish,
)
/obj/item/borg/apparatus/service/Initialize(mapload)
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index db3d0c90588..a44bcd4e487 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -631,8 +631,8 @@
borg.update_transform(0.5)
/obj/item/borg/upgrade/rped
- name = "engineering cyborg RPED"
- desc = "A rapid part exchange device for the engineering cyborg."
+ name = "engineering cyborg RPED (expanded)"
+ desc = "An expanded rapid part exchange device for the engineering cyborg."
icon_state = "module_engineer"
require_model = TRUE
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
@@ -640,6 +640,27 @@
items_to_add = list(/obj/item/storage/part_replacer/cyborg)
+/obj/item/borg/upgrade/smallrped
+ name = "engineering cyborg RPED"
+ desc = "A regular version of rapid part exchange device for the engineering cyborg."
+ icon_state = "module_engineer"
+ require_model = TRUE
+ model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
+ model_flags = BORG_MODEL_ENGINEERING
+ items_to_add = list(/obj/item/storage/part_replacer/cyborg/small)
+
+/obj/item/borg/upgrade/rped/action(mob/living/silicon/robot/borg, mob/living/user = usr)
+ . = ..()
+ if(!.)
+ return .
+ var/obj/item/borg/upgrade/smallrped/upgrade = locate() in borg
+ var/obj/item/storage/part_replacer/cyborg/small/replacer = locate() in borg.model.modules
+ if(upgrade)
+ to_chat(user, span_notice("The old RPED module is now expanded and gets more space"))
+ replacer.emptyStorage()
+ replacer.forceMove(get_turf(borg))
+ qdel(upgrade)
+
/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."
@@ -703,15 +724,15 @@
icon_state = "module_honk"
new_model = /obj/item/robot_model/clown
-/obj/item/borg/upgrade/circuit_app
- name = "circuit manipulation apparatus"
- desc = "An engineering cyborg upgrade allowing for manipulation of circuit boards."
+/obj/item/borg/upgrade/engineering_app
+ name = "engineering manipulation apparatus"
+ desc = "An engineering cyborg upgrade allowing for manipulation of circuit boards and other engineering matter."
icon_state = "module_engineer"
require_model = TRUE
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
model_flags = BORG_MODEL_ENGINEERING
- items_to_add = list(/obj/item/borg/apparatus/circuit)
+ items_to_add = list(/obj/item/borg/apparatus/engineering)
/obj/item/borg/upgrade/beaker_app
name = "beaker storage apparatus"
@@ -723,6 +744,17 @@
items_to_add = list(/obj/item/borg/apparatus/beaker/extra)
+/obj/item/borg/upgrade/bs_syringe
+ name = "advanced syringe"
+ desc = "Bluespace technology that expands capacity of your standard cyborg syringe."
+ icon_state = "module_medical"
+ require_model = TRUE
+ model_type = list(/obj/item/robot_model/medical)
+ model_flags = BORG_MODEL_MEDICAL
+
+ items_to_add = list(/obj/item/reagent_containers/syringe/bluespace)
+ items_to_remove = list(/obj/item/reagent_containers/syringe)
+
/obj/item/borg/upgrade/drink_app
name = "glass storage apparatus"
desc = "A supplementary drinking glass storage apparatus for service cyborgs."
diff --git a/code/game/objects/items/tools/painter/decal_painter.dm b/code/game/objects/items/tools/painter/decal_painter.dm
index fe547664702..f1c934d028d 100644
--- a/code/game/objects/items/tools/painter/decal_painter.dm
+++ b/code/game/objects/items/tools/painter/decal_painter.dm
@@ -141,3 +141,18 @@
name = "extreme decal painter"
icon_state = "decal_sprayer_ex"
initial_ink_type = /obj/item/toner/extreme
+
+/obj/item/airlock_painter/decal/cyborg
+ icon_state = "decal_sprayer_borg"
+ initial_ink_type = /obj/item/toner/infinite
+
+/obj/item/airlock_painter/decal/cyborg/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
+ . = ..()
+ var/mob/living/silicon/robot/cyborg = user
+ if(!iscyborg(user) || !cyborg.cell)
+ return
+ if(cyborg.cell && cyborg.cell.charge > 0)
+ cyborg.cell.use(0.025 * STANDARD_CELL_CHARGE)
+ else if(cyborg.cell.charge <= 0)
+ balloon_alert(user, "not enough energy!")
+ return
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 4f910463b9b..eb9eb2d2fc0 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -312,6 +312,12 @@
eye_lights.icon = icon
add_overlay(eye_lights)
+ var/obj/item/shield_module/shield_module = locate(/obj/item/shield_module) in src
+ if(shield_module && shield_module.active)
+ add_overlay(shield_module.shield_overlay)
+ else if (shield_module && !shield_module.active)
+ cut_overlay(shield_module.shield_overlay)
+
if(opened)
if(wiresexposed)
add_overlay("ov-opencover +w")
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 0306e8b5664..e198a254c8b 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -109,6 +109,24 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
return ITEM_INTERACT_SUCCESS
return ITEM_INTERACT_BLOCKING
+ if(istype(tool, /obj/item/storage/part_replacer))
+ var/obj/item/storage/part_replacer/replacer = tool
+ if(!opened)
+ balloon_alert(user, "chassis cover is closed!")
+ return ITEM_INTERACT_BLOCKING
+ if(!istype(model, /obj/item/robot_model/engineering))
+ balloon_alert(user, "wrong cyborg model!")
+ return ITEM_INTERACT_BLOCKING
+ if(locate(/obj/item/borg/upgrade/rped) in src)
+ balloon_alert(user, "already has a RPED!")
+ return ITEM_INTERACT_BLOCKING
+ qdel(tool)
+ var/obj/item/borg/upgrade/smallrped/lilrped = new
+ if(apply_upgrade(lilrped, user))
+ balloon_alert(user, "[replacer] installed")
+ return ITEM_INTERACT_SUCCESS
+ return ITEM_INTERACT_BLOCKING
+
if(istype(tool, /obj/item/ai_module))
if(!opened)
balloon_alert(user, "chassis cover is closed!")
@@ -517,3 +535,25 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
spark_system.start()
. = TRUE
return ..() || .
+
+/mob/living/silicon/robot/apply_damage(damage, damagetype, def_zone, blocked, forced, spread_damage, wound_bonus, exposed_wound_bonus, sharpness, attack_direction, attacking_item)
+ var/mob/living/silicon/robot/borg = src
+ var/obj/item/shield_module/shield = locate() in borg
+ if(!shield)
+ return ..()
+ if(borg.cell.charge <= 0.4 * STANDARD_CELL_CHARGE)
+ balloon_alert(borg, "not enough energy!")
+ if(shield.active)
+ shield.active = FALSE
+ playsound(src, 'sound/vehicles/mecha/mech_shield_drop.ogg', 50, FALSE)
+ borg.cut_overlay(shield.shield_overlay)
+ return
+ if(shield && shield.active)
+ if(!lavaland_equipment_pressure_check(get_turf(borg)))
+ balloon_alert(borg, "the shield didn't absorb the damage!")
+ return ..()
+ playsound(src, 'sound/vehicles/mecha/mech_shield_deflect.ogg', 100, TRUE)
+ balloon_alert(borg, "absorbed!")
+ borg.cell.use(damage * (STANDARD_CELL_CHARGE / 15), force = TRUE)
+ damage *= 0.5
+ return ..()
diff --git a/code/modules/mob/living/silicon/robot/robot_model.dm b/code/modules/mob/living/silicon/robot/robot_model.dm
index 866602cc718..8c8e2708092 100644
--- a/code/modules/mob/living/silicon/robot/robot_model.dm
+++ b/code/modules/mob/living/silicon/robot/robot_model.dm
@@ -386,7 +386,6 @@
name = "Engineering"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
- /obj/item/borg/sight/meson,
/obj/item/construction/rcd/borg,
/obj/item/pipe_dispenser,
/obj/item/extinguisher,
@@ -404,6 +403,7 @@
/obj/item/stack/rods/cyborg,
/obj/item/construction/rtd/borg,
/obj/item/stack/cable_coil,
+ /obj/item/airlock_painter/decal/cyborg,
)
radio_channels = list(RADIO_CHANNEL_ENGINEERING)
emag_modules = list(
@@ -413,6 +413,36 @@
model_select_icon = "engineer"
model_traits = list(TRAIT_NEGATES_GRAVITY)
hat_offset = list("north" = list(0, -4), "south" = list(0, -4), "east" = list(4, -4), "west" = list(-4, -4))
+ var/datum/weakref/night_vision_ref
+
+/datum/action/cooldown/borg_meson
+ name = "Toggle Meson Vision"
+ button_icon = 'icons/mob/actions/actions_mecha.dmi'
+ button_icon_state = "meson"
+
+/datum/action/cooldown/borg_meson/Activate()
+ if(usr.sight & SEE_TURFS)
+ usr.clear_sight(SEE_TURFS)
+ owner.lighting_cutoff_red += 5
+ owner.lighting_cutoff_green += 15
+ owner.lighting_cutoff_blue += 5
+ else
+ usr.add_sight(SEE_TURFS)
+ owner.lighting_cutoff_red -= 5
+ owner.lighting_cutoff_green -= 15
+ owner.lighting_cutoff_blue -= 5
+
+/obj/item/robot_model/engineering/be_transformed_to(obj/item/robot_model/old_model, forced = FALSE)
+ var/datum/action/cooldown/borg_meson/night_vision = new(loc)
+ . = ..()
+ if(!.)
+ return
+ night_vision.Grant(loc)
+ night_vision_ref = WEAKREF(night_vision)
+
+/obj/item/robot_model/engineering/Destroy()
+ QDEL_NULL(night_vision_ref)
+ return ..()
/obj/item/robot_model/janitor
name = "Janitor"
@@ -701,6 +731,8 @@
/obj/item/stack/medical/bone_gel,
/obj/item/borg/apparatus/organ_storage,
/obj/item/borg/lollipop,
+ /obj/item/storage/bag/chemistry,
+
)
radio_channels = list(RADIO_CHANNEL_MEDICAL)
emag_modules = list(
@@ -718,7 +750,6 @@
name = "Miner"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
- /obj/item/borg/sight/meson,
/obj/item/storage/bag/ore/cyborg,
/obj/item/pickaxe/drill,
/obj/item/shovel,
@@ -730,6 +761,7 @@
/obj/item/gps/cyborg,
/obj/item/stack/marker_beacon,
/obj/item/t_scanner/adv_mining_scanner/cyborg,
+ /obj/item/shield_module,
)
radio_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_SUPPLY)
emag_modules = list(
@@ -743,6 +775,19 @@
"Spider Miner" = list(SKIN_ICON_STATE = "spidermin", SKIN_HAT_OFFSET = list("north" = list(0, -2), "south" = list(0, -2), "east" = list(-2, -2), "west" = list(2, -2))),
"Lavaland Miner" = list(SKIN_ICON_STATE = "miner"),
)
+ var/datum/weakref/night_vision_ref
+
+/obj/item/robot_model/miner/be_transformed_to(obj/item/robot_model/old_model, forced = FALSE)
+ var/datum/action/cooldown/borg_meson/night_vision = new(loc)
+ . = ..()
+ if(!.)
+ return
+ night_vision.Grant(loc)
+ night_vision_ref = WEAKREF(night_vision)
+
+/obj/item/robot_model/miner/Destroy()
+ QDEL_NULL(night_vision_ref)
+ return ..()
/obj/item/robot_model/peacekeeper
name = "Peacekeeper"
@@ -902,6 +947,7 @@
/obj/item/stack/medical/bone_gel,
/obj/item/gun/medbeam,
/obj/item/borg/apparatus/organ_storage,
+ /obj/item/storage/bag/chemistry,
)
cyborg_base_icon = "synd_medical"
model_select_icon = "malf"
@@ -912,7 +958,6 @@
name = "Syndicate Saboteur"
basic_modules = list(
/obj/item/assembly/flash/cyborg,
- /obj/item/borg/sight/thermal,
/obj/item/construction/rcd/borg/syndicate,
/obj/item/pipe_dispenser,
/obj/item/restraints/handcuffs/cable/zipties,
@@ -926,6 +971,7 @@
/obj/item/borg/apparatus/sheet_manipulator,
/obj/item/stack/rods/cyborg,
/obj/item/construction/rtd/borg,
+ /obj/item/airlock_painter/decal/cyborg,
/obj/item/dest_tagger/borg,
/obj/item/stack/cable_coil,
/obj/item/pinpointer/syndicate_cyborg,
@@ -937,6 +983,33 @@
model_traits = list(TRAIT_PUSHIMMUNE, TRAIT_NEGATES_GRAVITY)
hat_offset = list("north" = list(0, -4), "south" = list(0, -4), "east" = list(4, -4), "west" = list(-4, -4))
canDispose = TRUE
+ var/datum/weakref/thermal_vision_ref
+
+/datum/action/cooldown/borg_thermal
+ name = "Toggle Thermal Night Vision"
+ button_icon = 'icons/mob/actions/actions_mecha.dmi'
+ button_icon_state = "meson"
+
+/datum/action/cooldown/borg_thermal/Activate()
+ if(usr.sight & SEE_TURFS)
+ usr.clear_sight(SEE_TURFS|SEE_MOBS)
+ usr.lighting_cutoff = LIGHTING_CUTOFF_VISIBLE
+ else
+ usr.add_sight(SEE_TURFS|SEE_MOBS)
+ usr.lighting_cutoff = LIGHTING_CUTOFF_HIGH
+ usr.sync_lighting_plane_cutoff()
+
+/obj/item/robot_model/saboteur/be_transformed_to(obj/item/robot_model/old_model, forced = FALSE)
+ var/datum/action/cooldown/borg_thermal/thermal_vision = new(loc)
+ . = ..()
+ if(!.)
+ return
+ thermal_vision.Grant(loc)
+ thermal_vision_ref = WEAKREF(thermal_vision)
+
+/obj/item/robot_model/saboteur/Destroy()
+ QDEL_NULL(thermal_vision_ref)
+ return ..()
/obj/item/robot_model/syndicate/kiltborg
name = "Highlander"
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 1801a23b155..2c0cac37b40 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -892,6 +892,12 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks())
charges = 200
max_charges = 200
+/obj/item/toner/infinite
+ name = "infinite toner cartridge"
+ desc = "...are you satisfied now?"
+ charges = INFINITY
+ max_charges = INFINITY
+
#undef PHOTOCOPIER_FEE
#undef BLANKS_FILE_NAME
#undef PAPER_PAPER_USE
diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm
index f68879fc757..840244a3d67 100644
--- a/code/modules/projectiles/ammunition/energy/plasma.dm
+++ b/code/modules/projectiles/ammunition/energy/plasma.dm
@@ -9,3 +9,4 @@
projectile_type = /obj/projectile/plasma/adv
delay = 10
e_cost = LASER_SHOTS(100, STANDARD_CELL_CHARGE)
+
diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm
index 7da09b56729..adba89e4d88 100644
--- a/code/modules/projectiles/projectile/special/plasma.dm
+++ b/code/modules/projectiles/projectile/special/plasma.dm
@@ -38,3 +38,4 @@
damage = 24
range = 7
pass_flags = PASSTABLE | PASSGLASS | PASSGRILLE
+
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 274f5f8b11d..261b3104bd8 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -1652,13 +1652,14 @@
search_metadata = "boris"
/datum/design/borg_upgrade_rped
- name = "Rapid Part Exchange Device"
+ name = "Rapid Part Exchange Device Expanded"
id = "borg_upgrade_rped"
build_type = MECHFAB
build_path = /obj/item/borg/upgrade/rped
materials = list(
- /datum/material/iron =SHEET_MATERIAL_AMOUNT*5,
- /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT*7.5,
+ /datum/material/glass = SHEET_MATERIAL_AMOUNT*2.5,
+ /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT*2.5
)
construction_time = 12 SECONDS
category = list(
@@ -1676,11 +1677,11 @@
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_ENGINEERING
)
-/datum/design/borg_upgrade_circuit_app
- name = "Circuit Manipulator"
- id = "borg_upgrade_circuitapp"
+/datum/design/borg_upgrade_engineering_app
+ name = "Engineering Apparatus"
+ id = "borg_upgrade_engineeringapp"
build_type = MECHFAB
- build_path = /obj/item/borg/upgrade/circuit_app
+ build_path = /obj/item/borg/upgrade/engineering_app
materials = list(
/datum/material/iron =SHEET_MATERIAL_AMOUNT,
/datum/material/titanium =SMALL_MATERIAL_AMOUNT*5,
@@ -1718,6 +1719,22 @@
RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL
)
+/datum/design/borg_upgrade_syringe
+ name = "Advanced Syringe"
+ id = "borg_upgrade_syringe"
+ build_type = MECHFAB
+ build_path = /obj/item/borg/upgrade/bs_syringe
+ materials = list(
+ /datum/material/iron =SHEET_MATERIAL_AMOUNT,
+ /datum/material/plasma =HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/diamond =HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/bluespace =SMALL_MATERIAL_AMOUNT*5
+ )
+ construction_time = 12 SECONDS
+ category = list(
+ RND_CATEGORY_MECHFAB_CYBORG_MODULES + RND_SUBCATEGORY_MECHFAB_CYBORG_MODULES_MEDICAL
+ )
+
/datum/design/borg_upgrade_broomer
name = "Experimental Push Broom"
id = "borg_upgrade_broomer"
diff --git a/code/modules/research/part_replacer.dm b/code/modules/research/part_replacer.dm
index 0b4619a862a..fea7c8211d0 100644
--- a/code/modules/research/part_replacer.dm
+++ b/code/modules/research/part_replacer.dm
@@ -169,3 +169,8 @@
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
storage_type = /datum/storage/rped/bluespace
+
+/obj/item/storage/part_replacer/cyborg/small
+ desc = "Special mechanical module made to store, sort, and apply standard machine parts. This one has as much space, as your regular RPED"
+ icon_state = "RPED"
+ storage_type = /datum/storage/rped
diff --git a/code/modules/research/techweb/nodes/cyborg_nodes.dm b/code/modules/research/techweb/nodes/cyborg_nodes.dm
index 87300c7e70c..4cab2dd3f08 100644
--- a/code/modules/research/techweb/nodes/cyborg_nodes.dm
+++ b/code/modules/research/techweb/nodes/cyborg_nodes.dm
@@ -89,6 +89,7 @@
"borg_upgrade_piercinghypospray",
"borg_upgrade_surgicalprocessor",
"borg_upgrade_surgicalomnitool",
+ "borg_upgrade_syringe",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
announce_channels = list(RADIO_CHANNEL_SCIENCE)
@@ -125,7 +126,7 @@
design_ids = list(
"borg_upgrade_rped",
"borg_upgrade_engineeringomnitool",
- "borg_upgrade_circuitapp",
+ "borg_upgrade_engineeringapp",
"borg_upgrade_inducer",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
diff --git a/icons/mob/actions/actions_mecha.dmi b/icons/mob/actions/actions_mecha.dmi
index 60df1b5ed1ae51e84183ef248ebfe12a1d8cc1d1..82f0946699512393b9648756cbb583724b184393 100644
GIT binary patch
literal 17882
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
literal 17766
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
diff --git a/icons/mob/effects/durand_shield.dmi b/icons/mob/effects/durand_shield.dmi
index 8f9016ed74be6eda6a843f4f6824ecd5881b9d54..c4a18d1b59904a64e437becaaf415aa2124837fe 100644
GIT binary patch
literal 15614
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