diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index b57b4361558..063ffefbe78 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -110,7 +110,7 @@
else if(issilicon(M))
var/mob/living/silicon/robot/R = M
- if(R.module_active && istype(R.module_active,/obj/item/borg/combat/shield))
+ 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
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index e3efa6b52b9..bf1222e76e1 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -1001,7 +1001,7 @@ var/list/robot_verbs_default = list(
else
overlays += "ov-openpanel -c"
- if(module_active && istype(module_active,/obj/item/borg/combat/shield))
+ if(activated(/obj/item/borg/combat/shield))
overlays += "[icon_state]-shield"
if(modtype == "Combat")
@@ -1430,3 +1430,22 @@ var/list/robot_verbs_default = list(
choose_icon(6,module_sprites)
radio.config(module.channels)
notify_ai(2)
+
+
+/mob/living/silicon/robot/peacekeeper/New()
+ ..()
+ var/module_sprites[0] //Used to store the associations between sprite names and sprite index.
+ module = new /obj/item/weapon/robot_module/combat(src)
+ module_sprites["Combat Android"] = "droidpeace"
+ //languages
+ module.add_languages(src)
+ //subsystems
+ module.add_subsystems(src)
+
+ hands.icon_state = lowertext("Combat")
+ updatename()
+
+ status_flags &= ~CANPUSH
+
+ choose_icon(6,module_sprites)
+ notify_ai(2)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot_damage.dm b/code/modules/mob/living/silicon/robot/robot_damage.dm
index f01b7abbd7c..6fbef87e174 100644
--- a/code/modules/mob/living/silicon/robot/robot_damage.dm
+++ b/code/modules/mob/living/silicon/robot/robot_damage.dm
@@ -67,8 +67,14 @@
return
//Combat shielding absorbs a percentage of damage directly into the cell.
- if(module_active && istype(module_active,/obj/item/borg/combat/shield))
- var/obj/item/borg/combat/shield/shield = module_active
+ var/obj/item/borg/combat/shield/shield
+ if((module_state_1 && istype(module_state_1,/obj/item/borg/combat/shield))
+ shield = module_state_1
+ else if(module_state_2 && istype(module_state_2,/obj/item/borg/combat/shield))
+ shield = module_state 2
+ else if(module_state 3 && istype(module_state_3,/obj/item/borg/combat/shield))
+ shield = module_state 3
+ if(shield)
//Shields absorb a certain percentage of damage based on their power setting.
var/absorb_brute = brute*shield.shield_level
var/absorb_burn = burn*shield.shield_level
@@ -112,8 +118,14 @@
var/list/datum/robot_component/parts = get_damageable_components()
//Combat shielding absorbs a percentage of damage directly into the cell.
- if(module_active && istype(module_active,/obj/item/borg/combat/shield))
- var/obj/item/borg/combat/shield/shield = module_active
+ var/obj/item/borg/combat/shield/shield
+ if((module_state_1 && istype(module_state_1,/obj/item/borg/combat/shield))
+ shield = module_state_1
+ else if(module_state_2 && istype(module_state_2,/obj/item/borg/combat/shield))
+ shield = module_state 2
+ else if(module_state 3 && istype(module_state_3,/obj/item/borg/combat/shield))
+ shield = module_state 3
+ if(shield)
//Shields absorb a certain percentage of damage based on their power setting.
var/absorb_brute = brute*shield.shield_level
var/absorb_burn = burn*shield.shield_level