From c95e3826028bc0f222bfa0a5f482ea9e51eada35 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Mon, 5 Sep 2022 13:58:44 +0200 Subject: [PATCH] [MIRROR] Faxing of unusual objects [MDB IGNORE] (#16059) * Faxing of unusual objects (#69651) * Fax machines have a wire panel. Fax machines can be hacked to allow unusual input, throw their contents on receipt, and be invisible to the network. Fax machines will accept some additional paper-like items by default. Fax icons moved to their own file. * Unpunctuates screentips. You can send cash now also. * Removes unnecessary "var". Adds salami to food list. * Faxing of unusual objects Co-authored-by: Jacquerel --- code/datums/wires/fax.dm | 51 ++++ code/modules/paperwork/fax.dm | 362 +++++++++++++++++++++++--- icons/obj/bureaucracy.dmi | Bin 33496 -> 26619 bytes icons/obj/fax.dmi | Bin 0 -> 3533 bytes tgstation.dme | 1 + tgui/packages/tgui/interfaces/Fax.tsx | 13 +- 6 files changed, 384 insertions(+), 43 deletions(-) create mode 100644 code/datums/wires/fax.dm create mode 100644 icons/obj/fax.dmi diff --git a/code/datums/wires/fax.dm b/code/datums/wires/fax.dm new file mode 100644 index 00000000000..3a0193e5a4c --- /dev/null +++ b/code/datums/wires/fax.dm @@ -0,0 +1,51 @@ +/datum/wires/fax + holder_type = /obj/machinery/fax + proper_name = "Fax Unit" + +/datum/wires/fax/New(atom/holder) + wires = list(WIRE_SHOCK, WIRE_SIGNAL, WIRE_THROW, WIRE_LOADCHECK,) + add_duds(1) + return ..() + +/datum/wires/fax/interactable(mob/user) + . = ..() + if(!.) + return FALSE + var/obj/machinery/fax/machine = holder + if(!issilicon(user) && machine.seconds_electrified && machine.shock(user, 100)) + return FALSE + if(machine.panel_open) + return TRUE + +/datum/wires/fax/get_status() + var/obj/machinery/fax/machine = holder + var/list/status = list() + status += "A red light is [machine.seconds_electrified ? "blinking" : "off"]." + status += "The network light is [machine.visible_to_network ? "on" : "off"]." + status += "The output servo is [machine.hurl_contents ? "spinning rapidly" : "on"]." + status += "The input servo is [machine.allow_exotic_faxes ? "spinning rapidly" : "on"]." + return status + +/datum/wires/fax/on_pulse(wire) + var/obj/machinery/fax/machine = holder + switch(wire) + if(WIRE_SHOCK) + machine.seconds_electrified = MACHINE_DEFAULT_ELECTRIFY_TIME + if(WIRE_SIGNAL) + machine.visible_to_network = !machine.visible_to_network + if(WIRE_THROW) + machine.hurl_contents = !machine.hurl_contents + if(WIRE_LOADCHECK) + machine.allow_exotic_faxes = !machine.allow_exotic_faxes + +/datum/wires/fax/on_cut(wire, mend) + var/obj/machinery/fax/machine = holder + switch(wire) + if(WIRE_SHOCK) + machine.seconds_electrified = (mend) ? MACHINE_NOT_ELECTRIFIED : MACHINE_ELECTRIFIED_PERMANENT + if(WIRE_SIGNAL) + machine.visible_to_network = mend + if(WIRE_THROW) + machine.hurl_contents = !mend + if(WIRE_LOADCHECK) + machine.allow_exotic_faxes = !mend diff --git a/code/modules/paperwork/fax.dm b/code/modules/paperwork/fax.dm index 22105c89997..40255285be9 100644 --- a/code/modules/paperwork/fax.dm +++ b/code/modules/paperwork/fax.dm @@ -1,7 +1,7 @@ /obj/machinery/fax name = "Fax Machine" desc = "Bluespace technologies on the application of bureaucracy." - icon = 'icons/obj/bureaucracy.dmi' + icon = 'icons/obj/fax.dmi' icon_state = "fax" density = TRUE power_channel = AREA_USAGE_EQUIP @@ -12,12 +12,38 @@ var/fax_id /// The name of the fax displayed in the list. Not necessarily unique to some EMAG jokes. var/fax_name - /// A reference to an `/obj/item/paper` inside the copier, if one is inserted. Otherwise null. - var/obj/item/paper/paper_contain + /// A weak reference to an inserted object. + var/datum/weakref/loaded_item_ref + /// World ticks the machine is electified for. + var/seconds_electrified = MACHINE_NOT_ELECTRIFIED + /// If true, the fax machine is jammed and needs cleaning + var/jammed = FALSE /// Necessary to hide syndicate faxes from the general list. Doesn't mean he's EMAGGED! var/syndicate_network = FALSE + /// True if the fax machine should be visible to other fax machines in general. + var/visible_to_network = TRUE + /// If true we will eject faxes at speed rather than sedately place them into a tray. + var/hurl_contents = FALSE + /// If true you can fax things which strictly speaking are not paper. + var/allow_exotic_faxes = FALSE /// This is where the dispatch and reception history for each fax is stored. var/list/fax_history = list() + /// List of types which should always be allowed to be faxed + var/static/list/allowed_types = list( + /obj/item/paper, + /obj/item/photo, + /obj/item/tcgcard + ) + /// List of types which should be allowed to be faxed if hacked + var/static/list/exotic_types = list( + /obj/item/food/pizzaslice, + /obj/item/food/root_flatbread, + /obj/item/food/salami, + /obj/item/throwing_star, + /obj/item/stack/spacecash, + /obj/item/holochip, + /obj/item/card + ) /obj/machinery/fax/Initialize(mapload) . = ..() @@ -25,21 +51,53 @@ fax_id = SSnetworks.assign_random_name() if (!fax_name) fax_name = "Unregistered fax " + fax_id + wires = new /datum/wires/fax(src) + register_context() /obj/machinery/fax/Destroy() - QDEL_NULL(paper_contain) + QDEL_NULL(loaded_item_ref) + QDEL_NULL(wires) return ..() -/obj/machinery/fax/update_icon_state() - if(paper_contain) - icon_state = "fax_contain" - else - icon_state = "fax" +/obj/machinery/fax/update_overlays() + . = ..() + if (panel_open) + . += "fax_panel" + var/obj/item/loaded = loaded_item_ref?.resolve() + if (loaded) + . += mutable_appearance(icon, find_overlay_state(loaded, "contain")) + +/obj/machinery/fax/examine() + . = ..() + if(jammed) + . += span_notice("Its output port is jammed and needs cleaning.") + + +/obj/machinery/fax/on_set_is_operational(old_value) + if (old_value == FALSE) + START_PROCESSING(SSmachines, src) + return + STOP_PROCESSING(SSmachines, src) + +/obj/machinery/fax/process(delta_time) + if(seconds_electrified > MACHINE_NOT_ELECTRIFIED) + seconds_electrified -= delta_time + +/obj/machinery/fax/attack_hand(mob/user, list/modifiers) + if(seconds_electrified && !(machine_stat & NOPOWER)) + if(shock(user, 100)) + return return ..() -//Emag does not bring you into the syndicate network, but makes it visible to you. +/*** + * Emag the device if the panel is open. + * Emag does not bring you into the syndicate network, but makes it visible to you. + */ /obj/machinery/fax/emag_act(mob/user) - if(!(obj_flags & EMAGGED)) + if (!panel_open && !allow_exotic_faxes) + balloon_alert(user, "open panel first!") + return + if (!(obj_flags & EMAGGED)) obj_flags |= EMAGGED playsound(src, 'sound/creatures/dog/growl2.ogg', 50, FALSE) to_chat(user, span_warning("An image appears on [src] screen for a moment with Ian in the cap of a Syndicate officer.")) @@ -49,10 +107,23 @@ default_unfasten_wrench(user, tool) return TOOL_ACT_TOOLTYPE_SUCCESS -// Using the multi-tool causes the fax network name to be renamed +/** + * Open and close the wire panel. + */ +/obj/machinery/fax/screwdriver_act(mob/living/user, obj/item/screwdriver) + . = ..() + default_deconstruction_screwdriver(user, icon_state, icon_state, screwdriver) + update_appearance() + return TRUE + +/** + * Using the multi-tool with the panel closed causes the fax network name to be renamed. + */ /obj/machinery/fax/multitool_act(mob/living/user, obj/item/I) + if (panel_open) + return var/new_fax_name = tgui_input_text(user, "Enter a new name for the fax machine.", "New Fax Name", , 128) - if(!new_fax_name) + if (!new_fax_name) return TOOL_ACT_TOOLTYPE_SUCCESS if (new_fax_name != fax_name) if (fax_name_exist(new_fax_name)) @@ -65,14 +136,68 @@ return TOOL_ACT_TOOLTYPE_SUCCESS /obj/machinery/fax/attackby(obj/item/item, mob/user, params) - if(istype(item, /obj/item/paper)) - if(!paper_contain) - paper_contain = item + if (jammed && clear_jam(item, user)) + return + if (panel_open) + if (is_wire_tool(item)) + wires.interact(user) + return + if (can_load_item(item)) + if (!loaded_item_ref?.resolve()) + loaded_item_ref = WEAKREF(item) item.forceMove(src) update_appearance() return return ..() +/** + * Attempts to clean out a jammed machine using a passed item. + * Returns true if successful. + */ +/obj/machinery/fax/proc/clear_jam(obj/item/item, mob/user) + if (istype(item, /obj/item/reagent_containers/spray)) + var/obj/item/reagent_containers/spray/clean_spray = item + if(!clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) + return FALSE + clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this, 1) + playsound(loc, 'sound/effects/spray3.ogg', 50, TRUE, MEDIUM_RANGE_SOUND_EXTRARANGE) + user.visible_message(span_notice("[user] cleans \the [src]."), span_notice("You clean \the [src].")) + jammed = FALSE + return TRUE + if (istype(item, /obj/item/soap) || istype(item, /obj/item/reagent_containers/cup/rag)) + var/cleanspeed = 50 + if (istype(item, /obj/item/soap)) + var/obj/item/soap/used_soap = item + cleanspeed = used_soap.cleanspeed + user.visible_message(span_notice("[user] starts to clean \the [src]."), span_notice("You start to clean \the [src]...")) + if (do_after(user, cleanspeed, target = src)) + user.visible_message(span_notice("[user] cleans \the [src]."), span_notice("You clean \the [src].")) + jammed = FALSE + return TRUE + return FALSE + +/** + * Returns true if an item can be loaded into the fax machine. + */ +/obj/machinery/fax/proc/can_load_item(obj/item/item) + if(!is_allowed_type(item)) + return FALSE + if (!istype(item, /obj/item/stack)) + return TRUE + var/obj/item/stack/stack_item = item + return stack_item.amount == 1 + +/** + * Returns true if an item is of a type which can currently be loaded into this fax machine. + * This list expands if you snip a particular wire. + */ +/obj/machinery/fax/proc/is_allowed_type(obj/item/item) + if (is_type_in_list(item, allowed_types)) + return TRUE + if (!allow_exotic_faxes) + return FALSE + return is_type_in_list(item, exotic_types) + /obj/machinery/fax/ui_interact(mob/user, datum/tgui/ui) ui = SStgui.try_update_ui(user, src, ui) if(!ui) @@ -88,7 +213,8 @@ var/list/fax_data = list() fax_data["fax_name"] = FAX.fax_name fax_data["fax_id"] = FAX.fax_id - fax_data["has_paper"] = !!FAX.paper_contain + fax_data["visible"] = FAX.visible_to_network + fax_data["has_paper"] = !!FAX.loaded_item_ref?.resolve() // Hacked doesn't mean on the syndicate network. fax_data["syndicate_network"] = FAX.syndicate_network data["faxes"] += list(fax_data) @@ -96,9 +222,10 @@ // Own data data["fax_id"] = fax_id data["fax_name"] = fax_name + data["visible"] = visible_to_network // In this case, we don't care if the fax is hacked or in the syndicate's network. The main thing is to check the visibility of other faxes. data["syndicate_network"] = (syndicate_network || (obj_flags & EMAGGED)) - data["has_paper"] = !!paper_contain + data["has_paper"] = !!loaded_item_ref?.resolve() data["fax_history"] = fax_history return data @@ -110,56 +237,142 @@ switch(action) // Pulls the paper out of the fax machine if("remove") - var/obj/item/paper/paper = paper_contain - paper.forceMove(drop_location()) - paper_contain = null + var/obj/item/loaded = loaded_item_ref?.resolve() + if (!loaded) + return + loaded.forceMove(drop_location()) + loaded_item_ref = null playsound(src, 'sound/machines/eject.ogg', 50, FALSE) update_appearance() return TRUE if("send") - if(send(paper_contain, params["id"])) - log_paper("[usr] has sent a fax with the message \"[paper_contain.get_raw_text()]\" to [params["id"]].") - paper_contain = null + var/obj/item/loaded = loaded_item_ref?.resolve() + if (!loaded) + return + var/destination = params["id"] + if(send(loaded, destination)) + log_fax(loaded, destination, params["name"]) + loaded_item_ref = null update_appearance() return TRUE if("history_clear") history_clear() return TRUE +/** + * Records logs of bureacratic action + * Arguments: + * * sent - The object being sent + * * destination_id - The unique ID of the fax machine + * * name - The friendly name of the fax machine, but these can be spoofed so the ID is also required + */ +/obj/machinery/fax/proc/log_fax(obj/item/sent, destination_id, name) + if (istype(sent, /obj/item/paper)) + var/obj/item/paper/sent_paper = sent + log_paper("[usr] has sent a fax with the message \"[sent_paper.get_raw_text()]\" to [name]/[destination_id].") + return + log_game("[usr] has faxed [sent] to [name]/[destination_id].]") + /** * The procedure for sending a paper to another fax machine. * - * The object is called inside /obj/machinery/fax to send the paper to another fax machine. + * The object is called inside /obj/machinery/fax to send the thing to another fax machine. * The procedure searches among all faxes for the desired fax ID and calls proc/receive() on that fax. - * If the paper is sent successfully, it returns TRUE. + * If the item is sent successfully, it returns TRUE. * Arguments: - * * paper - The object of the paper to be sent. - * * id - The network ID of the fax machine you want to send the paper to. + * * loaded - The object to be sent. + * * id - The network ID of the fax machine you want to send the item to. */ -/obj/machinery/fax/proc/send(obj/item/paper/paper, id) +/obj/machinery/fax/proc/send(obj/item/loaded, id) for(var/obj/machinery/fax/FAX in GLOB.machines) - if (FAX.fax_id == id) - FAX.receive(paper, fax_name) - history_add("Send", FAX.fax_name) - flick("fax_send", src) - playsound(src, 'sound/machines/high_tech_confirm.ogg', 50, FALSE) - return TRUE + if (FAX.fax_id != id) + continue + if (FAX.jammed) + do_sparks(5, TRUE, src) + balloon_alert(usr, "destination port jammed") + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) + return FALSE + FAX.receive(loaded, fax_name) + history_add("Send", FAX.fax_name) + INVOKE_ASYNC(src, .proc/animate_object_travel, loaded, "fax_receive", find_overlay_state(loaded, "send")) + playsound(src, 'sound/machines/high_tech_confirm.ogg', 50, FALSE) + return TRUE return FALSE /** * Procedure for accepting papers from another fax machine. * - * The procedure is called in proc/send() of the other fax. It receives a paper object and "prints" it. + * The procedure is called in proc/send() of the other fax. It receives a paper-like object and "prints" it. * Arguments: - * * paper - The object of the paper to be printed. + * * loaded - The object to be printed. * * sender_name - The sender's name, which will be displayed in the message and recorded in the history of operations. */ -/obj/machinery/fax/proc/receive(obj/item/paper/paper, sender_name) +/obj/machinery/fax/proc/receive(obj/item/loaded, sender_name) playsound(src, 'sound/machines/printer.ogg', 50, FALSE) - flick(paper_contain ? "fax_contain_receive" : "fax_receive", src) + INVOKE_ASYNC(src, .proc/animate_object_travel, loaded, "fax_receive", find_overlay_state(loaded, "receive")) say("Received correspondence from [sender_name].") history_add("Receive", sender_name) - paper.forceMove(drop_location()) + addtimer(CALLBACK(src, .proc/vend_item, loaded), 1.9 SECONDS) + +/** + * Procedure for animating an object entering or leaving the fax machine. + * Arguments: + * * item - The object which is travelling. + * * animation_state - An icon state to apply to the fax machine. + * * overlay_state - An icon state to apply as an overlay to the fax machine. + */ +/obj/machinery/fax/proc/animate_object_travel(obj/item/item, animation_state, overlay_state) + icon_state = animation_state + var/mutable_appearance/overlay = mutable_appearance(icon, overlay_state) + overlays += overlay + addtimer(CALLBACK(src, .proc/travel_animation_complete, overlay), 2 SECONDS) + +/** + * Called when the travel animation should end. Reset animation and overlay states. + * Arguments: + * * remove_overlay - Overlay to remove. + */ +/obj/machinery/fax/proc/travel_animation_complete(mutable_appearance/remove_overlay) + icon_state = "fax" + overlays -= remove_overlay + +/** + * Returns an appropriate icon state to represent a passed item. + * Arguments: + * * item - Item to interrogate. + * * state_prefix - Icon state action prefix to mutate. + */ +/obj/machinery/fax/proc/find_overlay_state(obj/item/item, state_prefix) + if (istype(item, /obj/item/paper)) + return "[state_prefix]_paper" + if (istype(item, /obj/item/photo)) + return "[state_prefix]_photo" + if (iscash(item)) + return "[state_prefix]_cash" + if (istype(item, /obj/item/card)) + return "[state_prefix]_id" + if (istype(item, /obj/item/food)) + return "[state_prefix]_food" + if (istype(item, /obj/item/throwing_star)) + return "[state_prefix]_star" + if (istype(item, /obj/item/tcgcard)) + return "[state_prefix]_tcg" + return "[state_prefix]_paper" + +/** + * Actually vends an item out of the fax machine. + * Moved into its own proc to allow a delay for the animation. + * This will either deposit the item on the fax machine, or throw it if you have hacked a wire. + * Arguments: + * * vend - Item to vend from the fax machine. + */ +/obj/machinery/fax/proc/vend_item(obj/item/vend) + vend.forceMove(drop_location()) + if (hurl_contents) + vend.throw_at(get_edge_target_turf(drop_location(), pick(GLOB.alldirs)), rand(1, 4), EMBED_THROWSPEED_THRESHOLD) + if (is_type_in_list(vend, exotic_types) && prob(20)) + do_sparks(5, TRUE, src) + jammed = TRUE /** * A procedure that makes entries in the history of fax transactions. @@ -177,7 +390,7 @@ history_data["history_time"] = station_time_timestamp() fax_history += list(history_data) -// Clears the history of fax operations. +/// Clears the history of fax operations. /obj/machinery/fax/proc/history_clear() fax_history = null @@ -193,3 +406,70 @@ if (FAX.fax_name == new_fax_name) return TRUE return FALSE + +/** + * Attempts to shock the passed user, returns true if they are shocked. + * + * Arguments: + * * user - the user to shock + * * chance - probability the shock happens + */ +/obj/machinery/fax/proc/shock(mob/living/user, chance) + if(!istype(user) || machine_stat & (BROKEN|NOPOWER)) + return FALSE + if(!prob(chance)) + return FALSE + do_sparks(5, TRUE, src) + var/check_range = TRUE + return electrocute_mob(user, get_area(src), src, 0.7, check_range) + + +/obj/machinery/fax/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if (!held_item) + if (!panel_open) + context[SCREENTIP_CONTEXT_LMB] = "Open interface" + return CONTEXTUAL_SCREENTIP_SET + context[SCREENTIP_CONTEXT_LMB] = "Manipulate wires" + return CONTEXTUAL_SCREENTIP_SET + + switch (held_item.tool_behaviour) + if (TOOL_SCREWDRIVER) + if (panel_open) + context[SCREENTIP_CONTEXT_LMB] = "Close maintenance panel" + return CONTEXTUAL_SCREENTIP_SET + context[SCREENTIP_CONTEXT_LMB] = "Open maintenance panel" + return CONTEXTUAL_SCREENTIP_SET + if (TOOL_WRENCH) + if (anchored) + context[SCREENTIP_CONTEXT_LMB] = "Unsecure" + return CONTEXTUAL_SCREENTIP_SET + context[SCREENTIP_CONTEXT_LMB] = "Secure" + return CONTEXTUAL_SCREENTIP_SET + if (TOOL_MULTITOOL) + if (panel_open) + context[SCREENTIP_CONTEXT_LMB] = "Pulse wires" + return CONTEXTUAL_SCREENTIP_SET + context[SCREENTIP_CONTEXT_LMB] = "Rename in network" + return CONTEXTUAL_SCREENTIP_SET + if (TOOL_WIRECUTTER) + if (!panel_open) + return . + context[SCREENTIP_CONTEXT_LMB] = "Manipulate wires" + return CONTEXTUAL_SCREENTIP_SET + + if (jammed && is_type_in_list(held_item, list(/obj/item/reagent_containers/spray, /obj/item/soap, /obj/item/reagent_containers/cup/rag))) + context[SCREENTIP_CONTEXT_LMB] = "Clean output tray" + return CONTEXTUAL_SCREENTIP_SET + + if (panel_open) + if (istype(held_item, /obj/item/card/emag)) + context[SCREENTIP_CONTEXT_LMB] = "Remove network safeties" + return CONTEXTUAL_SCREENTIP_SET + return . + + if (is_allowed_type(held_item)) + context[SCREENTIP_CONTEXT_LMB] = "Insert into fax machine" + return CONTEXTUAL_SCREENTIP_SET + + return . diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index ac5dac77c81b1e874205920ebd0a6f8baa4b9f21..95e0eb35037a8b28cddce13e49151b1bb015e6d7 100644 GIT binary patch literal 26619 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�!7>BfCM%&NxGOhC_!0RLi+T zfz(ul*VE1Z&57yT#2^>45Wl?5pP9tZb=VlM{wJox#hIE_N?T%2Q4HQ61C-lZmcq@PFFXq`)VAdbv<{L&@nm>Jf z5S`VUaE^OtK`08Ev=reY6Rp~9grCo+*N^BxA1f!v=~Dl(xu%+oqU4!T^OwJ^16mkC zS;9Z2Who!CRcvnByxx=5uKF?LGKe@z-+#yp?M0oGIKQBW9jO;{EU9pRN#rn!Dm1)i zR)~#Wzv}4d&{4%i@Po<40waxh9Wk<|LBaeD5$4fmO!L(?cZHvUsvl~kPk$l*c>6(m z(#;ZM6z@&$c>@{a2hqzJ85l>(4aiLgS&hFh_|N$Io=m;4PN~g{lR$O9v&vL8-v}tH zchk_?_1PV?UrJB?-Ra${(+O9Y^O2z5Lg{fRm~}=awi7%@P_?mgT`lt?+eZ{+zs5YQ z9jFz6k`wCR*+-nutQa6=w2VxS58@gmRxHMfwDZRaY9Vgxc`0^pvxE^M`kfxKLqPe< z3l9|u&&9>B@CD2b^nkx{D*FY&oMiw29wZH{T*M@T@-&J6& z+uFKqI@`h}-S5^o;FNM(oO6^k@zzb-jDdO}_|Q7PKR4TqdSU~fiwGR8 z4J}?Muujm63T(mj`%JX2z_HiLxEc0^?T06OqIYBGgJYy<;=66$@9!x=?VPubTVp`< z2Gbe7^t`Rq(1imq-H_#e19J#VOuRj!Gu=?S{Ie$kz7V$2)koRBk7uUYS7Ygb{VE}&@Nb2}4JP#bWiHAHKfI=R51n(aZWNT0N~dklQOL+Z zWUy`kbY8!>IVJHU!nYj3W-WdZP)Qd!ELMhKG^LtQ&*~~bjj^^zQD!fU z zxL7uY%SiPcF8hX{!jGnyuv^SOWr?}LOzO$$4E&m07KUL~*no8Z(cqXyTZbPcto2d) zjwawd)xcTvIchl8@jBbO3<-k(*0eP*pO+Z}mj!L%)Nto!l)O%MElt@MGBP`MspI(E zoa<-ZgtW^CyYnRmldC1=c4PNPxVh7?U8$78^S+%HW_^lG;tQ>9lBOJ)V3Fs%7<((b zHPzSoBHJ9?3MohKhW>{}K)|k$KiU2lNoo%+V6kK(OUCilD+V4+d|TKEvj$L(oJPq< z7*|c*zt2@}_G#mmfyd`Ew{r!Qvmyt#0S=Ign)oa|SX+A&cAM+W(h-;xbZ?7z_1y7z zkg~yZmjKYaULdSJL;AySi1_`^4cvF^Hr2bzBg+N>cjx2tjWQuYB8xNwlBooVg}YitEmzHdc(F*bPrZF zgW_3D+?lMw8GetT-tLuri@GwY_g~(nzk)3yE_NIJb3xVRafd+oMJGN0Mh$JFeyCLY z-&|V{)*HY4`m&1MMRLjoox!yR-xQ!s<;T{>LOOfUeEY!2{EV*S1pzf5(*{v^0TO#5 zv(W?7_~I(JnJ}b$>^Lx47_c0r7-87KiUHc6Wp{J+_O+E6x%m(FWolfS-!h$|n7qq% zAJ2y-mW);pemuw%vK#Ba+Y(u;V>*320)U*5W={A5)%9Yd#R=^m{1m#ez}#Q2@ZVzDKNk>A&Yh+-zk)J8Df`-DiFP zQ8ptoCA^!|A!U>E6&G+9d$lpTw3;d6ineqJ$}PK|q!z}U51?b9n43Am z*LQ`ocGcChA*usg(+FIU-^{;#7<=bo5GW!?ppf6c-z>~ebqTr7yIyW;bj!J_R14k3 z5rC>&$UxQlCvC!#g9IXPvEYBqG=B6w4JoVpF#6Swg$s$n zm!6K7plHEVfZD3BW2JBW;^Kk~@zqAayf^XQ*-qnbcL+{UI8Jwf#T}t}D&@In^UPf! zJ9lyRk!4UC8SHMUEoRs2T2AtS<$w{gw8+>lysH`KX6;$bJd`q?NPG?{RC*1E$^{su zBgF3_dXo_@U}z-BMrWmSq*TLki$73iI9BE^+k1f$ElE8Jfe(*Z!3J^(@pzL~K2gqg zn`pq#GJnlerzVb@ivX;E{pQQe4afSCnW)FFU%xxD6rdg+86iEWkSHv{KNnw$P+Th2 zweB>3nN(anT89(FfDOa$2{@&b2qwdQk-O@_?cnd9HZdLYOJj{W4iwi7F7HECiz6Z; z%xd4h%A}5wKRSL*I#sBi8y_Ff;DC-@H@C1ruTfi^D)!~e+WPvw7{nB_kHqN%Ra;9u z)ti@SQbbT`8~fx}NepQKh*dyJ zSvk`32HeD!gG^|5cXw>7i<50!73SpQIHneAF=0GLtK_C!({^{K4D zuZi>>BxQHX*~?KILI@nbtb7K%(0b>hrWWJ-wXOgynSwlwN0ACDbln}z`BgO0iMl-|rJ)x7qog6c5w7IKFWVZjH%IFukiL&*Uf!Esqyqy3 zHcn3D;~jnds#c`Gn9TA|@oocq9Zi}olX9Qvvd{q$`_JDE7lN2t@IL|Xel6K?6v4^2 zk2(1vz?PwU)6cr9^v$-`ulT^dJ%gZ;>%$BJPAEVLp`3eTrb;*M!6gc>_j^R@hQ_r} zwGf|?(TCo06cNWrJ2V;s3OWe@ucZj~a*yrj0zyI{9hhU01o)jI;ISrjgv?VoYU0;M z(N}OVS-LD{$U@TqzWreZdb6oYt0GVr*>D>O`7|{=%$S(>>6499koP8smF7y3SY}_f9Wyjr_g0AjtN7P6|wmieaO!B+2zjHSGe$2KY}s!5iDRZ zW(EK(##Ft=U$@CD4bp!%l$^)0CwDh8%4ES|R#wvEc5`!MVOyNxymeN5wj5i zOamr-Ap}mfH8?}t9u}_pi-{&yW7mf-om%WFluycfy(#QZ;DH#^n}m4j&eLMTUv<%J zcY$qxU&<_++TpzY1(PPy6D!4~oi!U4GjS>~GC*X2d}C4?CLt`sAz-gfE)S;)q+hrqW*(2;OIFCiV!~({wOb5I zYSa3C3wQE$2$M(yBhKXS^oP{1kiWMBgP}tBeF*yr9v+?m`-xK9(hd=?y$>!|yFCf) zp__rQ6!U2LTsxy7@3lTEag~q#cRJWH?Q(088fY9qaA9&1WN2_yyJJb1@ zcet>i!mr;Zyp$YuziTsCZ*;QcI_V?`2I*0oMfB`fGeFGEbNCalM_K zo+uta9nBmsWIe@FRvTO1-=m_UDxcZ*I~J#lb6L7wBu!EF;KzvZ)$PwqnaB7t6fdPL z!DxeFi*8eMhH5H9cq)?<-r1$F$6WPqeYHT~V78=56}Ol85qesYMk+7AjJQtZIn_GB z+lp^j+I&xZeRU1-%-BIgS#`XNdLVlc z)7im?*ycevqpw>r=d`NthHu^aHQXz?da#a*->hcGz;iQsKZrMu z>zaqj_TlxBG8G}Pp1=kHu1&9CTI{bof{@136{DCz;UVRClMX_M0LYxfbDKG(=Hxus zuguHCSi8QHT8%!$1L21)K;iik{Ik)~cxFxH!22iczG`~2R}Oq>EL}K4T=2wiy9V+1 zHd&Us#4MHSwde?8iMp6XjBA*4AqaIMT>P+ny1Je%r|XjJi%R|z5oCv z`TdT7jDe=z8uFNE+s9*4KoHX0mhgg>8fnt(=ShO z{$AGuac*$ktHQE00m{#6C38+4#GST$X|W`I09~3BCfnJ)2?CB#*3u)Tg!n88;@XBr z*WyN+kphGGlv?QeIw`C5C!vZ@lAiO15gx|#Bqf$tl%@C}xj*O`O$X-e)Km|DuvKSY zZ~F{*%ez}!P2ATwU>c3Dpkg7a#lsPG8Q@&WLUnndXM}PeNm|}DE=oXoc zBvP%ejm*GV5{d6wmPN8L_r+Uz(xm>EV06|)+#~~IS#T074jAV=_i3-LsWIDshxWi& zBOsrR0N{Z&JSHvC8+W!_f?gdRMfl-ptBu3w8QdRY*`Z6flSbl;+`HG)^3JJTS3~1F zYy@8mjAX0|`x29J?mw`p8I{RSD<4@88Ciz{5ja&;-`!U53TaAEtyOFVok&W z5k5{ejTH5!O1Z;EGeJSu;4mI`y)hpR6Nj*L+d4y{0@I-I7i*%X7ZJ z9l&%O+U#Z;Z!R;;1~%}U&Qy%wcRx4cYC^nhw7!>d^aW+n8Ji^dyyO^1#&M}LV1!+Q zPUC94rmtwD`RKb!5gqsZ5loG8FW*9~F`Mcb|856)2cZSgM&#M%%qAX1qtiiG77T)+ zt!*Y8nik+i&mU~#d!B$qqM$i!uKOabzxq-RpIYC@)NDPQ_XAo!qJQ_H&9pzGMj#MJ zgrCutrUv>$($3NL_)P^#cyhh0aCR?vLf?Kquz0_eHVh2?5JB_4MZ$aMNJIuS`)rUt z*SpTm+503LZEThmjteXg?NP~y#Y1cY1k84(YJbYscB$Xu4Z zz=9KdP;q@-0V>@tu&sSBFY6{dHWSd#`DE7dm{Rw}7#{ literal 33496 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 bW5y}MPOa?34TUd4;J+K!v{dtzP5l2CEOKkg diff --git a/icons/obj/fax.dmi b/icons/obj/fax.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3c96f1c79d78ef1256838ad11556f6891d4e80f7 GIT binary patch literal 3533 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 a{Z1$**&2wkzZm`#?UbFfZS~0j-2VZHN8H8$ literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index a2bc5abfba1..ce693afff5f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1308,6 +1308,7 @@ #include "code\datums\wires\ecto_sniffer.dm" #include "code\datums\wires\emitter.dm" #include "code\datums\wires\explosive.dm" +#include "code\datums\wires\fax.dm" #include "code\datums\wires\microwave.dm" #include "code\datums\wires\mod.dm" #include "code\datums\wires\mulebot.dm" diff --git a/tgui/packages/tgui/interfaces/Fax.tsx b/tgui/packages/tgui/interfaces/Fax.tsx index 2c94932eb3d..6c5a2256089 100644 --- a/tgui/packages/tgui/interfaces/Fax.tsx +++ b/tgui/packages/tgui/interfaces/Fax.tsx @@ -7,6 +7,7 @@ type FaxData = { faxes: FaxInfo[]; fax_id: string; fax_name: string; + visible: boolean; has_paper: string; syndicate_network: boolean; fax_history: FaxHistory[]; @@ -15,6 +16,7 @@ type FaxData = { type FaxInfo = { fax_name: string; fax_id: string; + visible: boolean; has_paper: boolean; syndicate_network: boolean; }; @@ -30,8 +32,11 @@ export const Fax = (props, context) => { const { data } = useBackend(context); const faxes = sortBy((sortFax: FaxInfo) => sortFax.fax_name)( data.syndicate_network - ? data.faxes - : data.faxes.filter((filterFax: FaxInfo) => !filterFax.syndicate_network) + ? data.faxes.filter((filterFax: FaxInfo) => filterFax.visible) + : data.faxes.filter( + (filterFax: FaxInfo) => + filterFax.visible && !filterFax.syndicate_network + ) ); return ( @@ -41,6 +46,9 @@ export const Fax = (props, context) => { {data.fax_name} {data.fax_id} + + {data.visible ? true : false} +
{ onClick={() => act('send', { id: fax.fax_id, + name: fax.fax_name, }) }> {fax.fax_name}