From b3057ba2cfab05c857bd45b798e817cd3942730f Mon Sep 17 00:00:00 2001 From: nullspace-industries <57872710+nullspace-industries@users.noreply.github.com> Date: Sun, 13 Apr 2025 09:51:41 +0100 Subject: [PATCH] New biphasic system for IPC overcharging --- code/modules/surgery/organs/augments_arms.dm | 34 ++++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/code/modules/surgery/organs/augments_arms.dm b/code/modules/surgery/organs/augments_arms.dm index 646adc8d52..c4a0117b15 100644 --- a/code/modules/surgery/organs/augments_arms.dm +++ b/code/modules/surgery/organs/augments_arms.dm @@ -360,6 +360,12 @@ /obj/item/apc_powercord/proc/apc_powerdraw_loop(obj/machinery/power/apc/A, mob/living/carbon/human/H) H.visible_message("[H] inserts a power connector into [A].", "You begin to draw power from [A].") + + //GS13 edit + var/overcharge = FALSE + if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + overcharge = TRUE + while(do_after(H, 10, target = A)) if(loc != H) to_chat(H, "You must keep your connector out while charging!") @@ -378,14 +384,25 @@ A.cell.use(A.cell.charge) to_chat(H, "You siphon off as much as [A] can spare.") break - if(H.nutrition > NUTRITION_LEVEL_FAT) //GS13 edit; I considered uncapped but it drains APCs and fattens stupid fast. could be fun uncapped but speed would need tweaking - to_chat(H, "You are now fully charged.") - break + if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + if(!overcharge) //GS13 edit + to_chat(H, "You are now fully charged.") + break + else + if(H.nutrition >= NUTRITION_LEVEL_FAT) + to_chat(H, "You've packed as much extra power into your battery as it can handle.") + break in_use = FALSE H.visible_message("[H] unplugs from [A].", "You unplug from [A].") /obj/item/apc_powercord/proc/cell_powerdraw_loop(obj/item/stock_parts/cell/C, mob/living/carbon/human/H) H.visible_message("[H] connects a power cord to [C]", "You begin to draw power from [C].") + + //GS13 edit + var/overcharge = FALSE + if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + overcharge = TRUE + while(do_after(H, 10, target = C)) if(loc != H) to_chat(H, "You must keep your connector out while charging!") @@ -397,8 +414,13 @@ C.use(siphoned_charge) do_sparks(1, FALSE, C) H.adjust_nutrition(siphoned_charge / 100) //Less efficient on a pure power basis than APC recharge. Still a very viable way of gaining nutrition. (100 nutrition / base 10k cell) - if(H.nutrition > NUTRITION_LEVEL_FAT) //GS13 edit, as above - to_chat(H, "You are now fully charged.") - break + if(H.nutrition >= NUTRITION_LEVEL_WELL_FED) + if(!overcharge) //GS13 edit + to_chat(H, "You are now fully charged.") + break + else + if(H.nutrition >= NUTRITION_LEVEL_FAT) + to_chat(H, "You've packed as much extra power into your battery as it can handle.") + break in_use = FALSE H.visible_message("[H] disconnects [src] from [C].", "You disconnect from [C].")