From 4071f324a1c5989dafff145e2205092cfd96dcbe Mon Sep 17 00:00:00 2001 From: Gabriel Adamson Date: Fri, 14 Jan 2022 00:05:20 -0600 Subject: [PATCH 01/38] Steals bounty cubes from TG --- code/__DEFINES/components.dm | 4 + code/__DEFINES/economy.dm | 26 +++ code/datums/components/pricetag.dm | 82 +++++++ code/game/machinery/bounty_packager.dm | 150 +++++++++++++ code/modules/cargo/bounty.dm | 118 +++------- code/modules/cargo/bounty_console.dm | 104 +++++---- code/modules/cargo/export_scanner.dm | 52 +++-- code/modules/cargo/exports.dm | 28 ++- code/modules/cargo/exports/bounty.dm | 7 + code/modules/economy/account.dm | 18 ++ code/modules/jobs/job_types/_job.dm | 2 + code/modules/shuttle/supply.dm | 2 - icons/obj/economy.dmi | Bin 25238 -> 25497 bytes .../tgui/interfaces/CargoBountyConsole.js | 203 ++++++++++-------- yogstation.dme | 3 + 15 files changed, 555 insertions(+), 244 deletions(-) create mode 100644 code/datums/components/pricetag.dm create mode 100644 code/game/machinery/bounty_packager.dm create mode 100644 code/modules/cargo/exports/bounty.dm diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 0c24dd709f27..c9b452d33844 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -2,6 +2,10 @@ #define SEND_GLOBAL_SIGNAL(sigtype, arguments...) ( SEND_SIGNAL(SSdcs, sigtype, ##arguments) ) +/// Signifies that this proc is used to handle signals. +/// Every proc you pass to RegisterSignal must have this. +#define SIGNAL_HANDLER SHOULD_NOT_SLEEP(TRUE) + #define COMPONENT_INCOMPATIBLE 1 #define COMPONENT_NOTRANSFER 2 diff --git a/code/__DEFINES/economy.dm b/code/__DEFINES/economy.dm index 804967111f0c..d78388235d9c 100644 --- a/code/__DEFINES/economy.dm +++ b/code/__DEFINES/economy.dm @@ -32,3 +32,29 @@ #define MEGAFAUNA_CASH_SCALE 5 #define NO_FREEBIES "commies go home" + +//Defines that set what kind of civilian bounties should be applied mid-round. +#define CIV_JOB_BASIC 1 +#define CIV_JOB_ROBO 2 +#define CIV_JOB_CHEF 3 +#define CIV_JOB_SEC 4 +#define CIV_JOB_DRINK 5 +#define CIV_JOB_CHEM 6 +#define CIV_JOB_VIRO 7 +#define CIV_JOB_SCI 8 +#define CIV_JOB_XENO 9 +#define CIV_JOB_MINE 10 +#define CIV_JOB_MED 11 +#define CIV_JOB_GROW 12 +#define CIV_JOB_ATMO 13 +#define CIV_JOB_RANDOM 14 + +// /obj/item signals for economy +///called before an item is sold by the exports system. +#define COMSIG_ITEM_PRE_EXPORT "item_pre_sold" + /// Stops the export from calling sell_object() on the item, so you can handle it manually. + #define COMPONENT_STOP_EXPORT (1<<0) +///called when an item is sold by the exports subsystem +#define COMSIG_ITEM_EXPORTED "item_sold" + /// Stops the export from adding the export information to the report, so you can handle it manually. + #define COMPONENT_STOP_EXPORT_REPORT (1<<0) diff --git a/code/datums/components/pricetag.dm b/code/datums/components/pricetag.dm new file mode 100644 index 000000000000..4699dd8be19a --- /dev/null +++ b/code/datums/components/pricetag.dm @@ -0,0 +1,82 @@ +/* + * Pricetag component. + * + * Used when exporting items via the cargo system. + * Gives a cut of the profit to one or multiple bank accounts. + */ +/datum/component/pricetag + dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS + /// Whether we qdel ourself when our parent is unwrapped or not. + var/delete_on_unwrap = TRUE + /// List of bank accounts this pricetag pays out to. Format is payees[bank_account] = profit_ratio. + var/list/payees = list() + +/datum/component/pricetag/Initialize(pay_to_account, profit_ratio = 1) + if(!isobj(parent)) //Has to account for both objects and sellable structures like crates. + return COMPONENT_INCOMPATIBLE + + if(isnull(pay_to_account)) + stack_trace("[type] component was added to something without a pay_to_account!") + return COMPONENT_INCOMPATIBLE + + payees[pay_to_account] = profit_ratio + +/datum/component/pricetag/RegisterWithParent() + RegisterSignal(parent, COMSIG_ITEM_EXPORTED, .proc/on_parent_sold) + +/datum/component/pricetag/UnregisterFromParent() + UnregisterSignal(parent, COMSIG_ITEM_EXPORTED) + +/* + * Inheriting an incoming / new version of price tag: + * + * If the account passed in the incoming version is already in our list, + * only override it if the ratio is better for the payee + * + * If the account passed in the incoming version is not in our list, add it like normal. + * + * If the incoming version shouldn't delete when unwrapped, + * our version shouldn't either. + * We don't care about the other way around + * (Don't go from non-deleting to deleting) + */ +/datum/component/pricetag/InheritComponent(datum/component/pricetag/new_comp, i_am_original, pay_to_account, profit_ratio = 1, delete_on_unwrap = TRUE) + message_admins("Inheriting [pay_to_account]") + if(islist(pay_to_account)) + for(var/A in pay_to_account) + message_admins("List item: [A]") + if(!isnull(payees[pay_to_account]) && payees[pay_to_account] >= profit_ratio) // They're already getting a better ratio, don't scam them + return + + payees[pay_to_account] = profit_ratio + +/* + * Signal proc for [COMSIG_ITEM_EXPORTED]. + * + * Pays out money to everyone in the payees list. + */ +/datum/component/pricetag/proc/on_parent_sold(obj/source, datum/export/export, datum/export_report/report, item_value) + + if(!isnum(item_value)) + return + + // Gotta see how much money we've lost by the end of things. + var/overall_item_price = item_value + + for(var/datum/bank_account/payee as anything in payees) + // Every payee with a ratio gets a cut based on the item's total value + var/payee_cut = round(item_value * payees[payee]) + // And of course, the cut is removed from what cargo gets. (But not below zero, just in case) + overall_item_price = max(0, overall_item_price - payee_cut) + + message_admins("Paying [payee]") + + payee.adjust_money(payee_cut) + payee.bank_card_talk("Sale of [source] recorded. [payee_cut] credits added to account.") + + // Update the report with the modified final price + report.total_value[export] += overall_item_price + report.total_amount[export] += export.get_amount(source) + + // And ensure we don't double-add to the report + return COMPONENT_STOP_EXPORT_REPORT diff --git a/code/game/machinery/bounty_packager.dm b/code/game/machinery/bounty_packager.dm new file mode 100644 index 000000000000..45e786c2d9b2 --- /dev/null +++ b/code/game/machinery/bounty_packager.dm @@ -0,0 +1,150 @@ +GLOBAL_DATUM(bounty_packager, /obj/machinery/bounty_packager) + +/obj/machinery/bounty_packager + name = "\improper NanoTrasen Bounty Encapsulation Device" + desc = "A large metallic machine with an entrance and an exit. A sign on \ + the side reads, 'bounty go in, cube come out'." + icon = 'icons/obj/recycling.dmi' + icon_state = "grinder-b1" + layer = ABOVE_ALL_MOB_LAYER // Overhead + density = TRUE + var/datum/bounty/selected_bounty + var/obj/machinery/computer/bounty/linked_console + +/obj/machinery/bounty_packager/Initialize(mapload) + . = ..() + if(mapload && !GLOB.bounty_packager) + GLOB.bounty_packager = src + +/obj/machinery/bounty_packager/update_icon() + ..() + if(stat & (BROKEN|NOPOWER)) + icon_state = "grinder-b0" + else + icon_state = initial(icon_state) + +/obj/machinery/bounty_packager/Bumped(atom/movable/AM) + if(!selected_bounty) + return + if(selected_bounty.applies_to(AM)) + AM.forceMove(drop_location()) + selected_bounty.ship(AM) + qdel(AM) + if(!selected_bounty.can_claim()) + return + var/obj/item/bounty_cube/cube = new(drop_location()) + cube.set_up(selected_bounty, linked_console.ID) + selected_bounty.claim() + selected_bounty = null + +/obj/machinery/bounty_packager/multitool_act(mob/living/user, obj/item/I) + . = ..() + var/obj/item/multitool/multitool = I + if(!istype(multitool)) return + if(!istype(multitool.buffer, /obj/machinery/computer/bounty)) + multitool.buffer = src + to_chat(user, span_notice("[src] stored in [I]")) + return + + linked_console = multitool.buffer + linked_console.linked_packager = src + to_chat(user, span_notice("[src] has been linked to [linked_console]")) + + +/obj/item/bounty_cube + name = "bounty cube" + desc = "A neatly packaged bounty for transport back to central command. Place this on the cargo shuttle to get your reward!" + icon = 'icons/obj/economy.dmi' + icon_state = "bounty_cube" + + ///Value of the bounty that this bounty cube sells for. + var/bounty_value = 0 + ///Multiplier for the bounty payout received by the Supply budget if the cube is sent without having to nag. + var/speed_bonus = 0.2 + ///Multiplier for the bounty payout received by the person who completed the bounty. + var/holder_cut = 0.3 + ///Multiplier for the bounty payout received by the person who claims the handling tip. + var/handler_tip = 0.1 + ///Time between nags. + var/nag_cooldown = 5 MINUTES + ///How much the time between nags extends each nag. + var/nag_cooldown_multiplier = 1.25 + ///Next world tick to nag Supply listeners. + var/next_nag_time + ///Who completed the bounty. + var/bounty_holder + ///What job the bounty holder had. + var/bounty_holder_job + ///What the bounty was for. + var/bounty_name + ///Bank account of the person who completed the bounty. + var/datum/bank_account/bounty_holder_account + ///Bank account of the person who receives the handling tip. + var/datum/bank_account/bounty_handler_account + ///Our internal radio. + var/obj/item/radio/radio + ///The key our internal radio uses. + var/radio_key = /obj/item/encryptionkey/headset_cargo + +/obj/item/bounty_cube/Initialize() + . = ..() + radio = new(src) + radio.keyslot = new radio_key + radio.listening = FALSE + radio.recalculateChannels() + RegisterSignal(radio, COMSIG_ITEM_PRE_EXPORT, .proc/on_export) + +/obj/item/bounty_cube/Destroy() + UnregisterSignal(radio, COMSIG_ITEM_PRE_EXPORT) + QDEL_NULL(radio) + return ..() + +/obj/item/bounty_cube/proc/on_export() + SIGNAL_HANDLER + + QDEL_NULL(radio) + return COMPONENT_STOP_EXPORT + +/obj/item/bounty_cube/examine() + . = ..() + if(speed_bonus) + . += span_notice("[time2text(next_nag_time - world.time,"mm:ss")] remains until [bounty_value * speed_bonus] credit speedy delivery bonus lost.") + if(handler_tip && !bounty_handler_account) + . += span_notice("Scan this in the cargo shuttle with an export scanner to register your bank account for the [bounty_value * handler_tip] credit handling tip.") + +/obj/item/bounty_cube/process(delta_time) + //if our nag cooldown has finished and we aren't on Centcom or in transit, then nag + if(COOLDOWN_FINISHED(src, next_nag_time) && !is_centcom_level(z) && !is_reserved_level(z)) + //set up our nag message + var/nag_message = "[src] is unsent in [get_area(src)]." + + //nag on Supply channel and reduce the speed bonus multiplier to nothing + var/speed_bonus_lost = "[speed_bonus ? " Speedy delivery bonus of [bounty_value * speed_bonus] credit\s lost." : ""]" + radio.talk_into(src, "[nag_message][speed_bonus_lost]", RADIO_CHANNEL_SUPPLY) + speed_bonus = 0 + + message_admins(nag_message) + message_admins("[nag_message]") + + //alert the holder + bounty_holder_account.bank_card_talk("[nag_message]") + + //if someone has registered for the handling tip, nag them + bounty_handler_account?.bank_card_talk(nag_message) + + //increase our cooldown length and start it again + nag_cooldown = nag_cooldown * nag_cooldown_multiplier + COOLDOWN_START(src, next_nag_time, nag_cooldown) + +/obj/item/bounty_cube/proc/set_up(datum/bounty/my_bounty, obj/item/card/id/holder_id) + bounty_value = my_bounty.reward + bounty_name = my_bounty.name + bounty_holder = holder_id.registered_name + bounty_holder_job = holder_id.assignment + bounty_holder_account = holder_id.registered_account + name = "\improper [bounty_value] cr [name]" + desc += " The sales tag indicates it contains [bounty_holder] ([bounty_holder_job])'s [bounty_name] bounty." + AddComponent(/datum/component/pricetag, holder_id.registered_account, holder_cut, FALSE) + START_PROCESSING(SSobj, src) + COOLDOWN_START(src, next_nag_time, nag_cooldown) + radio.talk_into(src,"Created in [get_area(src)] by [bounty_holder] ([bounty_holder_job]). Speedy delivery bonus lost in [time2text(next_nag_time - world.time,"mm:ss")].", RADIO_CHANNEL_SUPPLY) diff --git a/code/modules/cargo/bounty.dm b/code/modules/cargo/bounty.dm index 9dd343f5eb3e..a0d6cf1cb35b 100644 --- a/code/modules/cargo/bounty.dm +++ b/code/modules/cargo/bounty.dm @@ -21,12 +21,12 @@ GLOBAL_LIST_EMPTY(bounties_list) // Called when the claim button is clicked. Override to provide fancy rewards. /datum/bounty/proc/claim(mob/user) if(can_claim()) - var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) - if(D) - D.adjust_money(reward * SSeconomy.bounty_modifier) - D.bounties_claimed += 1 - if(D.bounties_claimed == 10) - SSachievements.unlock_achievement(/datum/achievement/cargo/bounties, user.client) + // var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) + // if(D) + // D.adjust_money(reward * SSeconomy.bounty_modifier) + // D.bounties_claimed += 1 + // if(D.bounties_claimed == 10) + // SSachievements.unlock_achievement(/datum/achievement/cargo/bounties, user.client) claimed = TRUE // If an item sent in the cargo shuttle can satisfy the bounty. @@ -48,25 +48,6 @@ GLOBAL_LIST_EMPTY(bounties_list) high_priority = TRUE reward = round(reward * scale_reward) -// This proc is called when the shuttle docks at CentCom. -// It handles items shipped for bounties. -/proc/bounty_ship_item_and_contents(atom/movable/AM, dry_run=FALSE) - if(!GLOB.bounties_list.len) - setup_bounties() - - var/list/matched_one = FALSE - for(var/thing in reverseRange(AM.GetAllContents())) - var/matched_this = FALSE - for(var/datum/bounty/B in GLOB.bounties_list) - if(B.applies_to(thing)) - matched_one = TRUE - matched_this = TRUE - if(!dry_run) - B.ship(thing) - if(!dry_run && matched_this) - qdel(thing) - return matched_one - // Returns FALSE if the bounty is incompatible with the current bounties. /proc/try_add_bounty(datum/bounty/new_bounty) if(!new_bounty || !new_bounty.name || !new_bounty.description) @@ -79,47 +60,55 @@ GLOBAL_LIST_EMPTY(bounties_list) return TRUE // Returns a new bounty of random type, but does not add it to GLOB.bounties_list. -/proc/random_bounty() - switch(rand(1, 13)) - if(1) +/proc/random_bounty(guided = FALSE) + var/bounty_type + if(!guided || guided == CIV_JOB_RANDOM) + bounty_type = rand(1,13) + else if(islist(guided)) + bounty_type = pick(guided) + else + bounty_type = guided + + switch(bounty_type) + if(CIV_JOB_BASIC) var/subtype = pick(subtypesof(/datum/bounty/item/assistant)) return new subtype - if(2) + if(CIV_JOB_ROBO) var/subtype = pick(subtypesof(/datum/bounty/item/mech)) return new subtype - if(3) + if(CIV_JOB_CHEF) var/subtype = pick(subtypesof(/datum/bounty/item/chef)) return new subtype - if(4) + if(CIV_JOB_SEC) var/subtype = pick(subtypesof(/datum/bounty/item/security)) return new subtype - if(5) + if(CIV_JOB_DRINK) if(rand(2) == 1) return new /datum/bounty/reagent/simple_drink return new /datum/bounty/reagent/complex_drink - if(6) + if(CIV_JOB_CHEM) if(rand(2) == 1) return new /datum/bounty/reagent/chemical_simple return new /datum/bounty/reagent/chemical_complex - if(7) + if(CIV_JOB_VIRO) var/subtype = pick(subtypesof(/datum/bounty/virus)) return new subtype - if(8) + if(CIV_JOB_SCI) var/subtype = pick(subtypesof(/datum/bounty/item/science)) return new subtype - if(9) + if(CIV_JOB_XENO) var/subtype = pick(subtypesof(/datum/bounty/item/slime)) return new subtype - if(10) + if(CIV_JOB_MINE) var/subtype = pick(subtypesof(/datum/bounty/item/mining)) return new subtype - if(11) + if(CIV_JOB_MED) var/subtype = pick(subtypesof(/datum/bounty/item/medical)) return new subtype - if(12) + if(CIV_JOB_GROW) var/subtype = pick(subtypesof(/datum/bounty/item/botany)) return new subtype - if(13) + if(CIV_JOB_ATMO) var/subtype if(rand(2) == 1) subtype = pick(subtypesof(/datum/bounty/item/atmos/simple)) @@ -133,60 +122,13 @@ GLOBAL_LIST_EMPTY(bounties_list) var/pick // instead of creating it a bunch let's go ahead and toss it here, we know we're going to use it for dynamics and subtypes! /********************************Subtype Gens********************************/ - var/list/easy_add_list_subtypes = list(/datum/bounty/item/assistant = 3, - /datum/bounty/item/mech = 1, - /datum/bounty/item/chef = 3, - /datum/bounty/item/security = 1, - /datum/bounty/virus = 1, - /datum/bounty/item/mining = 3, - /datum/bounty/item/medical = 2, - /datum/bounty/item/botany = 3, - /datum/bounty/item/atmos/complex = 1, - /datum/bounty/item/atmos/simple = 2) + var/list/easy_add_list_subtypes = list(/datum/bounty/item/assistant = 3) for(var/the_type in easy_add_list_subtypes) for(var/i in 1 to easy_add_list_subtypes[the_type]) pick = pick(subtypesof(the_type)) try_add_bounty(new pick) - /********************************Strict Type Gens********************************/ - var/list/easy_add_list_strict_types = list(/datum/bounty/reagent/simple_drink = 2, - /datum/bounty/reagent/complex_drink = 1, - /datum/bounty/reagent/chemical_simple = 2, - /datum/bounty/reagent/chemical_complex = 1) - - for(var/the_strict_type in easy_add_list_strict_types) - for(var/i in 1 to easy_add_list_strict_types[the_strict_type]) - try_add_bounty(new the_strict_type) - - /********************************Dynamic Gens********************************/ - - for(var/i in 0 to 1) - if(prob(50)) - pick = pick(subtypesof(/datum/bounty/item/slime)) - else - pick = pick(subtypesof(/datum/bounty/item/science)) - try_add_bounty(new pick) - - /********************************Cutoff for Non-Low Priority Bounties********************************/ - var/datum/bounty/B = pick(GLOB.bounties_list) - B.mark_high_priority() - - /********************************Progression Gens********************************/ - var/list/progression_type_list = typesof(/datum/bounty/item/progression) - - for(var/progression_bounty in progression_type_list) - try_add_bounty(new progression_bounty) - - /********************************Low Priority Gens********************************/ - var/list/low_priority_strict_type_list = list( /datum/bounty/item/alien_organs, - /datum/bounty/item/syndicate_documents, - /datum/bounty/item/adamantine, - /datum/bounty/more_bounties) - - for(var/low_priority_bounty in low_priority_strict_type_list) - try_add_bounty(new low_priority_bounty) - /proc/completed_bounty_count() var/count = 0 for(var/i in GLOB.bounties_list) diff --git a/code/modules/cargo/bounty_console.dm b/code/modules/cargo/bounty_console.dm index 4a19f6a6b5c9..5900945ad0ae 100644 --- a/code/modules/cargo/bounty_console.dm +++ b/code/modules/cargo/bounty_console.dm @@ -1,40 +1,26 @@ -#define PRINTER_TIMEOUT 10 - /obj/machinery/computer/bounty name = "\improper Nanotrasen bounty console" desc = "Used to check and claim bounties offered by Nanotrasen" icon_screen = "bounty" circuit = /obj/item/circuitboard/computer/bounty light_color = "#E2853D"//orange - var/printer_ready = 0 //cooldown var - var/static/datum/bank_account/cargocash + var/obj/machinery/bounty_packager/linked_packager + var/obj/item/card/id/ID -/obj/machinery/computer/bounty/Initialize() +/obj/machinery/computer/bounty/Initialize(mapload) . = ..() - printer_ready = world.time + PRINTER_TIMEOUT - cargocash = SSeconomy.get_dep_account(ACCOUNT_CAR) - -/obj/machinery/computer/bounty/proc/print_paper() - new /obj/item/paper/bounty_printout(loc) + if(mapload) + addtimer(CALLBACK(src, .proc/linkPackager)) -/obj/item/paper/bounty_printout - name = "paper - Bounties" - -/obj/item/paper/bounty_printout/Initialize() - . = ..() - info = "

Nanotrasen Cargo Bounties


" - update_icon() +/obj/machinery/computer/bounty/proc/linkPackager() + if(GLOB.bounty_packager && !GLOB.bounty_packager.linked_console) + linked_packager = GLOB.bounty_packager + linked_packager.linked_console = src - for(var/datum/bounty/B in GLOB.bounties_list) - if(B.claimed) - continue - info += {"

[B.name]

- "} /obj/machinery/computer/bounty/ui_interact(mob/user, datum/tgui/ui) - if(!GLOB.bounties_list.len) - setup_bounties() + if(ID && ID.registered_account && !ID.registered_account.bounties) + ID.registered_account.generate_bounties() ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "CargoBountyConsole", name) @@ -43,23 +29,67 @@ /obj/machinery/computer/bounty/ui_data(mob/user) var/list/data = list() var/list/bountyinfo = list() - for(var/datum/bounty/B in GLOB.bounties_list) - bountyinfo += list(list("name" = B.name, "description" = B.description, "reward_string" = B.reward_string(), "completion_string" = B.completion_string() , "claimed" = B.claimed, "can_claim" = B.can_claim(), "priority" = B.high_priority, "bounty_ref" = REF(B))) - data["stored_cash"] = cargocash.account_balance + for(var/datum/bounty/B in ID?.registered_account?.bounties) + bountyinfo += list(list("name" = B.name, "description" = B.description, "reward_string" = B.reward_string(), "completion_string" = B.completion_string() , "claimed" = B.claimed, "selected" = (B == linked_packager?.selected_bounty), "priority" = B.high_priority, "bounty_ref" = REF(B))) data["bountydata"] = bountyinfo + data["is_packager"] = !!linked_packager + data["has_id"] = !!ID + data["orig_job"] = ID?.originalassignment + data["job"] = ID?.assignment + data["name"] = ID?.registered_name return data /obj/machinery/computer/bounty/ui_act(action,params) if(..()) return switch(action) - if("ClaimBounty") - var/datum/bounty/cashmoney = locate(params["bounty"]) in GLOB.bounties_list - if(cashmoney) - cashmoney.claim() + if("SelectBounty") + if(!linked_packager || !ID || !ID.registered_account || !ID.registered_account.bounties) + return FALSE + linked_packager.selected_bounty = locate(params["bounty"]) in ID.registered_account.bounties return TRUE - if("Print") - if(printer_ready < world.time) - printer_ready = world.time + PRINTER_TIMEOUT - print_paper() - return \ No newline at end of file + if("Eject") + if(!ID) + return FALSE + var/mob/user = usr + if(user) + user.put_in_hands(ID) + else + ID.forceMove(drop_location()) + ID = null + if(linked_packager) linked_packager.selected_bounty = null + return TRUE + if("ReloadBounties") + if(!ID?.registered_account) + return FALSE + var/result = ID.registered_account.generate_bounties() + if(result != TRUE) + say(result) + return FALSE + return TRUE + + +/obj/machinery/computer/bounty/attackby(obj/item/I, mob/living/user, params) + . = ..() + if(!isidcard(I)) + return + + I.forceMove(src) + ID = I + if(ID && ID.registered_account && !ID.registered_account.bounties) + ID.registered_account.generate_bounties() + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) + return TRUE + +/obj/machinery/computer/bounty/multitool_act(mob/living/user, obj/item/I) + . = ..() + var/obj/item/multitool/multitool = I + if(!istype(multitool)) return + if(!istype(multitool.buffer, /obj/machinery/bounty_packager)) + multitool.buffer = src + to_chat(user, span_notice("[src] stored in [I]")) + return + + linked_packager = multitool.buffer + linked_packager.linked_console = src + to_chat(user, span_notice("[src] has been linked to [linked_packager]")) diff --git a/code/modules/cargo/export_scanner.dm b/code/modules/cargo/export_scanner.dm index b88236ef2eec..5095403dfbf4 100644 --- a/code/modules/cargo/export_scanner.dm +++ b/code/modules/cargo/export_scanner.dm @@ -26,20 +26,44 @@ if(!C.requestonly) cargo_console = C to_chat(user, span_notice("Scanner linked to [C].")) + return else if(!istype(cargo_console)) to_chat(user, span_warning("You must link [src] to a cargo console first!")) + return + + // Before you fix it: + // yes, checking manifests is a part of intended functionality. + + var/datum/export_report/ex = export_item_and_contents(O, cargo_console.get_export_categories(), dry_run=TRUE) + var/price = 0 + for(var/x in ex.total_amount) + price += ex.total_value[x] + + if(price) + to_chat(user, span_notice("Scanned [O], value: [price] credits[O.contents.len ? " (contents included)" : ""].")) else - // Before you fix it: - // yes, checking manifests is a part of intended functionality. - - var/datum/export_report/ex = export_item_and_contents(O, cargo_console.get_export_categories(), dry_run=TRUE) - var/price = 0 - for(var/x in ex.total_amount) - price += ex.total_value[x] - - if(price) - to_chat(user, span_notice("Scanned [O], value: [price] credits[O.contents.len ? " (contents included)" : ""].")) - else - to_chat(user, span_warning("Scanned [O], no export value.")) - if(bounty_ship_item_and_contents(O, dry_run=TRUE)) - to_chat(user, span_notice("Scanned item is eligible for one or more bounties.")) + to_chat(user, span_warning("Scanned [O], no export value.")) + + if(ishuman(user)) + var/mob/living/carbon/human/scan_human = user + if(istype(O, /obj/item/bounty_cube)) + var/obj/item/bounty_cube/cube = O + var/datum/bank_account/scanner_account = scan_human.get_bank_account() + + if(!istype(get_area(cube), /area/shuttle/supply)) + to_chat(user, span_warning("Shuttle placement not detected. Handling tip not registered.")) + + else if(cube.bounty_handler_account) + to_chat(user, span_warning("Bank account for handling tip already registered!")) + + else if(scanner_account) + cube.AddComponent(/datum/component/pricetag, scanner_account, cube.handler_tip, FALSE) + + cube.bounty_handler_account = scanner_account + cube.bounty_handler_account.bank_card_talk("Bank account for [price ? "[price * cube.handler_tip] credit " : ""]handling tip successfully registered.") + + if(cube.bounty_holder_account != cube.bounty_handler_account) //No need to send a tracking update to the person scanning it + cube.bounty_holder_account.bank_card_talk("[cube] was scanned in \the [get_area(cube)] by [scan_human] ([scan_human.job]).") + + else + to_chat(user, span_warning("Bank account not detected. Handling tip not registered.")) diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index 39d3893e973c..c98a12a79e37 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -39,21 +39,27 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they report = new // We go backwards, so it'll be innermost objects sold first - for(var/i in reverseRange(contents)) - var/atom/movable/thing = i + var/list/to_delete = list() + for(var/atom/movable/thing as anything in reverseRange(contents)) var/sold = FALSE if(QDELETED(thing)) continue - for(var/datum/export/E in GLOB.exports_list) + for(var/datum/export/E as anything in GLOB.exports_list) if(!E) continue if(E.applies_to(thing, allowed_categories, apply_limit)) + if(!dry_run && (SEND_SIGNAL(thing, COMSIG_ITEM_PRE_EXPORT) & COMPONENT_STOP_EXPORT)) + break sold = E.sell_object(thing, report, dry_run, allowed_categories , apply_limit) report.exported_atoms += " [thing.name]" break if(!dry_run && (sold || delete_unsold)) if(ismob(thing)) thing.investigate_log("deleted through cargo export",INVESTIGATE_CARGO) + to_delete += thing + + for(var/atom/movable/thing as anything in to_delete) + if(!QDELETED(thing)) qdel(thing) return report @@ -116,12 +122,16 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they if(amount <=0 || the_cost <=0 || export_limit <=0) return FALSE - report.total_value[src] += the_cost - - if(istype(src, /datum/export/material)) - report.total_amount[src] += amount*MINERAL_MATERIAL_AMOUNT - else - report.total_amount[src] += amount + var/export_result + if(!dry_run) + export_result = SEND_SIGNAL(O, COMSIG_ITEM_EXPORTED, src, report, the_cost) + + if(!(export_result & COMPONENT_STOP_EXPORT_REPORT)) + report.total_value[src] += the_cost + if(istype(src, /datum/export/material)) + report.total_amount[src] += amount*MINERAL_MATERIAL_AMOUNT + else + report.total_amount[src] += amount if(!dry_run) if(apply_limit && export_limit != NO_LIMIT) diff --git a/code/modules/cargo/exports/bounty.dm b/code/modules/cargo/exports/bounty.dm new file mode 100644 index 000000000000..93a4011e05d1 --- /dev/null +++ b/code/modules/cargo/exports/bounty.dm @@ -0,0 +1,7 @@ +/datum/export/bounty_box + cost = 1 + unit_name = "completed bounty cube" + export_types = list(/obj/item/bounty_cube) + +/datum/export/bounty_box/get_cost(obj/item/bounty_cube/cube, apply_elastic) + return cube.bounty_value + (cube.bounty_value * cube.speed_bonus) diff --git a/code/modules/economy/account.dm b/code/modules/economy/account.dm index aa94f577d5c2..559d45e367a2 100644 --- a/code/modules/economy/account.dm +++ b/code/modules/economy/account.dm @@ -12,6 +12,8 @@ var/withdrawDelay = 0 var/is_bourgeois = FALSE // Marks whether we've tried giving them the achievement already, this round. var/bounties_claimed = 0 // Marks how many bounties this person has successfully claimed + var/list/datum/bounty/bounties + COOLDOWN_DECLARE(bounty_timer) /datum/bank_account/New(newname, job, modifier = 1) if(add_to_accounts) @@ -101,6 +103,22 @@ if(M.can_hear()) to_chat(M, "[icon2html(A, M)] *[message]*") +/// Generates bounties for account, returns error string if failed +/datum/bank_account/proc/generate_bounties() + if(bounties && !COOLDOWN_FINISHED(src, bounty_timer)) + var/curr_time = round((COOLDOWN_TIMELEFT(src, bounty_timer)) / (1 MINUTES), 0.01) + return "Unable to issue new bounties, try again in [curr_time] minutes" + if(!account_job) + return "Account has no associated job" + if(!account_job.bounty_types) + return "Job not eligible for bounties" + + bounties = list(random_bounty(account_job.bounty_types), // Two from your job + random_bounty(account_job.bounty_types), + random_bounty(CIV_JOB_BASIC)) // One from assistant + COOLDOWN_START(src, bounty_timer, 5 MINUTES) + return TRUE + /datum/bank_account/department account_holder = "Guild Credit Agency" var/department_id = "REPLACE_ME" diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm index 23e2a3f08e1d..322344157863 100644 --- a/code/modules/jobs/job_types/_job.dm +++ b/code/modules/jobs/job_types/_job.dm @@ -68,6 +68,8 @@ var/display_order = JOB_DISPLAY_ORDER_DEFAULT + var/bounty_types = CIV_JOB_BASIC + var/list/changed_maps = list() // Maps on which the job is changed. Should use the same name as the mapping config /* diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 195eab781672..0218643523be 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -176,8 +176,6 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( for(var/atom/movable/AM in shuttle_area) if(iscameramob(AM)) continue - if(bounty_ship_item_and_contents(AM, dry_run = FALSE)) - matched_bounty = TRUE if(!AM.anchored || istype(AM, /obj/mecha)) export_item_and_contents(AM, export_categories , dry_run = FALSE, external_report = ex) diff --git a/icons/obj/economy.dmi b/icons/obj/economy.dmi index cb050e27ab0b45dc2d808da50d8fd9add8b227d0..7ec8e46c253abf2ba7cdaa2e5f787656ea646fe2 100644 GIT binary patch literal 25497 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 z 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%0DKPl#~qEzp`3F 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%0DdZo}K@C8qz>h8<*qTEcxZ!dJ@!8(bC{M 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 { const { act, data } = useBackend(context); const { bountydata = [], + is_packager, + has_id, + name, + job, + orig_job } = data; return ( -
} - buttons={( -
+ {bountydata.map(bounty => ( + + + {bounty.name} + + + {bounty.description} + + + {bounty.priority === 1 + ? High Priority + : ""} + {bounty.completion_string} + + + {bounty.reward_string} + + + - ) || ""} {!has_id && is_packager && ( From 5ccfa71c7650e09d1d887a272e5383befae16837 Mon Sep 17 00:00:00 2001 From: adamsong Date: Sun, 28 Apr 2024 15:19:18 -0400 Subject: [PATCH 34/38] Does a little bit more to the donut station --- _maps/map_files/DonutStation/DonutStation.dmm | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/_maps/map_files/DonutStation/DonutStation.dmm b/_maps/map_files/DonutStation/DonutStation.dmm index c8774f1b4fa9..120aaaeb20f8 100644 --- a/_maps/map_files/DonutStation/DonutStation.dmm +++ b/_maps/map_files/DonutStation/DonutStation.dmm @@ -16411,20 +16411,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) -"gKN" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = -30 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "gKP" = ( /obj/machinery/computer/security, /obj/effect/turf_decal/trimline/secred/filled/line/lower{ @@ -47019,6 +47005,23 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) +"tQD" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "tQS" = ( /turf/closed/wall/r_wall, /area/science/mixing) @@ -94655,7 +94658,7 @@ mdj mHy lwl nyW -gKN +tQD qwB saU lwl From 0b36d121d88215c5e6c26273e17b12b89b05fd26 Mon Sep 17 00:00:00 2001 From: adamsong Date: Sun, 28 Apr 2024 15:40:56 -0400 Subject: [PATCH 35/38] IceMeta done, just gax left, and the conflict terrify me --- _maps/map_files/IceMeta/IceMeta.dmm | 521 +++++++++++++++------------- 1 file changed, 274 insertions(+), 247 deletions(-) diff --git a/_maps/map_files/IceMeta/IceMeta.dmm b/_maps/map_files/IceMeta/IceMeta.dmm index d5a868146329..d764a373d916 100644 --- a/_maps/map_files/IceMeta/IceMeta.dmm +++ b/_maps/map_files/IceMeta/IceMeta.dmm @@ -2441,6 +2441,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/mine/eva) +"aLp" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "aLq" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/trimline/secred/filled/line/lower{ @@ -3912,16 +3921,6 @@ }, /turf/open/floor/plasteel, /area/storage/primary) -"bgQ" = ( -/obj/machinery/airalarm{ - pixel_y = 24 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/computer/bounty, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "bgW" = ( /obj/machinery/button/door{ id = "QMLoaddoor"; @@ -6005,15 +6004,6 @@ }, /turf/open/floor/plasteel, /area/security/brig) -"bMO" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "bMV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/holopad, @@ -7806,6 +7796,27 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"coy" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "coD" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -8357,6 +8368,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/security/prison) +"cyT" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "cyZ" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, @@ -8486,6 +8517,16 @@ }, /turf/open/floor/plasteel, /area/maintenance/department/science) +"cAC" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "cAK" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -16788,16 +16829,6 @@ }, /turf/open/floor/plasteel, /area/storage/primary) -"faX" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "fba" = ( /obj/machinery/firealarm{ dir = 8; @@ -18292,6 +18323,29 @@ dir = 1 }, /area/science/mixing) +"fwS" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/storage/box, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/stack/packageWrap{ + pixel_x = 2; + pixel_y = -3 + }, +/obj/item/hand_labeler, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "fwW" = ( /obj/structure/filingcabinet, /obj/structure/reagent_dispensers/peppertank{ @@ -20055,6 +20109,19 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"fWG" = ( +/obj/item/radio/intercom{ + pixel_x = 30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 6 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "fWR" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on{ dir = 4; @@ -21009,17 +21076,6 @@ }, /turf/open/floor/plasteel, /area/security/brig) -"gjH" = ( -/obj/structure/table, -/obj/item/toner, -/obj/item/radio/intercom{ - pixel_x = 30 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "gjI" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -25271,24 +25327,6 @@ }, /turf/open/floor/noslip, /area/medical/genetics/cloning) -"huY" = ( -/obj/machinery/airalarm{ - pixel_y = 24 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/folder/yellow, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "hva" = ( /obj/structure/table, /obj/item/camera, @@ -29693,6 +29731,20 @@ }, /turf/open/floor/plasteel, /area/teleporter) +"iKJ" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "iKL" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -30039,6 +30091,14 @@ /obj/structure/grille/broken, /turf/open/floor/plating/asteroid/snow/icemoon/top_layer, /area/icemoon/top_layer/outdoors) +"iOY" = ( +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/trimline/brown/warning/lower{ + dir = 8 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "iPc" = ( /mob/living/simple_animal/cow{ name = "Betsy"; @@ -33828,6 +33888,18 @@ /obj/effect/turf_decal/trimline/brown/filled/line/lower, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) +"jRo" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "jRr" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -34450,15 +34522,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"kba" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "kbl" = ( /obj/structure/window/reinforced, /obj/machinery/power/terminal{ @@ -35020,13 +35083,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"kiR" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/trimline/brown/warning/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "kjc" = ( /obj/machinery/door/airlock/medical{ name = "Patient Room B"; @@ -38140,6 +38196,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/research) +"leT" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "Cargo - Foyer"; + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/folder/yellow, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "lfd" = ( /obj/structure/sign/warning/vacuum/external{ pixel_y = 32 @@ -39044,6 +39119,25 @@ }, /turf/open/floor/plasteel/white, /area/medical/storage) +"lqH" = ( +/obj/structure/noticeboard{ + desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; + name = "requests board"; + pixel_x = 32; + pixel_y = 32 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_y = 30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/structure/table, +/obj/item/toner, +/turf/open/floor/plasteel, +/area/quartermaster/office) "lqP" = ( /obj/structure/window/reinforced{ dir = 1 @@ -39549,20 +39643,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"lzO" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "lAg" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -43224,13 +43304,6 @@ }, /turf/open/floor/plating, /area/security/prison/hallway) -"mAG" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "mAN" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ @@ -44530,22 +44603,6 @@ }, /turf/open/floor/plating, /area/maintenance/aft) -"mRA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "mRI" = ( /obj/structure/table, /obj/machinery/button/door{ @@ -52707,24 +52764,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"pjv" = ( -/obj/structure/noticeboard{ - desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; - name = "requests board"; - pixel_x = 32; - pixel_y = 32 - }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_y = 30 - }, -/obj/machinery/computer/bounty, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "pjw" = ( /obj/machinery/light/small{ dir = 4 @@ -55391,6 +55430,18 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"pYX" = ( +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "pZa" = ( /obj/structure/sign/plaques/kiddie/perfect_drone{ pixel_y = 32 @@ -58921,18 +58972,6 @@ }, /turf/open/floor/plasteel, /area/mine/living_quarters) -"qZr" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "qZu" = ( /obj/effect/turf_decal/loading_area{ dir = 4 @@ -59500,6 +59539,15 @@ }, /turf/open/floor/plasteel/dark, /area/teleporter) +"rjj" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "rjn" = ( /obj/structure/sign/warning/fire{ pixel_y = -32 @@ -64129,22 +64177,6 @@ /obj/effect/spawner/lootdrop/mob/kitchen_animal, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"syx" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Cargo - Foyer"; - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "syR" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64888,22 +64920,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos/distro) -"sKa" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "sKi" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -64919,6 +64935,22 @@ }, /turf/open/floor/wood, /area/medical/psych) +"sKK" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "sKP" = ( /obj/item/storage/box/lights/mixed, /turf/open/floor/plating, @@ -67476,16 +67508,6 @@ }, /turf/open/floor/plasteel, /area/security/prison) -"tsN" = ( -/obj/structure/closet/crate{ - icon_state = "crateopen" - }, -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "tsY" = ( /obj/effect/turf_decal/delivery, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -68857,6 +68879,26 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"tPX" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "tQb" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner/lower{ dir = 1 @@ -70083,16 +70125,6 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/closed/wall/r_wall, /area/engine/atmos/distro) -"ugW" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "uha" = ( /turf/closed/wall, /area/crew_quarters/theatre) @@ -71048,6 +71080,22 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/maintenance/starboard) +"uuK" = ( +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/structure/closet/crate{ + icon_state = "crateopen" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "uuW" = ( /obj/structure/closet/crate, /obj/item/storage/belt/utility, @@ -83505,39 +83553,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) -"xNl" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/rack, -/obj/item/storage/box, -/obj/item/storage/box, -/obj/item/storage/box, -/obj/item/stack/packageWrap{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/stack/packageWrap{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/stack/packageWrap{ - pixel_x = 2; - pixel_y = -3 - }, -/obj/item/hand_labeler, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/hallway/primary/port) "xNp" = ( /obj/machinery/camera{ c_tag = "Cryogenics"; @@ -84841,6 +84856,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/medical/virology) +"yeD" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/port) "yeI" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -236284,7 +236311,7 @@ rXH cEd rSs oDL -pjv +lqH txU mKm boy @@ -236789,7 +236816,7 @@ rQz rNk mKF rNk -bgQ +aLp iZL exg iDS @@ -237056,14 +237083,14 @@ kPd uFA aNL cvP -kiR +iOY cIE cIE jic xcl -tsN -xZv -jLK +xcl +cAC +mTD eSb liR mOp @@ -237318,10 +237345,10 @@ nth axk hXn scN -mAG -faX -mTD -eSb +cyT +sKK +pYX +iKJ scN mOp gnL @@ -237575,10 +237602,10 @@ eHn scN cXK scN -sKa -mRA -qZr -lzO +tPX +xZv +jLK +jRo aOX mOp mOp @@ -237831,8 +237858,8 @@ ruD ruD ruD jIg -kba -xNl +yeD +coy xZv jLK vSx @@ -238083,13 +238110,13 @@ fHY pgm fap rNk -huY -syx -bMO +uuK +leT +fwS qDP nHU -ugW -gjH +rjj +fWG xZv jLK vSx From 2148dc4a7e8b96f6d7821d4f109393351d1f0e16 Mon Sep 17 00:00:00 2001 From: adamsong Date: Tue, 11 Jun 2024 15:45:07 -0400 Subject: [PATCH 36/38] Update gax --- _maps/map_files/GaxStation/GaxStation.dmm | 219 +++++++++++----------- 1 file changed, 114 insertions(+), 105 deletions(-) diff --git a/_maps/map_files/GaxStation/GaxStation.dmm b/_maps/map_files/GaxStation/GaxStation.dmm index 4ae285284691..0b31c0d2a4a7 100644 --- a/_maps/map_files/GaxStation/GaxStation.dmm +++ b/_maps/map_files/GaxStation/GaxStation.dmm @@ -2459,6 +2459,13 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"bhR" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/holopad, +/turf/open/floor/plasteel, +/area/quartermaster/office) "bii" = ( /obj/effect/turf_decal/trimline/blue/filled/line/lower{ dir = 4 @@ -3822,6 +3829,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"bSQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "bSU" = ( /obj/machinery/light{ dir = 1 @@ -3980,20 +3996,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) -"bUS" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -24 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "bVm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -8613,12 +8615,6 @@ }, /turf/open/floor/carpet, /area/security/detectives_office) -"eeG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "eeO" = ( /obj/machinery/door/airlock/maintenance_hatch, /obj/machinery/door/firedoor/border_only{ @@ -11191,14 +11187,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/hallway/secondary/service) -"fkR" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/obj/structure/chair, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel, -/area/quartermaster/office) "fli" = ( /obj/machinery/advanced_airlock_controller{ pixel_y = 24 @@ -11527,15 +11515,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) -"fsY" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/obj/machinery/light, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -30 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "ftr" = ( /turf/closed/wall/r_wall, /area/medical/genetics) @@ -12521,6 +12500,15 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"fPY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "fQa" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) @@ -12547,6 +12535,21 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"fQs" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 10 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 2; + pixel_x = -32 + }, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "fRa" = ( /obj/machinery/light, /obj/structure/disposalpipe/segment{ @@ -20297,13 +20300,6 @@ }, /turf/open/floor/plasteel/dark, /area/medical/morgue) -"jGo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/holopad, -/turf/open/floor/plasteel, -/area/quartermaster/office) "jGV" = ( /obj/structure/fireaxecabinet/bridge{ pixel_x = 32 @@ -22366,6 +22362,23 @@ "kKp" = ( /turf/closed/wall/mineral/plastitanium, /area/maintenance/aft) +"kKE" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -24 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "kKN" = ( /obj/effect/turf_decal/bot, /obj/machinery/shieldgen, @@ -24629,21 +24642,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/dark, /area/bridge) -"lQU" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/obj/machinery/computer/bounty{ - dir = 1 - }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Quartermaster's Desk"; - departmentType = 2; - pixel_x = -32 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "lRg" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -28733,19 +28731,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/quartermaster/qm) -"nTx" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "nTF" = ( /obj/structure/rack, /obj/effect/turf_decal/stripes/corner{ @@ -30170,15 +30155,6 @@ }, /turf/open/floor/carpet/blue, /area/bridge/meeting_room) -"oJl" = ( -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 1 - }, -/obj/machinery/computer/bounty{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "oJs" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -31678,6 +31654,20 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/aft) +"pup" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/light, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -30 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/quartermaster/office) "puu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -32787,6 +32777,16 @@ /obj/machinery/smartfridge/chemistry/virology/preloaded, /turf/closed/wall/r_wall, /area/medical/virology) +"pWd" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/camera{ + c_tag = "Quartermaster's Office"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "pWm" = ( /obj/effect/turf_decal/trimline/blue/filled/line/lower, /obj/structure/table, @@ -36114,6 +36114,14 @@ /obj/structure/closet/secure_closet/security, /turf/open/floor/plasteel, /area/security/checkpoint/customs) +"rBw" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "rBC" = ( /turf/closed/wall/r_wall, /area/security/checkpoint/science) @@ -36755,6 +36763,20 @@ /obj/machinery/holopad, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) +"rTa" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/plasteel, +/area/quartermaster/office) "rTl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -49366,19 +49388,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"xZY" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/obj/machinery/modular_computer/console/preset/cargo/qm{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Quartermaster's Office"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "yab" = ( /obj/machinery/power/apc{ areastring = "/area/security/brig"; @@ -75436,10 +75445,10 @@ hYs ewA hOJ pQR -xZY -bUS +pWd +kKE uZz -lQU +fQs pQR gTy dNz @@ -78008,7 +78017,7 @@ pRg bPi msR fWC -jaW +rBw dby gtb fDV @@ -78263,9 +78272,9 @@ vkW nEQ maX fDA -fkR -jGo -fsY +bhR +fPY +pup laH fDA aPG @@ -78521,11 +78530,11 @@ ewA fbN uwH jHK -eeG -jaW +bSQ +rBw dby dTN -oJl +jHK nFF iLn laH @@ -79035,7 +79044,7 @@ ewA maX fDA iOZ -nTx +rTa hRH dby aGU From e434dc0b12a66373c3c1dbbc612b8c84e9ad85f1 Mon Sep 17 00:00:00 2001 From: adamsong Date: Tue, 11 Jun 2024 16:00:49 -0400 Subject: [PATCH 37/38] Re-added yogs and gax changes --- _maps/map_files/DonutStation/DonutStation.dmm | 234 +++++++----- _maps/map_files/YogStation/YogStation.dmm | 358 +++++++++--------- 2 files changed, 316 insertions(+), 276 deletions(-) diff --git a/_maps/map_files/DonutStation/DonutStation.dmm b/_maps/map_files/DonutStation/DonutStation.dmm index 5d41c0ff297b..a983dac0849c 100644 --- a/_maps/map_files/DonutStation/DonutStation.dmm +++ b/_maps/map_files/DonutStation/DonutStation.dmm @@ -642,6 +642,17 @@ }, /turf/open/floor/plasteel, /area/janitor) +"anq" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/quartermaster/office) "ans" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 9 @@ -1658,6 +1669,16 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aJG" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "aJJ" = ( /obj/structure/plasticflaps, /obj/machinery/conveyor{ @@ -6813,6 +6834,11 @@ }, /turf/open/space/basic, /area/space/nearstation) +"cIm" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/vending/modularpc, +/turf/open/floor/plasteel, +/area/quartermaster/office) "cIr" = ( /turf/closed/wall, /area/lawoffice) @@ -15742,6 +15768,19 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/engine, /area/science/explab) +"grm" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/conveyor{ + dir = 4; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "grI" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -17823,16 +17862,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"hpJ" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/obj/machinery/vending/modularpc, -/turf/open/floor/plasteel, -/area/quartermaster/office) "hpK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -21175,28 +21204,6 @@ /obj/item/wirecutters, /turf/open/space/basic, /area/engine/engineering) -"iSo" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -31; - pixel_y = -6 - }, -/obj/machinery/camera{ - c_tag = "Cargo - Quartermaster's Office"; - dir = 4; - network = list("ss13") - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/obj/machinery/light_switch{ - pixel_x = -24; - pixel_y = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "iSC" = ( /obj/structure/table/wood, /obj/item/toy/figure/lawyer, @@ -21417,19 +21424,6 @@ "iWz" = ( /turf/template_noop, /area/maintenance/port/fore) -"iWA" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -24 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "iWG" = ( /mob/living/carbon/monkey{ dir = 1 @@ -26651,6 +26645,23 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"liA" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "liB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -30129,13 +30140,6 @@ /obj/structure/closet/lasertag/red, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"mIc" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/obj/machinery/computer/bounty, -/turf/open/floor/plasteel, -/area/quartermaster/office) "mIh" = ( /obj/structure/closet/wardrobe/mixed, /turf/open/floor/plating{ @@ -31386,6 +31390,16 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"ngM" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -24 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "ngQ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -33269,6 +33283,23 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/chapel/office) +"nTn" = ( +/obj/machinery/status_display/supply{ + pixel_x = -32 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Cargo - Front Lobby"; + dir = 4; + network = list("ss13") + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "nTH" = ( /obj/machinery/smartfridge/food, /turf/open/floor/plasteel/cafeteria{ @@ -33336,15 +33367,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/science/research) -"nUV" = ( -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "nVh" = ( /obj/structure/window/reinforced{ dir = 4 @@ -36235,21 +36257,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"pmR" = ( -/obj/machinery/status_display/supply{ - pixel_x = -32 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/obj/machinery/lapvend, -/obj/machinery/camera{ - c_tag = "Cargo - Front Lobby"; - dir = 4; - network = list("ss13") - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "pmT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -36617,23 +36624,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) -"ptc" = ( -/obj/machinery/computer/security/qm{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = -30 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "ptd" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -45821,6 +45811,28 @@ }, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"tpE" = ( +/obj/item/radio/intercom{ + pixel_x = -31; + pixel_y = -6 + }, +/obj/machinery/camera{ + c_tag = "Cargo - Quartermaster's Office"; + dir = 4; + network = list("ss13") + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/light_switch{ + pixel_x = -24; + pixel_y = 8 + }, +/obj/machinery/computer/security/qm{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "tpK" = ( /obj/effect/turf_decal/trimline/blue/filled/line/lower{ dir = 1 @@ -46504,6 +46516,13 @@ /obj/item/restraints/legcuffs/beartrap, /turf/open/floor/plasteel, /area/janitor) +"tCp" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/machinery/computer/bounty, +/turf/open/floor/plasteel, +/area/quartermaster/office) "tCS" = ( /obj/structure/grille/broken, /turf/open/floor/plating, @@ -56200,6 +56219,13 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"xCg" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 10 + }, +/obj/machinery/lapvend, +/turf/open/floor/plasteel, +/area/quartermaster/office) "xCh" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/stripes/line{ @@ -94818,8 +94844,8 @@ foN mdj mHy lwl -iSo -ptc +tpE +liA qwB saU lwl @@ -94827,10 +94853,10 @@ cyW wgo hgq pww -hpJ -pmR -iWA -nUV +grm +nTn +ngM +xCg gAv uTm oZy @@ -95084,10 +95110,10 @@ fvV gNx igx cOe -usN -gWw +anq +tCp gNx -igx +cIm gAv pln rHh @@ -95341,7 +95367,7 @@ awv gWw igx cOe -usN +aJG bsf gNx atp @@ -96360,7 +96386,7 @@ hpj dcG wLL uJQ -mIc +usN gNx bdW gNx diff --git a/_maps/map_files/YogStation/YogStation.dmm b/_maps/map_files/YogStation/YogStation.dmm index 069daf583dd9..407a04a3cd35 100644 --- a/_maps/map_files/YogStation/YogStation.dmm +++ b/_maps/map_files/YogStation/YogStation.dmm @@ -86,6 +86,15 @@ /mob/living/simple_animal/pet/fox/fennec/Autumn, /turf/open/floor/plasteel, /area/quartermaster/office) +"aao" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "aap" = ( /obj/structure/bed/dogbed/ian, /obj/structure/sign/painting{ @@ -10588,6 +10597,17 @@ }, /turf/open/floor/carpet, /area/medical/psych) +"bDC" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/structure/table, +/obj/item/storage/pencil_holder/crew/fancy{ + pixel_y = 12 + }, +/obj/item/folder/yellow, +/obj/item/coin/silver, +/obj/item/pen/red, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "bDE" = ( /obj/machinery/electrolyzer, /obj/effect/turf_decal/bot, @@ -12635,6 +12655,12 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/circuit/telecomms, /area/science/xenobiology) +"bZx" = ( +/obj/machinery/computer/bounty{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "bZz" = ( /obj/machinery/camera{ c_tag = "Xenobiology Desk Exterior"; @@ -15924,15 +15950,6 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) -"cQL" = ( -/obj/machinery/computer/bounty{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "cRb" = ( /obj/structure/table, /obj/item/stock_parts/subspace/amplifier, @@ -16911,10 +16928,6 @@ }, /turf/open/floor/engine/n2, /area/engine/atmos/distro) -"dls" = ( -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/office) "dlt" = ( /obj/machinery/door/airlock{ name = "Law Office"; @@ -20111,6 +20124,15 @@ }, /turf/open/floor/engine/vacuum, /area/engine/atmos/mix) +"etB" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 4 + }, +/obj/machinery/conveyor_switch{ + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "etJ" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -22956,6 +22978,19 @@ }, /turf/open/floor/plasteel/dark, /area/security/interrogation) +"fnK" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/modular_computer/console/preset/cargo/qm{ + dir = 4 + }, +/obj/item/toy/figure/qm, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "fnX" = ( /obj/machinery/vending/wardrobe/gene_wardrobe, /obj/effect/turf_decal/trimline/purple/filled/line/lower{ @@ -24059,18 +24094,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/storage/tech) -"fIn" = ( -/obj/machinery/computer/cargo{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "fIo" = ( /obj/machinery/hydroponics/soil, /turf/open/floor/plasteel, @@ -24878,6 +24901,14 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/locker) +"fXw" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "fXS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -25795,6 +25826,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/bridge) +"gqY" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "gqZ" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/eastleft{ @@ -28979,16 +29014,6 @@ /obj/machinery/computer/shipbreaker, /turf/open/floor/plasteel/dark, /area/escapepodbay) -"huO" = ( -/obj/structure/table, -/obj/machinery/photocopier/faxmachine{ - density = 0; - department = "Quartermaster"; - name = "Quartermaster's Fax Machine" - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "huX" = ( /obj/machinery/smartfridge/chemistry, /turf/closed/wall, @@ -31833,16 +31858,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/genetics) -"ird" = ( -/obj/machinery/autolathe, -/obj/machinery/light_switch{ - pixel_x = -27 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "irm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -39495,19 +39510,6 @@ }, /turf/open/floor/plasteel, /area/security/prison) -"lld" = ( -/obj/structure/table, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -26 - }, -/obj/item/storage/firstaid/regular, -/obj/item/multitool, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "llg" = ( /obj/machinery/light/small{ dir = 8 @@ -39630,6 +39632,15 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness) +"lmm" = ( +/obj/machinery/light_switch{ + pixel_x = -27 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "lmt" = ( /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -40226,22 +40237,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"lzh" = ( -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = -30 - }, -/obj/machinery/camera{ - c_tag = "Cargo Office"; - dir = 4 - }, -/obj/machinery/papershredder, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "lzw" = ( /obj/effect/turf_decal/trimline/engiyellow/filled/line/lower{ dir = 1 @@ -42741,6 +42736,17 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"mwx" = ( +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -26 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/papershredder, +/turf/open/floor/plasteel, +/area/quartermaster/office) "mwF" = ( /turf/open/floor/plasteel/white, /area/medical/chemistry) @@ -46584,6 +46590,15 @@ }, /turf/open/floor/catwalk_floor/telecomms, /area/ai_monitored/turret_protected/ai) +"nRi" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/obj/machinery/bounty_packager, +/turf/open/floor/plasteel, +/area/quartermaster/office) "nRs" = ( /obj/machinery/door/airlock/research/glass{ name = "Genetics Research"; @@ -48905,12 +48920,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) -"oJt" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "oJT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -49183,17 +49192,6 @@ "oNF" = ( /turf/open/floor/stone, /area/crew_quarters/heads/captain) -"oNS" = ( -/obj/structure/table, -/obj/item/coin/silver, -/obj/item/folder/yellow, -/obj/item/pen/red, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/obj/item/storage/pencil_holder/crew/fancy{ - pixel_y = 12 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "oNV" = ( /obj/item/kirbyplants/random, /obj/machinery/firealarm{ @@ -50269,6 +50267,15 @@ }, /turf/open/floor/plasteel/white, /area/medical/surgery) +"piF" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/obj/item/multitool, +/turf/open/floor/plasteel, +/area/quartermaster/office) "pjh" = ( /obj/structure/closet/lasertag/red, /turf/open/floor/plasteel, @@ -54495,6 +54502,14 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"qJl" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "qJp" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -55294,6 +55309,14 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"qWl" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 10 + }, +/obj/structure/table, +/obj/item/folder/yellow, +/turf/open/floor/plasteel, +/area/quartermaster/office) "qWH" = ( /obj/machinery/power/apc{ areastring = "/area/maintenance/central/secondary"; @@ -55857,14 +55880,6 @@ }, /turf/open/floor/plasteel/white, /area/science/research) -"rie" = ( -/obj/structure/table, -/obj/item/folder/yellow, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "rig" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 4; @@ -56231,15 +56246,6 @@ "rpB" = ( /turf/open/floor/carpet, /area/crew_quarters/bar) -"rpC" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "rqi" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 1 @@ -58837,17 +58843,6 @@ /obj/effect/turf_decal/trimline/engiyellow/filled/corner/lower, /turf/open/floor/plasteel, /area/engine/foyer) -"skz" = ( -/obj/structure/chair/office/dark, -/obj/effect/landmark/start/quartermaster, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "skM" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -65857,6 +65852,20 @@ "uTh" = ( /turf/closed/wall, /area/security/execution/transfer) +"uTw" = ( +/obj/machinery/light, +/obj/structure/sign/departments/minsky/security/security{ + pixel_y = -32 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 6 + }, +/obj/machinery/conveyor{ + dir = 8; + id = "bounty" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "uUb" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -68001,6 +68010,21 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) +"vEY" = ( +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Quartermaster's Desk"; + departmentType = 2; + pixel_x = -30 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 9 + }, +/obj/machinery/computer/cargo{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "vFa" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -68048,21 +68072,6 @@ /obj/structure/table/wood, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"vGJ" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Quartermaster's Desk"; - departmentType = 2; - pixel_x = -30 - }, -/obj/machinery/computer/bounty{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "vGL" = ( /obj/structure/table, /obj/machinery/button/door{ @@ -68252,6 +68261,16 @@ /obj/effect/turf_decal/trimline/blue/filled/corner/lower, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"vIJ" = ( +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/obj/structure/table, +/obj/machinery/photocopier/faxmachine{ + density = 0; + department = "Quartermaster"; + name = "Quartermaster's Fax Machine" + }, +/turf/open/floor/plasteel, +/area/quartermaster/qm) "vIP" = ( /obj/machinery/computer/arcade/orion_trail, /turf/open/floor/plasteel, @@ -69414,19 +69433,6 @@ "wec" = ( /turf/template_noop, /area/medical/morgue) -"wem" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/light, -/obj/structure/sign/departments/minsky/security/security{ - pixel_y = -32 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "wen" = ( /obj/structure/bed, /obj/item/bedsheet/red, @@ -69648,14 +69654,6 @@ }, /turf/open/floor/plasteel, /area/security/checkpoint/science) -"wit" = ( -/obj/machinery/modular_computer/console/preset/cargo/qm{ - dir = 1 - }, -/obj/item/toy/figure/qm, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/qm) "wiz" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -71925,6 +71923,22 @@ /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/security/prison) +"xdJ" = ( +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Cargo Office"; + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 8 + }, +/obj/machinery/autolathe, +/turf/open/floor/plasteel, +/area/quartermaster/office) "xeq" = ( /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintenance"; @@ -95935,8 +95949,8 @@ bjr bjr rvc bxu -vGJ -fIn +vEY +fnK nVq bxu aaa @@ -96193,8 +96207,8 @@ bjr sLv bxu mqt -oJt -huO +fXw +gqY sOj aaa aaa @@ -96451,7 +96465,7 @@ uWZ edT obs kTR -oNS +vIJ sOj aaa aaa @@ -96707,8 +96721,8 @@ qas ujQ byz kuY -skz -wit +aao +bDC sOj aaf aaf @@ -97471,11 +97485,11 @@ aan ivQ yhe gzl -ird -lzh -lld -rie -cQL +lmm +xdJ +mwx +piF +qWl bxu byz rDa @@ -99273,7 +99287,7 @@ cPP stm aWM bnx -dls +qJl bzy diJ bvI @@ -99529,8 +99543,8 @@ nwD bbR bpA blp -bbR -dls +bZx +nRi bzy yaO kSb @@ -99786,8 +99800,8 @@ fKl uEI vpX ilc -rpC -wem +etB +uTw bwe cdM bRh From e3145e9abf2762d7c8e89fd8b04f2a985981e754 Mon Sep 17 00:00:00 2001 From: adamsong Date: Mon, 17 Jun 2024 21:34:16 -0400 Subject: [PATCH 38/38] Fix disposals --- _maps/map_files/YogStation/YogStation.dmm | 346 ++++++++++------------ 1 file changed, 163 insertions(+), 183 deletions(-) diff --git a/_maps/map_files/YogStation/YogStation.dmm b/_maps/map_files/YogStation/YogStation.dmm index fb40b4fce39e..8962af5f4a5a 100644 --- a/_maps/map_files/YogStation/YogStation.dmm +++ b/_maps/map_files/YogStation/YogStation.dmm @@ -4385,18 +4385,6 @@ }, /turf/open/floor/plasteel, /area/science/nanite) -"aGg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "aGk" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small, @@ -15145,24 +15133,6 @@ /obj/effect/landmark/carpspawn, /turf/open/space/basic, /area/space) -"cEY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "cFk" = ( /obj/structure/cloth_curtain{ color = "#99ccff"; @@ -16099,16 +16069,6 @@ /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"cTo" = ( -/obj/machinery/holopad, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "cTw" = ( /obj/effect/turf_decal/plaque{ icon_state = "L5" @@ -20409,22 +20369,6 @@ "ewG" = ( /turf/closed/wall, /area/maintenance/solars/starboard/fore) -"ewI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "ewO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -21403,6 +21347,29 @@ }, /turf/open/floor/plating, /area/maintenance/aft) +"eNa" = ( +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Office"; + req_access_txt = "50" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line/lower, +/turf/open/floor/plasteel, +/area/quartermaster/office) "eNl" = ( /obj/structure/lattice/catwalk, /obj/structure/cable/yellow{ @@ -25082,6 +25049,15 @@ /obj/item/hand_labeler, /turf/open/floor/plasteel/vaporwave, /area/storage/art) +"gbY" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "gcc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -27870,32 +27846,6 @@ }, /turf/open/floor/plating, /area/maintenance/aft) -"hbP" = ( -/obj/machinery/door/airlock/mining/glass{ - name = "Cargo Office"; - req_access_txt = "50" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/line/lower, -/turf/open/floor/plasteel, -/area/quartermaster/office) "hbQ" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -29631,10 +29581,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/virology) -"hEP" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/quartermaster/office) "hFe" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 5 @@ -30594,16 +30540,6 @@ /obj/effect/turf_decal/trimline/purple/filled/line/lower, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"hVI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/quartermaster/office) "hVN" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -31999,18 +31935,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) -"isC" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "isH" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -32654,6 +32578,18 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"iFE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "iFF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -32993,18 +32929,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"iLl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "iLA" = ( /obj/effect/turf_decal/delivery, /obj/structure/sign/warning/nosmoking{ @@ -35386,24 +35310,6 @@ }, /turf/open/floor/plasteel/dark, /area/tcommsat/storage) -"jCP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "jCZ" = ( /obj/structure/cable{ icon_state = "1-4" @@ -39706,6 +39612,18 @@ }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/locker) +"llO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "llT" = ( /obj/machinery/airalarm{ dir = 1; @@ -39918,6 +39836,19 @@ /obj/structure/lattice, /turf/closed/wall/r_wall, /area/security/execution/transfer) +"loZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "lpj" = ( /obj/effect/turf_decal/trimline/purple/filled/line/lower{ dir = 1 @@ -55307,6 +55238,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood/parquet, /area/crew_quarters/bar) +"qWb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "qWk" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -55810,6 +55750,21 @@ }, /turf/open/floor/plasteel, /area/teleporter) +"rge" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "rgh" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -57010,21 +56965,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/paramedic) -"rDD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "rDG" = ( /obj/effect/turf_decal/siding/wood/thin{ dir = 6 @@ -59276,6 +59216,21 @@ }, /turf/open/floor/plating, /area/ai_monitored/storage/satellite) +"stX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "sud" = ( /obj/structure/cable{ icon_state = "2-4" @@ -63701,6 +63656,21 @@ }, /turf/open/space, /area/space) +"uak" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/corner/lower{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "uar" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -68916,6 +68886,19 @@ }, /turf/open/floor/plasteel, /area/quartermaster/office) +"vUT" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "vVb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -70250,6 +70233,19 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"wva" = ( +/obj/machinery/holopad, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/quartermaster/office) "wvg" = ( /obj/machinery/door/airlock/mining/glass{ name = "Cargo Bay"; @@ -73897,22 +73893,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos/mix) -"xQE" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/quartermaster/office) "xQR" = ( /obj/effect/turf_decal/bot_white/left, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ @@ -97496,7 +97476,7 @@ bhW sES aan ivQ -cEY +rge gzl dIG gHI @@ -97753,10 +97733,10 @@ bhW oaG ycm ngZ -rDD -hEP -hEP -ngZ +llO +bbR +bbR +bbR bbR wqH moT @@ -98013,7 +97993,7 @@ pFb ucg oBH oBH -xQE +vUT vUJ aXc dYn @@ -98270,7 +98250,7 @@ bjj qAt bbR pfK -isC +gbY bbR fAv iRA @@ -98527,7 +98507,7 @@ bjl gwQ phL atU -ewI +loZ uEI urT nKP @@ -98784,7 +98764,7 @@ bjl kHL uqN kHL -hbP +eNa kHL kHL bwe @@ -99041,7 +99021,7 @@ bjl dBh xJY sZy -jCP +uak gzl idR bzy @@ -99297,8 +99277,8 @@ bct lMB eUy cPP -hVI -iLl +iFE +qWb bnx ohP bzy @@ -99554,7 +99534,7 @@ fIc fUQ nwD bbR -cTo +wva blp oKA oLy @@ -99811,7 +99791,7 @@ iHV fUQ fKl uEI -aGg +stX ilc nEU wJX