diff --git a/code/modules/clothing/spacesuits/rig/modules/combat.dm b/code/modules/clothing/spacesuits/rig/modules/combat.dm
index 88e989c2a0..f67b49a9ad 100644
--- a/code/modules/clothing/spacesuits/rig/modules/combat.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/combat.dm
@@ -1,12 +1,21 @@
-/*
+bureaucracybureaucracybureaucracy/*
* Contains
* /obj/item/rig_module/grenade_launcher
* /obj/item/rig_module/mounted
* /obj/item/rig_module/mounted/taser
* /obj/item/rig_module/shield
* /obj/item/rig_module/fabricator
+ * /obj/item/rig_module/device/flash
*/
+/obj/item/rig_module/device/flash
+ name = "mounted flash"
+ desc = "You are the law."
+ icon_state = "flash"
+ interface_name = "mounted flash"
+ interface_desc = "Stuns your target by blinding them with a bright light."
+ device_type = /obj/item/device/flash
+
/obj/item/rig_module/grenade_launcher
name = "mounted grenade launcher"
diff --git a/code/modules/clothing/spacesuits/rig/modules/utility.dm b/code/modules/clothing/spacesuits/rig/modules/utility.dm
index 79abda20cc..ad17325632 100644
--- a/code/modules/clothing/spacesuits/rig/modules/utility.dm
+++ b/code/modules/clothing/spacesuits/rig/modules/utility.dm
@@ -12,6 +12,9 @@
* /obj/item/rig_module/chem_dispenser
* /obj/item/rig_module/chem_dispenser/injector
* /obj/item/rig_module/voice
+ * /obj/item/rig_module/device/paperdispenser
+ * /obj/item/rig_module/device/pen
+ * /obj/item/rig_module/device/stamp
*/
/obj/item/rig_module/device
@@ -94,7 +97,6 @@
if(device_type) device = new device_type(src)
/obj/item/rig_module/device/engage(atom/target)
-
if(!..() || !device)
return 0
@@ -377,4 +379,64 @@
jets.holder = null
jets.ion_trail.set_up(jets)
-/obj/item/rig_module/foam_sprayer
\ No newline at end of file
+/obj/item/rig_module/foam_sprayer
+
+/obj/item/rig_module/device/paperdispenser
+ name = "hardsuit paper dispenser"
+ desc = "Crisp sheets."
+ icon_state = "paper"
+ interface_name = "paper dispenser"
+ interface_desc = "Dispenses warm, clean, and crisp sheets of paper."
+ engage_string = "Dispense"
+ usable = 1
+ selectable = 0
+ device_type = /obj/item/weapon/paper_bin
+
+/obj/item/rig_module/device/paperdispenser/engage(atom/target)
+
+ if(!..() || !device)
+ return 0
+
+ if(!target)
+ device.attack_hand(holder.wearer)
+ return 1
+
+/obj/item/rig_module/device/pen
+ name = "mounted pen"
+ desc = "For mecha John Hancocks."
+ icon_state = "pen"
+ interface_name = "mounted pen"
+ interface_desc = "Signatures with style(tm)."
+ engage_string = "Change color"
+ usable = 1
+ device_type = /obj/item/weapon/pen/multi
+
+/obj/item/rig_module/device/stamp
+ name = "mounted internal affairs stamp"
+ desc = "DENIED."
+ icon_state = "stamp"
+ interface_name = "mounted stamp"
+ interface_desc = "Leave your mark."
+ engage_string = "Toggle stamp type"
+ usable = 1
+ var/iastamp
+ var/deniedstamp
+
+/obj/item/rig_module/device/stamp/New()
+ ..()
+ iastamp = new /obj/item/weapon/stamp/internalaffairs(src)
+ deniedstamp = new /obj/item/weapon/stamp/denied(src)
+ device = iastamp
+
+/obj/item/rig_module/device/stamp/engage(atom/target)
+ if(!..() || !device)
+ return 0
+
+ if(!target)
+ if(device == iastamp)
+ device = deniedstamp
+ holder.wearer << "Switched to denied stamp."
+ else if(device == deniedstamp)
+ device = iastamp
+ holder.wearer << "Switched to internal affairs stamp."
+ return 1
\ No newline at end of file
diff --git a/code/modules/clothing/spacesuits/rig/suits/station.dm b/code/modules/clothing/spacesuits/rig/suits/station.dm
index 5ba33b2fc1..69f90969ef 100644
--- a/code/modules/clothing/spacesuits/rig/suits/station.dm
+++ b/code/modules/clothing/spacesuits/rig/suits/station.dm
@@ -19,6 +19,42 @@
light_overlay = "helmet_light_dual"
camera_networks = list("Security")
+/obj/item/weapon/rig/internalaffairs
+ name = "internal affairs suit control module"
+ suit_type = "internal affairs hardsuit"
+ desc = "Prepare for paperwork."
+ icon_state = "internalaffairs_rig"
+ armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
+ siemens_coefficient = 0.9
+ slowdown = 0
+ offline_slowdown = 0
+ offline_vision_restriction = 0
+
+ allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/briefcase,/obj/item/weapon/storage/secure/briefcase)
+
+ req_access = list()
+ req_one_access = list()
+
+ glove_type = null
+ helm_type = null
+ boot_type = null
+
+/obj/item/weapon/rig/internalaffairs/equipped
+
+ req_access = list(access_lawyer)
+
+ initial_modules = list(
+ /obj/item/rig_module/ai_container,
+ /obj/item/rig_module/device/flash,
+ /obj/item/rig_module/device/paperdispenser,
+ /obj/item/rig_module/device/pen,
+ /obj/item/rig_module/device/stamp
+ )
+
+ glove_type = null
+ helm_type = null
+ boot_type = null
+
/obj/item/weapon/rig/industrial
name = "industrial suit control module"
suit_type = "industrial hardsuit"
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index f855d27452..ca8421584b 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -326,7 +326,16 @@
var/obj/item/i = usr.get_active_hand() // Check to see if he still got that darn pen, also check if he's using a crayon or pen.
var/iscrayon = 0
if(!istype(i, /obj/item/weapon/pen))
- return
+ if(usr.back && istype(usr.back,/obj/item/weapon/rig))
+ var/obj/item/weapon/rig/r = usr.back
+ var/obj/item/rig_module/device/pen/m = locate(/obj/item/rig_module/device/pen) in r.installed_modules
+ if(!r.offline && m)
+ i = m.device
+ else
+ return
+ else
+ return
+
if(istype(i, /obj/item/weapon/pen/crayon))
iscrayon = 1
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index b7b34d8a8f..1441a9169f 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -35,6 +35,24 @@
icon_state = "pen_red"
colour = "red"
+/obj/item/weapon/pen/multi
+ desc = "It's a pen with multiple colors of ink!"
+ var/selectedColor = 1
+ var/colors = list("black","blue","red")
+
+/obj/item/weapon/pen/multi/attack_self(mob/user)
+ if(++selectedColor > 3)
+ selectedColor = 1
+
+ colour = colors[selectedColor]
+
+ if(colour == "black")
+ icon_state = "pen"
+ else
+ icon_state = "pen_[colour]"
+
+ user << "Changed color to '[colour].'"
+
/obj/item/weapon/pen/invisible
desc = "It's an invisble pen marker."
icon_state = "pen"
diff --git a/icons/mob/rig_back.dmi b/icons/mob/rig_back.dmi
index fdd761de54..23fca1fb09 100644
Binary files a/icons/mob/rig_back.dmi and b/icons/mob/rig_back.dmi differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index c43ee44df5..885e947ea8 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index bc3f111fd3..1108afbfb9 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/rig_modules.dmi b/icons/obj/rig_modules.dmi
index 1dbcf6ac31..eb07533d74 100644
Binary files a/icons/obj/rig_modules.dmi and b/icons/obj/rig_modules.dmi differ
diff --git a/maps/exodus-1.dmm b/maps/exodus-1.dmm
index 3dc6524210..87adaceeb9 100644
--- a/maps/exodus-1.dmm
+++ b/maps/exodus-1.dmm
@@ -749,7 +749,7 @@
"aou" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/lobby)
"aov" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/security/lobby)
"aow" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/security/lobby)
-"aox" = (/obj/machinery/light{dir = 8},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -2; pixel_y = -5},/obj/item/weapon/storage/briefcase{pixel_x = 3; pixel_y = 0},/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
+"aox" = (/obj/machinery/light{dir = 8},/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase{pixel_x = -2; pixel_y = -5},/obj/item/weapon/storage/briefcase{pixel_x = 3; pixel_y = 0},/obj/item/weapon/rig/internalaffairs/equipped,/obj/item/weapon/rig/internalaffairs/equipped,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"aoy" = (/obj/machinery/photocopier,/turf/simulated/floor{icon_state = "cult"; dir = 2},/area/lawoffice)
"aoz" = (/obj/structure/window/basic{dir = 1},/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office)
"aoA" = (/obj/structure/window/basic{dir = 1},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office)