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