diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 275c533958f..39196db70fa 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -111,15 +111,15 @@
else if(issilicon(M))
if(isrobot(M))
var/mob/living/silicon/robot/R = M
- if(R.activated(/obj/item/borg/combat/shield))
- add_logs(M, user, "flashed", object="[src.name]")
- user.visible_message("[user] tries to overloads [M]'s sensors with the [src.name], but if blocked by [M]'s shield!", "You try to overload [M]'s sensors with the [src.name], but are blocked by his shield!")
- return 1
- else
- M.Weaken(rand(5,10))
- add_logs(M, user, "flashed", object="[src.name]")
- user.visible_message("[user] overloads [M]'s sensors with the [src.name]!", "You overload [M]'s sensors with the [src.name]!")
- return 1
+ for(var/obj/item/borg/combat/shield/S in R.module.modules)
+ if(R.activated(S))
+ add_logs(M, user, "flashed", object="[src.name]")
+ user.visible_message("[user] tries to overloads [M]'s sensors with the [src.name], but if blocked by [M]'s shield!", "You try to overload [M]'s sensors with the [src.name], but are blocked by his shield!")
+ return 1
+ M.Weaken(rand(5,10))
+ add_logs(M, user, "flashed", object="[src.name]")
+ user.visible_message("[user] overloads [M]'s sensors with the [src.name]!", "You overload [M]'s sensors with the [src.name]!")
+ return 1
user.visible_message("[user] fails to blind [M] with the [src.name]!", "You fail to blind [M] with the [src.name]!")
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 083b3cd8d3b..b5587a50e5d 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -45,6 +45,13 @@
if(activated(O))
src << "Already activated"
return
+ if (is_component_functioning("power cell") && cell)
+ if(istype(O, /obj/item/borg))
+ var/obj/item/borg/B = O
+ if(B.powerneeded)
+ if((cell.charge * 100 / cell.maxcharge) < B.powerneeded)
+ src << "Not enough power to activate [B.name]!"
+ return
if(!module_state_1)
O.mouse_opacity = initial(O.mouse_opacity)
module_state_1 = O
diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm
index 2e27ac641b5..69b86cace61 100644
--- a/code/modules/mob/living/silicon/robot/life.dm
+++ b/code/modules/mob/living/silicon/robot/life.dm
@@ -29,6 +29,11 @@
/mob/living/silicon/robot/proc/use_power()
if (is_component_functioning("power cell") && cell)
+ for(var/obj/item/borg/B in module.modules)
+ if(B.powerneeded)
+ if((cell.charge * 100 / cell.maxcharge) < B.powerneeded)
+ src << "Deactivating [B.name] due to lack of power!"
+ unEquip(B)
if(src.cell.charge <= 0)
uneq_all()
update_headlamp(1)
diff --git a/code/modules/mob/living/silicon/robot/robot_items.dm b/code/modules/mob/living/silicon/robot/robot_items.dm
index dbfcf15caa8..fb46c2547de 100644
--- a/code/modules/mob/living/silicon/robot/robot_items.dm
+++ b/code/modules/mob/living/silicon/robot/robot_items.dm
@@ -72,11 +72,15 @@
//Personal shielding for the combat module.
+/obj/item/borg
+ var/powerneeded // Percentage of power remaining required to run item
+
/obj/item/borg/combat/shield
name = "personal shielding"
desc = "A powerful experimental module that turns aside or absorbs incoming attacks at the cost of charge."
icon = 'icons/obj/decals.dmi'
icon_state = "shock"
+ powerneeded = 25
var/shield_level = 0.5 //Percentage of damage absorbed by the shield.
/obj/item/borg/combat/shield/verb/set_shield_level()
@@ -92,4 +96,5 @@
name = "mobility module"
desc = "By retracting limbs and tucking in its head, a combat android can roll at high speeds."
icon = 'icons/obj/decals.dmi'
- icon_state = "shock"
\ No newline at end of file
+ icon_state = "shock"
+ powerneeded = 25
\ No newline at end of file