dm is a curse (#7560)

## About The Pull Request
Random various bugfixes to random various things.
## Why It's Good For The Game
:slime:🔧
## Changelog
🆑
fix: Power network interface circuits work again.
fix: You can now heal prosthetics with cables again.
fix: Protolathes should no longer bluescreen when destructively
analyzing material sheets.
fix: Destructively analyzing advanced TTS circuits is no longer morally
dubious.
/🆑
This commit is contained in:
its-helvi
2026-03-28 15:20:07 -04:00
committed by GitHub
parent 62a816d917
commit 2f92e2021d
7 changed files with 40 additions and 22 deletions
@@ -210,7 +210,7 @@
IO.disconnect_from_network()
/obj/item/integrated_circuit/passive/power/powernet/make_energy()
var/obj/item/cell/battery = get_cell()
var/obj/item/cell/battery = assembly?.get_cell()
if(assembly && assembly.anchored && battery)
var/should_act = get_pin_data(IC_INPUT, 1) // Even if this is false, we still need to update the output pins with powernet information.
var/drawing = get_pin_data(IC_INPUT, 2)
+3
View File
@@ -102,6 +102,9 @@
return TRUE
return ..()
/mob/living/voice/death(gibbed, deathmessage = "no message") // and god taketh away
. = ..(gibbed, deathmessage)
// Proc: say()
// Parameters: 4 (generic say() arguments)
// Description: Adds a speech bubble to the communicator device, then calls ..() to do the real work.
+29 -15
View File
@@ -545,7 +545,6 @@ GLOBAL_LIST_INIT(possible_cable_coil_colours, list(
stack_type = /obj/item/stack/cable_coil
drop_sound = 'sound/items/drop/accessory.ogg'
pickup_sound = 'sound/items/pickup/accessory.ogg'
stack_type = /obj/item/stack/cable_coil
/obj/item/stack/cable_coil/Initialize(mapload, new_amount, merge, param_color)
. = ..()
@@ -560,29 +559,44 @@ GLOBAL_LIST_INIT(possible_cable_coil_colours, list(
// General procedures
///////////////////////////////////
//you can use wires to heal robotics
/obj/item/stack/cable_coil/legacy_mob_melee_hook(mob/target, mob/user, clickchain_flags, list/params, mult, target_zone, intent)
if(ishuman(target) && user.a_intent == INTENT_HELP)
/obj/item/stack/cable_coil/using_as_item(atom/target, datum/event_args/actor/clickchain/clickchain, clickchain_flags)
. = ..()
if(. & CLICKCHAIN_FLAGS_INTERACT_ABORT)
return
if(clickchain.using_intent == INTENT_HELP)
if(fix_limb_burns(target, clickchain.performer, clickchain.target_zone) >= 0)
return CLICKCHAIN_DID_SOMETHING
// you can use wires to heal robots
// returns the number of cables used, or -1 if we couldn't fix the limb
/obj/item/stack/cable_coil/proc/fix_limb_burns(mob/target, mob/user, target_zone)
. = -1
if(ishuman(target))
var/mob/living/carbon/human/H = target
var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
to_chat(user, SPAN_WARNING("That isn't a robotic limb."))
var/obj/item/organ/external/S = H.organs_by_name[target_zone]
if(!S)
user.visible_message(SPAN_WARNING("That limb is missing!"))
return
var/use_amt = min(src.amount, CEILING(S.burn_dam / 20, 1), 5)
if(can_use(use_amt))
if(S.robotic < ORGAN_ROBOT)
user.visible_message(SPAN_WARNING("That isn't a robotic limb."))
return
if(S.open == 3) // someone's doing surgery
return
var/use_amt = min(src.amount, CEILING(S.burn_dam / 5, 1), 5)
if(get_amount() >= use_amt)
if(S.robo_repair(5*use_amt, DAMAGE_TYPE_BURN, "some damaged wiring", src, user))
use(use_amt)
return use_amt
return
if(is_holosphere_shell(target) && user.a_intent == INTENT_HELP)
if(is_holosphere_shell(target))
var/mob/living/simple_mob/holosphere_shell/shell = target
var/use_amt = min(src.amount, CEILING(shell.fireloss / 20, 1), 5)
if(can_use(use_amt))
var/use_amt = min(src.amount, CEILING(shell.fireloss / 5, 1), 5)
if(get_amount() >= use_amt)
if(shell.shell_repair(5*use_amt, DAMAGE_TYPE_BURN, "some damaged wiring", src, user))
use(use_amt)
return use_amt
return
return ..()
/obj/item/stack/cable_coil/update_icon()
if (!color)
@@ -694,7 +708,7 @@ GLOBAL_LIST_INIT(possible_cable_coil_colours, list(
var/end_dir = 0
if(istype(F, /turf/simulated/open))
if(!can_use(2))
if(get_amount() < 2)
to_chat(user, "You don't have enough cable to do this!")
return
end_dir = DOWN
@@ -245,6 +245,7 @@
if(linked_lathe) // Also sends salvaged materials to a linked protolathe, if any.
var/list/mats = linked_destroy.loaded_item.get_materials(TRUE)
linked_lathe.stored_materials.add(mats, linked_destroy.decon_mod)
linked_lathe.ui_controller?.ui_materials_update()
linked_destroy.loaded_item = null
for(var/obj/I in linked_destroy.contents)
+2 -2
View File
@@ -212,11 +212,11 @@
to_chat(user, "<span class='notice'>There are no burnt wires here!</span>")
return SURGERY_FAILURE
else
if(!C.can_use(1))
if(C.get_amount() < 5)
to_chat(user, "<span class='danger'>You need at least five cable pieces to repair this part.</span>") //usage amount made more consistent with regular cable repair
return SURGERY_FAILURE
else
C.use(1)
C.use(5)
return affected && affected.open == 3 && (affected.disfigured || affected.burn_dam > 0) && target_zone != O_MOUTH