From 2e71e4e73f8d864f1cf92354bd7c10fefc1e9125 Mon Sep 17 00:00:00 2001 From: jcatjmeow <40673387+jcatjmeow@users.noreply.github.com> Date: Mon, 22 Jun 2020 18:25:05 -0400 Subject: [PATCH] Redoes KMC's ticket machine and allows it to be built. (#8833) * Re-does the ticket machine, and makes it obtainable in game * Update ticketmachine.dm * Update ticketmachine.dm * Update ticketmachine.dm * more ticket stuff * Update ticketmachine.dm * shifts a sprite over by 1 pixel * Update yogstation.dme * Update ticketmachine.dm * Update EclipseStation.dmm * Update ticketmachine.dm * Apply suggestions from code review Co-authored-by: Jamie D <993128+JamieD1@users.noreply.github.com> * Update ticketmachine.dm * Update code/modules/research/designs/misc_designs.dm Co-authored-by: Jamie D <993128+JamieD1@users.noreply.github.com> * Update ticketmachine.dm * Update ticketmachine.dm * Tickets ding you * Update EclipseStation.dmm * Update EclipseStation.dmm * Adds it back to eclipse, plus fixes a runtime * Revert "Adds it back to eclipse, plus fixes a runtime" This reverts commit 9483c1bb4c96cb9586dfce2ec525e0f3117fe9a3. * Revert "Update EclipseStation.dmm" This reverts commit 12b1bea5c325726dcdc8bf8b85462f6a9567a90b. * Revert "Update EclipseStation.dmm" This reverts commit 70fe97e841203cea9e1b606986867c5410beff97. * EEEEEE * Update EclipseStation.dmm * Apply suggestions from code review Co-authored-by: Jamie D <993128+JamieD1@users.noreply.github.com> * Destroying a ticket machine gets rid of all the tickets printed by it * Update bureaucracy.dmi Co-authored-by: Jamie D <993128+JamieD1@users.noreply.github.com> --- .../EclipseStation/EclipseStation.dmm | 17 +- .../circuitboards/machine_circuitboards.dm | 9 + code/modules/paperwork/ticketmachine.dm | 339 ++++++++---------- .../research/designs/machine_designs.dm | 8 + code/modules/research/designs/misc_designs.dm | 11 +- code/modules/research/techweb/all_nodes.dm | 2 +- icons/obj/bureaucracy.dmi | Bin 19829 -> 20123 bytes icons/obj/bureaucracy_overlays.dmi | Bin 0 -> 837 bytes 8 files changed, 194 insertions(+), 192 deletions(-) create mode 100644 icons/obj/bureaucracy_overlays.dmi diff --git a/_maps/map_files/EclipseStation/EclipseStation.dmm b/_maps/map_files/EclipseStation/EclipseStation.dmm index 2258a92a07ff..e2126eaf1617 100644 --- a/_maps/map_files/EclipseStation/EclipseStation.dmm +++ b/_maps/map_files/EclipseStation/EclipseStation.dmm @@ -32186,10 +32186,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/security/checkpoint/auxiliary) -"bnL" = ( -/obj/machinery/ticket_machine, -/turf/closed/wall, -/area/crew_quarters/heads/hop) "bnM" = ( /obj/machinery/light{ dir = 1 @@ -33838,10 +33834,6 @@ /turf/open/floor/wood, /area/crew_quarters/heads/hop) "brd" = ( -/obj/machinery/button/ticket_machine{ - pixel_x = 24; - pixel_y = 36 - }, /obj/machinery/button/door{ id = "hopqueue"; name = "Queue Shutters Control"; @@ -37329,6 +37321,7 @@ /area/maintenance/department/cargo) "bxN" = ( /obj/structure/table, +/obj/item/ticket_machine_remote, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/hop) "bxO" = ( @@ -83376,6 +83369,10 @@ }, /turf/open/floor/plasteel, /area/vacant_room/commissary) +"fpe" = ( +/obj/machinery/ticket_machine, +/turf/open/floor/carpet/exoticblue, +/area/hallway/secondary/command) "fra" = ( /obj/structure/cable{ icon_state = "4-8"; @@ -123364,7 +123361,7 @@ jSj jSj ccx chQ -bnL +boS boS bpN bqX @@ -124389,7 +124386,7 @@ bNP cjQ bpV bTm -bpV +fpe blB hxY bxV diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index cf21b47439a4..5b30946f6ba9 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -442,6 +442,15 @@ build_path = /obj/machinery/paystand req_components = list() +/obj/item/circuitboard/machine/ticketmachine + name = "Ticket Machine (Machine Board)" + icon_state = "generic" + desc = "You will also need a ticket machine remote to operate this." + build_path = /obj/machinery/ticket_machine + req_components = list( + /obj/item/hand_labeler = 1, + /obj/item/stack/sheet/glass = 1) + /obj/item/circuitboard/machine/protolathe name = "Protolathe (Machine Board)" icon_state = "generic" diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm index 855cffe7a6ce..522d1de6e4d4 100644 --- a/code/modules/paperwork/ticketmachine.dm +++ b/code/modules/paperwork/ticketmachine.dm @@ -5,234 +5,213 @@ name = "ticket machine" icon = 'icons/obj/bureaucracy.dmi' icon_state = "ticketmachine" - desc = "A marvel of bureaucratic engineering encased in an efficient plastic shell. It can be refilled with a hand labeler refill roll and linked to buttons with a multitool." - density = FALSE - maptext_height = 26 - maptext_width = 32 - maptext_x = 7 - maptext_y = 10 - layer = HIGH_OBJ_LAYER - var/ticket_number = 0 //Increment the ticket number whenever the HOP presses his button - var/current_number = 0 //What ticket number are we currently serving? - var/max_number = 100 //At this point, you need to refill it. - var/cooldown = 50 + desc = "A marvel of bureaucratic engineering encased in an efficient plastic shell. Click to take a number!" + circuit = /obj/item/circuitboard/machine/ticketmachine + density = TRUE + var/screenNum = 0 //this is the the number of the person who is up + var/currentNum = 0 //this is the the number someone who takes a ticket gets + var/ticketNumMax = 999 //No more! + var/cooldown = 10 var/ready = TRUE - var/id = "ticket_machine_default" //For buttons - var/list/ticket_holders = list() + var/linked = FALSE var/list/obj/item/ticket_machine_ticket/tickets = list() -/obj/machinery/ticket_machine/multitool_act(mob/living/user, obj/item/I) - if(!multitool_check_buffer(user, I)) //make sure it has a data buffer - return - var/obj/item/multitool/M = I - M.buffer = src - to_chat(user, "You store linkage information in [I]'s buffer.") - return TRUE - -/obj/machinery/ticket_machine/emag_act(mob/user) //Emag the ticket machine to dispense burning tickets, as well as randomize its number to destroy the HoP's mind. - if(obj_flags & EMAGGED) - return - to_chat(user, "You overload [src]'s bureaucratic logic circuitry to its MAXIMUM setting.") - ticket_number = rand(0,max_number) - current_number = ticket_number - obj_flags |= EMAGGED - if(tickets.len) - for(var/obj/item/ticket_machine_ticket/ticket in tickets) - ticket.audible_message("\the [ticket] disperses!") - qdel(ticket) - tickets.Cut() - update_icon() - /obj/machinery/ticket_machine/Initialize() . = ..() update_icon() -/obj/machinery/ticket_machine/proc/increment() - if(current_number > ticket_number) - return - if(current_number && !(obj_flags & EMAGGED) && tickets[current_number]) - tickets[current_number].audible_message("\the [tickets[current_number]] disperses!") - qdel(tickets[current_number]) - if(current_number < ticket_number) - current_number ++ //Increment the one we're serving. - playsound(src, 'sound/misc/announce_dig.ogg', 50, FALSE) - say("Now serving ticket #[current_number]!") - if(!(obj_flags & EMAGGED) && tickets[current_number]) - tickets[current_number].audible_message("\the [tickets[current_number]] vibrates!") - update_icon() //Update our icon here rather than when they take a ticket to show the current ticket number being served - -/obj/machinery/button/ticket_machine - name = "increment ticket counter" - desc = "Use this button after you've served someone to tell the next person to come forward." - device_type = /obj/item/assembly/control/ticket_machine - req_access = list() - id = "ticket_machine_default" - -/obj/machinery/button/ticket_machine/Initialize() - . = ..() - if(device) - var/obj/item/assembly/control/ticket_machine/ours = device - ours.id = id - -/obj/machinery/button/ticket_machine/multitool_act(mob/living/user, obj/item/I) - . = ..() - if(I.tool_behaviour == TOOL_MULTITOOL) - var/obj/item/multitool/M = I - if(M.buffer && !istype(M.buffer, /obj/machinery/ticket_machine)) - return - var/obj/item/assembly/control/ticket_machine/controller = device - controller.linked = M.buffer - id = null - controller.id = null - to_chat(user, "You've linked [src] to [controller.linked].") - -/obj/item/assembly/control/ticket_machine - name = "ticket machine controller" - desc = "A remote controller for the HoP's ticket machine." - var/obj/machinery/ticket_machine/linked //To whom are we linked? - -/obj/item/assembly/control/ticket_machine/Initialize() - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/item/assembly/control/ticket_machine/LateInitialize() - find_machine() - -/obj/item/assembly/control/ticket_machine/proc/find_machine() //Locate the one to which we're linked - for(var/obj/machinery/ticket_machine/ticketsplease in GLOB.machines) - if(ticketsplease.id == id) - linked = ticketsplease - if(linked) - return TRUE - else - return FALSE - -/obj/item/assembly/control/ticket_machine/activate() - if(cooldown) - return - if(!linked) - return - cooldown = TRUE - linked.increment() - addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10) - /obj/machinery/ticket_machine/update_icon() - switch(ticket_number) //Gives you an idea of how many tickets are left - if(0 to 49) + var/Temp = screenNum //This whole thing breaks down a 3 digit number into 3 seperate digits, aka "69" becomes "0","6" and "9" + var/Digit1 = round(Temp%10)//The remainder of any number/10 is always that number's rightmost digit + var/Digit2 = round(((Temp-Digit1)*0.1)%10) //Same idea, but divided by ten, to find the middle digit + var/Digit3 = round(((Temp-Digit1-Digit2*10)*0.01)%10)//Same as above. Despite the weird notation these will only ever output integers, don't worry. + cut_overlays()//this clears the overlays, so they don't start stacking on each other + add_overlay(image('icons/obj/bureaucracy_overlays.dmi',icon_state = "machine_first_[Digit1]")) + add_overlay(image('icons/obj/bureaucracy_overlays.dmi',icon_state = "machine_second_[Digit2]")) + add_overlay(image('icons/obj/bureaucracy_overlays.dmi',icon_state = "machine_third_[Digit3]")) + switch(currentNum) //Gives you an idea of how many tickets are left + if(0 to 200) icon_state = "ticketmachine_100" - if(50 to 99) + if(201 to 800) icon_state = "ticketmachine_50" - if(100) + if(801 to 999) icon_state = "ticketmachine_0" - handle_maptext() - -/obj/machinery/ticket_machine/proc/handle_maptext() - switch(ticket_number) //This is here to handle maptext offsets so that the numbers align. - if(0 to 9) - maptext_x = 13 - if(10 to 99) - maptext_x = 10 - if(100) - maptext_x = 8 - maptext = "[current_number]" //Finally, apply the maptext - -/obj/machinery/ticket_machine/attackby(obj/item/I, mob/user, params) - ..() - if(istype(I, /obj/item/hand_labeler_refill)) - if(!(ticket_number >= max_number)) - to_chat(user, "[src] refuses [I]! There [max_number-ticket_number==1 ? "is" : "are"] still [max_number-ticket_number] ticket\s left!") - return - to_chat(user, "You start to refill [src]'s ticket holder (doing this will reset its ticket count!).") - if(do_after(user, 30, target = src)) - to_chat(user, "You insert [I] into [src] as it whirs nondescriptly.") - qdel(I) - ticket_number = 0 - current_number = 0 - if(tickets.len) - for(var/obj/item/ticket_machine_ticket/ticket in tickets) - ticket.audible_message("\the [ticket] disperses!") - qdel(ticket) - tickets.Cut() - max_number = initial(max_number) - update_icon() - return + +/obj/machinery/ticket_machine/proc/increment() + playsound(src, 'sound/misc/announce_dig.ogg', 50, 0) + say("Next customer, please!") + screenNum ++ //Increment the one we're serving. + if(currentNum > ticketNumMax) + currentNum = 0 + say("Error: Stack Overflow!") + if(screenNum > ticketNumMax) + screenNum = 0 + say("Error: Stack Overflow!") + if(currentNum < screenNum - 1) + screenNum -- //this should only happen if the queue is all caught up and more numbers get called than tickets exist + currentNum = screenNum - 1 //so the number wont go onto infinity. Numbers that haven't been taken yet won't show up on the screen yet either. + update_icon() //Update our icon here + if(tickets.len\the [tickets[screenNum]] dings!",hearing_distance=1) + playsound(tickets[screenNum], 'sound/machines/twobeep_high.ogg', 10, 0 ,1-world.view) //The sound travels world.view+extraRange tiles. This last value is the extra range, which means the total range will be 1. /obj/machinery/ticket_machine/proc/reset_cooldown() ready = TRUE +/obj/machinery/ticket_machine/emag_act(mob/user) //Emag the ticket machine to dispense burning tickets, as well as randomize its customer number to destroy the HOP's mind. + if(obj_flags & EMAGGED) + return + to_chat(user, "You overload [src]'s bureaucratic logic circuitry to its MAXIMUM setting.") + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(12, 1, src) + s.start() + screenNum = rand(0,ticketNumMax) + update_icon() + obj_flags |= EMAGGED + /obj/machinery/ticket_machine/attack_hand(mob/living/carbon/user) . = ..() if(!ready) - to_chat(user,"You press the button, but nothing happens...") - return - if(ticket_number >= max_number) - to_chat(user,"Ticket supply depleted, please refill this unit with a hand labeller refill cartridge!") return - if((user in ticket_holders) && !(obj_flags & EMAGGED)) - to_chat(user, "You already have a ticket!") - return - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 100, FALSE) - ticket_number ++ - to_chat(user, "You take a ticket from [src], looks like you're ticket number #[ticket_number]...") + ready = FALSE + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 100, 0) + addtimer(VARSET_CALLBACK(src, ready, FALSE), cooldown) //Small cooldown to prevent the clown from ripping out every ticket + currentNum ++ + to_chat(user, "You take a ticket from [src], looks like you're customer #[currentNum]...") var/obj/item/ticket_machine_ticket/theirticket = new /obj/item/ticket_machine_ticket(get_turf(src)) - theirticket.name = "Ticket #[ticket_number]" - theirticket.maptext = "[ticket_number]" - theirticket.saved_maptext = "[ticket_number]" - theirticket.ticket_number = ticket_number + theirticket.name = "Ticket #[currentNum]" theirticket.source = src - theirticket.owner = user + theirticket.ticket_number = currentNum + theirticket.update_icon() user.put_in_hands(theirticket) - ticket_holders += user - tickets += theirticket + if(tickets.lenYou link the remote to the machine.") + linked = TRUE + return TRUE + to_chat(user,"The remote is already linked to a ticket machine!") + + else + to_chat(user,"The ticket machine is already linked to a remote!") + + if(istype(O, /obj/item/ticket_machine_ticket)) + to_chat(user, "You put [O] into the ticket machine's recycling bin.") + qdel(O) //KMC put a delay here. I'm not so forgiving. You accidently shred your ticket, you cry. (Also the delay felt really clunky) + return TRUE + +/obj/machinery/ticket_machine/Destroy() + var/obj/item/ticket_machine_ticket/T + for (T in tickets) + T.audible_message("The ticket vibrates for a moment, then dissolves into paper scraps!") + qdel(T) + tickets = list() + return ..() + +//Tickets dispensed from the machine /obj/item/ticket_machine_ticket name = "Ticket" - desc = "A ticket which shows your place in the Head of Personnel's line. Made from Nanotrasen patented NanoPaper®. Though solid, its form seems to shimmer slightly. Feels (and burns) just like the real thing." + desc = "A ticket which shows your place in the queue." icon = 'icons/obj/bureaucracy.dmi' icon_state = "ticket" - maptext_x = 7 - maptext_y = 10 w_class = WEIGHT_CLASS_TINY resistance_flags = FLAMMABLE max_integrity = 50 - var/saved_maptext = null - var/mob/living/carbon/owner var/obj/machinery/ticket_machine/source var/ticket_number -/obj/item/ticket_machine_ticket/attack_hand(mob/user) - . = ..() - maptext = saved_maptext //For some reason, storage code removes all maptext off objs, this stops its number from being wiped off when taken out of storage. - -/obj/item/ticket_machine_ticket/attackby(obj/item/P, mob/living/carbon/human/user, params) //Stolen from papercode +/obj/item/ticket_machine_ticket/update_icon() + var/Temp = ticket_number //this stuff is a repeat from the other update_icon, but with new image files and the like + var/Digit1 = round(Temp%10) + var/Digit2 = round(((Temp-Digit1)*0.1)%10) + var/Digit3 = round(((Temp-Digit1-Digit2*10)*0.01)%10) + cut_overlays()//this clears the overlays, so they don't start stacking on each other + add_overlay(image('icons/obj/bureaucracy_overlays.dmi',icon_state = "ticket_first_[Digit1]")) + add_overlay(image('icons/obj/bureaucracy_overlays.dmi',icon_state = "ticket_second_[Digit2]")) + add_overlay(image('icons/obj/bureaucracy_overlays.dmi',icon_state = "ticket_third_[Digit3]")) + if(resistance_flags & ON_FIRE) + icon_state = "ticket_onfire" + +/obj/item/ticket_machine_ticket/attackby(obj/item/P, mob/living/carbon/human/user, params) ..() if(P.is_hot()) if(HAS_TRAIT(user, TRAIT_CLUMSY) && prob(10)) - user.visible_message("[user] accidentally ignites [user.p_them()]self!", \ - "You miss the paper and accidentally light yourself on fire!") + user.visible_message("[user] accidentally ignites [user.p_them()]self!", "You miss the ticket and accidentally light yourself on fire!") user.dropItemToGround(P) user.adjust_fire_stacks(1) user.IgniteMob() return + + if(!(in_range(user, src))) //to prevent issues as a result of telepathically lighting a paper + return + + user.dropItemToGround(src) user.visible_message("[user] lights [src] ablaze with [P]!", "You light [src] on fire!") - fire_act() + src.fire_act() -/obj/item/paper/extinguish() +/obj/item/ticket_machine_ticket/extinguish() ..() update_icon() -/obj/item/ticket_machine_ticket/Destroy() - if(owner && source) - source.ticket_holders -= owner - source.tickets[ticket_number] = null - owner = null - source = null - return ..() \ No newline at end of file +//Remote that operates it +/obj/item/ticket_machine_remote + name = "Ticket Machine Remote" + desc = "A remote used to operate a ticket machine." + icon = 'icons/obj/assemblies/electronic_setups.dmi' + icon_state = "setup_small_simple" + w_class = WEIGHT_CLASS_TINY + max_integrity = 100 + var/obj/machinery/ticket_machine/connection = null + var/cooldown = 20 + var/ready = TRUE + +/obj/item/ticket_machine_remote/attack_self(mob/user) + if(!ready) + return + if(!connection) + to_chat(user,"The remote isn't linked to a ticket machine!") + return + ready = FALSE + addtimer(VARSET_CALLBACK(src, ready, FALSE), cooldown) + connection.increment() + +/obj/item/ticket_machine_remote/AltClick(mob/living/user) + ..() + if(connection) + connection.linked = FALSE + connection = null + to_chat(user,"You unlink the remote from all connections.") + +/obj/item/ticket_machine_remote/examine(mob/user) + .=..() + if(connection) + .+= "The remote is currently connected to a ticket machine.\nAlt click the remote to sever this connection." + else + .+= "Click on a ticket machine with this remote to link them." diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 6efed4968502..5c1b6c05b917 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -547,6 +547,14 @@ category = list ("Misc. Machinery") departmental_flags = DEPARTMENTAL_FLAG_SERVICE +/datum/design/board/ticket_machine + name = "Machine Design (Ticket Machine)" + desc = "The circuit board for a dish drive." + id = "ticket_machine" + build_path = /obj/item/circuitboard/machine/ticketmachine + category = list ("Misc. Machinery") + departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_MEDICAL + /datum/design/board/stacking_unit_console name = "Machine Design (Stacking Machine Console)" desc = "The circuit board for a Stacking Machine Console." diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm index ecf845a382dd..57344049b325 100644 --- a/code/modules/research/designs/misc_designs.dm +++ b/code/modules/research/designs/misc_designs.dm @@ -266,6 +266,16 @@ category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE +/datum/design/ticket_remote + name = "Ticket Machine Remote" + desc = "A remote for operating a ticket machine (sold seperately)" + id = "ticket_remote" + build_type = PROTOLATHE + materials = list(MAT_METAL = 1000, MAT_GLASS = 500) + build_path = /obj/item/ticket_machine_remote + category = list ("Electronics") + departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_MEDICAL + ///////////////////////////////////////// ////////////Janitor Designs////////////// ///////////////////////////////////////// @@ -463,4 +473,3 @@ category = list("Equipment") departmental_flags = DEPARTMENTAL_FLAG_SECURITY - diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 1431b1673cb1..20927e22ee73 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -8,7 +8,7 @@ description = "NT default research technologies." // Default research tech, prevents bricking design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "desttagger", "handlabel", "packagewrap", - "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "paystand", + "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", "paystand", "ticket_machine", "ticket_remote", "space_heater", "beaker", "large_beaker", "bucket", "xlarge_beaker", "sec_rshot", "sec_beanbag_slug", "sec_bshot", "sec_slug", "sec_Islug", "sec_Brslug", "sec_dart", "sec_38", "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass","wallframe/flasher") diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index d295f01e30a3fe91d385ab110aebbe98f1f997e3..2997ae1b254fc1569b33be0fca77492cd8573a76 100644 GIT binary patch literal 20123 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

Sq_q=g*&+j?4bhMBru3XY#FC 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 P0-zDPoq(^!9nSn0NAz7_ diff --git a/icons/obj/bureaucracy_overlays.dmi b/icons/obj/bureaucracy_overlays.dmi new file mode 100644 index 0000000000000000000000000000000000000000..04f06c64f6501768518ed4e8b14eeba540d19700 GIT binary patch literal 837 zcmV-L1G@Z)P)9bWa-}zAIFp5 ze;(aW7^id_{F~oBtX%V(`W)wv?Z!1Rq_3FeW6Es~^K)@+yO@S>zNB%==hebB{rsAL zS-a*kw$~uF!l*cK17?y)YO zW!+<6I?5`?x^$9Nj&126s~pSHIaWD#rDLq}yQ)inIPL%cX8!?Jcy!WJ1^z|=00Egv zL_t(|ob8*@O~fz|L=DPE8lZ`*!X;2rN}*H`z76LwqY2#Qw29{Zj2xqhy|S|G8cH$7 z{P1?w3yjtC&{AvDg=oyzrPr8GU~mCtdu6d1R)B9{E23L?zQKRb!5RZ&j4`L8|K7j6 zx6$iI>Bj7NxyioYI!$df6OH+4PGr!>Aoj>&fLbuy;tJwTY(*&y?mh>`7-LR^$bG7K z95c_Hb`nhU>V<9@74`wRvm2KpQrV~jaA{TKeP4fQXUrD@ACs&!vMQyBES zQkMrZ2C8*GwDL0;Y&!@3eZUxFjtZ-8@j25muZGrMhxsLq!PdR9*bHxAD`MjW23z+^ zV_=Li=0vb-V0?~O>Y-)6Hs_;B9}{cSo?Kk7m-lFZy1xNljo?<8t}#8~F0Tm`Csl^1