diff --git a/code/game/objects/items/weapons/implants/implant_storage.dm b/code/game/objects/items/weapons/implants/implant_storage.dm
index 18b08bba283..b530fd860fa 100644
--- a/code/game/objects/items/weapons/implants/implant_storage.dm
+++ b/code/game/objects/items/weapons/implants/implant_storage.dm
@@ -20,6 +20,10 @@
..()
storage = new /obj/item/storage/hidden/implant(src)
+/obj/item/implant/storage/emp_act(severity)
+ ..()
+ storage.emp_act(severity)
+
/obj/item/implant/storage/activate()
storage.MouseDrop(imp_in)
diff --git a/code/game/objects/items/weapons/misc.dm b/code/game/objects/items/weapons/misc.dm
index 0732c0fdd1d..40d68cc8fc6 100644
--- a/code/game/objects/items/weapons/misc.dm
+++ b/code/game/objects/items/weapons/misc.dm
@@ -77,6 +77,10 @@
item_state = "gift"
w_class = WEIGHT_CLASS_BULKY
+/obj/item/gift/emp_act(severity)
+ ..()
+ gift.emp_act(severity)
+
/obj/item/kidanglobe
name = "Kidan homeworld globe"
icon = 'icons/obj/decorations.dmi'
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 1ff2b2f2c56..0aa7d976082 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -481,10 +481,10 @@
return ..()
/obj/item/storage/emp_act(severity)
- if(!istype(loc, /mob/living))
- for(var/obj/O in contents)
- O.emp_act(severity)
..()
+ for(var/i in contents)
+ var/atom/A = i
+ A.emp_act(severity)
/obj/item/storage/hear_talk(mob/living/M as mob, list/message_pieces)
..()
diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm
index 0c77183b578..9a675742b5e 100644
--- a/code/modules/clothing/suits/storage.dm
+++ b/code/modules/clothing/suits/storage.dm
@@ -25,8 +25,8 @@
return pockets.attackby(W, user, params)
/obj/item/clothing/suit/storage/emp_act(severity)
- pockets.emp_act(severity)
..()
+ pockets.emp_act(severity)
/obj/item/clothing/suit/storage/hear_talk(mob/M, list/message_pieces)
pockets.hear_talk(M, message_pieces)
diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm
index 16eb1cd476a..727aba06b37 100644
--- a/code/modules/clothing/under/accessories/storage.dm
+++ b/code/modules/clothing/under/accessories/storage.dm
@@ -37,8 +37,8 @@
return hold.attackby(W, user, params)
/obj/item/clothing/accessory/storage/emp_act(severity)
- hold.emp_act(severity)
..()
+ hold.emp_act(severity)
/obj/item/clothing/accessory/storage/hear_talk(mob/M, list/message_pieces, verb)
hold.hear_talk(M, message_pieces, verb)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 9552477e210..3efcc7a9ce9 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -926,9 +926,10 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/unary/ven
return initial(pixel_y)
/mob/living/carbon/emp_act(severity)
- for(var/obj/item/organ/internal/O in internal_organs)
- O.emp_act(severity)
..()
+ for(var/X in internal_organs)
+ var/obj/item/organ/internal/O = X
+ O.emp_act(severity)
/mob/living/carbon/Stat()
..()
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index ad1d249439d..d698a68c6d5 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -206,12 +206,6 @@ emp_act
if(martial_art && prob(martial_art.block_chance) && martial_art.can_use(src) && in_throw_mode && !incapacitated(FALSE, TRUE))
return TRUE
-/mob/living/carbon/human/emp_act(severity)
- for(var/obj/O in src)
- if(!O) continue
- O.emp_act(severity)
- ..()
-
/mob/living/carbon/human/acid_act(acidpwr, acid_volume, bodyzone_hit) //todo: update this to utilize check_obscured_slots() //and make sure it's check_obscured_slots(TRUE) to stop aciding through visors etc
var/list/damaged = list()
var/list/inventory_items_to_kill = list()
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index 6e4f13d735f..604fd47de16 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -73,10 +73,9 @@
return shock_damage
/mob/living/emp_act(severity)
- var/list/L = src.get_contents()
- for(var/obj/O in L)
- O.emp_act(severity)
..()
+ for(var/obj/O in contents)
+ O.emp_act(severity)
/obj/item/proc/get_volume_by_throwforce_and_or_w_class()
if(throwforce && w_class)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index ddc96a7948f..85c4ceac427 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -571,13 +571,13 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
return FALSE
/mob/living/silicon/ai/emp_act(severity)
+ ..()
if(prob(30))
switch(pick(1,2))
if(1)
view_core()
if(2)
ai_call_shuttle()
- ..()
/mob/living/silicon/ai/ex_act(severity)
..()
diff --git a/code/modules/mob/living/silicon/robot/syndicate.dm b/code/modules/mob/living/silicon/robot/syndicate.dm
index 2b5fd9bb702..f5ac3e5532b 100644
--- a/code/modules/mob/living/silicon/robot/syndicate.dm
+++ b/code/modules/mob/living/silicon/robot/syndicate.dm
@@ -137,9 +137,9 @@
..()
/mob/living/silicon/robot/syndicate/saboteur/emp_act()
+ ..()
if(cham_proj)
cham_proj.disrupt(src)
- ..()
/mob/living/silicon/robot/syndicate/saboteur/bullet_act()
if(cham_proj)
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 65267911d7f..6457afc87d4 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -76,17 +76,17 @@
return FALSE //So borgs they don't die trying to fix wiring
/mob/living/silicon/emp_act(severity)
+ ..()
switch(severity)
if(1)
- src.take_organ_damage(20)
+ take_organ_damage(20)
Stun(8)
if(2)
- src.take_organ_damage(10)
+ take_organ_damage(10)
Stun(3)
flash_eyes(affect_silicon = 1)
to_chat(src, "*BZZZT*")
to_chat(src, "Warning: Electromagnetic pulse detected.")
- ..()
/mob/living/silicon/proc/damage_mob(var/brute = 0, var/fire = 0, var/tox = 0)
diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm
index de894e80106..eefb4d299a4 100644
--- a/code/modules/paperwork/folders.dm
+++ b/code/modules/paperwork/folders.dm
@@ -7,6 +7,12 @@
pressure_resistance = 2
resistance_flags = FLAMMABLE
+/obj/item/folder/emp_act(severity)
+ ..()
+ for(var/i in contents)
+ var/atom/A = i
+ A.emp_act(severity)
+
/obj/item/folder/blue
desc = "A blue folder."
icon_state = "folder_blue"
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 0fdca68811c..403df48be69 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -95,6 +95,12 @@
CHECK_TICK
..()
+/obj/item/smallDelivery/emp_act(severity)
+ ..()
+ for(var/i in contents)
+ var/atom/A = i
+ A.emp_act(severity)
+
/obj/item/smallDelivery/attack_self(mob/user as mob)
if(wrapped && wrapped.loc) //sometimes items can disappear. For example, bombs. --rastaf0
wrapped.loc = user.loc