diff --git a/code/game/objects/effects/spawners/random/bureaucracy.dm b/code/game/objects/effects/spawners/random/bureaucracy.dm index ea66c109a10..f797109d0d6 100644 --- a/code/game/objects/effects/spawners/random/bureaucracy.dm +++ b/code/game/objects/effects/spawners/random/bureaucracy.dm @@ -21,6 +21,7 @@ loot = list( /obj/item/stamp/granted = 3, /obj/item/stamp/denied = 1, + /obj/item/stamp/void = 1, ) /obj/effect/spawner/random/bureaucracy/crayon diff --git a/code/game/objects/items/storage/boxes/service_boxes.dm b/code/game/objects/items/storage/boxes/service_boxes.dm index e2b8a1082ec..f598ff126d4 100644 --- a/code/game/objects/items/storage/boxes/service_boxes.dm +++ b/code/game/objects/items/storage/boxes/service_boxes.dm @@ -305,3 +305,16 @@ new /obj/item/sticker/purity_seal(src) new /obj/item/sticker/purity_seal/purity_seal_2(src) +/obj/item/storage/box/stamps + name = "box of stamps" + desc = "Stamps for all kinds of documents." + illustration = "stamp" + custom_price = PAYCHECK_CREW + +/obj/item/storage/box/stamps/PopulateContents() + var/static/items_inside = list( + /obj/item/stamp/granted = 1, + /obj/item/stamp/denied = 1, + /obj/item/stamp/void = 1, + ) + generate_items_inside(items_inside,src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index a43f435c4c9..d17dd0665ef 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -41,6 +41,7 @@ new /obj/item/circuitboard/machine/techfab/department/service(src) new /obj/item/storage/photo_album/hop(src) new /obj/item/storage/lockbox/medal/hop(src) + new /obj/item/storage/box/stamps(src) /obj/structure/closet/secure_closet/hop/populate_contents_immediate() new /obj/item/gun/energy/e_gun(src) diff --git a/code/modules/cargo/packs/general.dm b/code/modules/cargo/packs/general.dm index ab0a1ed5cfb..f3a2f75727e 100644 --- a/code/modules/cargo/packs/general.dm +++ b/code/modules/cargo/packs/general.dm @@ -113,8 +113,7 @@ /obj/item/folder/red, /obj/item/folder/yellow, /obj/item/clipboard = 2, - /obj/item/stamp/granted, - /obj/item/stamp/denied, + /obj/item/storage/box/stamps, /obj/item/laser_pointer/purple, ) crate_name = "bureaucracy crate" diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index f047cbfce34..c2e0a64deb9 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -278,7 +278,7 @@ /obj/item/mod/module/stamp name = "MOD stamper module" desc = "A module installed into the wrist of the suit, this functions as a high-power stamp, \ - able to switch between accept and deny modes." + able to switch between accept, deny, and void modes." icon_state = "stamp" module_type = MODULE_ACTIVE complexity = 1 @@ -290,15 +290,28 @@ /obj/item/stamp/mod name = "MOD electronic stamp" - desc = "A high-power stamp, able to switch between accept and deny mode when used." + desc = "A high-power stamp, able to switch between accept, deny, and void modes when used." + icon_state = "stamp-ok" /obj/item/stamp/mod/attack_self(mob/user, modifiers) - . = ..() - if(icon_state == "stamp-ok") - icon_state = "stamp-deny" - else - icon_state = "stamp-ok" - balloon_alert(user, "switched mode") + + var/choices = list() + var/icon_states = list() + icon_states["Granted"] = "stamp-ok" + icon_states["Denied"] = "stamp-deny" + icon_states["Void"] = "stamp-void" + for(var/possible_icon_state in icon_states) + if(!(src.icon_state == icon_states[possible_icon_state])) + choices[possible_icon_state] = image(src.icon, icon_states[possible_icon_state]) + var/chosen_icon_state = show_radial_menu(user, user, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), src, user), require_near = TRUE) + if(chosen_icon_state) + playsound(src, 'sound/machines/click.ogg', 30, TRUE, -3) + src.icon_state = icon_states[chosen_icon_state] + +/obj/item/stamp/mod/proc/check_menu(datum/target, mob/user) + if(user.incapacitated || !user.is_holding(target)) + return FALSE + return TRUE ///Atrocinator - Flips your gravity. /obj/item/mod/module/atrocinator diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm index 16b3de83e32..388b25da125 100644 --- a/code/modules/surgery/organs/autosurgeon.dm +++ b/code/modules/surgery/organs/autosurgeon.dm @@ -128,8 +128,6 @@ else return ..() - - /obj/item/autosurgeon/screwdriver_act(mob/living/user, obj/item/screwtool) if(..()) return TRUE @@ -150,12 +148,10 @@ return TRUE /obj/item/autosurgeon/medical_hud - name = "autosurgeon" desc = "A single use autosurgeon that contains a medical heads-up display augment. A screwdriver can be used to remove it, but implants can't be placed back in." uses = 1 starting_organ = /obj/item/organ/cyberimp/eyes/hud/medical - /obj/item/autosurgeon/syndicate name = "suspicious autosurgeon" icon_state = "autosurgeon_syndicate" diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm index 1d9244fb619..62760b8c2b5 100644 --- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm +++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm @@ -287,10 +287,12 @@ /obj/item/taperecorder, /obj/item/lighter, /obj/item/laser_pointer, - /obj/item/stamp/granted, - /obj/item/stamp/denied, + /obj/item/stamp/mod/toolkit, ) +/obj/item/stamp/mod/toolkit + name = "integrated electronic stamp" + /obj/item/organ/cyberimp/arm/toolkit/paperwork/emag_act(mob/user, obj/item/card/emag/emag_card) for(var/datum/weakref/created_item in items_list) var/obj/potential_tool = created_item.resolve() diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index f681d970f9b..8f83b0fd949 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -536,6 +536,7 @@ GLOBAL_VAR_INIT(roaches_deployed, FALSE) /obj/item/radio/headset/headset_srv = 2, /obj/item/storage/box/evidence = 2, /obj/item/reagent_containers/cup/fish_feed = 1, + /obj/item/storage/box/stamps = 1, ) premium = list( /obj/item/mod/control/pre_equipped/portable_suit = 1, diff --git a/icons/obj/storage/box.dmi b/icons/obj/storage/box.dmi index 23e5a8428a3..4101697250c 100644 Binary files a/icons/obj/storage/box.dmi and b/icons/obj/storage/box.dmi differ