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)