diff --git a/code/modules/response_team/ert_outfits.dm b/code/modules/response_team/ert_outfits.dm
index d4b4f5fc929..029a53b64bc 100644
--- a/code/modules/response_team/ert_outfits.dm
+++ b/code/modules/response_team/ert_outfits.dm
@@ -75,7 +75,7 @@
mask = /obj/item/clothing/mask/gas/sechailer/swat
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/eyes/hud/security,
- /obj/item/organ/internal/cyberimp/chest/nutriment
+ /obj/item/organ/internal/cyberimp/chest/nutriment/hardened
)
belt = /obj/item/gun/energy/gun/blueshield/pdw9
@@ -108,7 +108,7 @@
)
cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened,
/obj/item/organ/internal/cyberimp/arm/flash
@@ -160,7 +160,7 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/arm/flash,
- /obj/item/organ/internal/cyberimp/chest/nutriment,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/hardened,
/obj/item/organ/internal/cyberimp/eyes/hud/security
)
@@ -196,7 +196,7 @@
)
cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened,
/obj/item/organ/internal/cyberimp/arm/telebaton,
@@ -247,7 +247,7 @@
mask = /obj/item/clothing/mask/gas
cybernetic_implants = list(
/obj/item/organ/internal/eyes/cybernetic/shield,
- /obj/item/organ/internal/cyberimp/chest/nutriment
+ /obj/item/organ/internal/cyberimp/chest/nutriment/hardened
)
l_pocket = /obj/item/t_scanner
r_pocket = /obj/item/melee/classic_baton/telescopic
@@ -280,7 +280,7 @@
)
cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened,
/obj/item/organ/internal/eyes/cybernetic/shield,
@@ -338,7 +338,7 @@
suit_store = /obj/item/gun/energy/gun
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/arm/surgery,
- /obj/item/organ/internal/cyberimp/chest/nutriment
+ /obj/item/organ/internal/cyberimp/chest/nutriment/hardened
)
belt = /obj/item/defibrillator/compact/advanced/loaded
@@ -387,7 +387,7 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/arm/surgery/l,
/obj/item/organ/internal/cyberimp/arm/medibeam,
- /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened,
/obj/item/organ/internal/cyberimp/eyes/hud/medical,
/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened
)
@@ -437,7 +437,7 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/eyes/hud/security,
- /obj/item/organ/internal/cyberimp/chest/nutriment
+ /obj/item/organ/internal/cyberimp/chest/nutriment/hardened
)
implants = list(/obj/item/implant/mindshield,
@@ -454,7 +454,7 @@
r_pocket = /obj/item/nullrod/ert
cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened,
/obj/item/organ/internal/cyberimp/eyes/hud/security,
/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened
)
@@ -505,7 +505,7 @@
cybernetic_implants = list(
/obj/item/organ/internal/cyberimp/arm/janitorial,
- /obj/item/organ/internal/cyberimp/chest/nutriment
+ /obj/item/organ/internal/cyberimp/chest/nutriment/hardened
)
/datum/outfit/job/centcom/response_team/janitorial/gamma
@@ -526,7 +526,7 @@
)
cybernetic_implants = list(
- /obj/item/organ/internal/cyberimp/chest/nutriment/plus,
+ /obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened,
/obj/item/organ/internal/cyberimp/arm/advmop,
/obj/item/organ/internal/cyberimp/brain/anti_stun/hardened
)
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index 815b1941601..b3d8529d5b3 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -300,14 +300,22 @@
var/hunger_threshold = NUTRITION_LEVEL_STARVING
var/synthesizing = 0
var/poison_amount = 5
+ var/disabled_by_emp = FALSE
slot = "stomach"
origin_tech = "materials=2;powerstorage=2;biotech=2"
+/obj/item/organ/internal/cyberimp/chest/nutriment/examine(mob/user)
+ . = ..()
+ if(emp_proof)
+ . += " The implant has been hardened. It is invulnerable to EMPs."
+
/obj/item/organ/internal/cyberimp/chest/nutriment/on_life()
if(!owner)
return
if(synthesizing)
return
+ if(disabled_by_emp)
+ return
if(owner.stat == DEAD)
return
if(owner.nutrition <= hunger_threshold)
@@ -319,11 +327,20 @@
/obj/item/organ/internal/cyberimp/chest/nutriment/proc/synth_cool()
synthesizing = FALSE
+/obj/item/organ/internal/cyberimp/chest/nutriment/proc/emp_cool()
+ disabled_by_emp = FALSE
+
/obj/item/organ/internal/cyberimp/chest/nutriment/emp_act(severity)
if(!owner || emp_proof)
return
+ owner.vomit(100, FALSE, TRUE, 3, FALSE) // because when else do we ever use projectile vomiting
+ owner.visible_message("The contents of [owner]'s stomach erupt violently from [owner.p_their()] mouth!",
+ "You feel like your insides are burning as you vomit profusely!",
+ "You hear vomiting and a sickening splattering against the floor!")
owner.reagents.add_reagent("????",poison_amount / severity) //food poisoning
- to_chat(owner, "You feel like your insides are burning.")
+ disabled_by_emp = TRUE // Disable the implant for a little bit so this effect actually matters
+ synthesizing = FALSE
+ addtimer(CALLBACK(src, .proc/emp_cool), 60 SECONDS)
/obj/item/organ/internal/cyberimp/chest/nutriment/plus
name = "Nutriment pump implant PLUS"
@@ -333,6 +350,13 @@
hunger_threshold = NUTRITION_LEVEL_HUNGRY
poison_amount = 10
origin_tech = "materials=4;powerstorage=3;biotech=3"
+/obj/item/organ/internal/cyberimp/chest/nutriment/hardened
+ name = "hardened nutrient pump implant"
+ emp_proof = TRUE
+
+/obj/item/organ/internal/cyberimp/chest/nutriment/plus/hardened
+ name = "hardened nutrient pump implant PLUS"
+ emp_proof = TRUE
/obj/item/organ/internal/cyberimp/chest/reviver
name = "Reviver implant"