From af8a25eda4f5a8e91fb60ac1d14366aec7b80ff2 Mon Sep 17 00:00:00 2001 From: ItsVyzo Date: Wed, 7 Feb 2024 08:14:43 +0300 Subject: [PATCH] stan blessed --- .../__DEFINES/dcs/signals/atom/signals_obj.dm | 2 + code/game/machinery/vending/cm_vending.dm | 10 +- .../machinery/vending/vendor_types/medical.dm | 87 ++++++++++++++++++ code/game/objects/structures.dm | 6 +- code/modules/cm_marines/overwatch.dm | 4 + icons/effects/warning_stripes.dmi | Bin 6676 -> 9768 bytes maps/map_files/USS_Almayer/USS_Almayer.dmm | 12 ++- 7 files changed, 116 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/dcs/signals/atom/signals_obj.dm b/code/__DEFINES/dcs/signals/atom/signals_obj.dm index c870a55ed746..ed27c26b2115 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_obj.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_obj.dm @@ -25,6 +25,8 @@ /// from /obj/structure/transmitter/update_icon() #define COMSIG_TRANSMITTER_UPDATE_ICON "transmitter_update_icon" +#define COMSIG_STRUCTURE_WRENCHED "structure_wrenched" +#define COMSIG_STRUCTURE_UNWRENCHED "structure_unwrenched" #define COMSIG_TENT_COLLAPSING "tent_collapsing" /// from /obj/proc/afterbuckle() diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index 2ba1ac089826..8b0f2fdd9cd5 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -985,12 +985,16 @@ GLOBAL_LIST_EMPTY(vending_products) to_chat(user, SPAN_WARNING("\The [item_to_stock] needs to be fully charged to restock it!")) return - if(istype(item_to_stock, /obj/item/cell)) + else if(istype(item_to_stock, /obj/item/cell)) var/obj/item/cell/C = item_to_stock if(C.charge < C.maxcharge) to_chat(user, SPAN_WARNING("\The [item_to_stock] needs to be fully charged to restock it!")) return + else if(!additional_restock_checks(item_to_stock, user)) + // the error message needs to go in the proc + return FALSE + if(item_to_stock.loc == user) //Inside the mob's inventory if(item_to_stock.flags_item & WIELDED) item_to_stock.unwield(user) @@ -1008,6 +1012,10 @@ GLOBAL_LIST_EMPTY(vending_products) updateUsrDialog() return //We found our item, no reason to go on. +/// additional restocking checks for individual vendor subtypes. Parse in item, do checks, return FALSE to fail. Include error message. +/obj/structure/machinery/cm_vending/sorted/proc/additional_restock_checks(obj/item/item_to_stock, mob/user) + return TRUE + //sending an /empty ammo box type path here will return corresponding regular (full) type of this box //if there is one set in corresponding_box_types or will return FALSE otherwise /obj/structure/machinery/cm_vending/sorted/proc/return_corresponding_type(unusual_path) diff --git a/code/game/machinery/vending/vendor_types/medical.dm b/code/game/machinery/vending/vendor_types/medical.dm index 9750669ac88a..1d003f40f0bc 100644 --- a/code/game/machinery/vending/vendor_types/medical.dm +++ b/code/game/machinery/vending/vendor_types/medical.dm @@ -1,3 +1,47 @@ +//------------SUPPLY LINK FOR MEDICAL VENDORS--------------- + +/obj/structure/medical_supply_link + name = "medical supplies link port" + desc = "A complex network of pipes and machinery, linking to large storage systems below the deck. Medical vendors linked to this port will be able to infinitely restock supplies." + icon = 'icons/effects/warning_stripes.dmi' + icon_state = "medlink_unclamped" + anchored = TRUE + density = FALSE + unslashable = TRUE + unacidable = TRUE + plane = FLOOR_PLANE + layer = 2.1 //It's the floor, man + +/obj/structure/medical_supply_link/ex_act(severity, direction) + return FALSE + +/obj/structure/medical_supply_link/Initialize() + . = ..() + RegisterSignal(src, COMSIG_STRUCTURE_WRENCHED, PROC_REF(do_clamp_animation)) + RegisterSignal(src, COMSIG_STRUCTURE_UNWRENCHED, PROC_REF(do_unclamp_animation)) + update_icon() + +/obj/structure/medical_supply_link/deconstruct(disassembled) + UnregisterSignal(src, COMSIG_STRUCTURE_WRENCHED) + UnregisterSignal(src, COMSIG_STRUCTURE_UNWRENCHED) + return ..() + +/obj/structure/medical_supply_link/proc/do_clamp_animation() + flick("medlink_clamping", src) + addtimer(CALLBACK(src, PROC_REF(update_icon), 2.6 SECONDS)) + update_icon() + +/obj/structure/medical_supply_link/proc/do_unclamp_animation() + flick("medlink_unclamping", src) + addtimer(CALLBACK(src, PROC_REF(update_icon), 2.6 SECONDS)) + update_icon() + +/obj/structure/medical_supply_link/update_icon() + if(locate(/obj/structure/machinery/cm_vending/sorted/medical) in loc) + icon_state = "medlink_clamped" + else + icon_state = "medlink_unclamped" + //------------SORTED MEDICAL VENDORS--------------- /obj/structure/machinery/cm_vending/sorted/medical @@ -14,6 +58,8 @@ vendor_theme = VENDOR_THEME_COMPANY vend_delay = 0.5 SECONDS + var/requires_supply_link_port = TRUE + var/datum/health_scan/last_health_display var/healthscan = TRUE @@ -60,6 +106,33 @@ if(healthscan) . += SPAN_NOTICE("The [src.name] offers assisted medical scan, for ease of usage with minimal training. Present the target in front of the scanner to scan.") +/obj/structure/machinery/cm_vending/sorted/medical/proc/get_supply_link() + var/linkpoint = locate(/obj/structure/medical_supply_link) in loc + if(!linkpoint) + return FALSE + return TRUE + +/obj/structure/machinery/cm_vending/sorted/medical/additional_restock_checks(obj/item/item_to_stock, mob/user) + if(istype(item_to_stock, /obj/item/reagent_container/hypospray/autoinjector) || istype(item_to_stock, /obj/item/reagent_container/glass/bottle)) + if(requires_supply_link_port && !get_supply_link()) + var/obj/item/reagent_container/container = item_to_stock + if(container.reagents.total_volume < container.reagents.maximum_volume) + if(user) + to_chat(user, SPAN_WARNING("\The [src] makes a buzzing noise as it rejects \the [container.name]. Looks like this vendor cannot refill these outside of a medical bay's supply link.")) + playsound(src, 'sound/machines/buzz-sigh.ogg', 15, TRUE) + return FALSE + + //stacked items handling if the vendor cannot restock partial stacks + else if(istype(item_to_stock, /obj/item/stack)) + if(requires_supply_link_port && !get_supply_link()) + var/obj/item/stack/restock_stack = item_to_stock + if(restock_stack.amount < restock_stack.max_amount) // if the stack is not full + if(user) + to_chat(user, SPAN_WARNING("\The [src] makes a buzzing noise as it rejects \the [restock_stack]. Looks like this vendor cannot restock non-full stacks outside of a medical bay's supply link.")) + playsound(src, 'sound/machines/buzz-sigh.ogg', 15, TRUE) + return FALSE + return TRUE + /obj/structure/machinery/cm_vending/sorted/medical/attackby(obj/item/I, mob/user) if(stat == WORKING && LAZYLEN(chem_refill) && (istype(I, /obj/item/reagent_container/hypospray/autoinjector) || istype(I, /obj/item/reagent_container/glass/bottle))) // only if we are completely fine and working if(!hacked) @@ -80,6 +153,11 @@ to_chat(user, SPAN_WARNING("[src] makes a warning noise. The [C.name] is currently full.")) return + if(requires_supply_link_port && !get_supply_link()) + to_chat(user, SPAN_WARNING("\The [src] makes a buzzing noise as it rejects \the [C.name]. Looks like this vendor cannot refill these outside of a medical bay's supply link.")) + playsound(src, 'sound/machines/buzz-sigh.ogg', 15, TRUE) + return + to_chat(user, SPAN_NOTICE("[src] makes a whirring noise as it refills your [C.name].")) // Since the reagent is deleted on use it's easier to make a new one instead of snowflake checking var/obj/item/reagent_container/new_container = new C.type(src) @@ -104,6 +182,11 @@ to_chat(user, SPAN_WARNING("[src] makes a warning noise. The [S.name] is currently fully stacked.")) return + if(requires_supply_link_port && !get_supply_link()) + to_chat(user, SPAN_WARNING("\The [src] makes a buzzing noise as it rejects \the [S.name]. Looks like this vendor cannot restock non-full stacks outside of a medical bay's supply link.")) + playsound(src, 'sound/machines/buzz-sigh.ogg', 15, TRUE) + return + to_chat(user, SPAN_NOTICE("[src] makes a whirring noise as it restocks your [S.name].")) S.amount = S.max_amount S.update_icon() @@ -231,6 +314,7 @@ name = "\improper Medical Equipment Vendor" desc = "A vending machine dispensing various pieces of medical equipment." req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + requires_supply_link_port = FALSE req_access = null vendor_theme = VENDOR_THEME_CLF @@ -272,6 +356,7 @@ name = "\improper Basic Medical Supplies Vendor" desc = "A vending machine dispensing basic medical supplies." req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + requires_supply_link_port = FALSE req_access = null vendor_theme = VENDOR_THEME_CLF @@ -307,6 +392,7 @@ /obj/structure/machinery/cm_vending/sorted/medical/blood/antag req_one_access = list(ACCESS_ILLEGAL_PIRATE, ACCESS_UPP_GENERAL, ACCESS_CLF_GENERAL) + requires_supply_link_port = FALSE req_access = null vendor_theme = VENDOR_THEME_CLF @@ -315,6 +401,7 @@ desc = "Wall-mounted Medical Equipment Dispenser." icon_state = "wallmed" vend_delay = 0.7 SECONDS + requires_supply_link_port = FALSE req_access = list() diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 2519ed2940d5..139402caf445 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -209,7 +209,7 @@ /obj/structure/proc/toggle_anchored(obj/item/W, mob/user) if(!wrenchable) - to_chat(user, SPAN_WARNING("[src] cannot be [anchored ? "un" : ""]anchored.")) + to_chat(user, SPAN_WARNING("The [src] cannot be [anchored ? "un" : ""]anchored.")) return FALSE else // Wrenching is faster if we are better at engineering @@ -219,8 +219,12 @@ playsound(loc, 'sound/items/Ratchet.ogg', 25, 1) if(anchored) user.visible_message(SPAN_NOTICE("[user] anchors [src] into place."),SPAN_NOTICE("You anchor [src] into place.")) + for(var/obj/O in loc) + SEND_SIGNAL(O, COMSIG_STRUCTURE_WRENCHED, src) else user.visible_message(SPAN_NOTICE("[user] unanchors [src]."),SPAN_NOTICE("You unanchor [src].")) + for(var/obj/O in loc) + SEND_SIGNAL(O, COMSIG_STRUCTURE_UNWRENCHED, src) return TRUE /obj/structure/get_applying_acid_time() diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index e68ef467faa9..ec1a9bd692bf 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -884,10 +884,14 @@ density = FALSE unslashable = TRUE unacidable = TRUE + plane = FLOOR_PLANE layer = 2.1 //It's the floor, man var/squad = SQUAD_MARINE_1 var/sending_package = 0 +/obj/structure/supply_drop/ex_act(severity, direction) + return FALSE + /obj/structure/supply_drop/Initialize(mapload, ...) . = ..() GLOB.supply_drop_list += src diff --git a/icons/effects/warning_stripes.dmi b/icons/effects/warning_stripes.dmi index c962ef88bfebebee8a4a2ea1190bfede24b99e1d..f9ec305292cece98cd26cce7f27d20c7d1e8b65b 100644 GIT binary patch literal 9768 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 diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index de98003c16de..533e641a5f40 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -10340,6 +10340,7 @@ pixel_x = 1 }, /obj/structure/machinery/cm_vending/sorted/medical/bolted, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ dir = 4; icon_state = "sterile_green_corner" @@ -16846,6 +16847,7 @@ /area/almayer/squads/bravo) "bET" = ( /obj/structure/machinery/cm_vending/sorted/medical/bolted, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -23934,9 +23936,7 @@ }, /area/almayer/engineering/lower/engine_core) "cGp" = ( -/obj/structure/machinery/cm_vending/clothing/senior_officer{ - pixel_y = 0 - }, +/obj/structure/machinery/cm_vending/clothing/senior_officer, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -31344,6 +31344,7 @@ /area/almayer/command/cic) "fvJ" = ( /obj/structure/machinery/cm_vending/sorted/medical/bolted, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" @@ -36343,6 +36344,7 @@ pixel_y = -32 }, /obj/structure/machinery/cm_vending/sorted/medical/bolted, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -40738,6 +40740,7 @@ /area/almayer/living/commandbunks) "jbO" = ( /obj/structure/machinery/cm_vending/sorted/medical/bolted, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ icon_state = "sterile_green_side" }, @@ -45451,6 +45454,7 @@ pixel_y = -7 }, /obj/structure/machinery/cm_vending/sorted/medical/chemistry, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -71506,6 +71510,7 @@ dir = 4 }, /obj/structure/machinery/cm_vending/sorted/medical/bolted, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ dir = 1; icon_state = "sterile_green_side" @@ -72150,6 +72155,7 @@ /area/almayer/medical/containment/cell) "uyJ" = ( /obj/structure/machinery/cm_vending/sorted/medical/chemistry, +/obj/structure/medical_supply_link, /turf/open/floor/almayer{ icon_state = "dark_sterile" },