From 41b2e512dfdcf917effb39dff496c0b6c2289d1a Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Thu, 9 Nov 2023 05:28:39 -0800 Subject: [PATCH 001/355] Componentizes power cells (#4855) # About the pull request Creates a new, flexible component for power cells. Eventually, anything powered will use a cell component instead of holding a ref to a `/obj/item/cell` or having a `charge` variable. Converts NVGs over to the new system as an example, the rest will come in time. Minor rework of how `emp_act()` works # Explain why it's good for the game Cells are one of the most obvious things to be componentized, and componentizing them allows cells to be added to new objects in a very easy manner. # Testing Photographs and Procedure
Screenshots & Videos Works
--- .../dcs/signals/atom/signals_atom.dm | 3 + .../dcs/signals/atom/signals_cell.dm | 26 +++ code/datums/components/cell.dm | 202 ++++++++++++++++++ code/game/atoms.dm | 6 +- code/game/machinery/atmoalter/scrubber.dm | 4 +- code/game/machinery/bots/bots.dm | 1 + code/game/machinery/bots/mulebot.dm | 2 +- code/game/machinery/camera/camera.dm | 5 +- code/game/machinery/camera/presets.dm | 9 +- code/game/machinery/cell_charger.dm | 2 +- code/game/machinery/computer/arcade.dm | 4 +- .../game/machinery/computer/camera_console.dm | 4 +- code/game/machinery/computer/computer.dm | 5 +- code/game/machinery/computer/medical.dm | 4 +- code/game/machinery/computer/security.dm | 4 +- code/game/machinery/computer/skills.dm | 3 +- code/game/machinery/deployable.dm | 1 + code/game/machinery/doors/door.dm | 2 +- code/game/machinery/fire_alarm.dm | 5 +- code/game/machinery/flasher.dm | 3 +- code/game/machinery/igniter.dm | 3 +- code/game/machinery/lightswitch.dm | 3 +- code/game/machinery/machinery.dm | 2 +- code/game/machinery/medical_pod/sleeper.dm | 3 +- code/game/machinery/recharger.dm | 10 +- code/game/machinery/rechargestation.dm | 3 +- code/game/machinery/spaceheater.dm | 3 +- code/game/machinery/status_display.dm | 3 +- .../machinery/telecomms/telecomunications.dm | 2 +- .../items/circuitboards/robot_modules.dm | 3 +- code/game/objects/items/devices/flash.dm | 2 +- .../objects/items/devices/portable_vendor.dm | 1 + .../game/objects/items/devices/radio/radio.dm | 2 +- code/game/objects/items/explosives/mine.dm | 1 + code/game/objects/items/implants/implant.dm | 4 + .../items/implants/implantneurostim.dm | 1 + code/game/objects/items/props/helmetgarb.dm | 81 ++++--- code/game/objects/items/storage/storage.dm | 1 + code/game/objects/items/weapons/stunbaton.dm | 2 +- .../closets/secure/secure_closets.dm | 2 +- .../crates_lockers/secure_crates.dm | 2 +- code/modules/clothing/clothing.dm | 2 +- code/modules/clothing/clothing_accessories.dm | 2 +- code/modules/clothing/glasses/thermal.dm | 2 +- code/modules/clothing/suits/armor.dm | 2 +- code/modules/clothing/suits/storage.dm | 2 +- code/modules/clothing/under/ties.dm | 2 +- .../modules/cm_marines/NonLethalRestraints.dm | 1 + code/modules/cm_preds/falcon.dm | 1 + code/modules/cm_preds/yaut_bracers.dm | 1 + code/modules/defenses/defenses.dm | 1 + code/modules/defenses/sentry_computer.dm | 1 + code/modules/mob/living/brain/MMI.dm | 2 +- code/modules/mob/living/brain/life.dm | 14 -- .../mob/living/carbon/human/human_defense.dm | 2 +- code/modules/mob/living/living_defense.dm | 2 +- code/modules/mob/living/silicon/ai/ai.dm | 2 +- code/modules/mob/living/silicon/silicon.dm | 2 +- .../simple_animal/hostile/retaliate/drone.dm | 1 + code/modules/organs/limbs.dm | 1 + code/modules/power/apc.dm | 2 +- code/modules/power/cell.dm | 2 +- code/modules/power/smes.dm | 2 +- code/modules/projectiles/gun.dm | 1 + code/modules/projectiles/guns/energy.dm | 2 +- .../interior/interactable/vehicle_locker.dm | 2 +- code/modules/vehicles/vehicle.dm | 1 + colonialmarines.dme | 2 + 68 files changed, 348 insertions(+), 138 deletions(-) create mode 100644 code/__DEFINES/dcs/signals/atom/signals_cell.dm create mode 100644 code/datums/components/cell.dm diff --git a/code/__DEFINES/dcs/signals/atom/signals_atom.dm b/code/__DEFINES/dcs/signals/atom/signals_atom.dm index cac9861d09cb..d9bd1202c159 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_atom.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_atom.dm @@ -51,3 +51,6 @@ /// Called when an atom is mouse dropped on another atom, from /client/MouseDrop: (atom/dropped_onto) #define COMSIG_ATOM_DROP_ON "atom_drop_on" + +/// Called when an atom has emp_act called on it, from /atom/emp_act: (severity) +#define COMSIG_ATOM_EMP_ACT "atom_emp_act" diff --git a/code/__DEFINES/dcs/signals/atom/signals_cell.dm b/code/__DEFINES/dcs/signals/atom/signals_cell.dm new file mode 100644 index 000000000000..75e13d8bfdfc --- /dev/null +++ b/code/__DEFINES/dcs/signals/atom/signals_cell.dm @@ -0,0 +1,26 @@ +/// (charge_amount) +#define COMSIG_CELL_USE_CHARGE "cell_use_charge" + #define COMPONENT_CELL_NO_USE_CHARGE (1<<0) + +/// (charge_amount) +#define COMSIG_CELL_ADD_CHARGE "cell_add_charge" + +#define COMSIG_CELL_START_TICK_DRAIN "cell_start_tick_drain" + +#define COMSIG_CELL_STOP_TICK_DRAIN "cell_stop_tick_drain" + +/// (mob/living/user) +#define COMSIG_CELL_TRY_RECHARGING "cell_try_recharging" + #define COMPONENT_CELL_NO_RECHARGE (1<<0) + +#define COMSIG_CELL_OUT_OF_CHARGE "cell_out_of_charge" + +/// (charge_amount) +#define COMSIG_CELL_CHECK_CHARGE "cell_check_charge" + #define COMPONENT_CELL_CHARGE_INSUFFICIENT (1<<0) + +#define COMSIG_CELL_TRY_INSERT_CELL "cell_try_insert_cell" + #define COMPONENT_CANCEL_CELL_INSERT (1<<0) + +/// (mob/living/user) +#define COMSIG_CELL_REMOVE_CELL "cell_remove_cell" diff --git a/code/datums/components/cell.dm b/code/datums/components/cell.dm new file mode 100644 index 000000000000..81ef3733e2e2 --- /dev/null +++ b/code/datums/components/cell.dm @@ -0,0 +1,202 @@ +#define UNLIMITED_CHARGE -1 +#define UNLIMITED_DISTANCE -1 + +/datum/component/cell + dupe_mode = COMPONENT_DUPE_UNIQUE + /// Maximum charge of the power cell, set to -1 for infinite charge + var/max_charge = 10000 + /// Initial max charge of the power cell + var/initial_max_charge + /// Current charge of power cell + var/charge = 10000 + /// If the component can be recharged by hitting its parent with a cell + var/hit_charge = FALSE + /// The maximum amount that can be recharged per tick when using a cell to recharge this component + var/max_recharge_tick = 400 + /// If draining charge on process(), how much to drain per process call + var/charge_drain = 10 + /// If the parent should show cell charge on examine + var/display_charge = TRUE + /// From how many tiles at the highest someone can examine the parent to see the charge + var/charge_examine_range = 1 + /// If the component requires a cell to be inserted to work instead of having an integrated one + var/cell_insert = FALSE + /// Ref to an inserted cell. Should only be null if cell_insert is false + var/obj/item/cell/inserted_cell + + +/datum/component/cell/Initialize( + max_charge = 10000, + hit_charge = FALSE, + max_recharge_tick = 400, + charge_drain = 10, + display_charge = TRUE, + charge_examine_range = 1, + cell_insert = FALSE, + ) + + . = ..() + if(!isatom(parent)) + return COMPONENT_INCOMPATIBLE + + src.max_charge = max_charge + charge = max_charge + src.hit_charge = hit_charge + src.max_recharge_tick = max_recharge_tick + src.charge_drain = charge_drain + src.display_charge = display_charge + src.charge_examine_range = charge_examine_range + src.cell_insert = cell_insert + +/datum/component/cell/Destroy(force, silent) + QDEL_NULL(inserted_cell) + return ..() + + +/datum/component/cell/RegisterWithParent() + ..() + RegisterSignal(parent, list(COMSIG_PARENT_ATTACKBY, COMSIG_ITEM_ATTACKED), PROC_REF(on_object_hit)) + RegisterSignal(parent, COMSIG_CELL_ADD_CHARGE, PROC_REF(add_charge)) + RegisterSignal(parent, COMSIG_CELL_USE_CHARGE, PROC_REF(use_charge)) + RegisterSignal(parent, COMSIG_CELL_CHECK_CHARGE, PROC_REF(has_charge)) + RegisterSignal(parent, COMSIG_CELL_START_TICK_DRAIN, PROC_REF(start_drain)) + RegisterSignal(parent, COMSIG_CELL_STOP_TICK_DRAIN, PROC_REF(stop_drain)) + RegisterSignal(parent, COMSIG_CELL_REMOVE_CELL, PROC_REF(remove_cell)) + RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine)) + RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp)) + +/datum/component/cell/process() + use_charge(null, charge_drain) + +/datum/component/cell/proc/on_emp(datum/source, severity) + SIGNAL_HANDLER + + use_charge(null, round(max_charge / severity)) + +/datum/component/cell/proc/start_drain(datum/source) + SIGNAL_HANDLER + + START_PROCESSING(SSobj, src) + +/datum/component/cell/proc/stop_drain(datum/source) + SIGNAL_HANDLER + + STOP_PROCESSING(SSobj, src) + +/datum/component/cell/proc/on_examine(datum/source, mob/examiner, list/examine_text) + SIGNAL_HANDLER + + if(!display_charge) + return + + if((charge_examine_range != UNLIMITED_DISTANCE) && get_dist(examiner, parent) > charge_examine_range) + return + + examine_text += "A small gauge in the corner reads \"Power: [round(100 * charge / max_charge)]%\"." + +/datum/component/cell/proc/on_object_hit(datum/source, obj/item/cell/attack_obj, mob/living/attacker, params) + SIGNAL_HANDLER + + if(!hit_charge || !istype(attack_obj)) + return + + if(!cell_insert) + INVOKE_ASYNC(src, PROC_REF(charge_from_cell), attack_obj, attacker) + + else + insert_cell(attack_obj, attacker) + + return COMPONENT_NO_AFTERATTACK|COMPONENT_CANCEL_ITEM_ATTACK + +/datum/component/cell/proc/insert_cell(obj/item/cell/power_cell, mob/living/user) + if(inserted_cell) + to_chat(user, SPAN_WARNING("There's already a power cell in [parent]!")) + return + + if(SEND_SIGNAL(parent, COMSIG_CELL_TRY_INSERT_CELL) & COMPONENT_CANCEL_CELL_INSERT) + return + + power_cell.drop_to_floor(user) + power_cell.forceMove(parent) + inserted_cell = power_cell + charge = power_cell.charge + max_charge = power_cell.maxcharge + +/datum/component/cell/proc/remove_cell(mob/living/user) + SIGNAL_HANDLER + + user.put_in_hands(inserted_cell, TRUE) + to_chat(user, SPAN_NOTICE("You remove [inserted_cell] from [parent].")) + inserted_cell = null + max_charge = initial_max_charge + charge = 0 + +/datum/component/cell/proc/charge_from_cell(obj/item/cell/power_cell, mob/living/user) + if(max_charge == UNLIMITED_CHARGE) + to_chat(user, SPAN_WARNING("[parent] doesn't need more power.")) + return + + while(charge < max_charge) + if(SEND_SIGNAL(parent, COMSIG_CELL_TRY_RECHARGING, user) & COMPONENT_CELL_NO_RECHARGE) + return + + if(power_cell.charge <= 0) + to_chat(user, SPAN_WARNING("[power_cell] is completely dry.")) + return + + if(!do_after(user, 1 SECONDS, (INTERRUPT_ALL & (~INTERRUPT_MOVED)), BUSY_ICON_BUILD, power_cell, INTERRUPT_DIFF_LOC)) + to_chat(user, SPAN_WARNING("You were interrupted.")) + return + + if(power_cell.charge <= 0) + return + + var/to_transfer = min(max_recharge_tick, power_cell.charge, (max_charge - charge)) + if(power_cell.use(to_transfer)) + add_charge(null, to_transfer) + to_chat(user, "You transfer some power between [power_cell] and [parent]. The gauge now reads: [round(100 * charge / max_charge)]%.") + +/datum/component/cell/proc/add_charge(datum/source, charge_add = 0) + SIGNAL_HANDLER + + if(max_charge == UNLIMITED_CHARGE) + return + + if(!charge_add) + return + + charge = clamp(charge + charge_add, 0, max_charge) + +/datum/component/cell/proc/use_charge(datum/source, charge_use = 0) + SIGNAL_HANDLER + + if(max_charge == UNLIMITED_CHARGE) + return + + if(!charge_use) + return + + if(!charge) + return COMPONENT_CELL_NO_USE_CHARGE + + charge = clamp(charge - charge_use, 0, max_charge) + + if(!charge) + on_charge_empty() + return + +/datum/component/cell/proc/has_charge(datum/source, charge_amount = 0) + SIGNAL_HANDLER + + if(!charge) + return COMPONENT_CELL_CHARGE_INSUFFICIENT + + if(charge < charge_amount) + return COMPONENT_CELL_CHARGE_INSUFFICIENT + +/datum/component/cell/proc/on_charge_empty() + stop_drain() + SEND_SIGNAL(parent, COMSIG_CELL_OUT_OF_CHARGE) + +#undef UNLIMITED_CHARGE +#undef UNLIMITED_DISTANCE diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 283efdc50a22..44494bea83a0 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -205,7 +205,9 @@ directive is properly returned. return /atom/proc/emp_act(severity) - return + SHOULD_CALL_PARENT(TRUE) + + SEND_SIGNAL(src, COMSIG_ATOM_EMP_ACT, severity) /atom/proc/in_contents_of(container)//can take class or object instance as argument if(ispath(container)) @@ -245,8 +247,8 @@ directive is properly returned. if(!examine_strings) log_debug("Attempted to create an examine block with no strings! Atom : [src], user : [user]") return - to_chat(user, examine_block(examine_strings.Join("\n"))) SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, examine_strings) + to_chat(user, examine_block(examine_strings.Join("\n"))) /atom/proc/get_examine_text(mob/user) . = list() diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm index 0af38cacd75e..1c240fb05dfb 100644 --- a/code/game/machinery/atmoalter/scrubber.dm +++ b/code/game/machinery/atmoalter/scrubber.dm @@ -18,16 +18,14 @@ PF.flags_can_pass_all = PASS_OVER|PASS_AROUND|PASS_UNDER /obj/structure/machinery/portable_atmospherics/powered/scrubber/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(prob(50/severity)) on = !on update_icon() - ..(severity) - /obj/structure/machinery/portable_atmospherics/powered/scrubber/update_icon() src.overlays = 0 diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index 116753093fe5..912a6070328a 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -114,6 +114,7 @@ /obj/structure/machinery/bot/emp_act(severity) + . = ..() var/was_on = on stat |= EMPED new /obj/effect/overlay/temp/emp_sparks (loc) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index d82591994e7b..b88f8249566b 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -916,11 +916,11 @@ post_signal_multiple(control_freq, kv) /obj/structure/machinery/bot/mulebot/emp_act(severity) + . = ..() if (cell) cell.emp_act(severity) if(load) load.emp_act(severity) - ..() /obj/structure/machinery/bot/mulebot/explode() diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index d416c561fcd3..3b2a91eea314 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -35,6 +35,9 @@ var/colony_camera_mapload = TRUE + /// If this camera should have innate EMP-proofing + var/emp_proof = FALSE + /obj/structure/machinery/camera/Initialize(mapload, ...) . = ..() WireColorToFlag = randomCameraWires() @@ -72,6 +75,7 @@ if(WEST) pixel_x = 27 /obj/structure/machinery/camera/emp_act(severity) + . = ..() if(!isEmpProof()) if(prob(100/severity)) icon_state = "[initial(icon_state)]emp" @@ -89,7 +93,6 @@ if(can_use()) cameranet.addCamera(src) kick_viewers() - ..() /obj/structure/machinery/camera/ex_act(severity) diff --git a/code/game/machinery/camera/presets.dm b/code/game/machinery/camera/presets.dm index a8735cbc06a8..e5ab520cbee8 100644 --- a/code/game/machinery/camera/presets.dm +++ b/code/game/machinery/camera/presets.dm @@ -30,6 +30,7 @@ network = list(CAMERA_NET_LASER_TARGETS) unslashable = TRUE unacidable = TRUE + emp_proof = TRUE /obj/structure/machinery/camera/laser_cam/Initialize(mapload, laser_name) . = ..() @@ -37,8 +38,6 @@ var/area/A = get_area(src) c_tag = "[laser_name] ([A.name])" -/obj/structure/machinery/camera/laser_cam/emp_act(severity) - return //immune to EMPs, just in case /obj/structure/machinery/camera/laser_cam/ex_act() return @@ -125,9 +124,7 @@ invisibility = 101 //fuck you init() colony_camera_mapload = FALSE - -/obj/structure/machinery/camera/autoname/lz_camera/emp_act(severity) - return //immune to EMPs, just in case + emp_proof = TRUE /obj/structure/machinery/camera/autoname/lz_camera/ex_act() return @@ -137,7 +134,7 @@ /obj/structure/machinery/camera/proc/isEmpProof() var/O = locate(/obj/item/stack/sheet/mineral/osmium) in assembly.upgrades - return O + return O || emp_proof /obj/structure/machinery/camera/proc/isXRay() var/obj/item/stock_parts/scanning_module/O = locate(/obj/item/stock_parts/scanning_module) in assembly.upgrades diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index fcd8c65e93ca..eb7a501fa078 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -80,11 +80,11 @@ return /obj/structure/machinery/cell_charger/emp_act(severity) + . = ..() if(inoperable()) return if(charging) charging.emp_act(severity) - ..(severity) /obj/structure/machinery/cell_charger/process() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 8d35dd1b6aff..1ac5a06738d5 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -165,8 +165,8 @@ return /obj/structure/machinery/computer/arcade/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return var/empprize = null var/num_of_prizes = 0 @@ -178,5 +178,3 @@ for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) empprize = pickweight(prizes) new empprize(src.loc) - - ..(severity) diff --git a/code/game/machinery/computer/camera_console.dm b/code/game/machinery/computer/camera_console.dm index 281c548227b0..0fd487e2ef7c 100644 --- a/code/game/machinery/computer/camera_console.dm +++ b/code/game/machinery/computer/camera_console.dm @@ -354,8 +354,8 @@ exproof = TRUE colony_camera_mapload = FALSE -/obj/structure/machinery/computer/cameras/mortar/emp_act(severity) - return FALSE +/obj/structure/machinery/computer/cameras/mortar/set_broken() + return /obj/structure/machinery/computer/cameras/dropship name = "abstract dropship camera computer" diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index 304b24a14f04..c33517796271 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -31,8 +31,9 @@ return 1 /obj/structure/machinery/computer/emp_act(severity) - if(prob(20/severity)) set_broken() - ..() + . = ..() + if(prob(20/severity)) + set_broken() /obj/structure/machinery/computer/ex_act(severity) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index fe85599018ae..53efad3da877 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -483,8 +483,8 @@ return /obj/structure/machinery/computer/med_data/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return for(var/datum/data/record/R as anything in GLOB.data_core.medical) @@ -509,8 +509,6 @@ qdel(R) continue - ..(severity) - /obj/structure/machinery/computer/med_data/laptop name = "Medical Laptop" diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 857118937910..2d9a4a1dbea4 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -524,8 +524,8 @@ What a mess.*/ return selection.fields["img"] /obj/structure/machinery/computer/secure_data/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return for(var/datum/data/record/R in GLOB.data_core.security) @@ -550,8 +550,6 @@ What a mess.*/ qdel(R) continue - ..(severity) - /obj/structure/machinery/computer/secure_data/detective_computer icon = 'icons/obj/structures/machinery/computer.dmi' icon_state = "messyfiles" diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index a20d344b53a9..60b5aa232940 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -347,8 +347,8 @@ What a mess.*/ return /obj/structure/machinery/computer/skills/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return for(var/datum/data/record/R in GLOB.data_core.security) @@ -373,4 +373,3 @@ What a mess.*/ qdel(R) continue - ..(severity) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 99996bea8978..687882d9d7ae 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -65,6 +65,7 @@ return /obj/structure/machinery/deployable/barrier/emp_act(severity) + . = ..() if(inoperable()) return if(prob(50/severity)) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 578ef368f5d9..642d91d53395 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -144,6 +144,7 @@ return 1 /obj/structure/machinery/door/emp_act(severity) + . = ..() if(prob(20/severity) && (istype(src,/obj/structure/machinery/door/airlock) || istype(src,/obj/structure/machinery/door/window)) ) open() if(prob(40/severity)) @@ -151,7 +152,6 @@ secondsElectrified = -1 spawn(30 SECONDS) secondsElectrified = 0 - ..() /obj/structure/machinery/door/ex_act(severity) diff --git a/code/game/machinery/fire_alarm.dm b/code/game/machinery/fire_alarm.dm index fe1f80646c4f..dd7e0ee70150 100644 --- a/code/game/machinery/fire_alarm.dm +++ b/code/game/machinery/fire_alarm.dm @@ -63,8 +63,9 @@ FIRE ALARM return src.alarm() /obj/structure/machinery/firealarm/emp_act(severity) - if(prob(50/severity)) alarm() - ..() + . = ..() + if(prob(50/severity)) + alarm() /obj/structure/machinery/firealarm/attackby(obj/item/held_object as obj, mob/user as mob) src.add_fingerprint(user) diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 75d0de56dec0..cd59862a2e13 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -84,12 +84,11 @@ /obj/structure/machinery/flasher/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(prob(75/severity)) flash() - ..(severity) /obj/structure/machinery/flasher/portable/HasProximity(atom/movable/AM as mob|obj) if ((src.disable) || (src.last_flash && world.time < src.last_flash + 150)) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index 33f75c50e341..d5a0505fca17 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -105,11 +105,10 @@ return 1 /obj/structure/machinery/sparker/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return ignite() - ..(severity) /obj/structure/machinery/ignition_switch/attack_remote(mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index 66eb0386713f..de61830c2501 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -62,8 +62,7 @@ updateicon() /obj/structure/machinery/light_switch/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return power_change() - ..(severity) diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 4ce295aa9965..66bf08afba8e 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -175,10 +175,10 @@ Class Procs: . += SPAN_WARNING("[msg]") /obj/structure/machinery/emp_act(severity) + . = ..() if(use_power && stat == 0) use_power(7500/severity) new /obj/effect/overlay/temp/emp_sparks (loc) - ..() /obj/structure/machinery/ex_act(severity) diff --git a/code/game/machinery/medical_pod/sleeper.dm b/code/game/machinery/medical_pod/sleeper.dm index 35d9a44863d2..bf2abe246c35 100644 --- a/code/game/machinery/medical_pod/sleeper.dm +++ b/code/game/machinery/medical_pod/sleeper.dm @@ -332,14 +332,13 @@ /obj/structure/machinery/medical_pod/sleeper/emp_act(severity) + . = ..() if(filtering) toggle_filter() if(inoperable()) - ..(severity) return if(occupant) go_out() - ..() /obj/structure/machinery/medical_pod/sleeper/proc/toggle_filter() if(!occupant) diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index c75360e07568..72e311c6d8ff 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -218,20 +218,14 @@ update_icon() /obj/structure/machinery/recharger/emp_act(severity) + . = ..() if(inoperable() || !anchored) - ..(severity) return -/* - if(istype(charging, /obj/item/weapon/gun/energy)) - var/obj/item/weapon/gun/energy/E = charging - if(E.power_supply) - E.power_supply.emp_act(severity) -*/ + if(istype(charging, /obj/item/weapon/baton)) var/obj/item/weapon/baton/B = charging if(B.bcell) B.bcell.charge = 0 - ..(severity) /obj/structure/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. src.overlays = 0 diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 644402128852..56b782cd77a4 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -109,13 +109,12 @@ return /obj/structure/machinery/recharge_station/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(occupant) occupant.emp_act(severity) go_out() - ..(severity) /obj/structure/machinery/recharge_station/update_icon() ..() diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index aa51201ae18b..dd45ad597800 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -40,12 +40,11 @@ /obj/structure/machinery/space_heater/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return if(cell) cell.emp_act(severity) - ..(severity) /obj/structure/machinery/space_heater/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/cell)) diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index c56f8da36150..79ead6321502 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -188,11 +188,10 @@ var/emotion = "Neutral" /obj/structure/machinery/ai_status_display/emp_act(severity) + . = ..() if(inoperable()) - ..(severity) return set_picture("ai_bsod") - ..(severity) /obj/structure/machinery/ai_status_display/proc/update() if(mode==0) //Blank diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index 255d70f45870..8b8b12dfd170 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -93,13 +93,13 @@ GLOBAL_LIST_EMPTY_TYPED(telecomms_list, /obj/structure/machinery/telecomms) update_state() /obj/structure/machinery/telecomms/emp_act(severity) + . = ..() if(prob(100/severity)) if(!(stat & EMPED)) stat |= EMPED var/duration = (300 * 10)/severity spawn(rand(duration - 20, duration + 20)) // Takes a long time for the machines to reboot. stat &= ~EMPED - ..() /* The receiver idles and receives messages from subspace-compatible radio equipment; diff --git a/code/game/objects/items/circuitboards/robot_modules.dm b/code/game/objects/items/circuitboards/robot_modules.dm index 2e5185353852..04fcff10fa2b 100644 --- a/code/game/objects/items/circuitboards/robot_modules.dm +++ b/code/game/objects/items/circuitboards/robot_modules.dm @@ -9,13 +9,12 @@ var/list/stacktypes /obj/item/circuitboard/robot_module/emp_act(severity) + . = ..() if(modules) for(var/obj/O in modules) O.emp_act(severity) if(emag) emag.emp_act(severity) - ..() - return /obj/item/circuitboard/robot_module/Initialize() diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm index 0a7709aa6101..33a93ed18db5 100644 --- a/code/game/objects/items/devices/flash.dm +++ b/code/game/objects/items/devices/flash.dm @@ -155,6 +155,7 @@ do_flash(user = user, aoe = TRUE) /obj/item/device/flash/emp_act(severity) + . = ..() if(broken) return switch(flashes_stored) if(0 to 5) @@ -168,7 +169,6 @@ if(M.flash_eyes()) M.apply_effect(10, WEAKEN) M.visible_message(SPAN_DISARM("[M] is blinded by \the [src]!")) - ..() /obj/item/device/flash/synthetic name = "synthetic flash" diff --git a/code/game/objects/items/devices/portable_vendor.dm b/code/game/objects/items/devices/portable_vendor.dm index 65e2128a02c0..29e1d06018ae 100644 --- a/code/game/objects/items/devices/portable_vendor.dm +++ b/code/game/objects/items/devices/portable_vendor.dm @@ -210,6 +210,7 @@ s.start() /obj/item/device/portable_vendor/emp_act(severity) + . = ..() if (broken) return if (prob(40*severity)) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 2092ffa108c6..c503edc8f94f 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -425,11 +425,11 @@ else return /obj/item/device/radio/emp_act(severity) + . = ..() broadcasting = FALSE listening = FALSE for (var/ch_name in channels) channels[ch_name] = 0 - ..() /////////////////////////////// //////////Borg Radios////////// diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm index 742a5f314c4a..57dd23bf4e96 100644 --- a/code/game/objects/items/explosives/mine.dm +++ b/code/game/objects/items/explosives/mine.dm @@ -42,6 +42,7 @@ prime() //We don't care about how strong the explosion was. /obj/item/explosive/mine/emp_act() + . = ..() prime() //Same here. Don't care about the effect strength. diff --git a/code/game/objects/items/implants/implant.dm b/code/game/objects/items/implants/implant.dm index d39b7e675452..e7ebe0391fae 100644 --- a/code/game/objects/items/implants/implant.dm +++ b/code/game/objects/items/implants/implant.dm @@ -82,6 +82,7 @@ Implant Specifics:
"} return dat /obj/item/implant/tracking/emp_act(severity) + . = ..() if (malfunction) //no, dawg, you can't malfunction while you are malfunctioning return malfunction = MALFUNCTION_TEMPORARY @@ -216,6 +217,7 @@ Implant Specifics:
"} return 1 /obj/item/implant/explosive/emp_act(severity) + . = ..() if (malfunction) return malfunction = MALFUNCTION_TEMPORARY @@ -307,6 +309,7 @@ the implant may become unstable and either pre-maturely inject the subject or si return /obj/item/implant/chem/emp_act(severity) + . = ..() if (malfunction) return malfunction = MALFUNCTION_TEMPORARY @@ -432,6 +435,7 @@ the implant may become unstable and either pre-maturely inject the subject or si STOP_PROCESSING(SSobj, src) /obj/item/implant/death_alarm/emp_act(severity) //for some reason alarms stop going off in case they are emp'd, even without this + . = ..() if (malfunction) //so I'm just going to add a meltdown chance here return malfunction = MALFUNCTION_TEMPORARY diff --git a/code/game/objects/items/implants/implantneurostim.dm b/code/game/objects/items/implants/implantneurostim.dm index a46cc31a2ca4..544cf70147e2 100644 --- a/code/game/objects/items/implants/implantneurostim.dm +++ b/code/game/objects/items/implants/implantneurostim.dm @@ -105,6 +105,7 @@ /obj/item/implant/neurostim/emp_act(severity) + . = ..() if (malfunction) return if (prob(80)) diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm index 72c49a0ea15a..52d1ae616a93 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -99,10 +99,8 @@ var/nvg_maxhealth = 125 var/nvg_health = 125 - var/nvg_maxcharge = 2500 - var/nvg_charge = 2500 - var/nvg_drain = 8 // has a 5 minute duration but byond may give it a couple of irl time due to lag - var/infinite_charge = FALSE + /// How much charge the cell should have at most. -1 is infinite + var/cell_max_charge = 2500 var/activated = FALSE var/nightvision = FALSE @@ -117,6 +115,13 @@ var/mob/living/attached_mob var/lighting_alpha = 100 +/obj/item/prop/helmetgarb/helmet_nvg/Initialize(mapload, ...) + . = ..() + if(shape != NVG_SHAPE_COSMETIC) + AddComponent(/datum/component/cell, cell_max_charge, TRUE, charge_drain = 8) + RegisterSignal(src, COMSIG_CELL_TRY_RECHARGING, PROC_REF(cell_try_recharge)) + RegisterSignal(src, COMSIG_CELL_OUT_OF_CHARGE, PROC_REF(on_power_out)) + /obj/item/prop/helmetgarb/helmet_nvg/on_enter_storage(obj/item/storage/internal/S) ..() @@ -139,42 +144,30 @@ /obj/item/prop/helmetgarb/helmet_nvg/attackby(obj/item/A as obj, mob/user as mob) - if(istype(A,/obj/item/cell)) - recharge(A, user) - if(HAS_TRAIT(A, TRAIT_TOOL_SCREWDRIVER)) repair(user) else ..() -/obj/item/prop/helmetgarb/helmet_nvg/proc/recharge(obj/item/cell/C, mob/user as mob) +/obj/item/prop/helmetgarb/helmet_nvg/proc/cell_try_recharge(datum/source, mob/living/user) + SIGNAL_HANDLER + if(user.action_busy) - return + return COMPONENT_CELL_NO_RECHARGE + if(src != user.get_inactive_hand()) - to_chat(user, SPAN_WARNING("You need to hold \the [src] in hand in order to recharge them.")) - return + to_chat(user, SPAN_WARNING("You need to hold [src] in hand in order to recharge them.")) + return COMPONENT_CELL_NO_RECHARGE + if(shape == NVG_SHAPE_COSMETIC) - to_chat(user, SPAN_WARNING("There is no connector for the power cell inside \the [src].")) - return + to_chat(user, SPAN_WARNING("There is no connector for the power cell inside [src].")) + return COMPONENT_CELL_NO_RECHARGE + if(shape == NVG_SHAPE_BROKEN) - to_chat(user, SPAN_WARNING("You need to repair \the [src] first.")) - return - if(nvg_charge == nvg_maxcharge) - to_chat(user, SPAN_WARNING("\The [src] are already fully charged.")) - return + to_chat(user, SPAN_WARNING("You need to repair [src] first.")) + return COMPONENT_CELL_NO_RECHARGE - while(nvg_charge < nvg_maxcharge) - if(C.charge <= 0) - to_chat(user, SPAN_WARNING("\The [C] is completely dry.")) - break - if(!do_after(user, 1 SECONDS, (INTERRUPT_ALL & (~INTERRUPT_MOVED)), BUSY_ICON_BUILD, C, INTERRUPT_DIFF_LOC)) - to_chat(user, SPAN_WARNING("You were interrupted.")) - break - var/to_transfer = min(400, C.charge, (nvg_maxcharge - nvg_charge)) - if(C.use(to_transfer)) - nvg_charge += to_transfer - to_chat(user, "You transfer some power between \the [C] and \the [src]. The gauge now reads: [round(100.0*nvg_charge/nvg_maxcharge) ]%.") /obj/item/prop/helmetgarb/helmet_nvg/proc/repair(mob/user as mob) if(user.action_busy) @@ -202,7 +195,6 @@ to_chat(user, "You successfully patch \the [src].") nvg_maxhealth = 65 nvg_health = 65 - nvg_drain = initial(nvg_drain) * 2 return else if(nvg_health == nvg_maxhealth) @@ -244,9 +236,6 @@ else if(nvg_health_procent >= 0) . += "They are falling apart." - if (get_dist(user, src) <= 1 && (shape == NVG_SHAPE_FINE || shape == NVG_SHAPE_PATCHED)) - . += "A small gauge in the corner reads: Power: [round(100.0*nvg_charge/nvg_maxcharge) ]%." - /obj/item/prop/helmetgarb/helmet_nvg/on_exit_storage(obj/item/storage/S) remove_attached_item() return ..() @@ -296,7 +285,7 @@ if(attached_mob != user && slot == WEAR_HEAD) set_attached_mob(user) - if(slot == WEAR_HEAD && !nightvision && activated && nvg_charge > 0 && shape > NVG_SHAPE_BROKEN) + if(slot == WEAR_HEAD && !nightvision && activated && !SEND_SIGNAL(src, COMSIG_CELL_CHECK_CHARGE) && shape > NVG_SHAPE_BROKEN) enable_nvg(user) else remove_nvg() @@ -319,7 +308,7 @@ attached_item.update_icon() activation.update_button_icon() - START_PROCESSING(SSobj, src) + SEND_SIGNAL(src, COMSIG_CELL_START_TICK_DRAIN) /obj/item/prop/helmetgarb/helmet_nvg/proc/update_sight(mob/M) @@ -353,20 +342,15 @@ attached_mob.update_sight() - STOP_PROCESSING(SSobj, src) + SEND_SIGNAL(src, COMSIG_CELL_STOP_TICK_DRAIN) /obj/item/prop/helmetgarb/helmet_nvg/process(delta_time) - if(nvg_charge > 0 && !infinite_charge) - nvg_charge = max(0, nvg_charge - nvg_drain * delta_time) - if(!attached_mob) return PROCESS_KILL - if(!activated || !attached_item || nvg_charge <= 0 || attached_mob.is_dead()) - if(activated && !attached_mob.is_dead()) - to_chat(attached_mob, SPAN_WARNING("\The [src] emit a low power warning and immediately shut down!")) - remove_nvg() + if(!activated || !attached_item || attached_mob.is_dead()) + on_power_out() return if(!attached_item.has_garb_overlay()) @@ -375,6 +359,13 @@ return +/obj/item/prop/helmetgarb/helmet_nvg/proc/on_power_out(datum/source) + SIGNAL_HANDLER + + if(activated && !attached_mob.is_dead()) + to_chat(attached_mob, SPAN_WARNING("[src] emit a low power warning and immediately shut down!")) + remove_nvg() + /obj/item/prop/helmetgarb/helmet_nvg/ui_action_click(mob/owner, obj/item/holder) toggle_nods(owner) @@ -410,7 +401,7 @@ if(activated) to_chat(user, SPAN_NOTICE("You flip the goggles down.")) icon_state = active_icon_state - if(nvg_charge > 0 && user.head == attached_item && shape > NVG_SHAPE_BROKEN) + if(!SEND_SIGNAL(src, COMSIG_CELL_CHECK_CHARGE) && user.head == attached_item && shape > NVG_SHAPE_BROKEN) enable_nvg(user) else icon_state = active_icon_state @@ -462,7 +453,7 @@ /obj/item/prop/helmetgarb/helmet_nvg/marsoc //for Marine Raiders name = "\improper Tactical M3 night vision goggles" desc = "With an integrated self-recharging battery, nothing can stop you. Put them on your helmet and press the button and it's go-time." - infinite_charge = TRUE + cell_max_charge = -1 #undef NVG_SHAPE_COSMETIC #undef NVG_SHAPE_BROKEN diff --git a/code/game/objects/items/storage/storage.dm b/code/game/objects/items/storage/storage.dm index cfdb2f88b090..6e7e891d6ba8 100644 --- a/code/game/objects/items/storage/storage.dm +++ b/code/game/objects/items/storage/storage.dm @@ -852,6 +852,7 @@ W is always an item. stop_warning prevents messaging. user may be null.**/ return ..() /obj/item/storage/emp_act(severity) + . = ..() if(!istype(src.loc, /mob/living)) for(var/obj/O in contents) O.emp_act(severity) diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 6cb9f58aae37..82fdf30f0fc4 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -197,9 +197,9 @@ return TRUE /obj/item/weapon/baton/emp_act(severity) + . = ..() if(bcell) bcell.emp_act(severity) //let's not duplicate code everywhere if we don't have to please. - ..() //secborg stun baton module /obj/item/weapon/baton/robot/attack_self(mob/user) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index e290a23a61e9..331cb884bd59 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -30,6 +30,7 @@ return 0 /obj/structure/closet/secure_closet/emp_act(severity) + . = ..() for(var/obj/O in src) O.emp_act(severity) if(!broken) @@ -42,7 +43,6 @@ else src.req_access = list() src.req_access += pick(get_access(ACCESS_LIST_MARINE_MAIN)) - ..() /obj/structure/closet/secure_closet/proc/togglelock(mob/living/user) if(src.opened) diff --git a/code/game/objects/structures/crates_lockers/secure_crates.dm b/code/game/objects/structures/crates_lockers/secure_crates.dm index e720199f9fbe..28a77e0c81c0 100644 --- a/code/game/objects/structures/crates_lockers/secure_crates.dm +++ b/code/game/objects/structures/crates_lockers/secure_crates.dm @@ -87,6 +87,7 @@ ..() /obj/structure/closet/crate/secure/emp_act(severity) + . = ..() for(var/obj/O in src) O.emp_act(severity) if(!broken && !opened && prob(50/severity)) @@ -106,7 +107,6 @@ else src.req_access = list() src.req_access += pick(get_access(ACCESS_LIST_MARINE_MAIN)) - ..() //------------------------------------ diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index bffbda9f538a..bd87746545d8 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -217,6 +217,7 @@ M.update_inv_gloves() /obj/item/clothing/gloves/emp_act(severity) + . = ..() if(cell) //why is this not part of the powercell code? cell.charge -= 1000 / severity @@ -224,7 +225,6 @@ cell.charge = 0 if(cell.reliability != 100 && prob(50/severity)) cell.reliability -= 10 / severity - ..() // Called just before an attack_hand(), in mob/UnarmedAttack() /obj/item/clothing/gloves/proc/Touch(atom/A, proximity) diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm index ba855e42d3ba..e4a19b7bed3e 100644 --- a/code/modules/clothing/clothing_accessories.dm +++ b/code/modules/clothing/clothing_accessories.dm @@ -148,7 +148,7 @@ verbs -= /obj/item/clothing/proc/removetie_verb /obj/item/clothing/emp_act(severity) + . = ..() if(LAZYLEN(accessories)) for(var/obj/item/clothing/accessory/A in accessories) A.emp_act(severity) - ..() diff --git a/code/modules/clothing/glasses/thermal.dm b/code/modules/clothing/glasses/thermal.dm index b2ec7597e270..f4a728c8864d 100644 --- a/code/modules/clothing/glasses/thermal.dm +++ b/code/modules/clothing/glasses/thermal.dm @@ -18,6 +18,7 @@ var/blinds_on_emp = TRUE /obj/item/clothing/glasses/thermal/emp_act(severity) + . = ..() if(blinds_on_emp) if(istype(src.loc, /mob/living/carbon/human)) var/mob/living/carbon/human/M = src.loc @@ -29,7 +30,6 @@ M.disabilities |= NEARSIGHTED spawn(100) M.disabilities &= ~NEARSIGHTED - ..() /obj/item/clothing/glasses/thermal/syndi //These are now a traitor item, concealed as mesons. -Pete diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 2c023fed2ed7..82d461c5ca55 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -335,10 +335,10 @@ add_fingerprint(user) /obj/item/clothing/suit/armor/reactive/emp_act(severity) + . = ..() active = 0 src.icon_state = "reactiveoff" src.item_state = "reactiveoff" - ..() diff --git a/code/modules/clothing/suits/storage.dm b/code/modules/clothing/suits/storage.dm index a18faa60c0d3..0d5fc31a2560 100644 --- a/code/modules/clothing/suits/storage.dm +++ b/code/modules/clothing/suits/storage.dm @@ -33,8 +33,8 @@ return pockets.attackby(W, user) /obj/item/clothing/suit/storage/emp_act(severity) + . = ..() pockets.emp_act(severity) - ..() /obj/item/clothing/suit/storage/hear_talk(mob/living/M, msg, verb, datum/language/speaking, italics) pockets.hear_talk(M, msg, verb, speaking, italics) diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm index ee19f9ef7d5f..a0c8219ffe69 100644 --- a/code/modules/clothing/under/ties.dm +++ b/code/modules/clothing/under/ties.dm @@ -440,8 +440,8 @@ return hold.attackby(W, user) /obj/item/clothing/accessory/storage/emp_act(severity) + . = ..() hold.emp_act(severity) - ..() /obj/item/clothing/accessory/storage/hear_talk(mob/M, msg) hold.hear_talk(M, msg) diff --git a/code/modules/cm_marines/NonLethalRestraints.dm b/code/modules/cm_marines/NonLethalRestraints.dm index 78884aa59843..a7f0277c8aaa 100644 --- a/code/modules/cm_marines/NonLethalRestraints.dm +++ b/code/modules/cm_marines/NonLethalRestraints.dm @@ -60,6 +60,7 @@ /obj/item/weapon/stunprod/emp_act(severity) + . = ..() switch(severity) if(1) charges = 0 diff --git a/code/modules/cm_preds/falcon.dm b/code/modules/cm_preds/falcon.dm index 4461f9b4f7e7..63c7e72ab670 100644 --- a/code/modules/cm_preds/falcon.dm +++ b/code/modules/cm_preds/falcon.dm @@ -119,6 +119,7 @@ qdel(src) /mob/hologram/falcon/emp_act() + . = ..() new /obj/item/trash/falcon_drone/emp(loc) QDEL_NULL(parent_drone) qdel(src) diff --git a/code/modules/cm_preds/yaut_bracers.dm b/code/modules/cm_preds/yaut_bracers.dm index c0101d636c72..7173575710b1 100644 --- a/code/modules/cm_preds/yaut_bracers.dm +++ b/code/modules/cm_preds/yaut_bracers.dm @@ -291,6 +291,7 @@ right_wristblades = new(src) /obj/item/clothing/gloves/yautja/hunter/emp_act(severity) + . = ..() charge = max(charge - (severity * 500), 0) if(ishuman(loc)) var/mob/living/carbon/human/wearer = loc diff --git a/code/modules/defenses/defenses.dm b/code/modules/defenses/defenses.dm index b39128b1a8bc..099b41aee72b 100644 --- a/code/modules/defenses/defenses.dm +++ b/code/modules/defenses/defenses.dm @@ -431,6 +431,7 @@ turned_on = FALSE /obj/structure/machinery/defenses/emp_act(severity) + . = ..() if(turned_on) if(prob(50)) visible_message("[icon2html(src, viewers(src))] [src] beeps and buzzes wildly, flashing odd symbols on its screen before shutting down!") diff --git a/code/modules/defenses/sentry_computer.dm b/code/modules/defenses/sentry_computer.dm index dd5726d6ccbf..e2cbd5d5858e 100644 --- a/code/modules/defenses/sentry_computer.dm +++ b/code/modules/defenses/sentry_computer.dm @@ -121,6 +121,7 @@ playsound(src, 'sound/machines/terminal_off.ogg', 25, FALSE) /obj/item/device/sentry_computer/emp_act(severity) + . = ..() return TRUE /** diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm index 3861a0126be4..bcb709e2f402 100644 --- a/code/modules/mob/living/brain/MMI.dm +++ b/code/modules/mob/living/brain/MMI.dm @@ -134,6 +134,7 @@ to_chat(brainmob, SPAN_NOTICE(" Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast. ")) /obj/item/device/mmi/emp_act(severity) + . = ..() if(!brainmob) return else @@ -144,4 +145,3 @@ brainmob.emp_damage += rand(10,20) if(3) brainmob.emp_damage += rand(0,10) - ..() diff --git a/code/modules/mob/living/brain/life.dm b/code/modules/mob/living/brain/life.dm index c085f06b0052..82cbb155b516 100644 --- a/code/modules/mob/living/brain/life.dm +++ b/code/modules/mob/living/brain/life.dm @@ -183,17 +183,3 @@ reset_view(null) return 1 - - -/*/mob/living/brain/emp_act(severity) - if(!(container && istype(container, /obj/item/device/mmi))) - return - else - switch(severity) - if(1) - emp_damage += rand(20,30) - if(2) - emp_damage += rand(10,20) - if(3) - emp_damage += rand(0,10) - ..()*/ diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index a8734afd7301..56eba38a4000 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -155,6 +155,7 @@ Contains most of the procs that are called when a mob is attacked by something return FALSE /mob/living/carbon/human/emp_act(severity) + . = ..() for(var/obj/O in src) if(!O) continue @@ -167,7 +168,6 @@ Contains most of the procs that are called when a mob is attacked by something if(I.robotic == FALSE) continue I.emp_act(severity) - ..() //Returns 1 if the attack hit, 0 if it missed. diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index fa33af97275e..375594574ab8 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -22,10 +22,10 @@ return 0 //only carbon liveforms have this proc /mob/living/emp_act(severity) + . = ..() var/list/L = src.get_contents() for(var/obj/O in L) O.emp_act(severity) - ..() //this proc handles being hit by a thrown atom /mob/living/hitby(atom/movable/AM) diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 18d6ece8e238..cf734a09ae0d 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -301,8 +301,8 @@ var/list/ai_verbs_default = list( return 0 /mob/living/silicon/ai/emp_act(severity) + . = ..() if (prob(30)) view_core() - ..() /mob/living/silicon/ai/Topic(href, href_list) if(usr != src) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index bccd74036658..1638b0fb7fbe 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -36,6 +36,7 @@ return /mob/living/silicon/emp_act(severity) + . = ..() switch(severity) if(1) src.take_limb_damage(20) @@ -47,7 +48,6 @@ to_chat(src, SPAN_DANGER("*BZZZT*")) to_chat(src, SPAN_DANGER("Warning: Electromagnetic pulse detected.")) - ..() /mob/living/silicon/stun_effect_act(stun_amount, agony_amount) return //immune diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm index 3d37f8ea57c1..b7c091d564d6 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/drone.dm @@ -152,6 +152,7 @@ //ion rifle! /mob/living/simple_animal/hostile/retaliate/malf_drone/emp_act(severity) + . = ..() health -= rand(3,15) * (severity + 1) disabled = rand(150, 600) hostile_drone = 0 diff --git a/code/modules/organs/limbs.dm b/code/modules/organs/limbs.dm index 58d0a4780681..fd81c25bec9f 100644 --- a/code/modules/organs/limbs.dm +++ b/code/modules/organs/limbs.dm @@ -171,6 +171,7 @@ */ /obj/limb/emp_act(severity) + . = ..() if(!(status & (LIMB_ROBOT|LIMB_SYNTHSKIN))) //meatbags do not care about EMP return var/probability = 30 diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index fc3f213fff35..731ad78caa5b 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1266,6 +1266,7 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( //Damage and destruction acts /obj/structure/machinery/power/apc/emp_act(severity) + . = ..() if(cell) cell.emp_act(severity) lighting = 0 @@ -1274,7 +1275,6 @@ GLOBAL_LIST_INIT(apc_wire_descriptions, list( spawn(1 MINUTES) equipment = 3 environ = 3 - ..() /obj/structure/machinery/power/apc/ex_act(severity) switch(severity) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 992e0f3464ff..31a096a3a2ee 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -71,12 +71,12 @@ /obj/item/cell/emp_act(severity) + . = ..() charge -= 1000 / severity if (charge < 0) charge = 0 if(reliability != 100 && prob(50/severity)) reliability -= 10 / severity - ..() /obj/item/cell/ex_act(severity) diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index ac19d1ba0c67..0e469a7fe577 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -390,6 +390,7 @@ /obj/structure/machinery/power/smes/emp_act(severity) + . = ..() outputting = 0 inputting = 0 output_level = 0 @@ -400,7 +401,6 @@ output_level = initial(output_level) inputting = initial(inputting) outputting = initial(outputting) - ..() diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index e113363b8b7f..ac7be20c42ee 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -480,6 +480,7 @@ /obj/item/weapon/gun/emp_act(severity) + . = ..() for(var/obj/O in contents) O.emp_act(severity) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index adca6a7cce6f..ee122d8f8edd 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -66,9 +66,9 @@ overlays += charge_icon + "_0" /obj/item/weapon/gun/energy/emp_act(severity) + . = ..() cell.use(round(cell.maxcharge / severity)) update_icon() - ..() /obj/item/weapon/gun/energy/load_into_chamber() if(!cell || cell.charge < charge_cost) diff --git a/code/modules/vehicles/interior/interactable/vehicle_locker.dm b/code/modules/vehicles/interior/interactable/vehicle_locker.dm index ab536c7637c6..5571995594f0 100644 --- a/code/modules/vehicles/interior/interactable/vehicle_locker.dm +++ b/code/modules/vehicles/interior/interactable/vehicle_locker.dm @@ -117,8 +117,8 @@ return container.attackby(W, user) /obj/structure/vehicle_locker/emp_act(severity) + . = ..() container.emp_act(severity) - ..() /obj/structure/vehicle_locker/hear_talk(mob/M, msg) container.hear_talk(M, msg) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 5192a6834050..2239329d3e44 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -112,6 +112,7 @@ return /obj/vehicle/emp_act(severity) + . = ..() var/was_on = on stat |= EMPED new /obj/effect/overlay/temp/emp_sparks (loc) diff --git a/colonialmarines.dme b/colonialmarines.dme index fccbbd0b7dd9..9ef2ad37c605 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -125,6 +125,7 @@ #include "code\__DEFINES\dcs\signals\signals_global.dm" #include "code\__DEFINES\dcs\signals\signals_subsystem.dm" #include "code\__DEFINES\dcs\signals\atom\signals_atom.dm" +#include "code\__DEFINES\dcs\signals\atom\signals_cell.dm" #include "code\__DEFINES\dcs\signals\atom\signals_item.dm" #include "code\__DEFINES\dcs\signals\atom\signals_movable.dm" #include "code\__DEFINES\dcs\signals\atom\signals_obj.dm" @@ -373,6 +374,7 @@ #include "code\datums\components\armor_link.dm" #include "code\datums\components\bad_leg.dm" #include "code\datums\components\bonus_damage_stack.dm" +#include "code\datums\components\cell.dm" #include "code\datums\components\cluster_stack.dm" #include "code\datums\components\connect_mob_behalf.dm" #include "code\datums\components\crate_tag.dm" From d120fa7aa2c3f4c01db77bfe53bd384f4e5fe1ea Mon Sep 17 00:00:00 2001 From: fira Date: Thu, 9 Nov 2023 14:32:10 +0100 Subject: [PATCH 002/355] Minor fixes for Loadout Items (#4849) # About the pull request Minor fixes for #4801 * Removes hard ref in photo and pen * Switches post-spawn signaling to avoid recursing mob contents * Fix unset pen displaying bogus text * Add a fallback for plushie generator to put it in hands if theres no backpack * Fix lingering reference for map-placed random plushies And with any luck that also fixes the photo initialization bug # Explain why it's good for the game Is fix # Testing Photographs and Procedure Just tested spawning in with plushie / photo a few times --- .../dcs/signals/atom/signals_item.dm | 2 +- code/game/jobs/role_authority.dm | 4 +-- code/game/objects/items/props/helmetgarb.dm | 29 ++++++++++++------- code/game/objects/items/tools/misc_tools.dm | 19 +++++++----- code/game/objects/items/toys/toys.dm | 26 ++++++++++++----- 5 files changed, 50 insertions(+), 30 deletions(-) diff --git a/code/__DEFINES/dcs/signals/atom/signals_item.dm b/code/__DEFINES/dcs/signals/atom/signals_item.dm index 64f4c24798e1..6024c0524992 100644 --- a/code/__DEFINES/dcs/signals/atom/signals_item.dm +++ b/code/__DEFINES/dcs/signals/atom/signals_item.dm @@ -66,5 +66,5 @@ /// from /obj/item/weapon/gun/proc/load_into_chamber() : () #define COMSIG_GUN_INTERRUPT_FIRE "gun_interrupt_fire" -//Additional procs on items that will be triggered right after the human finishes spawns in +//from /datum/authority/branch/role/proc/equip_role() #define COMSIG_POST_SPAWN_UPDATE "post_spawn_update" diff --git a/code/game/jobs/role_authority.dm b/code/game/jobs/role_authority.dm index 51039663a43f..dc9865f8d6e6 100644 --- a/code/game/jobs/role_authority.dm +++ b/code/game/jobs/role_authority.dm @@ -579,9 +579,7 @@ I hope it's easier to tell what the heck this proc is even doing, unlike previou new_human.sec_hud_set_ID() new_human.hud_set_squad() - for(var/obj/current_item in new_human.get_contents()) - SEND_SIGNAL(current_item, COMSIG_POST_SPAWN_UPDATE, new_human) - + SEND_SIGNAL(new_human, COMSIG_POST_SPAWN_UPDATE) SSround_recording.recorder.track_player(new_human) //Find which squad has the least population. If all 4 squads are equal it should just use a random one diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm index 52d1ae616a93..b20c5671503e 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -518,29 +518,38 @@ icon = 'icons/obj/items/items.dmi' icon_state = "photo" ///The human who spawns with the photo - var/mob/living/carbon/human/owner + var/datum/weakref/owner + ///The belonging human name + var/owner_name + ///The belonging human faction + var/owner_faction ///Text written on the back var/scribble -/obj/item/prop/helmetgarb/family_photo/Initialize(mapload, ...) +/obj/item/prop/helmetgarb/family_photo/pickup(mob/user, silent) . = ..() - if(!mapload) - RegisterSignal(src, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner)) + if(!owner) + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner)) + ///Sets the owner of the family photo to the human it spawns with, needs var/source for signals -/obj/item/prop/helmetgarb/family_photo/proc/set_owner(source = src, mob/living/carbon/human/user) - UnregisterSignal(src, COMSIG_POST_SPAWN_UPDATE) - owner = user +/obj/item/prop/helmetgarb/family_photo/proc/set_owner(datum/source) + SIGNAL_HANDLER + UnregisterSignal(source, COMSIG_POST_SPAWN_UPDATE) + var/mob/living/carbon/human/user = source + owner = WEAKREF(user) + owner_name = user.name + owner_faction = user.faction /obj/item/prop/helmetgarb/family_photo/get_examine_text(mob/user) . = ..() if(scribble) . += "\"[scribble]\" is written on the back of the photo." - if(user == owner) + if(user.weak_reference == owner) . += "A photo of you and your family." return - if(user.faction == owner?.faction) - . += "A photo of [owner] and their family." + if(user.faction == owner_faction) + . += "A photo of [owner_name] and their family." return . += "A photo of a family you do not know." diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm index 98dc89321d34..0b4a7cc98775 100644 --- a/code/game/objects/items/tools/misc_tools.dm +++ b/code/game/objects/items/tools/misc_tools.dm @@ -284,21 +284,24 @@ matter = list("metal" = 20, "gold" = 10) var/static/list/colour_list = list("red", "blue", "green", "yellow", "purple", "pink", "brown", "black", "orange") // Can add more colors as required var/current_colour_index = 1 - var/owner = "hard to read text" + var/owner_name -/obj/item/tool/pen/fountain/Initialize(mapload, ...) +/obj/item/tool/pen/fountain/pickup(mob/user, silent) . = ..() - if(!mapload) - RegisterSignal(src, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner)) + if(!owner_name) + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner)) ///Sets the owner of the pen to who it spawns with, requires var/source for signals -/obj/item/tool/pen/fountain/proc/set_owner(source = src, mob/living/carbon/human/user) - UnregisterSignal(src, COMSIG_POST_SPAWN_UPDATE) - owner = user +/obj/item/tool/pen/fountain/proc/set_owner(datum/source) + SIGNAL_HANDLER + UnregisterSignal(source, COMSIG_POST_SPAWN_UPDATE) + var/mob/living/carbon/human/user = source + owner_name = user.name /obj/item/tool/pen/fountain/get_examine_text(mob/user) . = ..() - . += "There's a laser engraving of [owner] on it." + if(owner_name) + . += "There's a laser engraving of [owner_name] on it." /obj/item/tool/pen/fountain/attack_self(mob/living/carbon/human/user) if(on) diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 7a17904635f0..851f203c52c1 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -553,15 +553,15 @@ ///Hexadecimal 0-F (0-15) var/static/list/hexadecimal = list("0", "1", "2", "3" , "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F") -/obj/item/toy/plush/therapy/random_color/New(loc, ...) +/obj/item/toy/plush/therapy/random_color/Initialize(mapload, ...) . = ..() var/color_code = "#[pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)][pick(hexadecimal)]" //This is dumb and I hope theres a better way I'm missing color = color_code - desc = "A custom therapy plush, in a unique color. This one is labeled with \"#[color_code]\"." + desc = "A custom therapy plush, in a unique color." /obj/item/toy/plush/random_plushie //Not using an effect so it can fit into storage from loadout name = "random plush" - desc = "You should not be seeing this" + desc = "This plush looks awfully standard and bland. Is it actually yours?" /// Standard plushies for the spawner to pick from var/list/plush_list = list( /obj/item/toy/plush/farwa, @@ -587,22 +587,32 @@ . = ..() if(mapload) //Placed in mapping, will be randomized instantly on spawn create_plushie() - return - RegisterSignal(src, COMSIG_POST_SPAWN_UPDATE, PROC_REF(create_plushie)) + return INITIALIZE_HINT_QDEL + +/obj/item/toy/plush/random_plushie/pickup(mob/user, silent) + . = ..() + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(create_plushie)) ///The randomizer picking and spawning a plushie on either the ground or in the humans backpack. Needs var/source due to signals -/obj/item/toy/plush/random_plushie/proc/create_plushie(source = src, mob/living/user) - UnregisterSignal(src, COMSIG_POST_SPAWN_UPDATE) +/obj/item/toy/plush/random_plushie/proc/create_plushie(datum/source) + SIGNAL_HANDLER + if(source) + UnregisterSignal(source, COMSIG_POST_SPAWN_UPDATE) + var/turf/spawn_location = get_turf(src) var/plush_list_variety = pick(60; plush_list, 40; therapy_plush_list) var/random_plushie = pick(plush_list_variety) - var/obj/item/toy/plush/plush = new random_plushie(get_turf(src)) //Starts on floor by default + var/obj/item/toy/plush/plush = new random_plushie(spawn_location) //Starts on floor by default + var/mob/living/carbon/human/user = source if(!user) //If it didn't spawn on a humanoid qdel(src) return + var/obj/item/storage/backpack/storage = locate() in user //If the user has a backpack, put it there if(storage?.can_be_inserted(plush, user, stop_messages = TRUE)) storage.attempt_item_insertion(plush, TRUE, user) + if(plush.loc == spawn_location) // Still on the ground + user.put_in_hands(plush, drop_on_fail = TRUE) qdel(src) //Admin plushies From 4e52130aec250979e178b74596a3a4ea64fdc0f1 Mon Sep 17 00:00:00 2001 From: MrDas <62486730+Das15@users.noreply.github.com> Date: Thu, 9 Nov 2023 16:50:52 +0100 Subject: [PATCH 003/355] Makes rear dropship doors solid again and refactors multi door filler turf logic (#4837) # About the pull request Fixes a bug with rear drop ship doors, which allowed people to see through them (you can see space for 1 tick on departure though, dunno how to fix this detail). Refactored filler turfs logic in door parent, so we can avoid redundant code. Also removed some unnecessary code from door class. # Explain why it's good for the game Bugs and old, unnecessary code bad, therefore they should be gone. # Testing Photographs and Procedure - Checked rear drop ship doors on start of the round, - Launched the ship, - Checked the doors again, - On arrival checked the doors once again. # Changelog :cl: MrDas fix: You can no longer see through solid rear drop ship doors. code: Moved filler turf logic from almayer airlocks to its parent door. /:cl: --- code/game/machinery/doors/airlock.dm | 5 + code/game/machinery/doors/airlock_types.dm | 1 - code/game/machinery/doors/door.dm | 163 +++++++++--------- code/game/machinery/doors/multi_tile.dm | 38 ---- code/game/machinery/doors/runed_sandstone.dm | 4 +- code/game/machinery/doors/windowdoor.dm | 1 - .../shuttle/computers/escape_pod_computer.dm | 1 - code/modules/shuttle/helpers.dm | 2 +- code/modules/shuttle/shuttles/dropship.dm | 4 +- code/modules/shuttles/marine_ferry.dm | 2 +- 10 files changed, 90 insertions(+), 131 deletions(-) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index b7257ff4e7d3..c6d9ddf3efbd 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -866,3 +866,8 @@ GLOBAL_LIST_INIT(airlock_wire_descriptions, list( var/damage = xeno.melee_damage_upper * TAILSTAB_AIRLOCK_DAMAGE_MULTIPLIER take_damage(damage, xeno) return TAILSTAB_COOLDOWN_NORMAL + +/obj/structure/machinery/door/airlock/autoclose() + if(locked) + return + ..() diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index f4d09796194c..feb699fd245e 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -138,7 +138,6 @@ opacity = 0 assembly_type = /obj/structure/airlock_assembly/airlock_assembly_research glass = 1 - heat_proof = 1 req_one_access = list(ACCESS_CIVILIAN_RESEARCH, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) /obj/structure/machinery/door/airlock/glass_mining/colony diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 642d91d53395..021cb60769f9 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -1,4 +1,3 @@ - /obj/structure/machinery/door name = "\improper Door" desc = "It opens and closes." @@ -7,50 +6,43 @@ anchored = TRUE opacity = TRUE density = TRUE - throwpass = 0 + throwpass = FALSE layer = DOOR_OPEN_LAYER minimap_color = MINIMAP_DOOR var/open_layer = DOOR_OPEN_LAYER var/closed_layer = DOOR_CLOSED_LAYER var/id = "" + var/width = 1 var/secondsElectrified = 0 - var/visible = 1 + var/visible = TRUE var/panel_open = FALSE - var/operating = 0 - var/autoclose = 0 - var/glass = 0 - var/normalspeed = 1 - var/openspeed = 10 //How many seconds does it take to open it? Default 1 second. Use only if you have long door opening animations - var/heat_proof = 0 // For glass airlocks/opacity firedoors - var/air_properties_vary_with_direction = 0 - var/turf/filler //Fixes double door opacity issue + var/operating = FALSE + var/autoclose = FALSE + var/glass = FALSE + /// If FALSE it speeds up the autoclosing timing. + var/normalspeed = TRUE + /// Time to open/close airlock, default is 1 second. + var/openspeed = 1 SECONDS + /// Fixes multi_tile doors opacity issues. + var/list/filler_turfs = list() //Previously this was just var, because no one had forseen someone creating doors more than 2 tiles wide /// Stops it being forced open through normal means (Hunters/Zombies/Aliens). var/heavy = FALSE /// Resistance to masterkey var/masterkey_resist = FALSE var/masterkey_mod = 0.1 - - - //Multi-tile doors - dir = EAST - var/width = 1 + dir = EAST //So multitile doors are directioned properly /obj/structure/machinery/door/Initialize(mapload, ...) . = ..() - if(density) - layer = closed_layer - update_flags_heat_protection(get_turf(src)) - else - layer = open_layer - + layer = density ? closed_layer : open_layer handle_multidoor() /obj/structure/machinery/door/Destroy() . = ..() - if(filler && width > 1) - filler.set_opacity(0)// Ehh... let's hope there are no walls there. Must fix this - filler = null + if(length(filler_turfs) && width > 1) + change_filler_opacity(0) // It still doesn't check for walls, might want to add checking that in the future + filler_turfs = null density = FALSE /obj/structure/machinery/door/initialize_pass_flags(datum/pass_flags_container/PF) @@ -58,21 +50,41 @@ if (PF) PF.flags_can_pass_all = NONE +/// Also refreshes filler_turfs list. +/obj/structure/machinery/door/proc/change_filler_opacity(new_opacity) + // I have no idea why do we null opacity first before... changing it + for(var/turf/filler_turf as anything in filler_turfs) + filler_turf.set_opacity(null) + + filler_turfs = list() + for(var/turf/filler as anything in locate_filler_turfs()) + filler.set_opacity(new_opacity) + filler_turfs += filler + +/// Updates collision box and opacity of multi_tile airlocks. /obj/structure/machinery/door/proc/handle_multidoor() if(width > 1) if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size - filler = get_step(src,EAST) - filler.set_opacity(opacity) else bound_width = world.icon_size bound_height = width * world.icon_size - filler = get_step(src,NORTH) - filler.set_opacity(opacity) + change_filler_opacity(opacity) + +/// Finds turfs which should be filler ones. +/obj/structure/machinery/door/proc/locate_filler_turfs() + var/turf/filler_temp + var/list/located_turfs = list() -//process() - //return + for(var/i in 1 to width - 1) + if (dir in list(EAST, WEST)) + filler_temp = locate(x + i, y, z) + else + filler_temp = locate(x, y + i, z) + if (filler_temp) + located_turfs += filler_temp + return located_turfs /obj/structure/machinery/door/proc/borders_space() for(var/turf/target in range(1, src)) @@ -81,7 +93,8 @@ return FALSE /obj/structure/machinery/door/Collided(atom/movable/AM) - if(panel_open || operating) return + if(panel_open || operating) + return if(ismob(AM)) var/mob/M = AM if(world.time - M.last_bumped <= openspeed) return //Can bump-open one airlock per second. This is to prevent shock spam. @@ -89,12 +102,10 @@ if(!M.is_mob_restrained() && M.mob_size > MOB_SIZE_SMALL) bumpopen(M) return - if(istype(AM, /obj)) var/obj/O = AM if(O.buckled_mob) Collided(O.buckled_mob) - if(istype(AM, /obj/structure/machinery/bot)) var/obj/structure/machinery/bot/bot = AM if(src.check_access(bot.botcard)) @@ -102,16 +113,17 @@ open() return - /obj/structure/machinery/door/proc/bumpopen(mob/user as mob) - if(operating) return - src.add_fingerprint(user) - if(!src.requiresID()) + if(operating) + return + add_fingerprint(user) + if(!requiresID()) user = null - if(density) - if(allowed(user)) open() - else flick("door_deny", src) + if(allowed(user)) + open() + else + flick("door_deny", src) return /obj/structure/machinery/door/attack_remote(mob/user) @@ -124,9 +136,7 @@ add_fingerprint(user) if(operating) return - if(!Adjacent(user)) - user = null //so allowed(user) always succeeds - if(!requiresID()) + if(!Adjacent(user) || !requiresID()) user = null //so allowed(user) always succeeds if(allowed(user)) if(density) @@ -137,15 +147,14 @@ if(density) flick("door_deny", src) - /obj/structure/machinery/door/attackby(obj/item/I, mob/user) if(!(I.flags_item & NOBLUDGEON)) try_to_activate_door(user) - return 1 + return TRUE /obj/structure/machinery/door/emp_act(severity) . = ..() - if(prob(20/severity) && (istype(src,/obj/structure/machinery/door/airlock) || istype(src,/obj/structure/machinery/door/window)) ) + if(prob(20/severity) && use_power) open() if(prob(40/severity)) if(secondsElectrified == 0) @@ -153,48 +162,41 @@ spawn(30 SECONDS) secondsElectrified = 0 - /obj/structure/machinery/door/ex_act(severity) - if(unacidable) return + if(unacidable) + return if(density) switch(severity) if(0 to EXPLOSION_THRESHOLD_LOW) if(prob(80)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() + var/datum/effect_system/spark_spread/spark = new /datum/effect_system/spark_spread + spark.set_up(2, 1, src) + spark.start() if(EXPLOSION_THRESHOLD_LOW to INFINITY) qdel(src) else switch(severity) if(0 to EXPLOSION_THRESHOLD_MEDIUM) if(prob(80)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(2, 1, src) - s.start() + var/datum/effect_system/spark_spread/spark = new /datum/effect_system/spark_spread + spark.set_up(2, 1, src) + spark.start() else qdel(src) return - /obj/structure/machinery/door/get_explosion_resistance() if(density) if(unacidable) - return 1000000 + return 1000000 //Used for negation of explosions, should probably be made into define in the future else return EXPLOSION_THRESHOLD_LOW //this should exactly match the amount of damage needed to destroy the door else return 0 - /obj/structure/machinery/door/update_icon() - if(density) - icon_state = "door1" - else - icon_state = "door0" - return - + icon_state = density ? "door1" : "door0" /obj/structure/machinery/door/proc/do_animate(animation) switch(animation) @@ -212,7 +214,6 @@ flick("door_deny", src) return - /obj/structure/machinery/door/proc/open(forced=0) if(!density) return TRUE @@ -223,8 +224,8 @@ do_animate("opening") icon_state = "door0" set_opacity(FALSE) - if(filler) - filler.set_opacity(opacity) + if(length(filler_turfs)) + change_filler_opacity(opacity) addtimer(CALLBACK(src, PROC_REF(finish_open)), openspeed) return TRUE @@ -235,11 +236,9 @@ if(operating) operating = FALSE - if(autoclose) addtimer(CALLBACK(src, PROC_REF(autoclose)), normalspeed ? 150 + openspeed : 5) - /obj/structure/machinery/door/proc/close() if(density) return TRUE @@ -256,22 +255,19 @@ update_icon() if(visible && !glass) set_opacity(TRUE) - if(filler) - filler.set_opacity(opacity) + if(length(filler_turfs)) + change_filler_opacity(opacity) operating = FALSE /obj/structure/machinery/door/proc/requiresID() return TRUE - -/obj/structure/machinery/door/proc/update_flags_heat_protection(turf/source) - - +/// Used for overriding in airlocks /obj/structure/machinery/door/proc/autoclose() - var/obj/structure/machinery/door/airlock/A = src - if(!A.density && !A.operating && !A.locked && !A.welded && A.autoclose) + if(!autoclose) + return + if(!density && !operating) close() - return /obj/structure/machinery/door/Move(new_loc, new_dir) . = ..() @@ -279,16 +275,15 @@ if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size - filler.set_opacity(0) - filler = (get_step(src,EAST)) //Find new turf - filler.set_opacity(opacity) else bound_width = world.icon_size bound_height = width * world.icon_size - filler.set_opacity(0) - filler = (get_step(src,NORTH)) //Find new turf - filler.set_opacity(opacity) + change_filler_opacity(opacity) +/obj/structure/machinery/door/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation) + . = ..() + // Yes, for a split second after departure you can see through rear dropship airlocks, but it's the simplest solution I could've think of + handle_multidoor() /obj/structure/machinery/door/morgue icon = 'icons/obj/structures/doors/doormorgue.dmi' diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm index 65ecd67a438e..ca218128160d 100644 --- a/code/game/machinery/doors/multi_tile.dm +++ b/code/game/machinery/doors/multi_tile.dm @@ -13,7 +13,6 @@ /obj/structure/machinery/door/airlock/multi_tile/Initialize() . = ..() - handle_multidoor() update_icon() /obj/structure/machinery/door/airlock/multi_tile/glass @@ -137,7 +136,6 @@ /obj/structure/window/framed/almayer, /obj/structure/machinery/door/airlock, ) - var/multi_filler = list() /obj/structure/machinery/door/airlock/multi_tile/almayer/Initialize() . = ..() @@ -233,42 +231,6 @@ req_access = null req_one_access = list(ACCESS_CIVILIAN_BRIG, ACCESS_CIVILIAN_COMMAND, ACCESS_WY_COLONIAL) -/obj/structure/machinery/door/airlock/multi_tile/almayer/handle_multidoor() - . = ..() - if(!(width > 1)) return //Bubblewrap - - update_filler_turfs() - -//We have to find these again since these doors are used on shuttles a lot so the turfs changes -/obj/structure/machinery/door/airlock/multi_tile/almayer/proc/update_filler_turfs() - for(var/turf/T in multi_filler) - T.set_opacity(null) - - multi_filler = list() - for(var/turf/T in get_filler_turfs()) - T.set_opacity(opacity) - multi_filler += list(T) - -/obj/structure/machinery/door/airlock/multi_tile/proc/get_filler_turfs() - . = list() - for(var/i = 1, i < width, i++) - if(dir in list(NORTH, SOUTH)) - var/turf/T = locate(x, y + i, z) - if(T) - . += list(T) - else if(dir in list(EAST, WEST)) - var/turf/T = locate(x + i, y, z) - if(T) - . += list(T) - -/obj/structure/machinery/door/airlock/multi_tile/almayer/open() - . = ..() - update_filler_turfs() - -/obj/structure/machinery/door/airlock/multi_tile/almayer/close() - . = ..() - update_filler_turfs() - //------Dropship Cargo Doors -----// /obj/structure/machinery/door/airlock/multi_tile/almayer/dropshiprear diff --git a/code/game/machinery/doors/runed_sandstone.dm b/code/game/machinery/doors/runed_sandstone.dm index 4bf66dfdc8d8..a6de7348dd7f 100644 --- a/code/game/machinery/doors/runed_sandstone.dm +++ b/code/game/machinery/doors/runed_sandstone.dm @@ -110,8 +110,8 @@ density = FALSE update_icon() set_opacity(0) - if(filler) - filler.set_opacity(opacity) + if(length(filler_turfs)) + change_filler_opacity(opacity) if(operating) operating = FALSE diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 2b57fbd0a44d..bd544c5c3f5a 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -11,7 +11,6 @@ flags_atom = ON_BORDER opacity = FALSE var/obj/item/circuitboard/airlock/electronics = null - air_properties_vary_with_direction = 1 /obj/structure/machinery/door/window/Initialize() . = ..() diff --git a/code/modules/shuttle/computers/escape_pod_computer.dm b/code/modules/shuttle/computers/escape_pod_computer.dm index eb81a4a98a8a..ec523747e18d 100644 --- a/code/modules/shuttle/computers/escape_pod_computer.dm +++ b/code/modules/shuttle/computers/escape_pod_computer.dm @@ -209,7 +209,6 @@ /obj/structure/machinery/door/airlock/evacuation name = "\improper Evacuation Airlock" icon = 'icons/obj/structures/doors/pod_doors.dmi' - heat_proof = 1 unslashable = TRUE unacidable = TRUE var/obj/docking_port/mobile/crashable/escape_shuttle/linked_shuttle diff --git a/code/modules/shuttle/helpers.dm b/code/modules/shuttle/helpers.dm index 1d841581faa0..6ab5d88da1b7 100644 --- a/code/modules/shuttle/helpers.dm +++ b/code/modules/shuttle/helpers.dm @@ -117,7 +117,7 @@ var/list/door_turfs = list(get_turf(air)) if(istype(air, /obj/structure/machinery/door/airlock/multi_tile)) var/obj/structure/machinery/door/airlock/multi_tile/multi_door = air - door_turfs = multi_door.get_filler_turfs() + door_turfs = multi_door.locate_filler_turfs() for(var/turf/door_turf in door_turfs) bump_at_turf(door_turf) diff --git a/code/modules/shuttle/shuttles/dropship.dm b/code/modules/shuttle/shuttles/dropship.dm index e1c2bb9a1f9a..ee91c9b9e5d4 100644 --- a/code/modules/shuttle/shuttles/dropship.dm +++ b/code/modules/shuttle/shuttles/dropship.dm @@ -234,8 +234,8 @@ /obj/docking_port/stationary/marine_dropship/on_departure(obj/docking_port/mobile/departing_shuttle) . = ..() turn_off_landing_lights() - var/obj/docking_port/mobile/marine_dropship/shuttle = departing_shuttle - for(var/obj/structure/dropship_equipment/eq as anything in shuttle.equipments) + var/obj/docking_port/mobile/marine_dropship/dropship = departing_shuttle + for(var/obj/structure/dropship_equipment/eq as anything in dropship.equipments) eq.on_launch() /obj/docking_port/stationary/marine_dropship/lz1 diff --git a/code/modules/shuttles/marine_ferry.dm b/code/modules/shuttles/marine_ferry.dm index 032294a45b39..79988bbb8da3 100644 --- a/code/modules/shuttles/marine_ferry.dm +++ b/code/modules/shuttles/marine_ferry.dm @@ -58,7 +58,7 @@ for(var/obj/vehicle/multitile/M in D.loc) if(M) return 0 - for(var/turf/T in D.get_filler_turfs()) + for(var/turf/T in D.locate_filler_turfs()) for(var/obj/vehicle/multitile/M in T) if(M) return 0 From 837a4fa618053ece57feb862e96b14afb7522982 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 9 Nov 2023 15:59:05 +0000 Subject: [PATCH 004/355] Automatic changelog for PR #4837 [ci skip] --- html/changelogs/AutoChangeLog-pr-4837.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4837.yml diff --git a/html/changelogs/AutoChangeLog-pr-4837.yml b/html/changelogs/AutoChangeLog-pr-4837.yml new file mode 100644 index 000000000000..e7f41cf22266 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4837.yml @@ -0,0 +1,5 @@ +author: "MrDas" +delete-after: True +changes: + - bugfix: "You can no longer see through solid rear drop ship doors." + - code_imp: "Moved filler turf logic from almayer airlocks to its parent door." \ No newline at end of file From 2c6fbc12c7f4b9a6fd2fc7b7aa579be71a8a632b Mon Sep 17 00:00:00 2001 From: spartanbobby <71467726+spartanbobby@users.noreply.github.com> Date: Thu, 9 Nov 2023 18:54:49 +0000 Subject: [PATCH 005/355] Le Almayer changes (#4864) # About the pull request This PR fixes the funny map conflict markets on the Almayer fixes some bathroom detailing I missed in a prior PR fixes some closet detailing I missed in a prior PR # Explain why it's good for the game 1. Uh those beds shouldn't have been there 2. I think it looks better and it was meant to be done in a prior 3. ^ # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: SpartanBobby maptweak: fixes conflicting tiles on USS Almayer squad bunks maptweak: updates multiple bedrooms and closet area detailing /:cl: --- maps/map_files/USS_Almayer/USS_Almayer.dmm | 845 ++++++++++++++------- 1 file changed, 568 insertions(+), 277 deletions(-) diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index a37cd9d07230..c6ae319f0601 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -790,7 +790,7 @@ "acE" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/north2) "acF" = ( @@ -918,7 +918,7 @@ "acT" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/north2) "acU" = ( @@ -1177,11 +1177,14 @@ }, /area/almayer/lifeboat_pumps/north1) "adQ" = ( -/obj/structure/closet/emcloset, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ icon_state = "mono" }, -/area/almayer/lifeboat_pumps/north1) +/area/almayer/lifeboat_pumps/north2) "adR" = ( /obj/structure/machinery/door/airlock/almayer/generic{ access_modified = 1; @@ -1211,11 +1214,12 @@ }, /area/almayer/hallways/aft_hallway) "adZ" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 }, -/area/almayer/lifeboat_pumps/north1) +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north2) "aea" = ( /obj/structure/machinery/light{ dir = 1 @@ -1580,6 +1584,10 @@ density = 0; pixel_y = 17 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) "afd" = ( @@ -3060,6 +3068,10 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -3336,21 +3348,22 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/living/starboard_garden) "alb" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/commandbunks) +"alc" = ( /obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 + dir = 4; + pixel_x = 11 }, /obj/structure/mirror{ - pixel_x = -28 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" + pixel_x = 28 }, -/area/almayer/living/commandbunks) -"alc" = ( -/obj/structure/toilet{ - dir = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, /turf/open/floor/almayer{ icon_state = "dark_sterile" @@ -6144,7 +6157,7 @@ /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/command/lifeboat) "atZ" = ( @@ -8939,6 +8952,14 @@ icon_state = "orangecorner" }, /area/almayer/command/telecomms) +"aDc" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "aDe" = ( /obj/structure/machinery/light{ dir = 8 @@ -11229,7 +11250,7 @@ /obj/item/clothing/mask/gas, /obj/item/clothing/mask/gas, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/command/lifeboat) "aNi" = ( @@ -12638,11 +12659,9 @@ /area/almayer/living/basketball) "aTV" = ( /obj/structure/toilet{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" + dir = 4 }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) "aTW" = ( /obj/structure/bed/chair{ @@ -13182,9 +13201,7 @@ pixel_x = -6; pixel_y = -10 }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/living/captain_mess) "aWD" = ( /obj/structure/window/framed/almayer, @@ -14800,6 +14817,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"bfe" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "bfl" = ( /turf/open/floor/almayer{ dir = 5; @@ -20549,8 +20576,11 @@ unacidable = 1; unslashable = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "dark_sterile" }, /area/almayer/living/auxiliary_officer_office) "bII" = ( @@ -22639,9 +22669,7 @@ /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/command/airoom) "bRr" = ( /obj/structure/machinery/fuelcell_recycler, @@ -26493,41 +26521,14 @@ }, /area/almayer/hull/upper_hull/u_a_s) "ckE" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/yellow{ - layer = 3.2 - }, -/obj/item/bedsheet/yellow{ - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -16; - pixel_y = 8 +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 }, -/obj/item/toy/plush/barricade, -/obj{ - name = "---Merge conflict marker---" +/turf/open/floor/almayer{ + icon_state = "mono" }, -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer, -/area/almayer/living/briefing) +/area/almayer/lifeboat_pumps/north1) "ckI" = ( /obj/structure/disposalpipe/segment, /obj/item/device/radio/intercom{ @@ -27869,8 +27870,8 @@ /area/almayer/shipboard/brig/execution) "czG" = ( /obj/structure/machinery/recharge_station, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" +/turf/open/floor/almayer{ + icon_state = "cargo" }, /area/almayer/command/airoom) "czJ" = ( @@ -29652,6 +29653,14 @@ icon_state = "orange" }, /area/almayer/engineering/engineering_workshop/hangar) +"djN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "djQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -29740,9 +29749,7 @@ dir = 2 }, /obj/item/clothing/mask/cigarette/weed, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) "dll" = ( /obj/structure/surface/table/almayer, @@ -29867,6 +29874,10 @@ /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -30164,6 +30175,12 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) +"dtv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "dtH" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -31327,6 +31344,13 @@ /area/almayer/shipboard/brig/main_office) "dSn" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -31733,7 +31757,7 @@ "eaX" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) "ebd" = ( @@ -31904,13 +31928,19 @@ pixel_x = 8; pixel_y = -32 }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) "edM" = ( /obj/structure/closet/firecloset, -/turf/open/floor/almayer, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, /area/almayer/hallways/vehiclehangar) "eed" = ( /turf/open/floor/almayer{ @@ -32202,15 +32232,13 @@ }, /area/almayer/medical/containment/cell) "eiH" = ( -/obj/structure/sink{ - pixel_y = 24 - }, /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/structure/toilet{ + dir = 4 }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) "eiK" = ( /obj/structure/bed/chair{ @@ -32844,7 +32872,7 @@ "euY" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) "eva" = ( @@ -34792,9 +34820,7 @@ /obj/structure/machinery/door/window/tinted{ dir = 1 }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) "fnZ" = ( /obj/structure/machinery/portable_atmospherics/canister/air, @@ -34916,6 +34942,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliason) +"fqg" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south2) "fqu" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer, @@ -36351,6 +36383,12 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) +"fXM" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "fXN" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, @@ -36837,19 +36875,12 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) "ghX" = ( -/obj/structure/window/reinforced/tinted{ - pixel_y = -8 - }, /obj/structure/machinery/shower{ dir = 8 }, -/obj/structure/machinery/door/window/tinted{ - dir = 8 - }, /obj/item/toy/inflatable_duck, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) "gio" = ( /obj/structure/closet/emcloset, @@ -37462,6 +37493,9 @@ /area/almayer/living/basketball) "gwu" = ( /obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, /turf/open/floor/almayer{ icon_state = "red" }, @@ -37881,6 +37915,10 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_p) "gDW" = ( @@ -37937,12 +37975,12 @@ }, /obj/structure/surface/table/woodentable/fancy, /obj/structure/machinery/door_control{ + id = "cl_evac"; + name = "Evac Pod Door Control"; + normaldoorcontrol = 1; pixel_x = -5; pixel_y = 2; - req_access_txt = "200"; - name = "Evac Pod Door Control"; - id = "cl_evac"; - normaldoorcontrol = 1 + req_access_txt = "200" }, /turf/open/floor/carpet, /area/almayer/command/corporateliason) @@ -39215,6 +39253,10 @@ dir = 1; name = "ship-grade camera" }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, /turf/open/floor/almayer{ icon_state = "red" }, @@ -39377,6 +39419,13 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) +"hiN" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "hiQ" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -41117,6 +41166,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"hWX" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_p) "hXb" = ( /turf/open/floor/almayer{ dir = 1; @@ -41154,6 +41209,15 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) +"hXD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "hXS" = ( /obj/structure/sign/safety/water{ pixel_x = 8; @@ -42206,6 +42270,16 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"iuw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "iuy" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -42240,7 +42314,7 @@ name = "ship-grade camera" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_f_s) "ivf" = ( @@ -43792,6 +43866,10 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor/almayer{ dir = 9; icon_state = "red" @@ -44033,8 +44111,12 @@ /obj/structure/mirror{ pixel_x = 29 }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, /turf/open/floor/almayer{ - icon_state = "sterile" + icon_state = "dark_sterile" }, /area/almayer/living/captain_mess) "jgw" = ( @@ -44479,8 +44561,8 @@ pixel_y = 5 }, /obj/item/folder/black{ - pixel_y = -3; - pixel_x = 7 + pixel_x = 7; + pixel_y = -3 }, /turf/open/floor/almayer{ icon_state = "plate" @@ -45843,11 +45925,25 @@ icon_state = "plate" }, /area/almayer/living/offices) +"jWC" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "jWH" = ( /obj/structure/machinery/power/apc/almayer/hardened{ cell_type = /obj/item/cell/hyper; dir = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -45883,7 +45979,7 @@ "jXW" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/command/lifeboat) "jXY" = ( @@ -49827,6 +49923,13 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"lDj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "lDJ" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -50856,6 +50959,16 @@ icon_state = "greencorner" }, /area/almayer/hallways/aft_hallway) +"mcl" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = -16 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/vehiclehangar) "mcL" = ( /obj/structure/machinery/vending/snack, /obj/structure/sign/safety/maint{ @@ -51722,6 +51835,15 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) +"mvH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "mvI" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -52236,7 +52358,7 @@ "mIA" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south2) "mIB" = ( @@ -52742,6 +52864,13 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"mRU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "mRW" = ( /turf/open/floor/almayer/research/containment/corner1, /area/almayer/medical/containment/cell/cl) @@ -53157,8 +53286,11 @@ /obj/structure/machinery/light/small{ dir = 4 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, /area/almayer/engineering/upper_engineering/port) "naR" = ( @@ -53723,10 +53855,11 @@ }, /area/almayer/command/securestorage) "nna" = ( +/obj/structure/closet/firecloset, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "cargo" }, -/area/almayer/living/port_emb) +/area/almayer/hull/upper_hull/u_f_s) "nnc" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -53855,21 +53988,12 @@ }, /area/almayer/medical/containment) "npB" = ( -/obj/structure/sink{ - dir = 1; - pixel_y = -10 - }, -/obj/structure/pipes/vents/scrubber{ - dir = 1 - }, -/obj/structure/surface/rack{ - density = 0; - pixel_x = 26 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 }, -/area/almayer/living/port_emb) +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) "nqx" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -54359,6 +54483,9 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ dir = 10; icon_state = "red" @@ -54946,51 +55073,15 @@ }, /area/almayer/hull/lower_hull/l_m_s) "nMM" = ( -/obj/item/bedsheet/blue{ - layer = 3.2 - }, -/obj/item/bedsheet/blue{ - pixel_y = 13 - }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_y = 15; - throwforce = 15 - }, -/obj/item/clothing/head/cmcap{ - layer = 4.1; - pixel_x = -1; - pixel_y = 22 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj{ - name = "---Merge conflict marker---" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/obj/structure/bed/chair/comfy/charlie, -/turf/open/floor/almayer{ - icon_state = "emeraldfull" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 }, -/area/almayer/living/briefing) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "nMV" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -56072,12 +56163,16 @@ }, /area/almayer/shipboard/brig/execution) "olk" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom" + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -57202,6 +57297,15 @@ "oIB" = ( /turf/closed/wall/almayer, /area/almayer/command/combat_correspondent) +"oIY" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "oJp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -58152,8 +58256,11 @@ /obj/structure/machinery/light/small{ dir = 8 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, /area/almayer/engineering/upper_engineering/port) "pfH" = ( @@ -59438,6 +59545,14 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"pNK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/auxiliary_officer_office) "pNM" = ( /obj/structure/platform{ dir = 4 @@ -59546,6 +59661,10 @@ /area/almayer/hull/upper_hull/u_a_s) "pPF" = ( /obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -59579,6 +59698,9 @@ pixel_x = 23; specialfunctions = 4 }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -59766,6 +59888,10 @@ /area/almayer/command/computerlab) "pUe" = ( /obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -59793,6 +59919,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) +"pUl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hallways/vehiclehangar) "pUp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -60654,6 +60789,15 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) +"qkj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "qkn" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -60949,8 +61093,10 @@ /area/almayer/medical/chemistry) "qpU" = ( /obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" + icon_state = "pottedplant_22"; + pixel_y = 12 }, +/obj/structure/surface/table/almayer, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -61073,7 +61219,7 @@ "qtR" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/command/lifeboat) "qtS" = ( @@ -61346,6 +61492,13 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"qyH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "qyJ" = ( /obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, /turf/open/floor/almayer{ @@ -61454,16 +61607,13 @@ /turf/open/floor/almayer, /area/almayer/living/briefing) "qCg" = ( -/obj/structure/pipes/vents/pump, /obj/structure/mirror{ pixel_y = 32 }, /obj/structure/sink{ pixel_y = 24 }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) "qCi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ @@ -62126,6 +62276,16 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) +"qQL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "qQM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -63483,8 +63643,13 @@ /turf/open/floor/almayer, /area/almayer/command/computerlab) "rsW" = ( -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, /area/almayer/engineering/upper_engineering/port) "rsY" = ( @@ -63685,9 +63850,7 @@ "rzf" = ( /obj/effect/landmark/late_join/working_joe, /obj/effect/landmark/start/working_joe, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/command/airoom) "rzj" = ( /obj/structure/pipes/standard/simple/hidden/supply, @@ -63731,15 +63894,11 @@ }, /area/almayer/living/briefing) "rAv" = ( -/obj/structure/toilet{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ +/obj/structure/machinery/shower{ dir = 8 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) "rAx" = ( /obj/structure/disposalpipe/junction{ @@ -64710,11 +64869,21 @@ /area/almayer/command/computerlab) "rUB" = ( /obj/structure/pipes/vents/pump, +/obj/item/tool/soap, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sink{ + pixel_y = 24 + }, /obj/structure/mirror{ pixel_y = 32 }, -/obj/item/tool/soap, -/obj/effect/decal/cleanable/blood, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -64754,6 +64923,14 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) +"rWF" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "rWL" = ( /obj/structure/barricade/metal, /turf/open/floor/almayer{ @@ -64860,6 +65037,14 @@ icon_state = "plate" }, /area/almayer/living/offices/flight) +"rYZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) "rZz" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -65334,6 +65519,9 @@ /obj/structure/machinery/light/small{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ dir = 10; icon_state = "orange" @@ -65492,6 +65680,15 @@ /area/almayer/squads/delta) "soa" = ( /obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, /obj/structure/machinery/door/airlock/almayer/generic{ dir = 1; name = "Bathroom" @@ -65823,11 +66020,15 @@ }, /area/almayer/command/lifeboat) "svp" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "mono" +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/lifeboat_pumps/south1) +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "swn" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -67591,6 +67792,10 @@ pixel_x = -2; pixel_y = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, /turf/open/floor/almayer{ dir = 6; icon_state = "orange" @@ -67999,6 +68204,10 @@ /obj/structure/machinery/light{ dir = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ dir = 1; icon_state = "red" @@ -68450,7 +68659,7 @@ "tAh" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) "tAi" = ( @@ -68858,6 +69067,11 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 2 + }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) "tJp" = ( @@ -69233,8 +69447,8 @@ pixel_y = 12 }, /obj/item/paper_bin/uscm{ - pixel_y = 6; - pixel_x = 6 + pixel_x = 6; + pixel_y = 6 }, /obj/item/tool/pen{ pixel_x = 4; @@ -69414,6 +69628,13 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) +"tXz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) "tXM" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -69472,6 +69693,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"tYv" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_p) "tYw" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -70168,6 +70395,10 @@ cell_type = /obj/item/cell/hyper; dir = 1 }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, /turf/open/floor/almayer{ icon_state = "mono" }, @@ -70190,13 +70421,16 @@ }, /area/almayer/hull/lower_hull/l_f_p) "umY" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 }, -/area/almayer/living/port_emb) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "unh" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/o2, @@ -70637,11 +70871,13 @@ /turf/open/floor/wood/ship, /area/almayer/living/basketball) "uvk" = ( -/obj/structure/closet/firecloset, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "orange" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/engineering/upper_engineering/starboard) "uvs" = ( /obj/structure/machinery/conveyor{ id = "lower_garbage" @@ -71211,7 +71447,7 @@ "uGa" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "cargo" }, /area/almayer/lifeboat_pumps/south2) "uGc" = ( @@ -71896,9 +72132,7 @@ /obj/structure/machinery/door/window/tinted{ dir = 2 }, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) "uVb" = ( /obj/structure/closet/toolcloset, @@ -72116,6 +72350,15 @@ }, /turf/closed/wall/almayer, /area/almayer/hallways/starboard_umbilical) +"vba" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "vbf" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 @@ -73783,6 +74026,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) +"vHl" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "vHq" = ( /obj/item/device/assembly/mousetrap/armed, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -75653,6 +75906,13 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) +"wpj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "wpw" = ( /obj/structure/bed/chair/comfy/ares{ dir = 1 @@ -76085,9 +76345,7 @@ }, /obj/effect/landmark/late_join/working_joe, /obj/effect/landmark/start/working_joe, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/command/airoom) "wyO" = ( /obj/structure/largecrate/random/barrel/red, @@ -76578,6 +76836,15 @@ }, /turf/open/floor/plating, /area/almayer/medical/containment) +"wKS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "wLi" = ( /obj/structure/machinery/door_control/airlock{ id = "s_engi"; @@ -77206,6 +77473,14 @@ /obj/structure/machinery/light{ dir = 8 }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, /turf/open/floor/almayer{ icon_state = "dark_sterile" }, @@ -77780,10 +78055,14 @@ /area/almayer/living/grunt_rnr) "xjw" = ( /obj/structure/pipes/standard/simple/hidden/supply{ - dir = 9 + dir = 4 }, -/turf/open/floor/prison{ - icon_state = "kitchen" +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" }, /area/almayer/engineering/upper_engineering/port) "xjz" = ( @@ -78654,9 +78933,7 @@ /area/almayer/squads/req) "xAC" = ( /obj/structure/surface/rack, -/turf/open/floor/prison{ - icon_state = "kitchen" - }, +/turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) "xAI" = ( /obj/structure/platform{ @@ -79058,7 +79335,7 @@ "xJn" = ( /obj/structure/closet/emcloset, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/starboard) "xJC" = ( @@ -80227,6 +80504,10 @@ }, /area/almayer/command/lifeboat) "ygs" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Bathroom" }, @@ -80380,6 +80661,16 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_m_s) +"ykD" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "ykF" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /turf/open/floor/almayer{ @@ -80431,9 +80722,9 @@ }, /area/almayer/squads/delta) "ylg" = ( -/obj/structure/machinery/cryopod, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" +/obj/structure/machinery/cryopod/right, +/turf/open/floor/almayer{ + icon_state = "cargo" }, /area/almayer/command/airoom) "ylJ" = ( @@ -93408,7 +93699,7 @@ poR mGL pNp kcp -bTS +pNK bIA alU uDn @@ -93816,9 +94107,9 @@ bTS lxo qcy kcp -bAg edM -egq +edM +mcl bLt bXX bKh @@ -94019,9 +94310,9 @@ oQM aqI aqI kcp -bzA -bBB -bBB +pUl +tXz +rYZ bLu bBB bBB @@ -98812,7 +99103,7 @@ vCO vCO vCO jxB -gpe +wpj gDq tJo bGr @@ -99015,9 +99306,9 @@ wmT jhW mWD jxB -fGN -dtN -gpe +hWX +tYv +mRU xuB gpe xEF @@ -99178,7 +99469,7 @@ aad aai aai pCi -lFb +nMM avl avl agj @@ -99220,7 +99511,7 @@ aES aES aES aES -gpe +lDj uEv gpe xEF @@ -99380,8 +99671,8 @@ aaa aad ahE iuT -naf -lFb +nna +svp avl agj agj @@ -99583,8 +99874,8 @@ aaa aad ahE afc -avl -lFb +npB +umY avl agj yeo @@ -104448,8 +104739,8 @@ bdH bdH aaC abw -adQ -awW +aee +avd acW awW auK @@ -104507,8 +104798,8 @@ mlz sOy baw sgU -baw -svp +xVF +njD trb aaC bdH @@ -104651,8 +104942,8 @@ bdH aaa aaY abw -adZ -awW +aec +avd acW awW avc @@ -104710,8 +105001,8 @@ fDS iLd baw sgU -baw -uvk +xVF +dLz trb aaC bdH @@ -104855,7 +105146,7 @@ aaa aaY abs adq -add +ckE ajI add fsU @@ -104913,7 +105204,7 @@ qys gBW aJU tiW -aJU +hXD pgD tQV aaY @@ -115309,7 +115600,7 @@ kxd viu nsY iIP -nna +kxd dDt nsY xiz @@ -115512,8 +115803,8 @@ vHq vvY nsY pPV -umY -npB +bxC +jiU nsY glr mhl @@ -115932,7 +116223,7 @@ aLJ eBg dAO cEG -ckE +eBg dYX tBF lBz @@ -116573,7 +116864,7 @@ bJz bdg wLV wLV -nMM +wLV wLV wLV wNT @@ -121500,7 +121791,7 @@ aag aag abh acx -aeC +adQ ajs aeC wXh @@ -121560,7 +121851,7 @@ eyG kpo vcE kUV -vcE +mvH rRq uOi aag @@ -121703,7 +121994,7 @@ aah aah abi acE -aeA +adZ ajk aeA asY @@ -121763,7 +122054,7 @@ deg wLu lJY xVS -lJY +fqg uGa uyC aah @@ -121906,7 +122197,7 @@ bdH bdH abi acT -aeA +adZ ajk aeA atp @@ -121966,7 +122257,7 @@ pfH wlF lJY xVS -lJY +fqg mIA uyC bdH @@ -130882,7 +131173,7 @@ cxo jWh uUV rsW -rsW +djN fnQ jWh lbB @@ -131084,7 +131375,7 @@ xct cxo jWh dkS -rsW +vba naQ fnQ jWh @@ -131267,7 +131558,7 @@ ptK dmQ psm psm -eky +qyH arV wZX eky @@ -131281,7 +131572,7 @@ aDQ eky wZX arV -eky +dtv vuv vuv cxo @@ -131470,7 +131761,7 @@ dmQ aeq psm aNe -eky +hiN arV wZX eky @@ -131484,7 +131775,7 @@ aHe eky wZX arV -eky +fXM aNe vuv ahb @@ -131673,7 +131964,7 @@ dmQ jXY psm atY -aMT +qkj aMT svl pzJ @@ -131687,7 +131978,7 @@ qDt pzJ sQO aMT -aMT +rWF atY vuv woM @@ -131876,7 +132167,7 @@ dmQ atD psm psm -aRp +vHl aRp jBX akS @@ -132306,7 +132597,7 @@ qMu qMu qMu euY -vME +iuw jHL wOK uIv @@ -132475,7 +132766,7 @@ cuC riJ kHY uhM -fcP +uvk xJn cuC aag @@ -132509,7 +132800,7 @@ aag aag bYn tAh -thV +bfe rDb qjV rID @@ -132712,7 +133003,7 @@ mNX qOk bYn bYn -tjj +qQL kHS rID bYn @@ -133909,7 +134200,7 @@ xVk aad jbq qtR -avu +jWC eky eky nJu @@ -133917,7 +134208,7 @@ aNl eky eky eky -aMU +aDc qtR jbq ajZ @@ -136142,7 +136433,7 @@ xVk aad jbq aNe -avu +jWC eky eky esT @@ -136150,7 +136441,7 @@ nYE orH eky eky -aMU +aDc aNe jbq ajZ @@ -136345,7 +136636,7 @@ xVk aad jbq atY -avu +jWC eky eky bAe @@ -136353,7 +136644,7 @@ aBG sGh eky eky -aMU +aDc atY jbq ajZ @@ -136548,7 +136839,7 @@ xVk aad aPw qpU -aqJ +ykD dqj eky xaS @@ -136556,7 +136847,7 @@ ejt mPf eky gUV -aqp +wKS qpU aPw ajZ @@ -139849,7 +140140,7 @@ lmz daz czG ylg -ylg +oIY daz daz daz From 7d01d79301481eb97f2bf5d80df1f911336795fb Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 9 Nov 2023 19:03:02 +0000 Subject: [PATCH 006/355] Automatic changelog for PR #4864 [ci skip] --- html/changelogs/AutoChangeLog-pr-4864.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4864.yml diff --git a/html/changelogs/AutoChangeLog-pr-4864.yml b/html/changelogs/AutoChangeLog-pr-4864.yml new file mode 100644 index 000000000000..da7d41749ec3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4864.yml @@ -0,0 +1,5 @@ +author: "SpartanBobby" +delete-after: True +changes: + - maptweak: "fixes conflicting tiles on USS Almayer squad bunks" + - maptweak: "updates multiple bedrooms and closet area detailing" \ No newline at end of file From 653208ad498203f5877645ef312f9115fb8fc188 Mon Sep 17 00:00:00 2001 From: fira Date: Thu, 9 Nov 2023 20:12:42 +0100 Subject: [PATCH 007/355] Should fix pumpkins, PUMPKINS EVERYWHERE (#4881) # About the pull request Commit from https://github.com/PvE-CMSS13/PvE-CMSS13/commit/0aa95b1d3692b63eed6b59ba5bca27db4f5faae6 Turns out i'm a monkey and didn't think about This One Small Thing when refactoring, so the decorator keeps applying even without being active. Neat huh. # Explain why it's good for the game Pumpkins overstepping their bounds. It's not much of a holiday if it's on all the time... # Changelog :cl: MorrowWolf fix: Fixed Pumpkins appearing past season. /:cl: Co-authored-by: Morrow --- code/controllers/subsystem/game_decorator.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/game_decorator.dm b/code/controllers/subsystem/game_decorator.dm index cfee0406f84a..dd53b647d1a8 100644 --- a/code/controllers/subsystem/game_decorator.dm +++ b/code/controllers/subsystem/game_decorator.dm @@ -20,7 +20,7 @@ SUBSYSTEM_DEF(game_decorator) var/defer_decoration = TRUE //! So map decoration is done post-setup after nightmare and spawners /datum/game_decorator/New() - if(defer_decoration) + if(defer_decoration && is_active_decor()) RegisterSignal(SSdcs, COMSIG_GLOB_MODE_POSTSETUP, PROC_REF(defered_decoration)) /datum/game_decorator/proc/is_active_decor() From 5352fd3342ecfbccb62d96fd594b5188ab4e77ce Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 9 Nov 2023 19:21:46 +0000 Subject: [PATCH 008/355] Automatic changelog for PR #4881 [ci skip] --- html/changelogs/AutoChangeLog-pr-4881.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4881.yml diff --git a/html/changelogs/AutoChangeLog-pr-4881.yml b/html/changelogs/AutoChangeLog-pr-4881.yml new file mode 100644 index 000000000000..762f2f005ef8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4881.yml @@ -0,0 +1,4 @@ +author: "MorrowWolf" +delete-after: True +changes: + - bugfix: "Fixed Pumpkins appearing past season." \ No newline at end of file From 6b639444ca09e11a6e405d3537e2bf971ce6456d Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 10 Nov 2023 01:09:05 +0000 Subject: [PATCH 009/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4837.yml | 5 ----- html/changelogs/AutoChangeLog-pr-4863.yml | 5 ----- html/changelogs/AutoChangeLog-pr-4864.yml | 5 ----- html/changelogs/AutoChangeLog-pr-4872.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4881.yml | 4 ---- html/changelogs/archive/2023-11.yml | 14 ++++++++++++++ 6 files changed, 14 insertions(+), 23 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4837.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4863.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4864.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4872.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4881.yml diff --git a/html/changelogs/AutoChangeLog-pr-4837.yml b/html/changelogs/AutoChangeLog-pr-4837.yml deleted file mode 100644 index e7f41cf22266..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4837.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "MrDas" -delete-after: True -changes: - - bugfix: "You can no longer see through solid rear drop ship doors." - - code_imp: "Moved filler turf logic from almayer airlocks to its parent door." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4863.yml b/html/changelogs/AutoChangeLog-pr-4863.yml deleted file mode 100644 index 3fb781dcb8be..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4863.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed imaginary friend merge ability preventing hearing if ghost ears are set to only nearby." - - bugfix: "Fixed imaginary friend hide ability not updating its icons." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4864.yml b/html/changelogs/AutoChangeLog-pr-4864.yml deleted file mode 100644 index da7d41749ec3..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4864.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SpartanBobby" -delete-after: True -changes: - - maptweak: "fixes conflicting tiles on USS Almayer squad bunks" - - maptweak: "updates multiple bedrooms and closet area detailing" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4872.yml b/html/changelogs/AutoChangeLog-pr-4872.yml deleted file mode 100644 index 2d08135f4a9f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4872.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed fax template images in CDN mode" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4881.yml b/html/changelogs/AutoChangeLog-pr-4881.yml deleted file mode 100644 index 762f2f005ef8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4881.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MorrowWolf" -delete-after: True -changes: - - bugfix: "Fixed Pumpkins appearing past season." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 728ad07e8a98..32dfd2e8a1c1 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -152,3 +152,17 @@ - rscadd: You can now label crate with package wrap, which will also be shown during overwatch supply drop alert. - mapadd: Added more packaging wrap to Requisitions. +2023-11-10: + Drathek: + - bugfix: Fixed fax template images in CDN mode + - bugfix: Fixed imaginary friend merge ability preventing hearing if ghost ears + are set to only nearby. + - bugfix: Fixed imaginary friend hide ability not updating its icons. + MorrowWolf: + - bugfix: Fixed Pumpkins appearing past season. + MrDas: + - bugfix: You can no longer see through solid rear drop ship doors. + - code_imp: Moved filler turf logic from almayer airlocks to its parent door. + SpartanBobby: + - maptweak: fixes conflicting tiles on USS Almayer squad bunks + - maptweak: updates multiple bedrooms and closet area detailing From 2e8f3a324492288a4f216f217bfbe16bd4506aa5 Mon Sep 17 00:00:00 2001 From: QuickLode <63271983+QuickLode@users.noreply.github.com> Date: Fri, 10 Nov 2023 14:50:50 -0800 Subject: [PATCH 010/355] M4 Synthetic PMC 'armor' changes p1 (#4867) # About the pull request this is #4758 but atomized, this one only changes code, next one will only change sprite. the conflicts involved with sprites was quite ridiculous Basically M4 PMC Synthetic 'armor' stated it offered 'maximum protection' even though it offers quite literally 0. Furthermore this complete lack of protection does not constitute the 20% slowdown netted. So I'm fixing the description to state clearly that there is NO ARMOR OFFERED and furthermore, lowering it to a 10% slowdown(Justified by having 1 extra storage space?). I think this is a step in teh right direction for now. 10% comes from a new category called SUPERLIGHT which will be used for this only atm. May go to other stuff later. # Explain why it's good for the game Description should match what an item offers and not be misleading. If it says it has armor - it should have armor. If it isn't gonna have armor, it shouldn't say so. Next, 20% slowdown is A HUGE price for 1 single storage slot. Its almost ridiculous. Hopefully 10% is better :) # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: SUPERLIGHT armor category. balance: M4 Synthetic Armor slows by 10% to justify having 1 extra storage slot. spellcheck: Clarifies M4 Synthetic Armor description that it does not have any armor whatsoever. /:cl: --- code/__DEFINES/conflict.dm | 1 + code/modules/clothing/suits/marine_armor.dm | 5 +++-- maps/map_files/LV624/hydro/30.destroyed.dmm | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/conflict.dm b/code/__DEFINES/conflict.dm index 0820c709cdae..d69f0891ffa0 100644 --- a/code/__DEFINES/conflict.dm +++ b/code/__DEFINES/conflict.dm @@ -109,6 +109,7 @@ #define SHOES_SLOWDOWN -1 #define SLOWDOWN_ARMOR_NONE 0 +#define SLOWDOWN_ARMOR_SUPER_LIGHT 0.10 #define SLOWDOWN_ARMOR_VERY_LIGHT 0.20 #define SLOWDOWN_ARMOR_LIGHT 0.35 #define SLOWDOWN_ARMOR_MEDIUM 0.55 diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm index 6cf99cebb673..fe37ba86eef2 100644 --- a/code/modules/clothing/suits/marine_armor.dm +++ b/code/modules/clothing/suits/marine_armor.dm @@ -1107,8 +1107,8 @@ item_state_slots = list(WEAR_JACKET = "pmc_sniper") /obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth - name = "\improper M4 synthetic PMC armor" - desc = "A modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, offering protection and storage while not restricting movement." + name = "\improper M4 Synthetic PMC armor" + desc = "A serious modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, with every armor insert removed. It's designed with the idea of a high speed lifesaver in mind." time_to_unequip = 0.5 SECONDS time_to_equip = 1 SECONDS armor_melee = CLOTHING_ARMOR_NONE @@ -1120,6 +1120,7 @@ armor_rad = CLOTHING_ARMOR_NONE armor_internaldamage = CLOTHING_ARMOR_NONE storage_slots = 3 + slowdown = SLOWDOWN_ARMOR_SUPER_LIGHT /obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth/Initialize() flags_atom |= NO_NAME_OVERRIDE diff --git a/maps/map_files/LV624/hydro/30.destroyed.dmm b/maps/map_files/LV624/hydro/30.destroyed.dmm index 84e9ebb5c814..09eb12287a58 100644 --- a/maps/map_files/LV624/hydro/30.destroyed.dmm +++ b/maps/map_files/LV624/hydro/30.destroyed.dmm @@ -164,8 +164,8 @@ /area/lv624/lazarus/hydroponics) "mK" = ( /obj/item/clothing/suit/storage/marine/veteran/pmc/light/synth{ - desc = "A modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, offering protection and storage while not restricting movement. This set seems damaged..."; - name = "damaged M4 synthetic PMC armor"; + desc = "A serious modification of the standard Armat Systems M3 armor. This variant was designed for PMC Support Units in the field, with every armor insert removed. It's designed with the idea of a high speed lifesaver in mind. This set seems damaged..."; + name = "damaged M4 Synthetic PMC armor"; pixel_x = -5; pixel_y = -5 }, From aa43726a42aff198b84c1fef131f75bf58745440 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 10 Nov 2023 23:00:24 +0000 Subject: [PATCH 011/355] Automatic changelog for PR #4867 [ci skip] --- html/changelogs/AutoChangeLog-pr-4867.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4867.yml diff --git a/html/changelogs/AutoChangeLog-pr-4867.yml b/html/changelogs/AutoChangeLog-pr-4867.yml new file mode 100644 index 000000000000..6bd473fa2d86 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4867.yml @@ -0,0 +1,6 @@ +author: "QuickLode" +delete-after: True +changes: + - rscadd: "SUPERLIGHT armor category." + - balance: "M4 Synthetic Armor slows by 10% to justify having 1 extra storage slot." + - spellcheck: "Clarifies M4 Synthetic Armor description that it does not have any armor whatsoever." \ No newline at end of file From c0f9e9d7a3c1e820bc4a88f7320df610c45de4e5 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 11 Nov 2023 02:11:17 +0000 Subject: [PATCH 012/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4867.yml | 6 ------ html/changelogs/archive/2023-11.yml | 6 ++++++ 2 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4867.yml diff --git a/html/changelogs/AutoChangeLog-pr-4867.yml b/html/changelogs/AutoChangeLog-pr-4867.yml deleted file mode 100644 index 6bd473fa2d86..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4867.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "QuickLode" -delete-after: True -changes: - - rscadd: "SUPERLIGHT armor category." - - balance: "M4 Synthetic Armor slows by 10% to justify having 1 extra storage slot." - - spellcheck: "Clarifies M4 Synthetic Armor description that it does not have any armor whatsoever." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 32dfd2e8a1c1..89563f82965e 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -166,3 +166,9 @@ SpartanBobby: - maptweak: fixes conflicting tiles on USS Almayer squad bunks - maptweak: updates multiple bedrooms and closet area detailing +2023-11-11: + QuickLode: + - rscadd: SUPERLIGHT armor category. + - balance: M4 Synthetic Armor slows by 10% to justify having 1 extra storage slot. + - spellcheck: Clarifies M4 Synthetic Armor description that it does not have any + armor whatsoever. From 215b7d8a6129c5db57c10d85548bd518451f908c Mon Sep 17 00:00:00 2001 From: spartanbobby <71467726+spartanbobby@users.noreply.github.com> Date: Sat, 11 Nov 2023 09:13:32 +0000 Subject: [PATCH 013/355] Almayer: Turns (mostly) empty maint room into Armourer workshop with old L42As (#4888) # About the pull request This PR attempts to detail a maint room on the Almayer into a small workshop and adds L42As to the Almayer as a homage to our old battle rifle and to have this lore tidbit referenced ingame https://i.imgur.com/hfQNpem.png # Explain why it's good for the game While I agree with the L42As replacement with the M4RA there were some people who prefer the look and sound design of the L42A and may have felt kinda left behind, since the two guns are basically the same there is no real harm in placing a few of them with supporting magazines in this room that was already sparsely detailed I could imagine possible roleplay interactions "Why the hell are you using that piece of crap L42A not even the USCM wants those things" as well as my prior statement of it being a good excuse to canonize a lore tidbit into the game itself Some things to note there are 9 L42As and two boxes of regular magazines (32 magazines), 19 magazines of L42A AP (empty), and a few M39s and M41As so the place isn't only L42A rifles, the noticeboard has a unique flavor text written by tophat penguin and the secure closets the majority of L42As spawn in are locked by default it's important to note that to my understanding right now the L42A and M4RA are basically the same but if in the future a noticeable difference between the guns appears the L42As in this room may have to be removed # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: SpartanBobby Tophatpenguin maptweak: redetails a room on the upper deck of the USS Almayer, places a few L42As in this room /:cl: --- maps/map_files/USS_Almayer/USS_Almayer.dmm | 261 +++++++++++++++++++-- 1 file changed, 240 insertions(+), 21 deletions(-) diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index c6ae319f0601..e858c128f1d7 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -19958,6 +19958,16 @@ /obj/docking_port/stationary/marine_dropship/almayer_hangar_1, /turf/open/floor/plating, /area/almayer/hallways/hangar) +"bGa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "bGb" = ( /turf/closed/wall/almayer, /area/almayer/hallways/port_hallway) @@ -23414,6 +23424,10 @@ pixel_x = -7; pixel_y = 12 }, +/obj/item/weapon/gun/rifle/l42a{ + pixel_x = 17; + pixel_y = 6 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -31708,6 +31722,17 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"dZN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "eaf" = ( /obj/structure/machinery/cm_vending/clothing/military_police{ density = 0; @@ -39648,6 +39673,18 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) +"hnE" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/smg/m39{ + pixel_y = 6 + }, +/obj/item/weapon/gun/smg/m39{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "hnV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -42698,6 +42735,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) +"iDK" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "iDN" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -50560,6 +50606,13 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"lPW" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "lQj" = ( /obj/structure/machinery/door_control{ id = "InnerShutter"; @@ -51980,6 +52033,20 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) +"mzl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/supply/weapons/m39{ + pixel_x = 2 + }, +/obj/structure/largecrate/supply/weapons/m41a{ + layer = 3.1; + pixel_x = 6; + pixel_y = 17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "mzo" = ( /turf/closed/wall/almayer, /area/almayer/hull/lower_hull/l_f_p) @@ -52130,6 +52197,10 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) +"mCe" = ( +/obj/structure/largecrate/supply/weapons/pistols, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "mCo" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -56667,6 +56738,36 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"ouu" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = -3 + }, +/obj/structure/noticeboard{ + desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "ouB" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, @@ -59466,6 +59567,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) +"pLJ" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "pLO" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -66755,6 +66862,15 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"sNx" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Armourer's Workshop"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hull/upper_hull/u_m_s) "sNz" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -67429,6 +67545,19 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell) +"tbC" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "tbD" = ( /obj/structure/ladder{ height = 2; @@ -67580,6 +67709,9 @@ /obj/structure/machinery/light/small{ dir = 1 }, +/obj/structure/largecrate/random/secure{ + pixel_x = -5 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -68226,6 +68358,61 @@ /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/lifeboat_pumps/south1) +"trg" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "trB" = ( /turf/open/floor/almayer{ dir = 10; @@ -68793,6 +68980,8 @@ /obj/item/tool/weldpack{ pixel_y = 15 }, +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/welding, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -69338,7 +69527,9 @@ }, /area/almayer/hallways/port_hallway) "tQE" = ( -/obj/item/clothing/head/welding, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 13 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -69877,7 +70068,10 @@ /area/almayer/command/computerlab) "uaZ" = ( /obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/m41a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -70957,6 +71151,9 @@ /obj/structure/surface/rack, /obj/item/stack/cable_coil, /obj/item/attachable/flashlight/grip, +/obj/item/ammo_box/magazine/l42a{ + pixel_y = 14 + }, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -71500,7 +71697,11 @@ /area/almayer/hull/lower_hull/l_m_s) "uGz" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate/random/secure, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -76076,6 +76277,8 @@ /area/almayer/squads/bravo) "wta" = ( /obj/structure/closet/crate, +/obj/item/ammo_box/magazine/l42a, +/obj/item/ammo_box/magazine/l42a, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -76891,6 +77094,11 @@ dir = 1 }, /area/almayer/medical/containment/cell) +"wLE" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "wLG" = ( /obj/item/bedsheet/blue{ layer = 3.2 @@ -80487,6 +80695,17 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"yfQ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/m41a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "yfS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -117946,7 +118165,7 @@ abg caF aar aar -tiM +sNx aar aar ael @@ -118148,7 +118367,7 @@ bWs abg caF aar -nuY +tQE sTB uaZ bUA @@ -118351,9 +118570,9 @@ acO aJs cbN aar -sTB +mzl aap -aao +iDK vFb ael afH @@ -118757,10 +118976,10 @@ acP bUE qFQ aar -aao +ouu aap aao -sTB +yfQ ael afJ agY @@ -118960,10 +119179,10 @@ acG abx caF aar -aap +mCe aap aao -sTB +yfQ ael afK ahc @@ -119366,7 +119585,7 @@ acG abx caF aar -tiM +sNx aar aar aar @@ -119572,7 +119791,7 @@ aar aao aao uGz -uGz +dZN adO afM fpR @@ -119772,10 +119991,10 @@ jSY abx hTy aar -wFm -tQE +trg aao -sTB +aao +bGa adO afN ahh @@ -119975,10 +120194,10 @@ acP bUE qFQ aar -aap -aap +wLE +pLJ aao -fZF +tbC adO afO ahh @@ -120179,9 +120398,9 @@ abg ccf aar tDA -aao +lPW aap -fZF +hnE adO jkj ahh From a97993d42982c9666de65140b3eff81b80a92eeb Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sat, 11 Nov 2023 09:22:48 +0000 Subject: [PATCH 014/355] Automatic changelog for PR #4888 [ci skip] --- html/changelogs/AutoChangeLog-pr-4888.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4888.yml diff --git a/html/changelogs/AutoChangeLog-pr-4888.yml b/html/changelogs/AutoChangeLog-pr-4888.yml new file mode 100644 index 000000000000..72f497abefdd --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4888.yml @@ -0,0 +1,4 @@ +author: "SpartanBobby Tophatpenguin" +delete-after: True +changes: + - maptweak: "redetails a room on the upper deck of the USS Almayer, places a few L42As in this room" \ No newline at end of file From 485afd96d16f4df22dbbb46f214df931d24a2eb8 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sun, 12 Nov 2023 01:14:17 +0000 Subject: [PATCH 015/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4888.yml | 4 ---- html/changelogs/archive/2023-11.yml | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4888.yml diff --git a/html/changelogs/AutoChangeLog-pr-4888.yml b/html/changelogs/AutoChangeLog-pr-4888.yml deleted file mode 100644 index 72f497abefdd..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4888.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpartanBobby Tophatpenguin" -delete-after: True -changes: - - maptweak: "redetails a room on the upper deck of the USS Almayer, places a few L42As in this room" \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 89563f82965e..f72503ae13eb 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -172,3 +172,7 @@ - balance: M4 Synthetic Armor slows by 10% to justify having 1 extra storage slot. - spellcheck: Clarifies M4 Synthetic Armor description that it does not have any armor whatsoever. +2023-11-12: + SpartanBobby Tophatpenguin: + - maptweak: redetails a room on the upper deck of the USS Almayer, places a few + L42As in this room From b16fa749de6145cf4daa247a721d2ee0c9629823 Mon Sep 17 00:00:00 2001 From: spartanbobby <71467726+spartanbobby@users.noreply.github.com> Date: Mon, 13 Nov 2023 08:41:59 +0000 Subject: [PATCH 016/355] FIXES BIG RED HALLSIDEWALK (#4906) # About the pull request IT'S MEANT TO BE ONE TO THE RIGHT ON THIS INCERT BROKEN https://i.gyazo.com/b0587529740abf9470c16d24e1050c9e.png # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl:SpartanBobby maptweak: fixes broken sidewalk on bigred /:cl: --- .../standalone/crashlanding-offices.dmm | 38 +++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm index 652b4df3bdd3..e0c625805375 100644 --- a/maps/map_files/BigRed/standalone/crashlanding-offices.dmm +++ b/maps/map_files/BigRed/standalone/crashlanding-offices.dmm @@ -23,8 +23,9 @@ }, /area/bigredv2/outside/c) "ag" = ( -/turf/open/mars_cave{ - icon_state = "mars_dirt_4" +/turf/open/floor{ + dir = 8; + icon_state = "asteroidwarning" }, /area/bigredv2/outside/e) "ah" = ( @@ -38,13 +39,12 @@ /area/bigredv2/outside/e) "aj" = ( /turf/open/mars{ - icon_state = "mars_dirt_11" + icon_state = "mars_dirt_12" }, /area/bigredv2/outside/e) "ak" = ( -/turf/open/floor{ - dir = 8; - icon_state = "asteroidwarning" +/turf/open/mars{ + icon_state = "mars_dirt_11" }, /area/bigredv2/outside/e) "al" = ( @@ -54,8 +54,8 @@ }, /area/bigredv2/outside/e) "am" = ( -/turf/open/mars{ - icon_state = "mars_dirt_12" +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" }, /area/bigredv2/outside/e) "an" = ( @@ -2147,8 +2147,8 @@ Ha dq "} (20,1,1) = {" -aj -ag +ai +at aA dX dX @@ -2175,7 +2175,7 @@ PR "} (21,1,1) = {" ak -ak +am aA aG dX @@ -2201,9 +2201,9 @@ Ha PR "} (22,1,1) = {" -al -al -aA +ag +ag +aG aG dX ap @@ -2228,9 +2228,9 @@ Ha PR "} (23,1,1) = {" -am -ag -aA +al +al +aG aG aG ap @@ -2255,8 +2255,8 @@ Ha dq "} (24,1,1) = {" -ai -at +aj +am aA aG aG From f1036b8cca8a8f87f6bbf9f723b50d49e47f2289 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 08:50:50 +0000 Subject: [PATCH 017/355] Automatic changelog for PR #4906 [ci skip] --- html/changelogs/AutoChangeLog-pr-4906.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4906.yml diff --git a/html/changelogs/AutoChangeLog-pr-4906.yml b/html/changelogs/AutoChangeLog-pr-4906.yml new file mode 100644 index 000000000000..4b058bcd6a76 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4906.yml @@ -0,0 +1,4 @@ +author: "SpartanBobby" +delete-after: True +changes: + - maptweak: "fixes broken sidewalk on bigred" \ No newline at end of file From 45cbeba3895d4f617f7b11d250b5acc6b7bd6a7f Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Mon, 13 Nov 2023 08:42:19 +0000 Subject: [PATCH 018/355] Lets observer with SecHUD enabled see sec records on examine. (#4890) # About the pull request Lets observer with Security HUD switched on see and read security records. # Explain why it's good for the game Entertaining to see why the Bravo SL is wanted on the frontline after you're dead. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Observer with Security HUD enabled can examine and read security records. /:cl: --- code/modules/mob/living/carbon/human/examine.dm | 17 ++++++++++++++--- code/modules/mob/living/carbon/human/human.dm | 9 +++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 6e99ca1e5a15..26c8fd867f72 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -5,6 +5,10 @@ if(user.sdisabilities & DISABILITY_BLIND || user.blinded || user.stat==UNCONSCIOUS) return list(SPAN_NOTICE("Something is there but you can't see it.")) + var/mob/dead/observer/observer + if(isobserver(user)) + observer = user + if(isxeno(user)) var/msg = "This is " @@ -435,7 +439,7 @@ for(var/implant in get_visible_implants()) msg += SPAN_WARNING("[t_He] has \a [implant] sticking out of [t_his] flesh!\n") - if(hasHUD(user,"security")) + if(hasHUD(user,"security") || (observer && observer.HUD_toggled["Security HUD"])) var/perpref @@ -450,8 +454,15 @@ if(R.fields["id"] == E.fields["id"]) criminal = R.fields["criminal"] - msg += "Criminal status: \[[criminal]\]\n" - msg += "Security records: \[View\] \[Add comment\]\n" + msg += "Criminal status:" + if(!observer) + msg += "\[[criminal]\]\n" + else + msg += "\[[criminal]\]\n" + + msg += "Security records: \[View\]" + if(!observer) + msg += " \[Add comment\]\n" if(hasHUD(user,"medical")) var/cardcolor = holo_card_color diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6bceb994a2a1..2ec8ccf2531d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -612,7 +612,7 @@ to_chat(usr, SPAN_DANGER("Unable to locate a data core entry for this person.")) if(href_list["secrecord"]) - if(hasHUD(usr,"security")) + if(hasHUD(usr,"security") || isobserver(usr)) var/perpref = null var/read = 0 @@ -624,7 +624,7 @@ if(E.fields["ref"] == perpref) for(var/datum/data/record/R in GLOB.data_core.security) if(R.fields["id"] == E.fields["id"]) - if(hasHUD(usr,"security")) + if(hasHUD(usr,"security") || isobserver(usr)) to_chat(usr, "Name: [R.fields["name"]] Criminal Status: [R.fields["criminal"]]") to_chat(usr, "Incidents: [R.fields["incident"]]") to_chat(usr, "\[View Comment Log\]") @@ -633,7 +633,7 @@ if(!read) to_chat(usr, SPAN_DANGER("Unable to locate a data core entry for this person.")) - if(href_list["secrecordComment"] && hasHUD(usr,"security")) + if(href_list["secrecordComment"] && (hasHUD(usr,"security") || isobserver(usr))) var/perpref = null if(wear_id) var/obj/item/card/id/ID = wear_id.GetID() @@ -662,7 +662,8 @@ continue comment_markup += text("Comment deleted by [] at []
", comment["deleted_by"], comment["deleted_at"]) to_chat(usr, comment_markup) - to_chat(usr, "\[Add comment\]
") + if(!isobserver(usr)) + to_chat(usr, "\[Add comment\]
") if(!read) to_chat(usr, SPAN_DANGER("Unable to locate a data core entry for this person.")) From 58e7e4a09d9b05099f8248b24636e914b7a9d4c3 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:05:15 +0000 Subject: [PATCH 019/355] Automatic changelog for PR #4890 [ci skip] --- html/changelogs/AutoChangeLog-pr-4890.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4890.yml diff --git a/html/changelogs/AutoChangeLog-pr-4890.yml b/html/changelogs/AutoChangeLog-pr-4890.yml new file mode 100644 index 000000000000..a97e5129371c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4890.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - rscadd: "Observer with Security HUD enabled can examine and read security records." \ No newline at end of file From f3051bc7ceb4033b235d0b9fc6e0c7539710fef6 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Mon, 13 Nov 2023 08:43:04 +0000 Subject: [PATCH 020/355] Kills var/burrow replaces with trait (#4893) # About the pull request Replaces var/burrow with `TRAIT_ABILITY_BURROWED` # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Replaces burrow var from Xenomorph with burrowed trait /:cl: --- code/_onclick/hud/screen_objects.dm | 4 ++-- code/_onclick/xeno.dm | 2 +- .../mob/living/carbon/xenomorph/XenoAttacks.dm | 2 +- .../mob/living/carbon/xenomorph/XenoOverwatch.dm | 2 +- .../modules/mob/living/carbon/xenomorph/XenoProcs.dm | 2 +- .../modules/mob/living/carbon/xenomorph/Xenomorph.dm | 7 +++---- .../xenomorph/abilities/ability_helper_procs.dm | 2 +- .../abilities/burrower/burrower_abilities.dm | 2 +- .../xenomorph/abilities/burrower/burrower_powers.dm | 12 +++++------- .../carbon/xenomorph/abilities/general_powers.dm | 8 ++++---- .../xenomorph/abilities/runner/runner_powers.dm | 2 +- .../mob/living/carbon/xenomorph/attack_alien.dm | 4 ++-- .../mob/living/carbon/xenomorph/castes/Burrower.dm | 12 ++++++------ code/modules/mob/living/living_verbs.dm | 2 +- code/modules/vehicles/multitile/multitile_bump.dm | 2 +- 15 files changed, 31 insertions(+), 34 deletions(-) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index b49bce4111f0..d114aff6b7cb 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -535,7 +535,7 @@ if(!user.hive.living_xeno_queen) to_chat(user, SPAN_WARNING("Without a queen your psychic link is broken!")) return FALSE - if(user.burrow || user.is_mob_incapacitated() || user.buckled) + if(HAS_TRAIT(user, TRAIT_ABILITY_BURROWED) || user.is_mob_incapacitated() || user.buckled) return FALSE user.hive.mark_ui.update_all_data() user.hive.mark_ui.open_mark_menu(user) @@ -583,7 +583,7 @@ if(!user.hive.living_xeno_queen) to_chat(user, SPAN_WARNING("Your hive doesn't have a living queen!")) return FALSE - if(user.burrow || user.is_mob_incapacitated() || user.buckled) + if(HAS_TRAIT(user, TRAIT_ABILITY_BURROWED) || user.is_mob_incapacitated() || user.buckled) return FALSE user.overwatch(user.hive.living_xeno_queen) diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm index 62d612790930..adb637dfe8fa 100644 --- a/code/_onclick/xeno.dm +++ b/code/_onclick/xeno.dm @@ -3,7 +3,7 @@ */ /mob/living/carbon/xenomorph/UnarmedAttack(atom/target, proximity, click_parameters, tile_attack = FALSE, ignores_resin = FALSE) - if(lying || burrow) //No attacks while laying down + if(lying || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) //No attacks while laying down return FALSE var/mob/alt diff --git a/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm b/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm index 6361ff595b10..317c7999e586 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoAttacks.dm @@ -90,7 +90,7 @@ //Hot hot Aliens on Aliens action. //Actually just used for eating people. /mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/M) - if (M.fortify || M.burrow) + if (M.fortify || HAS_TRAIT(M, TRAIT_ABILITY_BURROWED)) return XENO_NO_DELAY_ACTION if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) diff --git a/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm b/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm index 46e144a1b1f5..68c422619d32 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoOverwatch.dm @@ -12,7 +12,7 @@ var/mob/living/carbon/xenomorph/X = owner if(!istype(X)) return FALSE - if(X.is_mob_incapacitated() || X.buckled || X.burrow) + if(X.is_mob_incapacitated() || X.buckled || HAS_TRAIT(X, TRAIT_ABILITY_BURROWED)) return FALSE else return TRUE diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index 3fd8e53024d5..27895555a9f1 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -656,7 +656,7 @@ /mob/living/carbon/xenomorph/burn_skin(burn_amount) - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return FALSE if(caste.fire_immunity & FIRE_IMMUNITY_NO_DAMAGE) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 76403bf89f52..068e99ecbf4f 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -274,7 +274,6 @@ var/tunnel = FALSE /// for check on lurker invisibility var/stealth = FALSE - var/burrow = FALSE var/fortify = FALSE var/crest_defense = FALSE /// 0/FALSE - upright, 1/TRUE - all fours @@ -541,7 +540,7 @@ /mob/living/carbon/xenomorph/proc/fire_immune(mob/living/L) SIGNAL_HANDLER - if(L.fire_reagent?.fire_penetrating && !burrow) + if(L.fire_reagent?.fire_penetrating && !HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return return COMPONENT_CANCEL_IGNITION @@ -554,7 +553,7 @@ . = COMPONENT_NO_BURN // Burrowed xenos also cannot be ignited - if((caste.fire_immunity & FIRE_IMMUNITY_NO_IGNITE) || burrow) + if((caste.fire_immunity & FIRE_IMMUNITY_NO_IGNITE) || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) . |= COMPONENT_NO_IGNITE if(caste.fire_immunity & FIRE_IMMUNITY_XENO_FRENZY) . |= COMPONENT_XENO_FRENZY @@ -746,7 +745,7 @@ if(SEND_SIGNAL(AM, COMSIG_MOVABLE_XENO_START_PULLING, src) & COMPONENT_ALLOW_PULL) return do_pull(AM, lunge, no_msg) - if(burrow) + if(HAS_TRAIT(src,TRAIT_ABILITY_BURROWED)) return if(!isliving(AM)) return FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm index 705837699275..6b1c7d14b262 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm @@ -11,7 +11,7 @@ to_chat(src, SPAN_WARNING("[O] is too far away.")) return - if(!isturf(loc) || burrow) + if(!isturf(loc) || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) to_chat(src, SPAN_WARNING("You can't melt [O] from here!")) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm index 84b6c5ff5fef..747a3f90a691 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm @@ -11,7 +11,7 @@ /datum/action/xeno_action/activable/burrow/use_ability(atom/A) var/mob/living/carbon/xenomorph/X = owner - if(X.burrow) + if(HAS_TRAIT(X, TRAIT_ABILITY_BURROWED)) X.tunnel(get_turf(A)) else X.burrow() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm index 0501d0fc372e..4ce83f37592c 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm @@ -35,7 +35,6 @@ return // TODO Make immune to all damage here. to_chat(src, SPAN_XENOWARNING("You burrow yourself into the ground.")) - burrow = TRUE frozen = TRUE invisibility = 101 anchored = TRUE @@ -56,20 +55,19 @@ process_burrow() /mob/living/carbon/xenomorph/proc/process_burrow() - if(!burrow) + if(!HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return if(world.time > burrow_timer && !tunnel) burrow_off() if(observed_xeno) overwatch(observed_xeno, TRUE) - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) addtimer(CALLBACK(src, PROC_REF(process_burrow)), 1 SECONDS) /mob/living/carbon/xenomorph/proc/burrow_off() if(caste_type && GLOB.xeno_datum_list[caste_type]) caste = GLOB.xeno_datum_list[caste_type] to_chat(src, SPAN_NOTICE("You resurface.")) - burrow = FALSE if(caste.fire_immunity == FIRE_IMMUNITY_NONE) UnregisterSignal(src, list( COMSIG_LIVING_PREIGNITION, @@ -93,7 +91,7 @@ /mob/living/carbon/xenomorph/proc/do_burrow_cooldown() used_burrow = FALSE - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) to_chat(src, SPAN_NOTICE("You can now surface.")) for(var/X in actions) var/datum/action/act = X @@ -104,7 +102,7 @@ if(!check_state()) return - if(!burrow) + if(!HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) to_chat(src, SPAN_NOTICE("You must be burrowed to do this.")) return @@ -201,7 +199,7 @@ return !xeno.used_tremor /mob/living/carbon/xenomorph/proc/tremor() //More support focused version of crusher earthquakes. - if(burrow || is_ventcrawling) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED) || is_ventcrawling) to_chat(src, SPAN_XENOWARNING("You must be above ground to do this.")) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm index 7a8151d8aa02..1882f2b69157 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm @@ -9,7 +9,7 @@ return if(!xeno.check_state()) return - if(xeno.burrow) + if(HAS_TRAIT(xeno, TRAIT_ABILITY_BURROWED)) return var/turf/turf = xeno.loc @@ -89,7 +89,7 @@ to_chat(src, SPAN_WARNING("You cannot rest while fortified!")) return - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) to_chat(src, SPAN_WARNING("You cannot rest while burrowed!")) return @@ -529,7 +529,7 @@ if (istype(X, /mob/living/carbon/xenomorph/burrower)) var/mob/living/carbon/xenomorph/burrower/B = X - if (B.burrow) + if (HAS_TRAIT(B, TRAIT_ABILITY_BURROWED)) return var/turf/T = get_turf(X) @@ -908,7 +908,7 @@ /datum/action/xeno_action/activable/tail_stab/use_ability(atom/targetted_atom) var/mob/living/carbon/xenomorph/stabbing_xeno = owner - if(stabbing_xeno.burrow || stabbing_xeno.is_ventcrawling) + if(HAS_TRAIT(stabbing_xeno, TRAIT_ABILITY_BURROWED) || stabbing_xeno.is_ventcrawling) to_chat(stabbing_xeno, SPAN_XENOWARNING("You must be above ground to do this.")) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm index 9a29e2cb6da0..71f994612279 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm @@ -58,7 +58,7 @@ to_chat(src, SPAN_WARNING("[O] is too far away.")) return - if(!isturf(loc) || burrow) + if(!isturf(loc) || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) to_chat(src, SPAN_WARNING("You can't melt [O] from here!")) return diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index 25f6108c14f6..649a1c98ce6c 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -9,7 +9,7 @@ /mob/living/carbon/human/attack_alien(mob/living/carbon/xenomorph/M, dam_bonus) - if(M.fortify || M.burrow) + if(M.fortify || HAS_TRAIT(M, TRAIT_ABILITY_BURROWED)) return XENO_NO_DELAY_ACTION var/intent = M.a_intent @@ -220,7 +220,7 @@ //Every other type of nonhuman mob /mob/living/attack_alien(mob/living/carbon/xenomorph/M) - if(M.fortify || M.burrow) + if(M.fortify || HAS_TRAIT(M, TRAIT_ABILITY_BURROWED)) return XENO_NO_DELAY_ACTION switch(M.a_intent) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm b/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm index ead254344e0a..e7118164cf07 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Burrower.dm @@ -86,29 +86,29 @@ /mob/living/carbon/xenomorph/burrower/update_canmove() . = ..() - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) density = FALSE canmove = FALSE return canmove /mob/living/carbon/xenomorph/burrower/ex_act(severity) - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return ..() /mob/living/carbon/xenomorph/burrower/attack_hand() - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return ..() /mob/living/carbon/xenomorph/burrower/attackby() - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return ..() /mob/living/carbon/xenomorph/burrower/get_projectile_hit_chance() . = ..() - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return 0 /datum/behavior_delegate/burrower_base @@ -118,6 +118,6 @@ if(bound_xeno.stat == DEAD) return - if(bound_xeno.burrow) + if(HAS_TRAIT(bound_xeno, TRAIT_ABILITY_BURROWED)) bound_xeno.icon_state = "[bound_xeno.mutation_icon_state] Burrower Burrowed" return TRUE diff --git a/code/modules/mob/living/living_verbs.dm b/code/modules/mob/living/living_verbs.dm index fe95f14182ea..77b996ff6bb0 100644 --- a/code/modules/mob/living/living_verbs.dm +++ b/code/modules/mob/living/living_verbs.dm @@ -13,7 +13,7 @@ if(isxeno(src)) var/mob/living/carbon/xenomorph/xeno = src - if(xeno.burrow) + if(HAS_TRAIT(xeno, TRAIT_ABILITY_BURROWED)) to_chat(src, SPAN_WARNING("You can't resist in your current state.")) return diff --git a/code/modules/vehicles/multitile/multitile_bump.dm b/code/modules/vehicles/multitile/multitile_bump.dm index d9b480866f99..9fc451bfe155 100644 --- a/code/modules/vehicles/multitile/multitile_bump.dm +++ b/code/modules/vehicles/multitile/multitile_bump.dm @@ -740,7 +740,7 @@ //BURROWER /mob/living/carbon/xenomorph/burrower/handle_vehicle_bump(obj/vehicle/multitile/V) - if(burrow) + if(HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) return TRUE else return . = ..() From 387c021e627d364c8d7e662725bdb51edad6eed5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:20:21 +0000 Subject: [PATCH 021/355] Automatic changelog for PR #4893 [ci skip] --- html/changelogs/AutoChangeLog-pr-4893.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4893.yml diff --git a/html/changelogs/AutoChangeLog-pr-4893.yml b/html/changelogs/AutoChangeLog-pr-4893.yml new file mode 100644 index 000000000000..b07b3b6f66d3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4893.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Replaces burrow var from Xenomorph with burrowed trait" \ No newline at end of file From 9be06a2cd1940f3644e2eb9331156ce18b1b3149 Mon Sep 17 00:00:00 2001 From: BeagleGaming1 <56142455+BeagleGaming1@users.noreply.github.com> Date: Mon, 13 Nov 2023 03:43:38 -0500 Subject: [PATCH 022/355] Surface icon baking removal (#4894) # About the pull request I am taking Morrow's PR: https://github.com/PvE-CMSS13/PvE-CMSS13/pull/59 # Explain why it's good for the game Allows you to right-click the table and see all its contents # Changelog :cl: del: Removes icon baking on surfaces (primarily seen on tables) /:cl: --- code/__DEFINES/equipment.dm | 4 +- code/_globalvars/bitfields.dm | 1 - code/game/objects/items/toys/cards.dm | 2 - code/game/objects/structures/surface.dm | 175 ++---------------- code/game/objects/structures/tables_racks.dm | 3 - .../living/carbon/xenomorph/Facehuggers.dm | 2 +- .../vehicles/multitile/multitile_bump.dm | 3 - 7 files changed, 16 insertions(+), 174 deletions(-) diff --git a/code/__DEFINES/equipment.dm b/code/__DEFINES/equipment.dm index 5f8f27a65711..6628a5c925c2 100644 --- a/code/__DEFINES/equipment.dm +++ b/code/__DEFINES/equipment.dm @@ -80,10 +80,8 @@ #define CAN_DIG_SHRAPNEL (1<<11) /// whether it has an animated icon state of "[icon_state]_on" to be used during surgeries. #define ANIMATED_SURGICAL_TOOL (1<<12) -/// The item goes on top of tables, instead of into them with the overlay system -#define NOTABLEMERGE (1<<13) /// Has heat source but isn't 'on fire' and thus can be stored -#define IGNITING_ITEM (1<<14) +#define IGNITING_ITEM (1<<13) //========================================================================================== diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 53dd40ff6035..540c8f085601 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -166,7 +166,6 @@ DEFINE_BITFIELD(flags_item, list( "ITEM_OVERRIDE_NORTHFACE" = ITEM_OVERRIDE_NORTHFACE, "CAN_DIG_SHRAPNEL" = CAN_DIG_SHRAPNEL, "ANIMATED_SURGICAL_TOOL" = ANIMATED_SURGICAL_TOOL, - "NOTABLEMERGE" = NOTABLEMERGE, "IGNITING_ITEM" = IGNITING_ITEM, )) diff --git a/code/game/objects/items/toys/cards.dm b/code/game/objects/items/toys/cards.dm index b6e3bb558ec4..2debd83f9bab 100644 --- a/code/game/objects/items/toys/cards.dm +++ b/code/game/objects/items/toys/cards.dm @@ -21,7 +21,6 @@ icon = 'icons/obj/items/playing_cards.dmi' icon_state = "deck" w_class = SIZE_TINY - flags_item = NOTABLEMERGE var/base_icon = "deck" var/max_cards = 52 @@ -262,7 +261,6 @@ icon = 'icons/obj/items/playing_cards.dmi' icon_state = "empty" w_class = SIZE_TINY - flags_item = NOTABLEMERGE var/concealed = FALSE var/pile_state = FALSE diff --git a/code/game/objects/structures/surface.dm b/code/game/objects/structures/surface.dm index efc69002424f..13a81af2dc3d 100644 --- a/code/game/objects/structures/surface.dm +++ b/code/game/objects/structures/surface.dm @@ -1,159 +1,20 @@ //Surface structures are structures that can have items placed on them /obj/structure/surface health = 100 - var/list/update_types = list( - /obj/item/reagent_container/glass, - /obj/item/storage, - /obj/item/reagent_container/food/snacks - ) - //add items there that behave like structures for whatever dumb reason - var/list/blacklisted_item_types = list( - /obj/item/device/radio/intercom, - /obj/item/device/sentry_computer - ) -/obj/structure/surface/Initialize() - . = ..() - return INITIALIZE_HINT_LATELOAD - -/obj/structure/surface/LateInitialize() - attach_all() - update_icon() - -/obj/structure/surface/Destroy() - detach_all() - . = ..() - -/obj/structure/surface/ex_act(severity, direction, datum/cause_data/cause_data) - health -= severity - if(health <= 0) - var/location = get_turf(src) - handle_debris(severity, direction) - detach_all() - for(var/obj/item/O in loc) - O.explosion_throw(severity, direction) - qdel(src) - if(prob(66)) - create_shrapnel(location, rand(1,4), direction, , /datum/ammo/bullet/shrapnel/light, cause_data) - return TRUE - -/obj/structure/surface/proc/attach_all() - for(var/obj/item/O in loc) - if(in_blacklist(O)) - continue - attach_item(O, FALSE) - draw_item_overlays() - -/obj/structure/surface/proc/in_blacklist(obj/item/O) - for(var/allowed_type in blacklisted_item_types) - if(istype(O, allowed_type)) - return TRUE - return FALSE - -/obj/structure/surface/proc/attach_item(obj/item/O, update = TRUE) - if(!O) +/obj/structure/surface/attackby(obj/item/attacking_item, mob/user, click_data) + if(!user.drop_inv_item_to_loc(attacking_item, loc)) return - if(O.luminosity) //it can't make light as an overlay - return - O.forceMove(src) - RegisterSignal(O, COMSIG_ATOM_DECORATED, PROC_REF(decorate_update)) - if(update) - draw_item_overlays() - -/obj/structure/surface/proc/detach_item(obj/item/O) - O.scatter_item() - UnregisterSignal(O, COMSIG_ATOM_DECORATED) - draw_item_overlays() - return - -/obj/structure/surface/proc/decorate_update(obj/item/O) - SIGNAL_HANDLER - draw_item_overlays() -/obj/structure/surface/proc/detach_all() - overlays.Cut() - for(var/obj/item/O in contents) - UnregisterSignal(O, COMSIG_ATOM_DECORATED) - O.forceMove(loc) + auto_align(attacking_item, click_data) + user.next_move = world.time + 2 + return TRUE -/obj/structure/surface/proc/get_item(list/click_data) - var/i = LAZYLEN(contents) - if(!click_data) - return - if(i < 1) - return FALSE - for(i, i >= 1, i--)//starting from the end because that's where the topmost is - var/obj/item/O = contents[i] - var/bounds_x = text2num(click_data["icon-x"])-1 - O.pixel_x - var/bounds_y = text2num(click_data["icon-y"])-1 - O.pixel_y - if(bounds_x < 0 || bounds_y < 0) - continue - var/icon/I = icon(O.icon, O.icon_state) - var/p = I.GetPixel(bounds_x, bounds_y) - if(p) - return O - return FALSE - -/obj/structure/surface/proc/draw_item_overlays() - overlays.Cut() - for(var/obj/item/O in contents) - var/image/I = image(O.icon) - I.appearance = O.appearance - I.appearance_flags |= RESET_COLOR - I.overlays = O.overlays - LAZYADD(overlays, I) - -/obj/structure/surface/clicked(mob/user, list/mods) - if(mods["shift"] && !mods["middle"]) - var/obj/item/O = get_item(mods) - if(!O) - return ..() - if(O.can_examine(user)) - O.examine(user) - return TRUE - ..() - -/obj/structure/surface/proc/try_to_open_container(mob/user, mods) - if(!Adjacent(user)) - return - - if(ishuman(user) || isrobot(user)) - var/obj/item/O = get_item(mods) - if(O && isstorage(O)) - var/obj/item/storage/S = O - S.open(usr) - return TRUE - -/obj/structure/surface/attack_hand(mob/user, click_data) - . = ..() - if(click_data && click_data["alt"]) - return - var/obj/item/O = get_item(click_data) - if(!O) - return - O.attack_hand(user) - if(!LAZYISIN(contents, O))//in case attack_hand did not pick up the item - detach_item(O) - -/obj/structure/surface/attackby(obj/item/W, mob/user, click_data) - var/obj/item/O = get_item(click_data) - if(!O || click_data["ctrl"])//holding the ctrl key will force it to place the object - // Placing stuff on tables - if(user.drop_inv_item_to_loc(W, loc)) - auto_align(W, click_data) - user.next_move = world.time + 2 - return TRUE - else if(!O.attackby(W, user)) - W.afterattack(O, user, TRUE) - for(var/type in update_types) - if(istype(O, type)) - draw_item_overlays() - -/obj/structure/surface/proc/auto_align(obj/item/W, click_data) - if(!W.center_of_mass) // Clothing, material stacks, generally items with large sprites where exact placement would be unhandy. - W.pixel_x = rand(-W.randpixel, W.randpixel) - W.pixel_y = rand(-W.randpixel, W.randpixel) - W.pixel_z = 0 +/obj/structure/surface/proc/auto_align(obj/item/new_item, click_data) + if(!new_item.center_of_mass) // Clothing, material stacks, generally items with large sprites where exact placement would be unhandy. + new_item.pixel_x = rand(-new_item.randpixel, new_item.randpixel) + new_item.pixel_y = rand(-new_item.randpixel, new_item.randpixel) + new_item.pixel_z = 0 return if(!click_data) @@ -169,16 +30,8 @@ var/cell_x = Clamp(round(mouse_x/CELLSIZE), 0, CELLS-1) // Ranging from 0 to CELLS-1 var/cell_y = Clamp(round(mouse_y/CELLSIZE), 0, CELLS-1) - var/list/center = cached_key_number_decode(W.center_of_mass) - - W.pixel_x = (CELLSIZE * (cell_x + 0.5)) - center["x"] - W.pixel_y = (CELLSIZE * (cell_y + 0.5)) - center["y"] - W.pixel_z = 0 - - if(!(W.flags_item & NOTABLEMERGE)) - attach_item(W) + var/list/center = cached_key_number_decode(new_item.center_of_mass) -/obj/structure/surface/MouseDrop(atom/over) - . = ..() - if(over == usr && usr && usr.client && usr.client.lmb_last_mousedown_mods) - return try_to_open_container(usr, usr.client.lmb_last_mousedown_mods) + new_item.pixel_x = (CELLSIZE * (cell_x + 0.5)) - center["x"] + new_item.pixel_y = (CELLSIZE * (cell_y + 0.5)) - center["y"] + new_item.pixel_z = 0 diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index db3ce98339a3..8d6441293f86 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -434,8 +434,6 @@ verbs -= /obj/structure/surface/table/verb/do_flip verbs += /obj/structure/surface/table/proc/do_put - detach_all() - var/list/targets = list(get_step(src, dir), get_step(src, turn(dir, 45)), get_step(src, turn(dir, -45))) for(var/atom/movable/movable_on_table in get_turf(src)) if(!movable_on_table.anchored) @@ -479,7 +477,6 @@ var/obj/structure/surface/table/T = locate() in get_step(src.loc,D) if(T && T.flipped && T.dir == src.dir) T.unflip() - attach_all() update_icon() update_adjacent() diff --git a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm index 65ae240e201d..26003affa2df 100644 --- a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm @@ -14,7 +14,7 @@ flags_inventory = COVEREYES|ALLOWINTERNALS|COVERMOUTH|ALLOWREBREATH|CANTSTRIP flags_armor_protection = BODY_FLAG_FACE|BODY_FLAG_EYES flags_atom = NO_FLAGS - flags_item = NOBLUDGEON|NOTABLEMERGE + flags_item = NOBLUDGEON throw_range = 1 layer = FACEHUGGER_LAYER black_market_value = 20 diff --git a/code/modules/vehicles/multitile/multitile_bump.dm b/code/modules/vehicles/multitile/multitile_bump.dm index 9fc451bfe155..1f9e7897b0d3 100644 --- a/code/modules/vehicles/multitile/multitile_bump.dm +++ b/code/modules/vehicles/multitile/multitile_bump.dm @@ -106,14 +106,12 @@ return TRUE /obj/structure/surface/handle_vehicle_bump(obj/vehicle/multitile/V) - detach_all() playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] crushes \the [src]!")) qdel(src) return TRUE /obj/structure/surface/table/handle_vehicle_bump(obj/vehicle/multitile/V) - detach_all() playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] crushes \the [src]!")) if(prob(50)) @@ -122,7 +120,6 @@ return TRUE /obj/structure/surface/rack/handle_vehicle_bump(obj/vehicle/multitile/V) - detach_all() playsound(V, 'sound/effects/metal_crash.ogg', 20) visible_message(SPAN_DANGER("\The [V] crushes \the [src]!")) deconstruct() From 11ed04b81fc9ee99603f20d5e86537c4ddb46c19 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:34:31 +0000 Subject: [PATCH 023/355] Automatic changelog for PR #4894 [ci skip] --- html/changelogs/AutoChangeLog-pr-4894.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4894.yml diff --git a/html/changelogs/AutoChangeLog-pr-4894.yml b/html/changelogs/AutoChangeLog-pr-4894.yml new file mode 100644 index 000000000000..c55c2cdc4086 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4894.yml @@ -0,0 +1,4 @@ +author: "BeagleGaming1" +delete-after: True +changes: + - rscdel: "Removes icon baking on surfaces (primarily seen on tables)" \ No newline at end of file From 676b5b14d6cdf6e4a2ee69ac8361061309e0937f Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Mon, 13 Nov 2023 08:43:51 +0000 Subject: [PATCH 024/355] Boiler: replace single letter vars and removes unused code, also fixes 5th hotkey. (#4897) # About the pull request - Replaces single letter vars - Fixes acid shroud hotkey duplicate assignment, will now work on hotkey 5 - Removes unused acid dump ability - Some minor styling (newlines, spaces) # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Boiler acid shroud now works on hotkey 5 code: Replaces single letter vars and removes unused code for boiler. /:cl: --- .../abilities/boiler/boiler_abilities.dm | 26 +-- .../abilities/boiler/boiler_powers.dm | 153 ++++++++---------- .../living/carbon/xenomorph/castes/Boiler.dm | 4 +- .../mutators/strains/boiler/trapper.dm | 1 - 4 files changed, 71 insertions(+), 113 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm index 9472008d6449..4430a1619e03 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_abilities.dm @@ -68,7 +68,7 @@ ability_name = "Acid Shroud" action_icon_state = "acid_shroud" action_type = XENO_ACTION_ACTIVATE - ability_primacy = XENO_PRIMARY_ACTION_4 + ability_primacy = XENO_PRIMARY_ACTION_5 plasma_cost = 10 macro_path = /datum/action/xeno_action/verb/verb_acid_shroud /// Allows the sound to play. Flipped to false when sound is triggered and true after a timer. This prevents soundspam @@ -86,30 +86,6 @@ /// Duration for the cooldown of abilities affected by acid shroud var/cooldown_duration = 30 SECONDS -/datum/action/xeno_action/onclick/dump_acid - name = "Dump Acid" - ability_name = "dump acid" - action_icon_state = "dump_acid" - plasma_cost = 10 - macro_path = /datum/action/xeno_action/verb/verb_dump_acid - action_type = XENO_ACTION_ACTIVATE - ability_primacy = XENO_PRIMARY_ACTION_4 - xeno_cooldown = 34 SECONDS - - var/buffs_duration = 6 SECONDS - var/cooldown_duration = 30 SECONDS - - var/speed_buff_amount = 0.5 - var/movespeed_buff_applied = FALSE - - /// List of types of actions to place on 20-second CD,if you ever want to subtype this for a strain or whatever, just change this var on the subtype - var/action_types_to_cd = list( - /datum/action/xeno_action/activable/xeno_spit/bombard, - /datum/action/xeno_action/onclick/dump_acid, - /datum/action/xeno_action/onclick/toggle_long_range/boiler, - /datum/action/xeno_action/activable/spray_acid/boiler, - ) - //////////////////////////// Trapper boiler abilities /datum/action/xeno_action/activable/boiler_trap diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm index 6748b662b118..0fcdbf47a695 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/boiler/boiler_powers.dm @@ -1,13 +1,13 @@ -/datum/action/xeno_action/activable/acid_lance/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/activable/acid_lance/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner - if (!istype(X) || !X.check_state()) + if (!istype(xeno) || !xeno.check_state()) return if (!activated_once && !action_cooldown_check()) return - if(!A || A.layer >= FLY_LAYER || !isturf(X.loc)) + if(!affected_atom || affected_atom.layer >= FLY_LAYER || !isturf(xeno.loc)) return if (!activated_once) @@ -16,8 +16,8 @@ if (!check_and_use_plasma_owner()) return - X.create_empower() - X.visible_message(SPAN_XENODANGER("[X] starts to gather its acid for a massive blast!"), SPAN_XENODANGER("You start to gather your acid for a massive blast!")) + xeno.create_empower() + xeno.visible_message(SPAN_XENODANGER("[xeno] starts to gather its acid for a massive blast!"), SPAN_XENODANGER("You start to gather your acid for a massive blast!")) activated_once = TRUE stack() addtimer(CALLBACK(src, PROC_REF(timeout)), max_stacks*stack_time + time_after_max_before_end) @@ -29,18 +29,18 @@ var/range = base_range + stacks*range_per_stack var/damage = base_damage + stacks*damage_per_stack var/turfs_visited = 0 - for (var/turf/T in getline2(get_turf(X), A)) - if(T.density || T.opacity) + for (var/turf/turf in getline2(get_turf(xeno), affected_atom)) + if(turf.density || turf.opacity) break var/should_stop = FALSE - for(var/obj/structure/S in T) - if(istype(S, /obj/structure/window/framed)) - var/obj/structure/window/framed/W = S - if(!W.unslashable) - W.deconstruct(disassembled = FALSE) + for(var/obj/structure/structure in turf) + if(istype(structure, /obj/structure/window/framed)) + var/obj/structure/window/framed/window_frame = structure + if(!window_frame.unslashable) + window_frame.deconstruct(disassembled = FALSE) - if(S.opacity) + if(structure.opacity) should_stop = TRUE break @@ -52,15 +52,15 @@ turfs_visited++ - new /obj/effect/xenomorph/acid_damage_delay(T, damage, 7, FALSE, "You are blasted with a stream of high-velocity acid!", X) + new /obj/effect/xenomorph/acid_damage_delay(turf, damage, 7, FALSE, "You are blasted with a stream of high-velocity acid!", xeno) - X.visible_message(SPAN_XENODANGER("[X] fires a massive blast of acid at [A]!"), SPAN_XENODANGER("You fire a massive blast of acid at [A]!")) + xeno.visible_message(SPAN_XENODANGER("[xeno] fires a massive blast of acid at [affected_atom]!"), SPAN_XENODANGER("You fire a massive blast of acid at [affected_atom]!")) remove_stack_effects("You feel your speed return to normal!") return TRUE /datum/action/xeno_action/activable/acid_lance/proc/stack() - var/mob/living/carbon/xenomorph/X = owner - if (!istype(X)) + var/mob/living/carbon/xenomorph/xeno = owner + if (!istype(xeno)) return if (!activated_once) @@ -68,31 +68,31 @@ stacks = min(max_stacks, stacks + 1) if (stacks != max_stacks) - X.speed_modifier += movespeed_per_stack + xeno.speed_modifier += movespeed_per_stack movespeed_nerf_applied += movespeed_per_stack - X.recalculate_speed() + xeno.recalculate_speed() addtimer(CALLBACK(src, PROC_REF(stack)), stack_time) return else - to_chat(X, SPAN_XENOHIGHDANGER("You have charged your acid lance to maximum!")) + to_chat(xeno, SPAN_XENOHIGHDANGER("You have charged your acid lance to maximum!")) return /datum/action/xeno_action/activable/acid_lance/proc/remove_stack_effects(message = null) - var/mob/living/carbon/xenomorph/X = owner + var/mob/living/carbon/xenomorph/xeno = owner - if (!istype(X)) + if (!istype(xeno)) return if (stacks <= 0) return if (message) - to_chat(X, SPAN_XENODANGER(message)) + to_chat(xeno, SPAN_XENODANGER(message)) stacks = 0 - X.speed_modifier -= movespeed_nerf_applied + xeno.speed_modifier -= movespeed_nerf_applied movespeed_nerf_applied = 0 - X.recalculate_speed() + xeno.recalculate_speed() /datum/action/xeno_action/activable/acid_lance/proc/timeout() if (activated_once) @@ -103,7 +103,7 @@ /datum/action/xeno_action/activable/acid_lance/action_cooldown_check() return (activated_once || ..()) -/datum/action/xeno_action/activable/xeno_spit/bombard/use_ability(atom/A) +/datum/action/xeno_action/activable/xeno_spit/bombard/use_ability(atom/affected_atom) . = ..() var/mob/living/carbon/xenomorph/xeno = owner if(!action_cooldown_check()) // activate c/d only if we already spit @@ -114,7 +114,7 @@ xeno_action.apply_cooldown_override(cooldown_duration) -/datum/action/xeno_action/onclick/acid_shroud/use_ability(atom/atom) +/datum/action/xeno_action/onclick/acid_shroud/use_ability(atom/affected_atom) var/datum/effect_system/smoke_spread/xeno_acid/spicy_gas var/mob/living/carbon/xenomorph/xeno = owner if (!isxeno(owner)) @@ -125,14 +125,18 @@ if (!xeno.check_state()) return + if(sound_play) playsound(xeno,"acid_strike", 35, 1) sound_play = FALSE addtimer(VARSET_CALLBACK(src, sound_play, TRUE), 2 SECONDS) + if (!do_after(xeno, xeno.ammo.spit_windup/6.5, INTERRUPT_ALL|BEHAVIOR_IMMOBILE, BUSY_ICON_HOSTILE, numticks = 2)) /// 0.7 seconds to_chat(xeno, SPAN_XENODANGER("You decide to cancel your gas shroud.")) return + playsound(xeno,"acid_sizzle", 50, 1) + if(xeno.ammo == GLOB.ammo_list[/datum/ammo/xeno/boiler_gas/acid]) spicy_gas = new /datum/effect_system/smoke_spread/xeno_acid else if(xeno.ammo == GLOB.ammo_list[/datum/ammo/xeno/boiler_gas]) @@ -143,6 +147,7 @@ spicy_gas.set_up(1, 0, get_turf(xeno), null, 6, new_cause_data = cause_data) spicy_gas.start() to_chat(xeno, SPAN_XENOHIGHDANGER("You dump your acid through your pores, creating a shroud of gas!")) + for (var/action_type in action_types_to_cd) var/datum/action/xeno_action/xeno_action = get_xeno_action_by_type(xeno, action_type) if (!istype(xeno_action)) @@ -153,57 +158,35 @@ apply_cooldown() return ..() -/datum/action/xeno_action/onclick/dump_acid/proc/remove_speed_buff() - if (movespeed_buff_applied && isxeno(owner)) - var/mob/living/carbon/xenomorph/xeno = owner - xeno.speed_modifier += speed_buff_amount - xeno.recalculate_speed() - movespeed_buff_applied = FALSE - UnregisterSignal(owner, COMSIG_MOB_MOVE_OR_LOOK) - -/datum/action/xeno_action/onclick/dump_acid/proc/handle_mob_move_or_look(mob/living/carbon/xenomorph/mover, actually_moving, direction, specific_direction) - SIGNAL_HANDLER - - if(!actually_moving) - return - - var/obj/effect/particle_effect/smoke/xeno_burn/smoke_effect = new(get_turf(mover), 1, create_cause_data("dumped acid gas", mover)) - smoke_effect.time_to_live = 3 - smoke_effect.spread_speed = 1000000 - -/datum/action/xeno_action/onclick/dump_acid/remove_from() - remove_speed_buff() - ..() - -/datum/action/xeno_action/onclick/shift_spits/boiler/use_ability(atom/A) +/datum/action/xeno_action/onclick/shift_spits/boiler/use_ability(atom/affected_atom) . = ..() apply_cooldown() /////////////////////////////// Trapper boiler powers -/datum/action/xeno_action/activable/boiler_trap/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/activable/boiler_trap/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner - if (!istype(X)) + if (!istype(xeno)) return if (!action_cooldown_check()) return - if (!X.check_state()) + if (!xeno.check_state()) return - if (!can_see(X, A, TRAPPER_VIEWRANGE)) - to_chat(X, SPAN_XENODANGER("You cannot see that location!")) + if (!can_see(xeno, affected_atom, TRAPPER_VIEWRANGE)) + to_chat(xeno, SPAN_XENODANGER("You cannot see that location!")) return if (!check_and_use_plasma_owner()) return // 5-long line of turfs orthogonal to the line between us and our target as precisely as we can figure it - var/dir_between = Get_Compass_Dir(X, A) + var/dir_between = Get_Compass_Dir(xeno, affected_atom) var/list/target_turfs = list() - var/target_turf = get_turf(A) + var/target_turf = get_turf(affected_atom) var/left_turf = get_step(target_turf, turn(dir_between, -90)) var/right_turf = get_step(target_turf, turn(dir_between, 90)) target_turfs += target_turf @@ -212,70 +195,70 @@ target_turfs += get_step(left_turf, turn(dir_between, -90)) target_turfs += get_step(right_turf, turn(dir_between, 90)) - for (var/turf/T in target_turfs) - if (!istype(T) || T.density) + for (var/turf/turf in target_turfs) + if (!istype(turf) || turf.density) continue var/trap_found = FALSE - for (var/obj/effect/alien/resin/boilertrap/BT in T) + for (var/obj/effect/alien/resin/boilertrap/boiler_trap in turf) trap_found = TRUE break if (trap_found) continue - var/obj/effect/alien/resin/boilertrap/BT + var/obj/effect/alien/resin/boilertrap/boiler_trap if(empowered) - BT = new /obj/effect/alien/resin/boilertrap/empowered(T, X) + boiler_trap = new /obj/effect/alien/resin/boilertrap/empowered(turf, xeno) else - BT = new /obj/effect/alien/resin/boilertrap/(T, X) - QDEL_IN(BT, trap_ttl) + boiler_trap = new /obj/effect/alien/resin/boilertrap(turf, xeno) + QDEL_IN(boiler_trap, trap_ttl) if(empowered) empowered = FALSE empowering_charge_counter = 0 button.overlays -= "+empowered" - var/datum/action/xeno_action/activable/acid_mine/mine = get_xeno_action_by_type(X, /datum/action/xeno_action/activable/acid_mine) + var/datum/action/xeno_action/activable/acid_mine/mine = get_xeno_action_by_type(xeno, /datum/action/xeno_action/activable/acid_mine) if(!mine.empowered) mine.empowered = TRUE mine.button.overlays += "+empowered" - to_chat(X, SPAN_XENODANGER("You tap in your reserves to prepare a stronger [mine.name]!")) + to_chat(xeno, SPAN_XENODANGER("You tap in your reserves to prepare a stronger [mine.name]!")) apply_cooldown() return ..() -/datum/action/xeno_action/activable/acid_mine/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/activable/acid_mine/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner - if (!istype(X)) + if (!istype(xeno)) return - if (!X.check_state()) + if (!xeno.check_state()) return if (!action_cooldown_check()) return - if(!A || A.layer >= FLY_LAYER || !isturf(X.loc)) + if(!affected_atom || affected_atom.layer >= FLY_LAYER || !isturf(xeno.loc)) return - if(!check_clear_path_to_target(X, A, TRUE, TRAPPER_VIEWRANGE)) - to_chat(X, SPAN_XENOWARNING("Something is in the way!")) + if(!check_clear_path_to_target(xeno, affected_atom, TRUE, TRAPPER_VIEWRANGE)) + to_chat(xeno, SPAN_XENOWARNING("Something is in the way!")) return if (!check_and_use_plasma_owner()) return - var/turf/T = get_turf(A) + var/turf/turf = get_turf(affected_atom) var/acid_bolt_message = "a bolt of acid" if(empowered) acid_bolt_message = "a powerful bolt of acid" - X.visible_message(SPAN_XENODANGER("[X] fires " + acid_bolt_message + " at [A]!"), SPAN_XENODANGER("You fire " + acid_bolt_message + " at [A]!")) - new /obj/effect/xenomorph/acid_damage_delay/boiler_landmine(T, damage, delay, empowered, "You are blasted with " + acid_bolt_message + "!", X, ) + xeno.visible_message(SPAN_XENODANGER("[xeno] fires " + acid_bolt_message + " at [affected_atom]!"), SPAN_XENODANGER("You fire " + acid_bolt_message + " at [affected_atom]!")) + new /obj/effect/xenomorph/acid_damage_delay/boiler_landmine(turf, damage, delay, empowered, "You are blasted with " + acid_bolt_message + "!", xeno) - for (var/turf/targetTurf in orange(1, T)) - new /obj/effect/xenomorph/acid_damage_delay/boiler_landmine(targetTurf, damage, delay, empowered, "You are blasted with a " + acid_bolt_message + "!", X) + for (var/turf/target_turf in orange(1, turf)) + new /obj/effect/xenomorph/acid_damage_delay/boiler_landmine(target_turf, damage, delay, empowered, "You are blasted with a " + acid_bolt_message + "!", xeno) if(empowered) empowered = FALSE @@ -284,7 +267,7 @@ apply_cooldown() return ..() -/datum/action/xeno_action/activable/acid_shotgun/use_ability(atom/target) +/datum/action/xeno_action/activable/acid_shotgun/use_ability(atom/affected_atom) var/mob/living/carbon/xenomorph/xeno = owner if (!istype(xeno)) return @@ -292,12 +275,12 @@ if (!action_cooldown_check()) return - if(!target || target.layer >= FLY_LAYER || !isturf(xeno.loc) || !xeno.check_state()) + if(!affected_atom || affected_atom.layer >= FLY_LAYER || !isturf(xeno.loc) || !xeno.check_state()) return - xeno.visible_message(SPAN_XENOWARNING("The [xeno] fires a blast of acid at [target]!"), SPAN_XENOWARNING("You fire a blast of acid at [target]!")) + xeno.visible_message(SPAN_XENOWARNING("The [xeno] fires a blast of acid at [affected_atom]!"), SPAN_XENOWARNING("You fire a blast of acid at [affected_atom]!")) - var/turf/target_turf = locate(target.x, target.y, target.z) + var/turf/target_turf = locate(affected_atom.x, affected_atom.y, affected_atom.z) var/obj/projectile/proj = new(xeno.loc, create_cause_data("acid shotgun", xeno)) var/datum/ammo/ammoDatum = new ammo_type() @@ -335,7 +318,7 @@ bonus_projectiles_amount = 0 max_range = 4 -/datum/action/xeno_action/activable/tail_stab/boiler/use_ability(atom/A) +/datum/action/xeno_action/activable/tail_stab/boiler/use_ability(atom/affected_atom) var/mob/living/carbon/xenomorph/stabbing_xeno = owner var/target = ..() if(iscarbon(target)) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Boiler.dm b/code/modules/mob/living/carbon/xenomorph/castes/Boiler.dm index 092dae00d603..37dc3048408a 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Boiler.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Boiler.dm @@ -69,8 +69,8 @@ /datum/action/xeno_action/activable/xeno_spit/bombard, //1st macro /datum/action/xeno_action/onclick/shift_spits/boiler, //2nd macro /datum/action/xeno_action/activable/spray_acid/boiler, //3rd macro - /datum/action/xeno_action/onclick/toggle_long_range/boiler, //4rd macro - /datum/action/xeno_action/onclick/acid_shroud, //4th macro + /datum/action/xeno_action/onclick/toggle_long_range/boiler, //4th macro + /datum/action/xeno_action/onclick/acid_shroud, //5th macro /datum/action/xeno_action/onclick/tacmap, ) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/boiler/trapper.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/boiler/trapper.dm index cb43960a8e2c..c14d2c6773cf 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/boiler/trapper.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/boiler/trapper.dm @@ -10,7 +10,6 @@ /datum/action/xeno_action/activable/xeno_spit/bombard, /datum/action/xeno_action/onclick/shift_spits/boiler, /datum/action/xeno_action/activable/spray_acid/boiler, - /datum/action/xeno_action/onclick/dump_acid, /datum/action/xeno_action/onclick/toggle_long_range/boiler, /datum/action/xeno_action/onclick/acid_shroud, ) From ee89615ad9ac1d3b6f87e7766bf270110b088b16 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 09:48:58 +0000 Subject: [PATCH 025/355] Automatic changelog for PR #4897 [ci skip] --- html/changelogs/AutoChangeLog-pr-4897.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4897.yml diff --git a/html/changelogs/AutoChangeLog-pr-4897.yml b/html/changelogs/AutoChangeLog-pr-4897.yml new file mode 100644 index 000000000000..2afee7c29f7f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4897.yml @@ -0,0 +1,5 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Boiler acid shroud now works on hotkey 5" + - code_imp: "Replaces single letter vars and removes unused code for boiler." \ No newline at end of file From 3b5ec8f1bea8895bb824a35d0e5eecc8840ecdf0 Mon Sep 17 00:00:00 2001 From: Releasethesea <135743398+Releasethesea@users.noreply.github.com> Date: Mon, 13 Nov 2023 02:44:02 -0600 Subject: [PATCH 026/355] Colonial Space Grunts (#4884) # About the pull request Adds the tabletop game known as Colonial Space Grunts, this will enable roleplay for shipside roles when they have downtime. yes i have permission to add this in game, it was done by a good friend of mine who sadly doesnt play much anymore. # Explain why it's good for the game Colonial space grunts is a simple to learn and easy to get into tabletop game, it can be played in a single game, ive ran several events with this in the past and all of them have had positive reception, so i figured id make it permenantly in game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Adds Colonial Space Grunts to rec vend aswell as several pens and Dice for playing the game. /:cl: --- code/game/machinery/vending/vending_types.dm | 12 ++++++++++++ code/modules/asset_cache/asset_list_items.dm | 1 + code/modules/paperwork/paper.dm | 11 +++++++++++ html/images/ColonialSpaceGruntsEZ.png | Bin 0 -> 543542 bytes 4 files changed, 24 insertions(+) create mode 100644 html/images/ColonialSpaceGruntsEZ.png diff --git a/code/game/machinery/vending/vending_types.dm b/code/game/machinery/vending/vending_types.dm index c109db25b3a9..a57bbfe7d29f 100644 --- a/code/game/machinery/vending/vending_types.dm +++ b/code/game/machinery/vending/vending_types.dm @@ -412,6 +412,12 @@ /obj/item/device/camera_film = 10, /obj/item/notepad = 5, /obj/item/device/toner = 5, + /obj/item/paper/colonial_grunts = 15, + /obj/item/toy/dice/d20 = 10, + /obj/item/tool/pen = 10, + /obj/item/tool/pen/blue = 10, + /obj/item/tool/pen/red = 10, + /obj/item/tool/pen/fountain = 3, ) contraband = list(/obj/item/toy/sword = 2) @@ -433,5 +439,11 @@ /obj/item/toy/deck/uno = 15, /obj/item/device/camera = 30, /obj/item/device/toner = 15, + /obj/item/paper/colonial_grunts = 5, + /obj/item/toy/dice/d20 = 1, + /obj/item/tool/pen = 2, + /obj/item/tool/pen/blue = 2, + /obj/item/tool/pen/red = 2, + /obj/item/tool/pen/fountain = 30, ) product_type = VENDOR_PRODUCT_TYPE_RECREATIONAL diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index d1e7f83dacb1..fbb9e5d06ac1 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -147,6 +147,7 @@ "cmblogo.png" = 'html/images/cmblogo.png', "faxwylogo.png" = 'html/images/faxwylogo.png', "faxbackground.jpg" = 'html/images/faxbackground.jpg', + "colonialspacegruntsEZ.png" = 'html/images/colonialspacegruntsEZ.png', ) /datum/asset/spritesheet/chat diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index e18c1ce3c2e7..751dbe5bf7cd 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -906,3 +906,14 @@ info = parsepencode(template, null, null, FALSE) #undef MAX_FIELDS + +/obj/item/paper/colonial_grunts + icon = 'icons/obj/items/paper.dmi' + icon_state = "paper_stack_words" + name = "Colonial Space Grunts" + desc = "A tabletop game based around the USCM, easy to get into, simple to play, and most inportantly fun for the whole squad." + +/obj/item/paper/colonial_grunts/Initialize(mapload, ...) + . = ..() + info = "
" + update_icon() diff --git a/html/images/ColonialSpaceGruntsEZ.png b/html/images/ColonialSpaceGruntsEZ.png new file mode 100644 index 0000000000000000000000000000000000000000..7db4ca5ba76809d6a21886cd183ed926f59dd539 GIT binary patch literal 543542 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
Cas@)4Y6ysR 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 z zM4m_~PDv%Y6B$qL!JGIkWRdt>*B9l6DmupoUxXI-53(?w&NUOMRZSvFcD!utqlY5I z8mS?J&X{;T-R}P)>z$+Xh}*s2rfHJKwr$%s8Z>Nd+iq;zwr$%s8#K0grhD(_yze>t z?|UV8R@VGx=DI##P%0R2fuYcrM}5Z3!|x|to?p)z>hdLi%_^Eb4WZpPwv@cJfhsud zpa^=ynH(j5%RJ*FG>{$$&+g6<8{61dnGZ_ZqI`{kloHHJi(>U6)b7KRV1D2)Cc+aa zQ(zvpHq0xPdfD@*INtF1LfO$AGtm-SjckD&>X=p8utz4stnu_(&0~{zs8ZPR%BhqN z?lfX}GCD`P0{?Zy1!ZqLbcn}Qe1a9I)@7b{P=A9P$K6NBHL<&l!z$Meli^iVTNMRIfBc(xR>XknP% zZ|xZK+61vgf4rCI%g{%d<{pD8|3oI-dVdQLm4?UD zkX#D>|hsF`aRJ~kQK~Y zXx_Q%o#gXZgg62bYdJ)~qbUYEImEzb4aR%zhHUq}zK>h5B|#ZGklm%fR{Wol>&_1>0uq9g>$i);9ewx506 zThMYjv!%9_orV7=o-Fkpt}f8i`oe(E_HDBI+n*qy^Bj~e?;}Q!0f`o|6hnU{=CB3H z71Xb9{dk-9e>bR(iu-Tu;jh4 zg9Rh$qmhYrBp9QG+O2o^JAbGH>48e}UsVreKSLK0F_^QD-bl5eoGuoMa)-@xXqMvFiyu|z{& zX%Uij&~Eh*632}K2c)^b{m$`)?<_4E!gCL1)>*%;)nDCZ`1|$SnCwo|Et%gVP4AJM zQ>>>G_aS_}__B>~%wuZB28D%7purwQ%d?N<6YUc&jyp!KS#*^tjyEd&o(+M}A|kKj zIC!nGNkq!YcP%U8J9`$9q0<2P2U4f?+!WnnP+SiSjOFIPL+y}QM=L!-?C7bfUpFAz z0xH%5TUyugE#O4*L~co|H01=!&F`*NNi{!fPQpQk+)WqjmR|i9FM_s=6?p!h9k#A>W-lQrYXiVy|_;Ajjet&&SKuxu!U94+Kl5h)>#b9k^}ck^71$8 z9>_bL!d_YUWzT{#QW|f%x{lZIvGwnq6=|t&E)4o+BCaeF^3*GRq8NjkGGiDdXTGe9DDaCi`0CwO#whr*@=0g zU_(S^axzeM`1CtE+Uxzr>G~b$fxE8l`X@*9UVQ~pRD;XPs6MFgj=xCUW0fed;Zs|f z3+BhXA{1rzI$}e}Y-0K)2TtnF%3+U*B-$8Ecm=^Vg`uC`SO9T>qm9Xm>D!EGN3f2F z9UU^(Fyj0BE-PoiB>v2)DkT%5)cjb{ZrAJ>uZG~ApL1qnJcqr6?K;}5!D&NWE_~}4 zFEc0vPEFVW^)6YZ&_ap263jz`xoMu7ni||AYHma7!F{N`hsxfA-cs}57z0CCrNwr& z(?;+|Xc7RLRwLTJu*lsGOIqR>5zMli=bpx~VpJlB^Pc(>gzc1-ZDX~a47$2=fAtB; zeg}2Au*ElU^1^7MI><5R4*%St*Mm4z4fI#dLj_m4~{g*9bhau3vn_`{MJ( z?aFr?R-sp*Ho2hf9-HS|Ue@4vCx7PVErUi;?Y21HxEQXwhf7G|th}CJgK;g}(3mdP3T79{>_iv*Q#7Mp2tf*sJqR1ggcOJ=iC`e8N3Yd3av; z#-aD^sXxsgYe&5EV38Nv{nz1-dJDzeCsMK=8YN2NvYu6i3L~<~7gytu50Ub0V%;C;6 zhu`R^*tb=;hO!}Gu~@#}pDzEMj*pLz&CI0j8rJ_QJy)aG|Fp9DPv{7emz|9d|AG;d zut7iiWdqm=+U@j!prD{!y&^d{IB@Ez$aX-)4Q@6yH0)Q%rOSTM2NSF>K+$p@ zzi3Wgub|hUmV0U{kQ1W{Rn4mVQ{_7DNM(g5nvflu#y^9bNA>R>b0T?R4el9R;w_Mv z3s?Gc!Vvik2BNTOq5gR;w2)w9^Usyp%|k#e=iN24_>IbMZjfSl{k(k*?~W@ghj0g0|y6!ZDB9 z4)(1q-`UfEz$_K2>L0J--nCl2FPQo*6<%CyN0WqI05)yMa>N#(30L0#s|<}urGK6t z(hJ>YFmz}B${Hi8<|uCtL-7StRF_;?gKKcX94&JPX={RS}+&BmS2L zXA2ox8r`B~+)LG4N3l|a9hMO3oAJK!yKRforL9L6ZD?0 zYJkyEjD7yX76Gp>OnP#*Shdq$XXU3z0M7uoN&rSx_I_G#Q)TKIqqIxS+C03Z7rMb| zsBXrCb;wnXDWtKv{i#SezP7sV4CCIe@KwL`#oM*rA?m7w`gQQBm@Bs6UvvGpt}m8a z2cXMbm=dUHK6pU}K7I|2jf_Cd=|{$I;i5uh1z^ps3urSwCclt@x&tqDfN-M^h%s?R zD9O(URaI5B-0HvtT$dfrv5oYg=77*tOkba9tJ8xV>;)j+y*dWdjIbnota^O`@K~z} zsn zRN&X^ilh?Z)NkrxVQHowqMC}PhQxt!A4}t)c)4R4i2*OZa>49tF7&mb827i=dC~~> z{||FIKVx}w!WcVr35{lam}=_T+l0^ur|M0qlBUdeGqMjR_Y5_{*A>A8I7mPzpqS^E zR(%a@V{{!Bf$mG2so zb~Co0m`aWN2Lk7y_j%g2Q3ntHBr-@LhBID>qCBpSPpiNf&iyW z3#f_$DWR{3)L5gMiC-pX8BoI2KF^MPHu>-!Wgo7oanM?5*b1@v;neHtL;p5oL0FxL z7+^CHU>mA=Br}kzou!EXRwVpZ^EP9X;;8Ld${1t`CE#ZZrBZqIrbH>$A~4xGt& zKf|1qP(~29Hyt*L^2MGFUyPrejbrtBxQ=CJPVp=pUFLUwk;lUx@?m*`Mzqk0d2L&m z*#HJkh$d>eJXKmRj!~@odoF=NE^xf4rWKQ%uz+t?GTiz)fm~)^&(}a}O%+u+z!!pR zoM}yO<4gA6uCM(?HjNDCQA7+HDaC>{l$IdVzRdV1r2f(vfW7+s zA>f}#&B1X_7fL~4VPSztsECLGKQQR0gJS@B{E6oO*lCQJ$V;X5&*pZ4Gnvjh z03n_?uhQwxYA*Nyx}IDS#%O9p0jDDKz|c?_YmRsn&TeD;VlI%KecN+8nLa1j*RTLs zZv*}P{V@WV2(VF61A*tGAO+1L)ZOLwXZLbXb^@`TAQf-4TprHojJZl0VNYv(j31o7L|mDTnjprVY1b6MjrPsu8B0*ls&@1L3mU9V^;}(m;#lt>Yqzz?~bma-}OJVlt~D6wcVJ?SBiCJI2*Bn^icyFWkLSA^06VGZF%m6Vj8 zEhc6H)%ojZg30AF5U_h{j@Txm^SiqE@a1ZGP|?uhf`i3NU7#*FgDlFV0XAxAYC3YO z3pWY;8jspU&hV0ceG9;-o!xwb_MBkoW{`_6isj>%NLS_@zZi)%pfC%llAuzFojzL2`?-zx``j0xd0d7 zNMD~HM8op(# zYHU{4$JSBk9=pjD&POXiCA}GZ^z`&RO+^oVm{?hrJ*%zOoAjmaj9HjnuXI@~R{$lT zF`d82LXj-?hnJf--KTWH087loG7>jnaz!N;_#cW&0H&O(7IDJs@o;7BA+j_ck+MAq z{Gt7;tErE>9DvXRkAcMIt(I z!OR~&p`j_59fm*Bhpoo!&DsZbz^{no^L6{KHpu9)a8Y0Djtj;_C|i#JLmS-P)tGxYtyNPTs0dMazhN%yT)Pd{gdb^!LpGA)>Ka@K&L{JYPO}_V^ zdgW?_#dm^t8lcJlf{nD(M>1UNyUonZ-neDTQxX$N54dNywz8Hvm}W*isgn}Gwsg}3 zz&`+--V552$?bB}o!TuC3onNFJuz*SW2f12l_`rn9K!(!EIP+4U6k^A#%HV&q6o=|ebQdK~&d^pzUi2s-^Al)JQd9LDp`hfl5 z_MOEbha#%|2t!2LXR=gV5dcu`8T^6Xe%gv*@zJrD74O;i=)UR{(iiZW4WH+|ywNdT!}Ddwb$-1I9Z#XMR}*D}np< zha5NZy}@{U!4-|PT76_%I~S7is414dPxsR5fj=y5UB)b}YEC47 zI2lyll8Bn7b3n8zO7i=4)6lOX9zj$y@T5+M?}@mjsqO7=3k?{-JToirHN;L2;q#`F z*cMzK^xE(^qF-F<2-fMnjvaY)2;8x2GmT-6gj9eW)~k*$?n(5)**r*^wL5?ZoJ%vK)HgAa1fj}7m;qs(AZp5i#KW34O8c-f}4BfRC;JQHV8}Xd33>N>!w3mpOQr{@Fe87IS9T>(evmXSRufURQS_ zmhUBIcitfY^)@VZNdEBMjpb5oz6)0h`0^L*)*wIW%m9_#3!}yIjyEWZ0UxYq+h@Bv zhr-3(P?Qd981|})l6BLnYTLbVkP-9y{!do#1O$|WFj9PF-vpGR4_G?KFp8n+&LT4|8w5+fqL~LwL{L{EpAfH?yIdfQHLkId)kcJv zsfg3*1jPoSpQbQ%(NRMKYq3PZpG+=8O#?_S=n!QFbtd|Znve*3)-&Y6l+ENy{IR#w z>+cAN^40*MlufA@pxa}dG5BH&B#+-svTt8qIIT3&X|-Ls8TKR;4p&9uayNbLiHwRm zybZBWTAFa0e!l&SDsdeT9`gq>Ae|$aHK)jHSpK-H9~xN&^c-2C0Lqd_Th zqdmWfO>{IF=xr&=6-%VHxFsRGfpnS=b97e4k&Ll+x1zZ=S0KI1?i9TupQ=g!345;h zX&)uyHIFRw5>bDw2W1@fZ7pMvVf`JV9nAlNgz)(gbx)&AFKKcXmOoHUnwp5kNAVTjEwh`JDpA|>qfFnIyBBPZM+<2e&eos%mlXQ* z!+$aQdy4S?0!X$jq#t$!718*j1qVuO%Q`_P8uN4F8zvtoFy>2>RS6-kC95c<0u}1S-aZ1qa9PG zhL5zVPMN}^p3#M_B1#AXu)5d#?ysm4&|#EdbzmWnU+R4G;JsxH&@u{CMeTc9U_ex< zaDFE+pi-;uJpcObEy7m_R-MmCr((Eh#X`Pg>t|{7rEb%bGfmj7Pune*IxB4Djb6OQ zt@@-~&BrZv-E8d*IiU}4lIKVGrq|Jv#ls$Lrq-Egd)EH=lrSgA#ZY78exoJsB>qAw zjn&KCS^qMnt+vmJp`NtPOIFd-je0C)gK~wmdLOrvwr8V0F)iLgDA$^oAoBz7Ay|x0 zIRh*3qJ?J)bah8A&#;=#_(C{Bqtorb6Nfc;pXn0B%mTXY=j{n6xP0L0b<>SmVwf}= z@lU#E0fde0^=>t9d;bF2fCa)8U3&W~+6en6;kZ+h;?1~Io!Iue&F0DQYQjQ(tAit? z9yE{q=HN~#Cn%CM@>LbQIYw^iQwh!-He6vXjYL9+XwXK6SXc_wt52JuU0rtfioyA zQ(U(!pY9~-&M$u#KIBJ)KupA&R@AR=(*1P;y@AoTge`0lOn zFC(~2Fl4X`3hP4Xt#+vt{|)@E+kgEsr3Q`n4AvcPkap!32IqI1Bt*%RP{uv6H^8A5 zoG+sX$2iSZ(PLl(o=($K-&Zy|gQ&YLhvU-$I&(rKUXOVYnRz>NI0Y?dw!1Pq=O=|Wt71; z5PB8pu4U4AiRdlTTb<)=O2xxUJ}8zn3myz9jhdn4<1>>}IcW#W~C>l}}|9wc_`q-Z_J%}*173{!P*)A=Aj;r?|2!M9=uW%TvqAD{v|`90oafn<_eD`%3*_5G-5aH z0ByY%M|U~x2L}(xCi-PhPL@L~hTV5@7N5R@{7ePm=dXt?IAZzu(YqbHxHMRfI6|H9 zs;CDa_*FP-(aCv?WpgM?pze8Evz!%buF%HqQwFN*{I;$_E;L(=-?cKFdmNNNlJGje z7Dr5Cu$jZHfy0Azh7W{u4clGm8)&A@AwxUgi&ee@~f6~&roZ{I=oR-O=1Up z2zNO6E{Bff;G9#bBVN6h zx8G73am!AMzkzl>gQuJHo3R^q@DkZ>xoFh3J{P)>Y7F8U^L`E3T5FqAQq5NLv{H?Ek21S*N3;>rjYv4XXTw4$Sco5ERcHH4I@BEy00uhKx<3&+_t= zUhZEMCBaUxjOt_SkRS@itU_o<2ixD=XP8-kOKPDt$Gx`a@=dJW`MZR`!JR`7JWm?5 zg!Uu;>T|YrG4jVlb%HHPSjD8IWG<(%#jQjr%WFv+OPi6eW~s-)mn})W*0ZjW3Om@Z z&K1dVaS!JC4X$CDs5NgIVvO~5V}f2JGL3bdCOaW#(CaCD8#Q-yr1QI(^Y_=U(+0OG zsA@+oV0!$Nf|AO}tP4`v%8H7C6sMj%KdN{#T7vtqSQY9g5~L)JSm{aRsMrl%t%x@>PdHT9USIezoO;a5aNES_ z{#X-KD#~pt9`kcN=|673l$<+dWXlp8@KJMWHwSQSI%d1|7It^F^uD}IHli`Blp+^5 z1k;9|*D@<`*beG*)wH~(gS9Xz4B?Dx``AqSDr;6L=s!r{-+*V0P^KOak>)A-%LqxV&p)`=u_R6NV>&)N!#hi~!RQ z_6kpciZw>Tr;+Ju$da-u_-~Gp1dJtwi^$I-+&6{4OnEdfeXY-5?vjaZrJ!stFBsH4 zDaclibF7nCBToP7k1!y!$XCNcZ)y%0NrjZ)Bdw8~-tJs9YgxQ?ECEIw`N_d-BxQ#`{$L_OSA1zuO1)&mcGm_yo1=>%b;o;%&800cIVxuP~BdkRR#>OJ-_YplF0F8|&7m)!W zu$|lD2yUgP}i{d+?VX(GyDt zb`UX5TM3MeLLy5x8yuRe`wNCXbgSE+XN7N@Xew`C9NrQHV#XCJJ15=_N+nqWHGZXF zc8QqUQt_vDLT7@uZ~dC--S`sQtt|l6uJ(kJTt(WyB7^>@;?YN6N{?p4`+H}8%M=4I z$W-ruRPj_7&VNM5E;oTNOQ$W!aPQ&Cz>D>1@hor_bX)&2Y%hfV)>%Hm5o?=%!(Xk? zUD-UHXG3(RH4USi{>v}b=blD6aK*qu92jM!=IFLi&NaiX-)VccuI^DH*<#l%nCTFs z=Ez%ceXVJGwe-5wD$gx>a$-~ggL6wA=2nxsPfRGirJj>Sj#0Sop9sX_?e4#T=oq}d z^Bji~PH+6LO;vu;7Py85P_2^kuvU{W*Gw!Jg_42#QCc={2ufcSlFOx1%d+uD`_lT$ zCYd!mCteUC9IJzO>=Xjw!pDLHly4~OwU@KYguEAZtrx+ktF#YKOZO+80@4pQ2a+YAVaYc1{@VjA+gO;F~7)E#r4rts6bTwu~O)Xcy6(YErN}>@vn28_?iVZp529gh`AURXX@P zX|SoUlUNjq;tBHYa+PBT@8Fq?#~%Do&xyF(KYk0pE9%+&A6slk&G1+cw3bGkkgBlh z2%=>HpP{Vbq7Lre(IVEP4|n+Xg<1Zi3_8mnft&x~`{v^l!k9XgAabFv>iItrdxpZx zG*T6FEYBn)OX>oe9$&CV+bSqJpj%f(Fg2V`LK5MCv6TYl`)mrNlE-i#0e1p&k)vB82khrEj#;EOlU#*{PMvj^BHUGZZKh9VGu1u<_Ykr?C|rl}Uy0_*aF zTP}+wnhMR7r3ukP;do@@M{Z}k`w)GRTdQW6!>*X72$e{4?^LdLWfaX| zQ>=f>9a;meOQ>iN=^LE&*Ui_ZkZaq3b3V`#G7l6U}~;{=PVR6aT8Bvh#?>{n9iP+FRSgP@4NKS>ven23_WWq=W8!IX|+B2`Q`d zckjaH$|o2EL9|NlnbYL%8acEQI2Un&C?r&4x{zv2M1c#{k?zkmzAdr!TJt4Q7?-92 zJz`ptL9?Fszoju1Y^>O-ccW>3zo!UI6%q~WjePxn)qP2c%a!XpivnKpX_9&u^5P6PW)l;vJtZuk4 zS~?B=$VqWZT*!vfkW~wXG!f4OB=Dv`e@5hCjhRk1szI2jzrX0zArPUVh<+Ua`$l64 zPjdEq-Jb9SCHX51?5+2e_9E7^9A1h;3pbpTp6;6>C5BC51UtHlo_Ykx%a%IqwAN&e z-KmOi0)uEPVu})S6#Vchom{@*qb#yS`oMVywuv0^QhMHe86bm^0l7 zzH>w^daX5bV7(%f8&FnRT7w4*b{J*v;LE~z`6c(+<@~WVE`+*-Ys4TP8%e@y;*eG; zGfsiXZ5?8{slLc%*#J)eJ%^@2Cb6mv|-3W~5PO(Y=!M7a{0yy z_BU7Po8pq+t@eV|BG9Vj#WxZw7uPclhA7-4VEEhT%B|${%wWsi?vp z!A5c1vH{fTa!=gqIpHb91dHcDp-n^h)a`yB2H^?w6#9i4IR=AqJH}En?LhBjp_Iqf zsLBgt#-L-BiNz!Mz~TDO;9D=K>xH+eX$ePUK>^8!u5Lo>ogP6Q06IPSvVl@h{(hX~ zdPkA*vj`vxYXnrx`9}i#tYQlgapp5MHhI%GHU!sXINf9W`SH&0)p5TX#6;sN{a@IT zuJxQRTQMIW@P!^DVJ|>ayo-{E7XNJG?M|8NgPYs^bv$sHinc|h0}Y|^T#+ZLC-?## z79sb1737opOl`B9AvT?#N6D#bpWNg-mnA+oKVTUr#mS$ThtFGte!RG?N&6pqdQ^Qy zUDUDg_wH#IS!#mr1=*^93{{ko(v75(T&v9sYHLW*@F&e^C0o~&J_TuY%N&!qD7lh# zVXo)Ffi!q`3QAdugpn*YP>xjcKlUX3<&huVHefbTYApLKF5n7w2L@Hd?cz zTp3F0vyGWn!>uuYIC2xEfi-W#nL1F;_LVq23-Ol+Cidd}!1*!jmxZx1?)w_%BDQz7 z885+S65f(PZSu6b%i07~XS+A}h0aX&%Xa}X8%nxXM++yLi!4+pCl*5C^;DFE6rp0W z=3Fu{tr8P<4|`{P5jNW3x!egJE*6pCAc(MuYzGQYWq2lr8Zr}ZX!{x_GHGLx_^!;C zg=69Md1|cL6f;(mcQ&h%$S2buo88dGZw*Q;t+L2WCv)*_tK9Lg1lZ=BcL+v@TX~C} zu%(U4s`f05BMBqB{HwUybFSs7~~B1(v3q4R>`# zhmxS5K4`U)Q&C>HCJH;S24JsND#(@cJ=C>HrFj)uStK0Y1%|PRy=@Nu(J>9 zwOhn3_jYuwCriwIvLMt;wxn|1+FiS#1RaRa=$44{%ku=uek@}<^Ec`@k3}-6MBvdAWoaPY zD=TUrEEP}ajcYy5n*&o>C4C`!okpH0dvNkJrzkBQ#k5=sP*7E(NIX!vYVA%W(Au&uBfh?07^|60rb1YOf_7q1Fa6z6&_bBI z)|QqKtt*C_F->quE^c%)T2j`cvy4_^q14+ephtYfaj)M~LCRb*^)L=Zq(~iA%fLEV zBx<<6uFh3{Y>Sbdog5n*``Q6!hH0|o|MtD|%MN1J-chjm^RaIZ0Q9PW#U~n{|FAmz zjaS9F#*{GvL*9TOLhBTW+6g>jIODs;9lZdwj8_8IfHS!P&>DNEs%vRwo-9?4`;U6R zzetK!uh!`KWAM~Tu-1jp+5x`i?!GzB{vQ$DhFR)-I5;@2+bL&{bw=Z^4C8Y+%*GKL z2X6m2X3zds%j?0%$F~5`%sQZNo45rAgTZ%so{X ziHZSLo>X5Hzi|Ls2}!`#-aUkqm|PqZ^1aqs@lLhDb5ejL+_66+G5kTNt~>8h%V4lvl?0$Z$s6qW7zqF!!A_X-y zG@yAA1;YFbvmjEW@q~qix1ibp>p5WG|FgNzz|Nt#6%pckY6O>~_jf9jf`$fV+dyT4 zh@E@lrj<#5svQ;vMv52K_PD&HZ0iT_f=n)aR%;ErmEC}h#~--7 z{6L3*p5py?A*NGvv9pY48yt3P92>p!g9Fm#St^>rAy1AgPBq^dwBH z+SOW8dk>{=8cc`KtN{C!YoHN_gp7;|@Z0+!DcT>IK}k|oecb+0+gkk5NMOktc?)0p zQe^vINR~2kkj9Sg`*psZg|)m>y*x^1auK{Esp|5_f=>^DJwA8(Qiiu!VJtNCz;*wp zHPT-l1R?LerJ2YRGW86ZVNa9U4|p|R$avvnM~OLcExt16*LV7owfEXGFaBu#si)cf zk0?WY8G^HCxowUZ!R{awNK-eIr|9UGjL;z?cI>clOj0|c^fNN(O zJFSMnH*WVs1ft&9c=xM1hd>j445&fJVq;lZ*%Kxl1F$$+y|D#4*9KqF#G~=FN*`jc zlOnWe$MC~laM97pm*9YQj@a(0h5(uM;hS;q`UBIZX+WbJ)j<}Qs8oy1lcjiL+JPdyFx)*_p1E08$3IP>Xh7b7PCXj@u_~@P_0ox}B2Yb+sm-E#f z=UdPlRSVspU$D*?W4ku-RIs97r=hxihT=-jkg zZD>*pcbt*93D&Mp=G-%5wlMsIYkYYpm^v2>8DOZ~N=_me$S!(*nxP=)w%5WHbgLC? zFbsfJPfv|gR)yDa=F7^u%oZquJyBZ6yFDUd#~zVVz1c&je)c>AUYWKci@dlKaJV!S zmSZg_T3Cb=uP8xdHaksc8OZA#ute$~d8rmZAPp!1&!l}V8?jP()qd?64=L)<+y~&l z%JKen!svo+g{R}pcS$mc=L%0iEnUy!%Tk~60}*M3kpB#ui7`uX`P*E)(^4kx{ypj5 zse~|kcHt8dALH8Ixzqz%(mumV^4D>4AQ}8)-gCqRMU`)P5heEXf55-mFZd!ikZD(T zN>mU-#=_vLV!O_>k-4$Z4bNx=ndi_}j!3`dNJ4b$x?{F93!U;PfS~E~kNkgJzbKr~ zX!0SSEH~GfqH@kv4KG8i8mEmBOOyB_nY30VmuLNsyta7vmxh8(Ixipm9;#nelv^8h z7*HAh%1nMi8~_1{CI0S55tqkVz#$f*7nPetoW{9{Qry5VZKF?S2DhU*Wei0XP*hq% z@IA=S7bb{+`E>i#9~6Q^T;SCC{^HSXs-G{tv)k?RwyLqK5e+wt`sed??2!57PmLyT z#7NtQJUY3{xiMzSMGerjp(X~_2sT+HLxL zoCjIL0m3PNiVbw+ue>JY?=#u0?5Kp7S^pr$Nb60#glwG9eb2`fR! zVge~qIv%`E3@k*KcsE8&e*7e5iq$zzHIlUte1?)%etqLl7PxKxp7)91rh-`aVb)um zarKLs@TD5vTzWVU%RyCcr^_`~$Y)C`zCvT}m(FIcp9!k>rx*+ti$n~DxVZT4j@`|^ zq+r~NL0Y%XYMm$o{?^`dtAmN)9MDrGgo%ks)TC!RsHE4a%gK!Zz$LB?g;Vque_I6Q^ z);I6K{kafm%Y=?39PS z=V#Rq_?+0tG=*$b!8>vLZ&p}&Kj5f|S(~~wITdxVSncu#O)ixFT&A0<{W=CC>)gS| zjqzU4Qk7S;XET!U!m-ZD8C?D-XzAZFG-Hc(-VVt(O$ zDG`XaeO0l5Ex})>SmPc_p&q|gSC)e%GNG;6Nex{I+vpEi=*Tw4r_v8CkR{! z=2u>>13#A(yrZ%=Ws7q*Df{exx!2fTZGQlbWK@`m=&wyc!IVJeS|WA`6+zw56njA1 zawMV*R}@N)t9R7&F2gVNGOkumsSd$k)Be6UJ8@#zfEEk%!Gg<8Z4s8H-Bf5fRwZHri<#}bTE z(Hc44Omr-I5{ne_Qcqrh_D=)zJkVD}3{ZdCWDVOoVog1ScgdlPyV~t~vAn)F5A0yd zZOYRpP&KMpgv>r@7!$(gj%*U6YOFP($iwpcdGKfivZ;P9Q5^|GVZy6GfAw85_N@aV zgpU(WM}i+!de5oFz!E&TyLY`e4E=Sv z-sFd!mOnUbKrpMt69)+_a@pOTqo7Elp7|5^XZGYa&JTrBUc-3~WI;OrZX4ifo)VOZ zrN9P62RKSJI1PrO7FuPpS*39d7wM9&8Zz@(&;wROZ7BkE?y*mUA2wCu%CA6~`~V#b z%g=KTyAeX8P2h91zs6G;lwI{`Nw}U*DYE-zSieYJX%g>kxu3C??tmUW?Yl(ImGCfh zB6MfD5yWrlu6oYhOQyy=2)BGS$fd_Obhrc8;`g!Wbzs!0HsY?aaQZ(o2k=D&aMu-5 zbk}hr*EsrfWx0^z>+Ozr?0CwugJWo^Yu!CK!W{MOPWA!dsy^I?51x+IC((@xZUfif zOh?Ia|4#MghxK+@p#GHE@yJW$Mwe}JY~#nk#Z)a*Tb=WdkS)#=JO!0Xg6L226{-Us30z~s-h z0d50}CvF>8b^pS`_n^YzNol2Lzl7|nq=_qy`5fzxEXHk(;`3+^SF0{~ z*x&)`~W=H-_`70j*r@ zor@zmoLy%*aO$*(!OBzCp}o;jchiPJ1~xKhTGIM-MfZv0SA)3`M4*|$3M@8cJz3>U zV?7Ad{5&;Ty8n3zWR2Cg3e28_GO5Ng^rSeUN2o?)J6)o<5g8CL&jmVcj{pxb2iyKH;^Dld&$MG$@6bo96Ui8Qx^vU&ZdBkNqB0qS!kJKGRjJ`8OOip;W;1fJ!DEhaS zLE^H_i{J!SGqSA7MQ^MR{6PLVB7#|Wz4s7LbhW~Mqq6%2yT0uklIxSUpj@BmnHsWh z9%Z|o;XDEfEp~WfH>yPPwEyt3=+&A#7CAed*c%f3lQyNmZ^w7|)99R!2!V{P^Uw|0 z+g)^J3T1BSJ!iJT310E5%iqzqoOv9pu7Z6=87(N$etzFH-}HE+7P5c$%(w5Rwu9Wh z=M`9A4o6&j%y=&0;jD9Em4fK(T{R}$5IgJ`M0{}JU!+I>xza!vp~r|U%x%S5SA1|c zgDcLJoAK#~+#6oWtsOwj3fLC(FXi7^fxrASnw-6}egyNzGYzVP?xt7X;LHveHH-wW zqe)32(072`f}-Qw_o}y2OO03M-G1$p&y~;xs(=w{b7(EvsUB>5@kFH-L_7HT9!IR@ z14&Ltj?!&G0X_S7`j4@@-l!T$UTIP5de$lf~M?6*s_YvAZj<%y3jtWEy zxt(Dth1j6K?27dwzulBVEd6!Y9WNzT({lz_G66HqnE(4PzcO$SvcI<%1Za2cQwZoa z1Ls`C=k7k+Y;R_HYyg7GfXsJ)VBexUUnI-G#MB3DCIa%qv$C>mk@Uzh<)lY2IPFQW zSj_`~ShBi0DUNJ_RmM)$I$P~}GXL93XF7@b=zJNbkY7I{RinG0^4x$DCowbh7gA1#2nbDsj~p?INKu_i3Gdg9hi-a zogKn*orCX=Uvx=`@_Z*lgV1`QIY_`=@*q#^vg8{c6@SJ)fh>i==vW#C1gH}55zjN# z^Tw1?6e<=_o5rbEwmL~R)jyRCU}WQ^}R zLVnWdSt#+|!MnSaft?ZBO*MJ-z|>6$c|C$x!5iVZL!}?}Pz=@fxE-=B+V+^)BDk3? z;fkmQ0cLDWTS*;bbe<_dsBc(vicf>?(eLz>^KiaInG;QJiMO}W>m!{Sz9DFORDcjQ2a2en86;uh;l_EW!bYa9zr_|rvWw=IW|$)SvwgQJ-fq* zCuePL{mDGFWl8)z#k54#s2+lX2|}jyS~T6veDtzn8&jsIxjI)p9YW(e6(L||jdpiBa#Es?fTV3LymNo&+T#w+o6}{(b zf}i#dWFubG`}R!FCd(7)Hfs1cea?-wQ3ao6~FfRM)~z<+EL*^>ITYEte7 zdy^qt8+MECtra0lYbp}DzpEi~->p9D{U&l}$2{5`8ZVHklOqEdZoZHqr&wHJ$K}B0 z*VYBAa5(Cd%d-K)LPh(s)Xtf^1}(o%I|e^coUfeYO#wMZDZ2K*YvYr}^|or@4;W51 zr=x{T4{qftkY-)O^Ik@1I%07c@KZRPEXk&H=m(yXF;Z99$;rjPwEzM7JtHH~*c^_? zM5Eo^UjXlr06+g1L?k58E%%eM1`rdyMqo<&I+5Y|T=Y2ZQptwPbdbUfoQf_;+5>{k z0AdW_Crtvk7o@VP~9a& zcEk0wI&%vP11VPRkX~M1HsL3`jeD+&%^ zF!!0Iw^^?^o!C3@9;gLY zk_bOLjE41}`=a^VYYvPeo=xLs*Y6lRJ2&>+)v@~Z>Sxt2YtDHm8F1wCl)?^7;aplf z^_kh=2MrZ#cz(O4+1}i8y}X9+6y9J%U&MnId-5mU#nsveQ5bVoEMHixFs01(?RKdWnIa<#6<~t%D&e(n@SCqXp$6tN2^}^K+8U^+HVE_{#cUFz zaB=!(o`A}zfIIvwG50ZBJU{rgGM5N{r>6!V-@nCb!-&u);DFUZl-S*!>q@U9dn^Qk zLPNgFj^PJmXLhK?7Swasx`|tf&~68o&8LcZ9g3zHXNGb2tUbz6wAgG;vn?J=2znKG zx#V;4Ek_X^jj43Ow#LdN%n_l$rrNpNn)tAJ5^T@E%x56P`BtqF;bk1ByEZ?I6)j2Y zj^TxJ!b^&8$u!vAQ;GT7{v_+Pmf9ZbCaRzcooTnpr*j}ne)L7Uhdra+n4nIzg3nhj zOEm&iLTr+naLB!l?O9q4JfmGQx^5O??%1Ewq1!5HHAkcM8<2oN&Lu|!vkwg^BBhp& z$t&EfSx`$|uZoIN4B@h>eAAv-KMw9e0a1__@|mgoV7{t<5F*}hqCEZ*#`*VkwBTo; zylG~*7CT~X3!xE6-!BhH>o4CUoYYj*8~-v9TW+0Li@{grVm$OEVwNPEWN=tVO0y_8 zC|=5p$3QxRAppG1eIGzXFy(wRqB@Ql zlM2INa&IsaN&I`nLAkzj2Co#`y;RRScDnF^4#5&|e-LD%XU8vep^*g$wJ#k(yj zKHwX)vEb$Xjn`3{6$iPyu_pSJru4oj!s~%qh~tFrkxszXX5JHYxvXvT1wp4S2F3Nh z-nZ?+hVgV!I$CSasje=8hC6%Cy81YH-SPgCd;J^sieh84qcV)WhhN3I4L`1th%?qq z0MJXeZKsx5rh`~7b=7~*KT&*Ars(+gKzF<$IA_+ud~61~vxBp?Wz2={#__Dn_aS`9 zK8X_1?g}pLk-BwgBZ--VMbyg^Rcry>lWUQ<{l<09Ou?bV%x9NYba}Gy?d?^LNp$vX zs@;R5_KXoC<<7nGz)qP_!D8?Gh0av&z^`p>UrjFaO%(G$c##LcgbR_(IqAydrSFdS z>#XaQgv&=J%wZ|vS^-tT+?DdTf)Ui^i_^9UsPGo00WJPb#D7Ix~(@8#$DJZg>2f^se7H{04O1I|3d>omgtev~)59}V=P z4)wr=CU6e7n?b42r~;a^`$bZ*UADKOCpV91f3XNlO?^*WljbWJLG|m-ks<7)ZuRtgSkJZ1 zP~yTGD%Y7t)q8!pGvD0NE{M=9KkIViCKWi#sWCH#rlUiNr(p(X&yAM+?0Ihdpwqbl z=*}e)t12ZV{_`V^C~X{w_ww;jBk^^qN++qH+^=utwzxOh*2n6^l;+Dl*}_CBF_Cwt z{BI19zL>gjO30ogXd72c{+zJg1&$iQdwE1V2oXZdit24@KdWRFq2=bhiMwin?Bzd8Y%0*LRMF&t7J``l6L7=S64w0JhQF{Sf`MQ zGjebp-&L!p*fTuujwInm2#1-e3;KUPh5-rI<(i3svx(Nt2r>N0G!t37hu@Lo5*4`v zG%TUkAR}^nPfh35wp_!giiKb7qO-~9-))-icZo!1!U_e4$xDBoVM9eoQm$8)+p5p7 zXOOi*HjvSK(?gFa3e#<|kmfJPT|EZQl)Ydmx_TRu2u;_WIFSnJ8ULXa|I;ewgo~n} zhrKH|oMs(DnX-vl|H8)auV4gQ_x7XcIGb?i$fobwQczZRPe`$> zZWInmWm>h(^Ug4j*+jJ>&XAHW+H&1PLFc@NjO-dyqa!98KQ%PK=sqd^BbjX~7yKhM zHB2=oE`~6v?p*L(%~Gr`SN^gib*Qiog^ev)_C)%;b`Q0IGtM#0H3p_dis-|ZP7GJR zumT$6JH_CTl52-bN_3oc_E2sm)7#Lm4kR|Vl}NGgBFSF#{y5-&vJK@lG+J0Ab6mb3 zb6S%0+1e!O)aG~49XZ(&7=1@F-C@m;7N;4vO&|5QxfQyAV>~OJO&`eGJ<*lyha#yy zJLR3vSLzPVzkRmF&wwI34_%+tSyrK2-%8;cY_7vkN?wxvz_A#ze_p!wjm44tuw~Ak zSCZZ}o=;|Pvckvt5@tbmz}gfl+-4%WM*KW;r*T{{0i!1H7Is$@6T`5SSc^aKM3T1= zR4O;XJ(hm0g52DSR>xeOzfN7Rzg*5!))Fn?PsTG9Xh>C5)`qlXkIg%tMrAB*TrTdW zct9P@+{BExAVsFgfnCfB14WWNFl4XI&tbY=&(StF5}qmylU4rQVLzYB)EkhGD>=zpFcB&Z*xg)(B7mH8?$^tn>7T5mVtoVSG^c~v)RORSd^IFYJ2?^D zhzG2K@ElEr>;;u}kOP7W>?5RY>1=7Z0|}g7@0@FmHokv#Dun33o@LS<5^|o@@W>ND zK2H$U8eHE}XU^DBpGnn?Ofz8JCv>w^Hm5LZ)j5a*Qqe;%3=Ivtbplr=Y|!Ht$dE&- z(GjOV79mA3OanV8xQ3QilJ$O8Bf&H%vcaL?N10Daw}*3eF6E@YjE(cWcA#O?1fV%8 z(T>$H6LUCOCBO6W(3@Qdt7Sur2Ebs@zf)v-4>Fj*bvR@Ur+GqQD9fZ%K%@8N8j|Em z>}@osXyS+PONmtz&gvuYj@mVp2u))B|`OQj*(B;;z24!4bIuNin!?zAulD zLDpQUFUdQC)e9^OUA>8V0)_?#aRGF4p2U)gKiN@RoGz#>kdS`f%Nfzw0*d_B(c6+y zMqIrF5+FDJC|7B7t;4I7#B(ucHGUfTjYbmbysrWEWW#dC{Y^0Hh(@j01%qCHu+Upl zqX*<`^-r3dX6-R7@Fyjo9g<=~C#>Z_Usnny2Q1-0NE|{UBEQ$ySHZyyTc1F|ZotYI zL#sdtUVq)wHOvM^WClU;9s!9z5VQMxCxKcc`~B@D6g^TMZD)e#1KC4+dI)nKz}X-O z1~3fB5mn%r%RypfxV1VwJ;X&tzhMPeB+(m$;Pv(Q_nUrAqv%>z3lAR3@_$V1QWb3n z)^0AKl?Yz|c#C>~LC9Bwyr20!`^`h^u25=Ml!%L|X zf7#Mn5G!EirVJ$(KVg|}GhPRdZDJwOjHyA(qqIlIYAoa$hAC`RaMI5sdfIAA3_y4D|yL=GF+JP|De|MKoO z9{`RZq=dtKqf9ja&t=l7gD==mIC)R5y+H`uAFU+v*sL;+Da;n)bz!4bu^Syv z`zZ;A7RGem`c{Q%b_jTr(UVnhf$ua{rfJs#G?E%vpKuo%?^6G)G~NALmF0D`~p;NouOHuq+D_kT`? zJeb@)tzH)unf`wD(`H9T){?sUiT~sDDl4L1QBp*K*XuNm&!dbZ<|Z5XTxGh4A0@1y z4v_V5XIsoI^C&VmcnJv1j_avVn}wD5Bl^J0{(Rjq=%z4Jp0ju=$=8Q}a<45*mbk+z zbM^WGsw@fmp#F%f`T;!EPn)X~xbByq>x`%P6Lp??22P23mf6Cr243Bt?^mpf{>G-+ zs+YLx)f_bfj1GUvK+!uN24%;5v9jx^e0ytH!`#4^Bp%h)v~(3%m$oXsJ~H?s5XV-(k>K_&$ zM0LuyRN{KR7%`_}eY#+(C5Duwqq5(Fbd2t;ItMRA>9!IzOTd)=KR2oix2u-ru-p)S z`qf%>c`TW`E&9U=_NPfpvH6G=^AC!`z&nz;)<<}#_3wgC(1#cq4Ikcj8AyT@>snF= zb{UGFii;w%#R}iR{kTy+?^GZxD)wh%8jSESYrR^M;%mQd?G)hu_#wnvJKL+0pN~uI z)>;rLb#i}y&j@66M7gDOy}-puvj98=;z8ntwe)%M@Y!Nj4g^&%NaEP6_zc5^hW>=r z`}@;DM#)*jbdB5YU{p8b#8dT?8<1!Z^4TLP^DWz0{NvSvAs?$9|6YrUMv+@2%F*y8C$+iD#mIG=L7JkDazR!HPkd^2ZdamHi@gV=I4ZE@ADdEjI$fp_(zmpUyNOJpR@g$Nj7rRW0-QmyR%BjA%N&bHCi( zsOwnt;;6zrtZV3)Wbsx^N!T!E>1MjzospY`=CjEzINjatfmL+JHrZ|AmsRkU&=4Hx ze47tHgZ1ym(Dd9YWc-o5pL>bJ?+Jx4q34j^u#MmNxr6McN=tv<1(;b2>z=o7^RAi% zqUjvRLlmv~#nz0_c28l3XkO?@{VcB5W-?QldH$f`+wxFnx50n}^>6e#0-+|ErH!!R zBVwM=^obdolM3SpdMtl$2HkcP@T8JF^V1ScmmtWt#B-m5E%IsQ_*Z|5N-@$K8q!Ce zv!{eYw0`RS(aYncdRTo`oM#pI+3|TIj-b+206h%43jqkWG=Le|J9!81-2cU_a&ur} zXaomxet1YqUw1j*2!!s0{@yl6-Pc|Nf`SnFx_`(80Hh^9K{5deV*#B4xHQ|KiglwT z9Ot<6P8bVb6z5fw=UemO@1A_UapRs%_qA02fU$n8+LRe4Tdq{cC_8gIa^YZmrQ%Sj zP4oW!Pdnyc4)oxZ#>ueYvDt}yGHagFz9uV!6mS9cq$+RPPU!iCia@xaT+F@2iqSrkW6Y`e*-F$k$VZ9UT;& z?KPoGYswJqu)-7u@cO*ary|T3EZS(h%>hC@@faQ~%iyHj$+ zNV}xObi45g<>yU0c)=g**91`?tmYcrqwabT1Xs)Pn-ta9yO+8XRf~Z4M>U;5K}n3~ z|0$$mT;=5pt+1ipj+)IC;!#CP7CoAFVG(e<4kOL1_0Ss>r1OOvAePnN1UddS(dq*h z{W6n?$w8SJ<3%(*H%2%(>x!>2Omh;^&n_dA2Zy?2@=%8CYVApPM~lhF@y>cTdh-jF zTIdbks1KXiN`fJ|@dfM$_hN}>`UpH~7=u$Diq24M8iJ5o!1qYqtGerDOV~4V3kmOM zHrbU2^t-#ark*fN%*L7f!4_mBG?AD7#7NzKoe-&z+)haBqVy+{xH_NX{oRRb-Wf%1 zD+3wuGna{2;d6JQHT$4-mdPB{97hQw2GYs3KkGb+l=EIS+!UmT5&9vEjDEM+N{HZd zN-e@SOl2P(ND+t887#1sCz49xJtkW+HVVA{v6%J2`Ecjb^BP#jhpV4LHbsOmc-bZH zT-+r)yja4(uHWDUhDd0u_0tq6S>m(n#mw5o^h_`46Yfb+r*}3wa!kIS71qQl1j^tE z?IW8_MNfE2r;pF;ubIJ&xlANCE7XQqA0@mFx_#O>5$!>H7qkHte4+z4nQ9r&t)wM6 zNzXAJigG3&h0KnNIS}2u#ar<%A*JL<8uvUG8=s$_H5u9%D{wN|OF||OS|To+Af9b(gC1MU5cMz8sWmy) zKBkVlptYw471U3d=^rQz7aFC;yc4EL=JaA^v#-ieKQB2l7yE5-r>CHKQfS#K&h+0L zQ`P*%)Q{^M9A3w?vO$|i{^ug+Pe+^CPD3g>eEaiUCbQ9my-?GsnQ@FR;fzXL<|doP zw8PTe5*cpnF?9|!m<$J8CSmS!E+_rT@Fq(M&?ce{)cP;?3fCR!iqc<;iuWp-BR*gf z!H7a;?BF03Ojiy7lf%k*H=1gZUp0Gs7mckGz=;F9~;=N^@kK{(FSsZqW*0Kir) z!h&0=0TAx2s~u)awR*|eu`JI;$iNZh`3CJSAGtEZl*Ogev3=8df@&w$Kw{m$z!;*_C znCH+uoZicgr3Jd7a-W4N6pXsV^Xl405A}|UCfKe&W86IfE@k$NQe^0(2cA6K_o`bB_p6rKhQm7q zMI7A)%uxU2SyHXcjNUZ)@YbWB%3$<`WjnO7Pu>E-AIw>>O{Fw+Dky?8!{Wr|=N(bA zAJNUW6EmaI;k5+xIqF{I3r~sshH8<%R)WDvEP--}a-=(K`&FFY3Jm?^#O7f)sahtL zhtpBmw`0kmjP+^~raU#RV&n&j&yI2Rd9<=)sk_BzZs7sX(|JZYPmyPR{1W4I$&>y5 z^9hNf(AmnxbUJ2b1d++<4Ww}!5wjLOg)_Z+u{M^dY%p#S&na#*M7|8{CostCMCIrsjHBrDbY^n6|%5*dAe z+8yc2#~A?khk;}PMJF~j4L|B)OF#3Mh1t~Yt1Mjy@^r7buu~`B z`-gU8rExF{pes@z6rD|5!aa!FT{Cdb-KL$SWM{Q2+aIG&d=@()R|aqHLlKvs{!~%? zJ*Z$@Y;HnLKCW+ZFb{sY^aF#Z%?4xaxm@sJ*5uK^ib~z&1ZpFobAof8eYm+cODZ*! zRsIb#4ys+FZ}qiqu%|A^Xv*IH)9Nxy++Tz4m2Fga>TcwH4UUi+DG@?mQ!ROuLihVL zk^K^?yyxyoK+v^5evxX#u!Vn00&}K>ZHNzNdWL28-zsTh1x}EvZeTricPEqc8DA&v z2=h>~{fPt0BJVGLBo-Y6ynkihY0W{fXAD=vUJOtEw6cFEyLiV^nDf#5yJTF6oV_7I86zGR!w@;v6IzL_NQ0pL?Y;nl>E3N zNbU#;eytMVbKz5KGG*Fw)q=J?;am=_waMt&ipw2U`uRAk&+wi5H{rC?aDAyYQgrOV z-*xqA+kL;pm^94f*TTl-NYO>rks$wrK%%-Arg<_jfozaytBcc|KwLs< zDhIkYwk|GcM#o;u4QCkKxOsqXt2A~8pOTUi*1zFEI_%~01#p~zs~;d*-0zo+2(0P^ zhkHd(+|$R7hF8~5lg64_+uGW;&d;frZ-BjX=m)^@*UchtWC?)({ZKmV-Z-2pQX$Bd zsx_3));t4|VcYEEZ(|n5i<$2sp>9TGSa*H>npXc3Klj3< z$+jIqacHB!g`ZhsRJ( zr*U3JQ3-xe|E^*S6`_{v?%7eXKg;bET$LTe&$&=KYt&x~WQc#}g!3}H!6m$_xum}}D3ztPINek=YyHWIG8sYsytZq?tCBVZ+ zQekt*QfB^byi{BN&9H@CvU@-C*KVD@j?#DWq{}0I%y&e5DS6zF9BwGD_h7)<11UG? zd^5&!wdS<3)$I>W%ff=TWsORu>Q~Y6uIjh2)MQ7}Y=7hf@UeOTEJlC@=leh@ozAHe zDY!l}_;Jt{?#>ejLmtBl4IOHW@8f*#5`llgv-_5SMx)ugSfvNbw)Ym%iWXIIwBE)s zU#>yH4+RX#U~dj4(D2y!#$yQ62gSC zBe0RV+%iK?P;1p|(FNvCW#=rFO43RvYZ|am+ahvw1{|FgHJS)lvV_zGh%8ck zO!&Cw)|EGmvEm~n`diQI4^1vY?iw62*dyyC2lSQ}1s@m5CTm2{8ZAwNg+c?ji&jkP zP6Q|(^==Q(Ax^s7rly=eKeN!50WT4vSA^^Z-d0Vz^{Gi!_k{YK@1YIEcBM~ zj!y&DYGuxnzO#cBIL$@`Z%LZ=Tn)?VX`4-}j!3Q9ETnV@DW!d__lO#t^~w}XOxx)& zLU;LBjjO{Fr_I>`jBuQROp8cgzekc};jh9w@p|gloc0Z8kZucijb$Ze@ril3*8w?t z@T6d`znMc1aw0Sp9ricF9#D0rcYat`9{J-iYeLk&e9Lk3yi6F)c|Nb@RqG)#PuUK` zHFZ&Bo2YAn^E=6@xD1!aW#w?)OsxNGi@2S|u3A@Ys*LSmH?85Z0S;SU&0WO*M~xe9 z=%%@+zJN=8VI!cN*_4$;k;iI}dd||nz3qfBe-Mld<|NzKj%8B7<2Ft-tDkMsvdlB= z_-#N)_0C6}>&6r+#6jC|3GN8qtjDGnoO4yv>~xB7NcR;o!$5G4+ZY=UsM7^Qas zr?ac)ZgUU!cUZd}Z6zOO^fk2XFRCmWc%2f?N`iJ=RLj-Cn!x-llS4Ma{RPo46ex>7 zAWKa@s|ab&P#P&vbt?SGEkdc*`;%ASOYmrp7*b$_YW`AQmj3At9>U~<%$ie}*renA zxn!~)IDw!km#ZUyoCAHc{D47&llx+O+XqOWg9=0@))%j|gY^|dLlT+?p*K-)wlBi- zlmvNl2WIZykdO$s`KyI1Z|Cqddcx_($H%+3hym|pflP)lV0i^q*>(L}Ap-&m3TZ)v z#9nnS-YHF|&OP9wPx76355{pdiPeT+duInU$so*F$o;Ahjen$w1k$r~N+CW6BxX1P zl|~LdBX!rf86k;x&vw*q`{`26o+sxx60xa>4%w41K(4xkoFzf-+)rL#_g?;DMEp-~ ziW9CPM=8_-lIIDxfdU7d1l$iH5xLi$?hsJLmI+;%m7N!4jHgU~=QwlmkXGS^i`-av z$fy+Ye@VmqMl~@6N6U8{vC%KFO~K;1rKTd3!`Z!qDfSPt-utxF95a9$1$9koqCzK) zZQ6r{lpeoE-8izt6o-PQ6uB7*N9@N)-m%O6QwxGnup*3-;+Y%|iRrWE7_calUGHni zar~G|jXCDDn&==?eZzc!v?TE_JCf;tP8%Fr z3Xoi8oqmlWn^xz^|EYyW&#V*~V_{@l$^4^4T$(ZI_N2IdnrnVm-ZUe4%%0tuCkjr| zSY&L)v7o_qDQYGNe^$|p^(;uazG-*<|Emh?ZrCav+8)m>2bH?DM3$Lw9Cw_HyA;sP zaYd46B|+`9XRc%Cqg(|3^*1n{3M0Mcka0a~?V8Ufm!@J3l{%2vZrGOa4`RkuHEPy> z#HZ=d9^49l(?5PvPbfJ~X!K(yqi7hM>U*pc?G5l6srwk|XIXbk8jx5!@sK%EmNwsLj zXjM{`MWZOxmoTZ}NOH%qUyd(6nJaScc*hG2%P9(5ViD2+!1nTrKpQMph~;pzi4vGD zg#LttAikhJsRI!a#N)KnTQf-!hyXjdbr;HwYfS{eut%>Pp zjvpx`=MzGlv;5^Ylpt3TN%D44J}DTnfJuLQP|&Q~4>AuV1Y4V)o*qO;4;;y{Sf$0W ztnoh0X&qsg0Z_2~$t>c{kJtTx*73`mDmgxsHx3KaY80TCU3j{V#k&MI7fs5cIh zcp%CznfD--CxxqX&O6N|wl~hVjDfYI!4yN%w#n|+y|%#`w&ZO}6^yxyPk)T)*v@pn3` z%`Ei@?a-Ox6ACy<==EPKc)_VhB6JOK)6nw!Qe~36K6kooWD27C7t|fU^TO>?Me%I$ z_N31N%V<9UeEU5xUU>ZVz+1Dk0nz756`EA%YIUZHRWmxC?GWu_U2QHAdV+#}*3LQw z*uXYb8T7(H9~^VtXb6rC9*6VWz^QZ3=dK^q%C1yyrZ-OIq1ZZ$MFT)<_iMz1=rxY` zcvud5# zIk;P_GR&Mj0-&>VRV?YL&5bkz$@AU8hvR7+K8)lwC)Q6i-!-FfRsVgh0>V;Vbcjir zRq+v!F~tC8(4rGYh{O&T(Nl$xq);6%hf?ajJIVd>a3LZp8g$vZukahN=l2!L=3D}i zYEUv(aD6?y;T;UDt>fNb!H47e9I6%=0#CLgxrb-HOLc(edi?0{7ktwF7_w2)&VA_`Zv+e{(Ea@8;Eff~pN=gMpL|h%&suL!C0x4+DbYKM#YO zkvv$AL0^MU4i(zMenT<{sDL%3jNO_iA2>FcEx>tuduNvcqBMi+(PhVxpu8xgoBLso z#ng4X1#nAev7R82-AN0H)^?%a!{v@7OsEe{*H!QC*pO?tJybooA82rQx_jSt8T9dB zv3|WX7|#~lKIND})p-=_xcEc54IboJ%$3({Mzk^JR4_R>YTkBpL19S`barMkW-t~! zpRBjFSPQbb-Ioq(0A!5bmPgrf*z4n!o~?}y!h^%Ga!4|>drd|?oDeH-ajjc7ju=!C479EM=@wp4(s2YMyAm9&X4xTN8 zAq`vbZZ_HncHVM=kKYKZ4O#m#Mw02#iq7veZbqXCirzN~5^J`sO&VOivwlbPmm_{k zbynQB6HQ_DlZPtptXq$B+H(l%j7GmlA0u>l2fd#XxQ<^>GquJTy<<`SrGb@JK@9P{ zfA^N!-+YV$rCF`%Ec(jxxaliLg@x<&@%Eq#zXg<7`>{RD$nc;LuK~#faq9z^ywWOz z`}%NjbnNV^AOr`^&NPI$@?wlG@8g)F?eSluYM5hdx+)n$ zt3AXI(0}~;IwZ|jim$K0$fwNKA-6W%mM+e~_F+)N{NP`g(V8KzLj7=H&>IR2r+urY z&0wi_QFzSZ@5g)WKUN6VHkuqX4_C^dk)?ZRt*q>AmMcd~7TG<%ot8CsPFdjGua2WU zaKWgCR<)u0WOeJJ;XJV#i>CnYX#%o;6_5u0twHY#om%>Zz48X-9~L0-KKv{4yqufI7lfg&in)fb zv$Z9N$BZHz6egv}O0=eO;LT$z5*G2phvo{`6d67>Bf_0is@|FxWqdzvL>R*j40gBf z!;{b{=5Q07;PH9!*X z1nr;%fau1kBLB8B#jf=^V3|S-XHH5=+Exc}>AY*UmQf(t&de-nqS3Oq=`DX+9it*cA=1o3lyH4El2|B9YC<uU&?1}5#QgHvN(JJ&1o@(a*TNT{Cn`N_60h9eX8K+hUg={ zMKD{2x@;GGHWW=A%h}1!w0e>Cyu`-d7_MthTW`{%|1$%2)h|Q;ws8 zUzDI^!g9FMiDw7MP4m)^V zALu7?fi9>eh;bAGDl zvaHEo`;g^r;eh*g^UhokJxNiz9ojx(A-PSzaD|Ch-TWkl|6!CK?D@scwh|!8*`6a& z6`{FUKtN0TQ$Oqp`1bZW1@A@)lKZ03Hbr2{kx^{s$FK^X&j8Bx@f?fxFnmuhKYSh1y{AKH&~LFw9JTvNu7PZ8`tj0(_=5 zm(elelKB7YRvqaZmp_xRlg$W!`3Au_=lX+g17 zJ_w-h|2?z-7%LOd<%TRZ!0U5}JL_EtYi%5PQ*H&10%)-~7BJHpG^U;%}u1M-^b?8C6FWQXcz%q+svV?&%y6J)E zff&oFsHnJ%G>q5dzy=u`&Y+#b#Jd6b^*UX=Rp zvc`zd&~ZFfvZY|#aDTko<>u!@9bhq=F)T6w7~HJjOQD}!&eP2V5A+Pz!IohSliTka zWj5csD6H&5gFa}){({$cKc8sr%;mAQDyG68j*sBmgUac@>N^p>OT+fWoC?!2viPb9 zw95eE4&CyUrTOHPf4ZZM%iVX;ibj~Hf}g+wG4Yk((Gkb~WR7A9J{Ocr0~?vU$h^lx zsKD}yNhpcQRRqO=o6nI@ATcE=>(Q2>)XdzwU*%*j-KyB(yK2QDZ-b)^o2qI>=I%rF zV_;nRdwH3n2zXzDneW@@kivi5j>XydAtkDR-H!N*dCPpW9wFjB)iqHCYVddBB-6izjg>g+h;O2!$I_rX9LGnB zTTm6P^`;3pmNV|V{%9-Q;3b&CKmq@>(wJz*z>YC`d2pE;2iSy+ugHyxuT|6{!`-&gfcMQA_k+8cBLkwB;0C z4;{pr$7&w{I&D@jS1pDw-OQ(UTp>9LRAmZ zeNW1?xkm#-Vj6$%UKS=UFk2|^`#UEN@4Utt0EI?{@EJ0wu8(3$!2+Ki8HluU zY1hFDgMg$D*5J>Si3O6jGJ@~#tVP;zX3!s6WqWelS?I*w_n00IVVoNAT)`|r1%zmk zkdS5zcTM%<_E)U-v>C=!mAG-#-n~H#2y=9q8mS%jZ3wL)Y-r03SpMQZCuwwQ=v$~j z$*kl>TPC1&Cx3me>uS%UV`XnIdL1DJ9u2u{iI5sP@mL@7Mg1c68*Ml?9hhSX?BvAD z*P}Evd~4&K0*KzSEk$3aSVuFOM^Ag0oV3!)nlha2i}}7FE8?xW`FPU_36Y6av<}VV zJD9RI_p7O@DeLOx;Ck1qMl~mp_N3gvWCg_$d(QYUhaPkeQ0Bvft%%$4U&yR58fxg; zrD}UuC2>Xc{StOtYmT@9{aAfBt@%u0dFjoe4$Zpbsx0=n4A7s~){C<3gwY$^u{>=r z;8rTM1o(75+t;lqV14?d#f)mHcbd7F8PUo!J>?>c=Uhb8x;p_qV6AU~?Pg#`5D7!9 z@wYxNsG!gy{bpEgkoQY$+kkCH0NLUPqO?nqNUG_PZCyX5`8YC2v0U2u4 zl8ch)Z0|X8czWSP_JQ-bt_LoGWe)kuw<^7(M?>zr!tO@=C zk6jTQ%t9^8(*%4jLhEk%4(9C*x?hqiooMSGm(AGHG$^2s5$@BuU;+O?CY9=3f|ozJ zPhDK8jY9OmU&aoG4rZQyd1WPZb>1C2rJBNrDLjTm2DNKAZj&oGmF@tj@j+hScJH{R zxmenTznIgXFrAMkm)e~BTp$8arR(5Beo+EYHlzf5+@eXm!~aI7foaFskW*NyX+iLq`6XK6cN-n_=4nuOLQT!+ZG3$p<^#vZ^9u^ z6p(0#_N=*6;{t+@N6KAdA#?vTk=W?~YrTkiprhZ?D?nS{`E~VyrJX7@3!|Z-p~HT@ zTvxKVFsNTm@VH!C%gE_`$qVwdKT&74Ao$IOIJ=mR5aVm zbF^Xc16Q^#xmsnavkRDg9~jAp2z?>(4mS4R!m(h~kB-K2Bbj_~yG+%)9ochCD|WitR1@^#d@@f(sZuTItZDZ;0C+}n07uof zYkPQI)c*cHI=6cxtr$ahPfwo%46#4ZvI_y2Dh2skECcUiXg#*%@07AY4r8XIg zrtDV`C~joIEC1^oStRu)+dRg-tpqJkvS}3h>+9=7;NVLo1vyCe1*k9WvjK!@QZh0z z^#K$3fj<}mz>}p;$gV7o2n+;&dU~1y0MWsP1?Aa^1K<$-)kW?dO%CJlzhpm;clS$z z^|melSPTNPpzh7-57s1gd`1T2Uj!}F!+wy&l)wdO ze4U+c==sF)b^zlq{2%reN=mwO4=LfB)=d}H$q7S(>`v70_O(xoVo1v0nlNe-QUz_J zUfmVYO7XE6jUxx?Z-5R}D5;!jzfoe-apoC76~9Wu)``8sWs8lV?|}~7xq5g&TkZqK zz#+)Ktp`=QtwVsDJd}4E=mtaxXHR_!7~26_6Orl2RVap%rI=Gj3UTzm0AmVZBjlZ3 z`~O0;i2|X?_?LxvB;5u+Lz#&*K7kO>7kvA_tT7QvzO3_qj-d#06J@^28pZ zZU`E5a~e|uAZ6I0>rkMnZLin<>}6~IcxDvNsHBYqJX+@`AJ}^Efn^7V$r|G&7F2} z9IF27!PbDAker>srTiclG6DPnPe#C=7FGWsj)wNy40g$QK5E1Mv63XNK70wa+{eM0 zcVS3PEl644;yM&*YTG7SdLI6aB<6S-`j5H+NC6}Fh!Yjw=czvQ7IJi%5O5$Le4=x; zvs!fDzu4pLDymmT-r8{qf>o7b@}!LkLY&G~yhUMv1?6DgCCjRT`X?)FPixzh98Dgb z>XAPaS_nzbVVCA;$~n!l4b3iz-)dNYxr28jHd4?MG#s87ag-tfH@7D1uyrCfu_cyy zDnpaCyGWi9V~nVQBZdK`XaK+J3rg4iDGp^vUO-QuHO_G z%l|{yJ4H#>Zdh4h?xta_&f-g4r%(r3;hJzYgcdLQu0~^9Qz5j9DGn zw#20im9_zV`Ln0P9WzRb-~1|M&m#g0Y1YQ7aw;-E5f)qNS8nM1=ewAB zeK~G=t6lNUBK!J*g`f_aUSbAUgeJ@m$s=FnFHzQf)X!ykb3;xM8wVmGFTDgzq5m1u z_G(ca^ z?G~G70hwoaxt4^gIjq=3Q(In1!%@VTDw~PGe6ED|* zGw<$OZr9gtz9(5;*RR<-*I7h|z=JdfPJlE202%)fOOPn0;l3f7^Xy{C6fhpN7`iNI zwqVhoFtzL7A2K#r(l;2eLBadsCA^xH6a~d~42_4yjU!gDK3m+tbhpC^K4YhK_l&F@ zOVr7V{^w=|`t-wCpU|59?yK5Sb%t1o_@pn?kjfxo+f9(Z?+5s*(tWRGkd2n*z(Xm+ z^tP^GeP&R3lwrfwD!!|DWFdy*9zn$sX}%~1OMc){j~jU|NXuJBkq8Huc@-NV%fnN% zCaqM`8Rz}Of^b8xE-6_Aa9l0nwF`=38@f;CnYj=G()81)WrFZsP!%6fM6#7(N%scg zVZ4FlfebfSX1zE1=*Ka20m`gpTzegBF|$jIBj`0h$-B@)7FB7{=XkM0Wlsdq@xtJt z{VOb@+2u`ePSs*nA~~v8QS@XSf9IHTJ-E;d>WZp%ITuG*M)2dcd-SRAcLBdAc)>=iFL76s-0*5pOH0ckCu=~aPJt;; zI>35KaOShFzXr71im#jX9Vh;?sj#DI8b6S^TTshkzuUX#BVa;~L@pq5bfleCI*E=z zh@6rnkXID25{fY(sthS0ba~sf+fDY16YPob=D{>dqxlEym%=KSVrjcjQnCuaf<&9; zH-a3B3`SrLydiRGih#}zGAXI0{<(fyTBR5h6U>dQGTjtvVWTw8TL~$>LSoj>#K$T9 zlD+|-W0kzJoAun@M3ta~q6{oJ?i}hrR2>qO){8n$$7B4udqv#7 zgTN{}>H0oQOw4q8k&q%JfdV1Q8G+%mYi-rF1w2Vx_Q zCCybhnt^m<8Df90i`o8f_TN8azxp1RZq#3)KhbPN2}I0+s&P$d1zyimx~7kUhleMzf1Q+sJmx!Mc~A#H z5_8V*F_*bcFD|G#hCT6$m%36y00-EExk9moYwKDVtu|3YFAtA!vZSpO@^m2Z;F@Wp zu59dWoGh>eAV8wWHX7q_TCFv;wy2wblb;nh?#Y0m1AfScxsY8Yl&D)>h@aI@+!HN* zhdic?G33H*U({on^a$7Y7X3y89JCB?F?LO|{;57xFBp^fl#=kV(00HbuoLVAE!nQ7rGAoBfZ?i#E-T*8~zQDJ-H4LPn z3Wfzq?zSX5c2UB`Gj$YZcK*O9)~UN2{ZUrSXAT`y(ZxoJJQ*Z)-X2l|-MG<(U9qip zEu88|gTUU;IR^vV>}5cn8Nxg@#=ajJrDvTWNKPsobK^(I(NEI8e1e?Ur=Be$WovoG`+Hd zMx|OA=MMJ_Xn|nh*N7!OZ?Xorwy|axje?G8C2*_f3N<)9TmUdf5}dhkIGy>0g$FCh%^}1lCP?PytYs{l&!j9Y$_F>f z{``RiJhn(^;w}@7iRuCxxqeQh(xnoAoBCN*-i|L1nMMx)yk^OHpgI${wPMTWH)t$} zDa=IbXn=R_o6Me7yayN_S)T(KaoFtt{Jei7zV5B=cR+O1{584^Zn9V2Q@?ZjsnxSS zJS=K>Q)fO`5Nzy6&`}x>2u%>@_50G^m+-C-=s%F)POhvQ1MRJ~@L1i9f!Q04CrZeQ zvF4Rd}v;$fkq;q+*k@mfQYyIm6g2DRvl{Jf$<`@~A zFQBnz-M+N^IzN(S-%U0uke!qdLRWdqWEc(kmKGxIxxU(^h8=)U)u4$k2YS*fSImqY)n$FFj)8i z1_l<78rk1Bl;F%cqhzy2X2W`&I*u|X>I0O-k-U)NYNogoKczw-vyNzb>F>by$S`QSONjhSqe$ z2&1j~*47{~c$3MBobwv#{sx`*9b#f|l>3V6J$6E9*m$MO50*@@C#gTRo1_txm`4#t zZS#h{M}Xiu(U&+{=p*0 zNGO4l0Z5{jQWe&)+XKWuQAzX-q!1WO;Z^JP-~#qw60>Gh+YNde-m!O3tbv;WTH?q9 zU%21ufnu1}S3~WAD}iD2*M2l|Js$wbKjr_O<-<2NV-lW3Y(Kt7lmT*>7 zV688}g!$N&kx&)fE4vZ9O>RbS+o6*ygye2`pkhOi!qqwblj_{Ns~+?pw&3#E9bgM! zZowvGCE2fHH?=XTiuN8fCA2$1L(@9?OCI>0Peb{Qu$L5M-h0~{pvR`mryQ0Pf(t{V zaF0W)OYw9wD0_2X8fj=Rz!q}^VX{aP>yMh<7~R!db7OzNHq}CjQXiATa*4dB&>xzc z0|GY?E7SN;Hm=0W|Hh#OC)>uHUYtg0yk8X*>FS2_QPZU#RFqB*aKn{c_xZM_AOt_= z$ewPFVa5!c9GEL6f1lZSqio-eRN}NKpf`X3mSG4~h>Gs7F_>mr{c&`K3})^|hQRz) z1_>RL$(EH7w2pMLx}RmV4n2UEqc35s&UJ4#5ke6qEW$ZC5wd?Hbzhy@7{M}~=b$$+ zBmWKXT4gx$!Zxa~&ij!cslz~5_D4`+yL>3EnX21$DH_dB|D;ji)N&1CON@4yLUbFx zq;su0&E&*V+Q4)cHzu25^%^rrq;g<&d%5=NC>+OuL}iI?uq{mU8lrSMTmOo~d53X+7>@m}D^{GDod-QTFPKNcLz zvF`72lOHB!n0RUFzDE-}_|IEML5H4 zbhnBlL;+He+5<)5;UmX*177g!spfs6EOUymJ=rBm6f0w)=(qd$bgS$aEnu^mFJoK^ zcGiAN0a;zq#b#d;j4{`%N!1Tbdr^GGhmWL)bRlu_o_T38qXbtfuQRKoaix%Gjka4N znWYBYzSwl?!a`uxXgq35f+)JmTtS*785>=;z3^9g(Jp&5+oc#)jhT{$0pTTPzSwfN zTN$?p&m;3qULIw?g$5gzrt>)nNbBGEFd>oz*G#MDQWiBP3O)z4wo|~uFI-TP*P)fA z8C$4qDIf{_*1|a7l3$57Y2_Hxsmjwy?C$fE!eo0}c3?wet{>}Y-s91d9xp6)(gBTy z$8jf@zkH0s*+@f;G1D`qUefXOY+iTrnMqldI=hDMkB4fSpn;S1*r*ZPP!Y2D5_G=u zmkD4Pgc$Qu{N8V10x%3v7+TY%r;ei411=WID0Rfr+7htGPUnqjVgiNHqn^tYl4Fv2 zz2SOs5r5(APK7u7ZjIONNOWds3k5}Ki5@D)o@H@yUf0vK;TQ*#vho}}$BQmq(;(CR z{I5uvXxhj*UYofmgbooD4j*GVZV05M?O9ypm zi*{Tte#|#(;1*DOlG1wpTdnuu&djh->jxT7z zLvRo*aKl`Cxoc zG}YHju`G22ij#pj%?XTwKuIIU^88*K&!*{F*fPXRs~-o~b>_;1d{QQRka zJ^rN7U{fP(Iz=?3jLaN9p=&Yivy6B^H9w16(NiK+72O}(C*Ve;atcu1;21)Dv3MGn zS44Dg5Z&q4LJx7d96S<{UKr+I-_$=OSLx>!`~{(i(lE;;^e$3|`40HtF)hNvBXwp4 zl(1Nlyy>wGz-^*-sj3g8lYS1nKL-j(89`@qfvVowodtz&$ZCHV!#Pf04?J}th*waH zD#Sy2a;EQXU#lrNQ~e5Wo<4P^Lu8<%CA!D~d0UzErfvrFbt;+HxwNaGrotWTP>s)pO@)Th4H4e%M`slC4= zWoK!}4&lDoB<+`#!m;sME41+?&8r0ZOp%l~e$lUdd>T4)OArbuLoj3~a)}B6e2mnd zAD#9Z1``!$#_-6aTOwxX>>x;nQs`Ni-^6Sl|2f-2SWj6tXG|7|MCu+nR1O1(5)zjx zG+OPjpdjF}J12R0`1$#HVu^u~7#ynbL0joIA=vMAl8Y8-VK;QqG%=zZcj8~NREA|% zUN;lt`0|SW;}Z&ZN$IKiWr)8Pt4Ao3GH~=zBOq1KA|j;}N~+h77e(eb)_yVihfp-TQ(JLA^y79kh+xxdA)DS9~56iF$8G<{HXC%I>E zrsyWk|@PQ+IiV8L`AZCrN^M6hI!A+Gky>fg_`oi`)LMN2Y4?$TIZUPOAKnYSN zQzak8Ml3hkgc2dISlymdx{fTfJqy8*lbiJm>s?|MBmS3v3<&Saq10i)b}8NZcKh!* zD7O5+%s5?|AN~Mac2~8-_f%&Av_vr}iHhFyE`bmP=G1(2X~PzU3x$}CnxVc-URe+& zoV$#*svxfBD24~Yi+;HlK0b4#Hzb`I*f{LmT$tzJN6qb|&$2Ado~ruB5>KNF^P1>5T|qR<1S5jaL^;iUo` z4ULp;S$C2;0bRT&e4$wbiT^c-K+Ghn zATnOeCf~zPy01x*75$H^F&9P-eQoSKEI%fw73_s*94wN*>z8?!@nCFxGv z+Kq`zm7D)vPz4Uj_meKVB22QZa;O4yL~mr%_!)&|dfXF@gPg65=`p&F;kn?!Nq2Wz z;%}$P$fyyt>2%6r@80!KRuecaf)E;kQPAbuv9UGnIO{e+T8Nh&uy3_uXco}+{%x;c zkf!Z22{H0XXZoev4Q~UQuh-Xt zeunO^YWS16=}|uCOB&G`zlH(6`e{2&o*s#|3d@M+Hvi-=Snesqsm%pg@=R3ToHDFq zeJ9(r(vgUv>9cJdnsHv^xg<759%1r7xAN}v)I3_44Q%zwBY08WpU+EuA}J^FP#GBpzz+P=Z zNB1w@>m`gvf}gUVnu|GAw|oODkz{*m9X!^4b0V(`kPjMIz*v$=+qN`_BS!zB8|h0V zU7v!V3$wAWUIph{W6m>^9mt~vYdW58&%Rha17Etnjb^ZcC~aKwUx(QB4vz^)A^m|l zmG&{J{MMzm-1W@{_xkjG5rDKa;cO1{UFMcfUx$5fi3-Vwem4AP$`1mP?}_nX{hU6S z0?aYP@9Z-Sm;!vKP?vbKvV|RP<;vyNsXhP;prrDGq7sFfHKQ^mtzKhEN~9!{WWCYO zV%SCAB{eULADTZ|S-|s)yuy<-2>-kT1<%yxBlMUimMJ8Kk#n7~ak|r#o_&m49U2+P zP2hnSH;_<;Bj%ti*>>RS`Y7wBm?-pTcRY}n7R-59g$LwmFh3VHCZ6r#OKbSeEEQJG0(xG-ab&#Y(IP*3AwoFtP z)qrq2y(-M|1QNt#`C6IJ&k}P;iqlw5>+1}}#w=x;A6aG3j(3&y>8u*{5O#n_R~G%( zQ++#+RnH`gxdK7gGVVJ#rLK=)S>ks-&H0d+Xb+pskgMx~G0k zcGiTO`LgRdpNs3$*&S5L*l8lkH7tVA5tebUdH9+yOI=AZkSm?e2+}Q_e7g6O*O9%z zo!?piR(|w?zOjH5(@>-1)HPNgoBXHs;3X-h<@&mQxui8(JlSGN1zUu{h6h*b=&g1V z?UBUR?9Vrm!T(k7t;=Lse8me<^JAgA4SyN&PyDyC@{)@6Z&B%AN((PcYroFF)rx=p z8R%cS>c7+rATxee@V#uC7t>RHXh4E8z;_<1-Me~my|oMTQ8*|n=wNT11(MaFHrOu5 z0(GYqnGH-xVN-V^_*5ZDj}YrqXIzKKrkT=Td*pjDodPN9 zY047?p`~#esF$+VkweG<_9)D4BJq3|{Zzpg6kU`Mt`ANIN!>eX!&LZn1!~R>+SQQoOejYI7oh9^IO`r|2zbw2){8sVRr;9 z?my@8@M0MrYh?L8Ll#sI5@lAnO#2Un4tz^t=H5Xmjq;0z@HV``0d|VwKp&V1U^Fo1 zaohwI7t$%O=j8O7@i91T>M=NiO{E=3I%W!ij+C1RX8V+*c3hn4h* zO!nC>MX->9C!6XT7e&JlojDiEt~<@W^@tRY*@|_skR(>a-nNJ(OQ-ajOB6yI$~qMv zR_MzZV^Un33xciZ&J%t(F5n1+O13fsM~BAYis2TADenQO?y8W7($nXKdWv{e*Omf2 zTjj5#BIRM4;%QYV5|{1ZSfan?!juqJOSa!gtG%y*k$dzVI}d968Oro_Jj-3Qxtw zi*j=D?lorw_u~1KGTx~U~3IS|VG7m_^ft!dS8lE?k--YQ1mr!Bucb|lXNSYd?; z8GGyGNPH*?%NB_^MTKPKy0sOQ zEiR4x(09wAljWlxbPqPyUaK;m$|~&LeWb7;$EW$GoBxn*3eV;Z2d~m&`gCaK!ZB7p zh~N|yR-T8oxm;dJsa>yrRZIizHPOMUP&5_mX!(yWDbd^IfMIjNh3qsz3s*e{DV@mH zx?;z?iX{@~@HuS5T-;zndRbA0$nk<3hZ}c!TXofXH_&N!xCN-dxmCi>RGm8tYC3}# zEC|D&h#GX2B5}IahaB9zvS$#NNwF`>>cq%IX3q`%VFLBM6w#|4(u+|D z5_>l@(A`Z``&^!ox^)Vw!3f;GNZU-&ANnX?buH~iWO@aE#EAsxRS<|g{a+gQ@GsKj zD!xsfC5YGi&KExFBORj;cy+ea3q35J9#{O@5M2+g%gb}~Nk}&?*DzR4OzO|r!NvJ< z_HHA{-hP#TFy#bJ4O^$70*Y1@wkfD{nxSs{J-J(1%;U#X$C0r$@xnsK{L>nC+2`@Z zh=@613j9U~yC2fvL}_?J-sy^XP6ov{_#kY%&EgBM1HQjpF;8Obg4NhqjI*@D9HfXy zX2N>nJhAT$4!tgTbvr{xSm`*wM9Wk)lZBRq_~wcJ!@#%z(%-%0Q01Y25q zB96A{#sbrNn>`>+TQV_6Q>fFo1tMlqy%=|IlefuAv^LMGqTj2Xe}YB}q&XQya}V9U z6~88&%giZBM|$Xk_q#ilHJpJ-25TXafNNf1&?eKPFMEzka~Nw{Ka+=Cy5Yc@PT9Y1W` zL>{86?1g{6=j3tcd1kRIAW)eo;+~u0(vUCGqT6}VBHRyW(K*R;$I{f0DO9RdPx1GK zxn75l}^rBucWQ0h3W<9k4&QE5z8Vo~I@^p}$M{(J; za3EMX*#F9ykv1*j{C;;iPlQts^6yxAxv}jX4Nmt6b}I23pD;=8ERY7OU)V8hJ^oe+ zWKmwVT=v!{Id{d|7hU0tkdsARFfEIUJig24^x+kn?8Qv~3m^vxRBmcSHNmZ>Ol04jG&P=~uLO!XNH ze+stuSg>now9RJWiO!y2S}vMyA}q^DksUu4yG|uZ$gD(&PGJe9uyDtrgoBM$q%t(g zo93iTPL0*R3$G)oJ%#uV*5XJGk8Iyv_ zTj9||kmJ!&0wm$(5F#X5#y@Y7^U8XGRFVo67eKfQ2kN|T&7D=HMusl$_tuNSx?{)BunXtj3e0~tP%Qv3I5)8kY7e4;@U+A3frxx<_)578eLQPC8p-7p9 z(*MTBEN{G0+kv%&yUr@wMe07;#OG>w=_wC2$qQr34jQJy0@C98f+z*!@eS!*286k2 z%33Z#-kV=XCuxPGZ#0n0AmO{LP(GeU1S-=4?hVRaxP`gPp6~lRc|B(t?|UBvP+Fb8 zepX9#JuwVMc~`x``Pcbkoi;6p+UnA$xYPA@AL6chcpzoDul!H>%m=@`9{N9kA&ppO z5A*7p$j)7o8{K-iF&@|bJ5n<8Wge+6yw2lC|C|&I?h-h`q2haSgdUw-kGKCp30+zi z+TGOy&y^Ax9CCnt!Y~`KoAY-6y=&%)BtT!m+7}B;cw!Naf{V@3G^05-rNFPn)Z{lBMr>=Bh^B z5)>|=$>Q1)GMc055!K1I87i*|HBpTGnE4*R9^k13Nq+NV}wm>s_;r{I~{rsjfhe=kqZ9C;=w#WT3?bp0m15 zzBj(`#ozB#!2WW15krsLKOtin8pcg@6~!0H1B#qsNpIuma)Ee%7&-^fu?So2&Arj$ z)}K{{yDMur&5zKSw*>wla^N0BAxR=Mn>PT-&;C+w`m(p7PIs1Jvlyff1>-vn^#=g z?uf~&yMKa`%^O!wP>Uw9s}lMb2})V#B6&_dBC<$wnX!3FyxQ+cDVK_N<*5C6#zB#6l#A70R&rS=htIX4DZMo1#4|?BN76|uTynzSQ%cXIi>5sZX3Hj!BLRS zMd$tpU7DMb;zD+(3Y@n`)e5VQ6`@Gy?vLbAs4t8j5(G}^jo1UM)ZGysg4NRk|NgS7 zRbLXMKECe|;#zfl8kO)mKT-6qE1J6cN>9;p?!yX*0a?RyNMks~C z;!#ma`P$bsv~cGjXz})Jh+bw-f?hZ_%mDQM)Pt1q4-EDGfcrWHF}ES9{=Me@=B<=F zfl+w+yWhY#$vHypU#nBq^W0W!I^CqepkVhLssPg!ja9c-+Wo-NKJ}6(U=h33XLPG+ z?86rS`@5+$YxIa*KPiAV5b`;~W;hnx0bf4{f*Gu^+TLX=uYnOE6*Os_i=p)yX!W}% zpv9IV0*?Flgb3y7^MQf2?tbXba!i1%12HTp3BmJ&9eaFVXxj?yg-$cLZx871Y;|_p zLd9$5L47Qi%9!kJO>&@wD_1hdS} zuZ}fmMp61X=9oT;D|8kxsQ%6A&8mvNO-%i7;N6mfI6{537=FrDHJSL}Ynfr%n(J>3 zqG}XvJ($?!nOVO%Rp8*<->JhY!X$3L+YGR$gG~z}vdtVQw$M#Q>#y;Vepc5!^^Ti; z)|p$u_sh8p99SYFo>_;WnCOTJqwI-u;{_WsZK!pY<<9&!9IwFOF(EX%3uIpoTY&L? zyHcDpY8MOUV)Dq!=u}*5urfV_$TEsy3|=+&BPt2SKg$|fy!l|5kX7YnxM*tg4-c+3 zG*CyA>c@wh@FpM+k`_2u(f?%ohqVp^T42U8L4_hPLJvvSTiL^RVb z{ZoVQsn*Etu$p;T3g;7P#r=ilAeo;b#O=eJQ4(Y4Uwzd}5v4#4F`v<}96}NblvrG* zc7l;p$0jg^DQKKW6MWB%erZZf&3W_i6q%POh8O4=OIdxYuU_AtZ1ApBs1&B)7FVNV zdM@Xe{-4teEqkCH7+L9^UHf20Md|CBg6VUN7>D@h98SsBR_M)D?Rdx=O@X?PGD9nU zYEZ}dYLU{~n{Pnf00Bk^8`NNbnEa5r7Ek`=0pU-GRmjS~CAbd;LQYB1A_Kn4T)hd> zjmXSx<eu_T0pKFQCOwr%R3~H$A$DN7DFhQlHeb zTG0jj|FQtyr>B3_c#M{)8Jwf2zKqIg9(9#p=HXWMWsRzXsoCvcTK4erA01f(XKQw~ zpk1Q)sp@`Ytb3Bn`H@1fmR(wx4@T1*Fs$c-VQ6?T&oPdyK2q&g51Hvs4b)NK!zAy} z2JWdatRwr>B` z^0!A{uqQWtjR9{Q6zJwal+HP6YAEK*2H`L(Y8C<$&;5`QQ2h&Sq$64w*~F&_g-f(! z$nYyW^QV|qw+75^n<40Qlw;6QpR2rY3S@Bn27S4yf-Qzk&WSkgb*W7~o>g((= zwm_D@stDY(;39|o_17>q&C^E<3kz8gx3Kj)R^aO`EM~L3!F7<&FzH^|8J2z`L?nyT z)eqGh`Q&4FRT%gzql2q?*-4Y9L8LB6r|9JCU&Gy3(+*#f*2&U_+?}{5?xvaTN#+%rG`W3DG45lY{=&Wb({S zQeE#W=A@lt)3RPsnZBC$nhp+F0G<9!H!!>3O3s`lf}-C$!Zt6NJhEaKm%(>md|Rab zz6RMO?Do%V-TKv~4QM{@-5%G&JLLRI7 zRqtt-fXNN;?@#Vueru6VRH%k4YCM2s*PL=#A>N)~)ITAafNz-3xHS9A?CgAicJ_P4 zdFocaFFrcj(}hsLy_@+A_n}C6&z_haUKTl|z+U#fy%(0B71K?$Swu!VrITMu{zMT> zniUxsrFV!J2;^+bDfHCNQtwH4d}j7oV+AaRz^`fCb`XCDH19Qy`zph|-aWlgKWTsn zYc1KHDxOZ_#|k6MaYQ^am+eK7L}dc!>|x6|v=vhf_E*Ht_J($*_^@>Y`5iwyg4cpI z$8lUXqVT0O_+j}F0fpMR6+ZfNs13QZ>kxYg7$|JrL}TOB;>e>u>&1P zXi>Z}A%r)(_^Wj0ZTYM6E9{CY7^N}EW`0MkV_Cr!`oaERi@jX&A%zqX2)C>G!YoLO zAgOs`oJq5{aJk}-ako7uj{oC#C>;>v7hII>obEPd{kf;AiH{BDp-BafM3JAZY;#t` z3>+V@2$=$ZW6@fy{Rk2P=*s?#lH0hEBJQz#JA7O=TOL-$DGg^_KIriQk zvyc}njX&h9MY5Q<4I{IYPLw@i@U#!~rB5cxDFBh#_KJw9{*K@zXY8qfF8mw1W|y9RlxH(< zEBjkqORe7tKZMX?t zq>RjGVCj(iA;!SPUK9{N`KaQGq4~-ckF&L}N$b+88nd0dQ64V>BGKdcw_>qfbZ_|)|9-r@Sf8zF zrZWVsVn;I;*`5h(80k4`zof;?TuD?Vzb0sha$~qKKCa5v`1(FD!I%>ey~=byo0bzJ zZ*NO6fn_AxDtRO%sueD)4xEPO6{W^c2uiO06?}u_mVgyWej2d2i(@6GvJ&K7kt{-w zt0dgYx2YbELeLP2eQkAEY@oPSL3Y($gnX0BOg%7IKdeBXtBqz*bQTwn^~L3sD7Yv|r+6gB|>T(Ns?>pVNaP30jBy;xg41X4($=kexKxcIA*cRSRzK2c30bCm+ zb7sk9LS!C~-^z8g-SqN)PCL2A+z{e)O8&N?u;x{iN_JdyxI1F=P%4d|{XbL=nMQI3 ziEcS^+n%6K%e=k6x*uJQa_Pc3;%pv4c)z8KmzhMh6JlOoO5w{|`p`r(Y6|;`VQfKk%~IzZOvb&ui#WIH>>EOQU-T%{{RcUdrT@{ypKFqfT=K zY#@p(D_YXyB?{Je1p4+NKj0mJf9+e_d;zoLb|oDaRhAg$tpW9(IQwoZZG6ZGIlXf^ zG!Ux|ESTki+C8l^H`Y!@`u+5R6sr`r@pZ7rz5PAY;=F-(kUcW+-F%a%`|gS})m!Yc zW2oOEOW)$y8%KeKkVD}MhEvwfX0^G{t+1Jx{cor7&PW}2js4XLKVya`asdi7Z=#ph zoJQ#ziu?1JV~`uE+kxBQ1e+RS!q*L8fW~B=7~V*~)P;H=@`16AY&MkE<(+ehN`WKQ zI!z-6nMCqobX{Aj7k@i|5~N-ceG_5Dy%O*lER8v%L*oYjJkH4Vu1`eqf+aXH{Pvd8 zsAETSgss!?ORcvuEV}$cMG}0Zf0ie<4Z0qANa;gov&B-x6e;*Oe0(vbb)IuI&a?I} zR-6ex9nHOrZn!!oiCEKAuPpWna75}ggFo5og{{f2Z2=Ipk#N6|#`{#M!?cgWS?DG- z!kJ(F zU|JD65=e3cJ^I7NW3z)n#h5Lz+9=BQu5__kPfn%Xiy2syG1Hmg7O1xO)in@hnOzQS zCHz6N{5Ne(m)|!;2A@C>?u5{^jU=1R)wk}zevBs*@SB5;&60;Zo3k*ni6~@-FQO;| zS8$K!WoF%fBbZ^8(TVB{{&4RVjK{LO!{RHQs4Eq9|Jh( zZ(gyX-_eBO&!=yoaO`rM{$7;^n$Dn++1U)w=Ah$rU*KpbBCFk2q@Wucy|?Es?0DTc zN}zxusMxtx_a;#eNdd~3DU1NyWgP}%*&m3+pFRAOPh+QcWDk>GY@AKIht$0L@eT!PyKT@PjrZ)ZggJiWImaBZP9@qQmxm zDwR%dAW3rIt#dc=Tv1g|_nOhkDk@6C<{b>C*iL6g>y=sv zZq_k~$}8`dn=K2vUG@vVkIfqQZk=eX}PoD2i``;_0Lv? zxAh0o9Y18^ijo`<93-XwcdOh)``T=Qmd5{Xg1|zr6f5|vNW27vQ;qd`+g>6YQ5Z0f zEQfKsj>t>C<)?DIJN_MAxg52fwvZf?EjU=97GKhjAf~YWUBPMbq$7b4+wiyV$zXBa z7v;YKr|B$CzfopyZ%Y>Kj$FoRsfq@5{^e9$DKAeWo&MR*!uIhiElqE+c)xKqZn^rn|I^pP{Vx`gT!dxZ%OSE13tPS&+)m-7cZ#me zSqEbPt{Gq6<$z}5=O5sL{r?4f)}Xr9Un{>YA|jHSvKd*3Xkses2!W>HuqlRCzyOK0 zkZ=sqMV_vwdpC1bj4Pz2LMpd^##h`Oi}&@z)9ldy@pt@2yjle>qrsEbr<_J;T$Yb% zMQtp2#7@?Ar@G|PsfSoc!{n^Tz*SB0yd!Glc4hq9t49v%EQFP`3rtGPW9JtaLZD8_~}fdRAYlFZkH z%4=t^nGg6Sc^uIc-VpFIZmkrFVtZWT z9>|SRd`@@+Hc4soiJo_)4Yks7CCCVK=0ZCao=bzJJlqT9X2fbXY(I$ob;5tt?5h`)G=8-*m&IG zvZ-R#B@RAll|UA>2FD!^M~u8o@)tbdhrtMeg?24Jzyyh47#!-L zIL$2wOatITh@kV~FrRqK&M*YTM1ImlNgL!nC4d~wvEx_(&v1Mi@W2+VR+J^Vc^(K`ts=Tceq zYb{}F)~kSCE=g~W`nS}1eOOsv!$$dLaqQgHoe$TM+f3Gpken)q~dYiYs7~XIG zRc|(6cHxDya;rl&BkxV3}71b+vQgwTkZ1ZG_|`KL2mF4`oh%q z(?Vm?byM-x@a&M=F(%cU08nfvhHv#SX`A7DQmaFnJryvUVLL)Tb5$R(v^!IR#jQU$ z+PKxDFn``hfMfF|2M6uKZ>s!_ju&d&*8USmxDd7K^zvE$tNURsB3L)F&PLacoCV($ z#^AUaOrii%8!EY^0S@2#g69(g-yJa=r~`Iyyup(d915@3 z&mGRY=?+nH-Bq;3)g)~F1?DY!ZD^A$dNT)KdIZl*(EhJ4FYoGcAfQm=*b4%qe8l1Q zYh-Ox+m#31U+&eM;J&Xl8mnVv|IZvCe3uLKIF~%Moc;w7__#s> zT&o4kt+;y`oJ2wm{uRF`exw5DS%SUU@n^HPXV<5sy$wZ38@2GP&v7@LMu@_9dT_%~ zlN!{v*Mw>pJi*B{NKn=n(1ofOAwdM<%>P5yI|j+NbZgtYyI0$GwQaAq?bWtzW3_GD zwr$(CZJTfJ=bR_vi}U@csF<@dDk^4Wj>sJ29`~g?KhcX(`vw<~M?H`Q&2Ks}ui~!r z`hq1BsM*)a#W2un*Meb>qha#bp!uMXNWj^0<*$te5_e>8Yx?Pgn6N9B1036YYhuKA zIEm$r)BjPKb9ciS0h5%JC@$M81;yn-Bm#F-JyOp8wIf39!Z`$18|kFZA5&3u)iOyZ z192NX!+Y78*HA~{{r}ZIe9yYPf12xw6*iOqZLTjNr}F0$2dxesz$nR+fN0#PCDVr= z!a^gozsFcfiRR}^BHefv(w$ZnL=mwb!oVIvfE_6bCKpgk{YQdwan#;T&NxC)-iTzy z{v-?vwj4-S1W>Kk10D*wxA)%`f6|HJg;D5p&y1Yj^1roEX{<)z<2Q<3VSqA1|J`H^ z!XtQw^za7KcnmjId83oK*gzNuePku2AZN9av85L6K2f)k`pX-o+_9uNH07LtTuDtY z^q(eL{nIs!l1JQs>e2ejEDV`v%NEm(VH1<`G7e@GD=ASKx=XPX-SiU@QP>7B$tfws zgZeDyeo=DiAE<`x{b3lp2Gf0=D^$hK59$J$n8~aARe1P|y~rxDOeUvj%)h0g;HzoO z;sO#OSPv-ojH~9O>uNW{P3V0MOcRa>JlE~mMP=&lq?_-Yk%DCzV>Rl zz6G}#9ggArW*iUo@#JEgJWkRUR}$>0cX_{Cpt^V5R&wmU=%dfQqC*ZU7#02Y-M8|F z*A>VY8oXD41YB0a0$cRa>eRJUV;|!P<`nF_N|2rm9|$!9=f2unkMwt@p0#)T|L63&cDzJPin&sn?wrlS^r8%89#hyZw?)3{kZ3fTy4ANjw{o8J_4El)&FjDEtqc{?o=kK^MUg>H{MqL%^9hn)JLUv4%*59rdtG zDpx_@Y@IWn#t_;I^p=cM)jr@%GVMQoc+Us02hI%woEyDOsZ_P=-`EdlJjlJt-a`e0 z#RLrV1FgSXZIPNb_0-XLdQS`UXZqLBK21J?a_Aefj;M?mHsIGecTQ9UUksb z)+ChU57_^-B|iJXLSF%I)q}TWzrS&-xQr(~TpGAWS887P_n|QXe+_Rr`6xLtUnbiF zA^sBL6G~&|)Dq?&utq5i@dIlYiTqTk=tbf*rRGPz!0ipn(WMK?!xsZDB@{*pm}#}W z{x}AvRARW4?E3C-n=<(Qd~tPg@t@a}l4j>wa60^xp2s_sP*6aAN8)BoHo6aNd56VX z2dGjd&sXSXHRN!@E zQ;J<5Hh6PuPuu3-1LfN^Rk)YeTvrV3KSUe1&49d;WCq8_AJbh2WFVGexmK|*JNVVM z&Rn!ET2OWNlhW$Ilysny zNe)c5DX7xadf5;P6ful`D8uAaX_~nSo(243{_!XmM$4S*)_oyG&ap zG5I%%zV;#E)0x)5ca)NW)0k22&Fou zlN0J|i=|rh|35Z2h6ptUsIsbxZ9~ql}Xk4rbid0 zv_@<)Vu%8a&X$PV{u(q7$J2sMPK6M+YedJBV2%AYhbq;r+z>Of&dd^_*3OP8+!hVn z1$1&h8?q>W73izYMo|XfQA3T77yrOxevkCydML+utI9R7c=_{|y!9dfPoncX59K5-z0eu^lT>!lCLLj|cdxf? z=>&`ensku%l3Im5cQ7?+XUh`b3fzLZSKs7s$Ylj6)h=fgcMA#vnlB?F9Sy*qGiTpw zF%1se^^kSJdrsxP@rAaT&k5er zj?@#UPyiVL2{F`Nymx@bx8ud@A)sC?I;ef#V?)_)D9JOO!S_1!^=cYhHIXXII$(2R zJf_BJkajtie1!?M3chSMH<+WKtWEC#23*xN%qv0g_L%{~H7)AwOciI<8~FK3gfLkr z)CAmHAfk+54}M~JjUIPm^VC;s+ljB|F0(~pRP;&^FXM?Ty1|!riY z8^K^RjoQ&8?x!|z!Sxl4yokMXhc)Emd9XgCcS}>=?ts6qNHG8RT&Wa#1Q}#S z+e@*`JoTOML#Ao|FJ5%pPjm~EAhMh@hwF4zz_RWl{4j$0fZ$Rlw`#pP4cFBn|CBz^ zllw$qO)#v;2SzBsA-P}tah{Jh&k&MRQpvF{Ba*^6fJ!oRN1g>U7^F(?dB(89VJ#pA zZ1EL#xv8Rmerw(C(~Q2O=*D)S(b{eypvqNKvm2^hxw5D4R0Bb71}w;!RA-~J#LCM^ zRn=+mJ=~&ZinklIFg19>#AG*-1u1yyIxv6EiQ4IoZ}FfXqNNF2Fn+n$OaX#Y&GV-G z_8M}4m=_Fr^4otkP*RT$!BS6aVv7;>Nnt|Qo)2|H1(aU(8ibRb0flpICwSFgcb6uZ z(u{&Uq@-CuRH+}PS;>{r3Bqx6Eib-_YmKGY?8iI)q$EFTBk{hL@0i&u_0Lahf|MS2 z9m4ji>YknnPYV=ou5xT7buVz;R#JFP1A<=?+`vB!wDx0f2JeA3GcxnQ8bzy2xC_6) z6?^WPvfC6VRdSQ7;?OT!f|^MU6S*1{c)=%eUZ! ztY~FNOs7e#jm#C9U&7^#NKq0#GD*|XBiw-F@!fwO*DY!J$231mK7Cq0G8IFjpQpPe z)(ShCw*e!yGi#(3MXh9lP0SJ@D49)HC z~(&bOA@tw1kv`#pIlQp#FzXJjTzjRXx<(xMB zI;n#A3=eEt3_4Jo@sji+8p!jhH3LjgY(V7R7S1n;q|R?4&4KacftB4DzTwggC@tP(*bH#9*oAix0VJ-Y>c1bcwqU#9 zeaUJQJb7ZLG?w=nO!t$gxno_;OQ&#A@7PR@XucP##;l;;dve!^=|Gr?TM@`g>};(D zf6n@3Ex28T>;8V|f;jCaVT7u%+cZ@4`zKli66}qwZQm&F2 zW4<^tFn6W+i>$c9=gy>++|3qk8D+R9?||)xq&XP-9;E6h3eI7)UfVjUHL&?S9IsOA zx;+GQ8PF2p_l~5_RAsQ9ko8E~2eonkJEDwTWrx&Nhvvs}Q$XH|IQlHawqqg9_k6u5 zr`Qzq1D;IK#>Y!qIgfmu=Cr+iY~p;Q+9a>YqQ_ZhgV5O`U9VZ+IL-8p#I4W(eua9^JZZQi3H z86HqDmKUsEJ=>F#kebMyQ~vAGT_|cYH9Oz2wo#r{MF?_VsUxN+?nc3o@KV$PS!ok* zKyfO4dW;)IWlzD*5FUo@sd&qps=vonS~9yEvN1p&CNrAGWdtZ3ApR47#_~nYo2aj^KvDhS(jwn2o8MBvruZc)$c(dT^ia~^!}up{OvRHuyjr$DxGUZ(Mr153?yW;ZXPK77#q|9_ zt>IwD07)+U^&TM(0b8tnuIs>gI)Cp%C@fT_AOmR&FMhQfH1L3hUuK6-2EkfZ>)pBV zsgI>d;f(&3Fmd7gE(7Gp5GwXEbffKwx;Q8Cv-G$IkNn0{xD({h;Q^;~?C&(_6Kl}^ z*a=TV66L=o6;Cs`!H!8>6|qLzYqWJcA+tSNW{Qb!(O%lDu@&y*3L1z6NXr@$&pb>g zN&#(gcJEOImBpg&exj10Ymb`JkJIe8TR1t0XH26%lL39E@%llmG8>sjv(wkPWs*?A z2%JOZ<%jSrSDXsVTXeR9SDM{R>8>7c1Nka7R{(hoMQ#?%ZWggAHY}S}5YICGgI`X# zEww5)Fje5~mj$nOZFQU|Vp`3l%;~F#E7(1e9*i8$-Z@j zgve~DL9K+YnScGTP?9|_px&tm-a5%hVifG4sE8_z{q|HCIU8A!oh;H`;XX5$)7GVQ zA{g(4d+K3_Dr|Kk>B%Ot{FGc~y0)^MvJ|MYIAU{EYgfS98@?r4MK-@hi}EMAgZPGX z4*Qep5DF{%Ig7B9H6~u3Y%a?_t4`w#4F>i-h%$aFhk+$nvZ8W0rqCLkaUDyPBso*u zXhM&&-Ei@>jJjBd^_(ay2s#K2%a+BgUnew^X{bkU7le10J6sA^3D@V7|e`f4IY zaka)~JGGjh5Q){XtRStfYJ!xzXk+SWn7pv<>1KsdOFj<6;lZG@?g^fhLB>WMTUj^} z9xWD4)cJYL*r!;Z3ytlT)L{B-vxrN4L3 z@3DFF7w!8_keS@|pXkB(+KW)ou4X0EmTTIoe<}f5xrCdx*s?+rplxlq8fLJ_)Mjgb z`WprwvidDhKYX)QRNLkl`u_{poyT-tZ1Avbw7 zCC5|ZMKM;)FQ;oTC-z#>OZ@6p+|5O!^i5z>)@tR$bz-6tXEREj$HNK>5Udu6O)d;A z7_?o|)ZKSC|E?-6Vh+KhN<1%ZdKeC^g;|GH!I7wxh}tq8EaL!z!isPJx6^EG<;{Oq zE@O?$^AK%v;fn18KIv0tfM7AJLF>4+>m`QDak|QL;Un%s&fwcW(%vS{XDbXf8(K z%%_Y|4aU|!XkJdZqr(ID`XGU~u`-5wO|n~fB3!CyXmR953;Y=!gu$-mS6wn3y-C?X;j>cVhJ_|U)^uu zSm7Z0c|@x{WrEEkZtbCCziIE__Vnicv^>O!brd4PI*1@+j>gYI4#dz@^O;#R(C0+D zrK=7QR3bq!C&l2q_23)m(V_MLXw}9yu7QWYM32KjC-sC#X~@g_3#);09p1=@G%aGc zNYlHTcVaECue)c9>f3zZS_ZLBZy1Dan1Xb>wAPSS$_6Lx-}G(9@7ej=AMZz%c5!lZ zOaAWQx6#g>Z0KM9wfUJfZwFQ{nGk$9vQT50>&xd3kD5*Dj(EtQ<|~*cz;20OHtzk+Iw_w)%w+d z3cDckQzqiP<+Qmd#XR}-7*Zep+EdDONb+oTJ&+f^xI8U#g|&MJc1*d?CcfV$=zQ|7 zzdVqB0Jq9A5o5+WFRZ(fxdk6FTaZ*rJr+8#f-Q)L31&3mmOi)OjdUMzl)Ryd1wB8j z#L9E(At50VCHCf*MpvkUKpQR-5Q&S%y=t}Ko=$i2RhLOp=x5V7A$AxPITJ(yr&hKJ z`$;EoO~)=+7np#!-_y$G({d-x_P+%smdU9bn9iJ(6+Szz52hR(a>Ppf6=r;yN}ns2 zJlR!8Hm56>%2aYRE2(660(1m3rqpe1I};eVv7Z&pWud@!5nVqpy4RFo!*1P|8N(bJ zxy{&KUY`{0&?e=HHq7P`jZ#v?S2R$A3qn^lVcjZ?akqHGf!UFu*G zQ~^ue))C?!1{5_P*1quM)Cd{0q44I^C?ZxlzEqx04Ifm+DL*e9sWhx$UBd}K7B|`a?27~? z_j&|qo%nlA2|R%>@F;4Aj}hPp#jc!h-0KG#{*6=yJr|p>4VFfudiYAR>Z-H=clJoV z(6Oz(e^|baUsM4?1A5CFj)c-BAwVmNx+bMY=!ACWr-DgtRt>o*!pXB3SRIov?px+e zCgwRB*H0%bGiPCo+TLI)e4KoQPmvFd+h!{86|Eeq;iG~{Vp?6gW~y?`Bz~tu0FImc z)!Ik3O~BHLbGK%WSN%fac@;T-EzMw&LP|aeVo+h-v%88qaY0V4i^LdLFHcha7`$Fe z{Y;{*M9#0GRpe{bRrp-_cu zilI@f*68-`$;!18Z8GRTI1@{ZJGY)?U*=iq>SH2Y@Q$)PKAgjuc!TPO+WVrUeILWJBA0eXS-MpcrwQ*7)+f%{6 z@WSl+Uyi+_#g2Ajbr8&j=U|zfd4QW4Avld&_UXv{lYJ$>F(Hxr30`)4n%3$xULJ_7 ze#}bZM5u3N}Ec)C7e>xqO zy79+icKkNw!IoCgZ(TIy*T!m0zvExt1!a}U07GGs&G-o7h)PTm3<`k|bjW&a{kJOd zz24`+Iv#8NheJ*k??ZV_7fB}*aKn=|6{KX0=kwpm;}<%JVbMR-nSUS0L2`mWb9MI4 zJtHa))zWU*P8#r7zdsGKuAU`uxy|Nn4XL9bBw;k&(8^a(<8B#kM@6ez7o#cJQMD$d z$+#EBIU1C;IB^smAp9#xq^3qE5}GbuCSfv2w+yCl>XoW?ZWZZssEr_D-NP+=L}nng zG8jQyF--TlRJGO^?!p)#M9dVg0@mI;YK*jj$3)RGUF)5OdjtqInKRsvdZ&&!Gx?Pd zv|n>#ivfkL5z<1i!o3Rjy?PI=yz&rSdgxlwp0PI2Hz4^usQ&Itf3^rcl!RRKwPsEcE%W(y9w8o()Du;Qafx&egDWC&l0AsHS&&&Uk#W6nX-DEvvI1ZF@ zfw`=I(qJr)-~&7FOjtq-g-&+>G#u8ZFn@XOc}YEb44J%_VD>AV|M*K@J}w~QLVj#s?*{2 z{f=Lrq!QH`1OdY2r0@Th(0l@4I)WK`4IsA-GOp270}9>W(~=k`(Xvh|n1PCy=2- z6+k3VU+R{wK_=A~_ejZLD5Ci%I78c!-oTJ1UiPmMjgoiPV@&}(CVqRNH^W5I_1J_AR+i{?_lF~Vg-1F6&! z5jL;)8gJr;z+{Dq2VL*7*f1AmkC+;Ijq$tY&^>*+;skz@>4ykGID2qnw(FN+FA(Sk zLwkvz{0bI!m?`E$SXT!0K$BRBk-qO93x194s}Sw>@#D0sK!I*Tz0lP6183_$*g5-% zd{|3mwShw>0*}w4UaUSa<+bR`$&s5gII7p1E~D0Ag4>-8*|3E5jo)|g#0J1^>8L@G zMN>-g;P_ay2NSyC<`)Dfu+$L#F=O<@8(>ksjKy_FyV~-Y;PuAMYHD3!v;xmsE`PIG zZu&uIY^`{GQuuWi`M3DiYVd4B3?Ea^yVOBgK3 z+3aJ2;9`O_dSBWTQx|+Y3`mbx<1R6y@Oyt?j(Q=@q5go1(!3cA-2V!p3?Dk|KSt;? z@`~Po<4kvIA!5W(Aj912T;__%@&d+`Hq1+v^N5&eO5kB}=SBNCMjD$q(w#NrHq6ul zU3O608Djm;(m4q>a)#bf*Z`k`!wT8v##DG7z&HN}{y6@FIdMeYXV^)dp>-JMpyuIx zVDg{2>IwP>L0B9&%<31q*|~tY?YX~@w^W)15DO?SO!LgpJC5<)bEmI>8EqEMCQ$P{ z!;WOZ?o*|s@fez4z%6;iyi#z{A7Bp~6oIt&U!pE8yN)n;NM_A;RGnRyC9J>ZV{_eD z2vTIYPy%!*s~~%ciS;7n_Z@SqN&^DW#@}0VGS`R_<>3UZw}kU95F$>$kxZroK>EFUYAeHQJ*I&suC;u86uKr^)8jtDJ}&Ao zG@d5><&}P0Z%&%Y1vC7;CerQyM^Olrh@&|yRrfxI&hQ^Ha8E^^4nK?5(3{6-k#z!O zdYL0g4-k8NrWwR|>R|o0PQ(_1FNlg%(?EPCXLta2YcRI~C!ab3$K{}sD=4X;FapP< zgSpjDBz5w3TH!p|^<8%AsE!Jb=B2mJqs;>Q#cwg?zT%?9Cpy2X$^vLXjag~ClqOJ% z(EMqTSxlH&cVnoay54m@D^6hChudF`%^hj?M9Lxq>^UhxhJ^>_SYQ9s39jAp)rEE2 z7?7hvbq$4nejdW^nTWq`L_g7vvNNe+M_x{q7a2h4=#U?_Qz(KNki&dWdm(4FVNL)5!!c@GG&T)r^?5^A z=hwlAZq7cjDqJSqU!osOw#{C1(;Nbghi|#Iub6UbR6kHwN*Uoq)W^Sjo!f7IU&}nf zkP!YnTB*jG8v2lFL2)&9!^OY3KjgoOd1xZE&j2N&0|JOb3Q7WP4S6rfu`#3Et#Z*z zmrfDgS=n-WfiCSH=`YTgNw&b(jeggZp};zRHgX7s%gd)cB!ue8llnsz-fQ@w6#h6@ zFEgqSgGC0fSlEPokJ?Lf;)03_2GuecBh+6qoT+P6cmeDDBI*zycXLO-{|RNaG9N>V zixbcw5HJ$%gmwI)!f|2td+q2CIWXtb5sfPCM!3%=Z)0cAgMS91{j^6?$zRhO7?_PY zPG)@E%_m&L)?l;htD?t*`7UDPP+XSzfXd`t25Ul}9qOC^THzc=$rvbqF{_1@dZ!!y ztVd%_b9TSdvt)<&!_W69vGTEj?xyWP_E9$3&Ugc7Q}N$)(E_E1x<`J1 zVK-^AWPjgwhNQS|Hp8F?TKF?~NTXYD!?#3^lz??N4%LN0*$T7oEF@A8&?-lJg+^Zo zVyYcAr+Jyd0GJ@+rs?#`y{Q+5>HH$?Q9PQpgbNZ-E5IdlD=L5o^b8x7O=o39umnEr z6O!bRQ&EwT%S*Fr8XTpWW6iCN!cWIh(RLcXwI>)4@o&#$RV@v|zQ(Wf|NPafzm}9p z?V7CSYj{?+Tx)>VW9+|`wh?yJw#EATYtow#A5zXs6BKFYO>Lv5tM;=?_8a_80Hz>@ z$bV=JP4@@9xs$sN`v%4{WspS+1xJvH(Ht^Y26T7n4my z7|DBF6GsVm3H~tLU4xMuXsFXm>EJPai+8f$(B!w4Z~V3qxgR;b-%_yy!K3eIyhbE0 zG)!Pgv@!cRy&{pQ=LUhIj<`1L*Mn_aZRqV1aPYUV!8Qkb;+cZOi^-hx9}^>Ow#_#4xI}+o0656T^qMvG};&B4T9xtY6~eSEb{(4OlwS*XajgxWyvP zNs15?Dr&wGib^SEhuN#%6QIlwP$u2)upuw=`f-aeLW{v=#X{?g$lyr~Sgkq5uqF)~ zZqDYPn8Ok@N_9`c6l{6{$N<6z+Ar{Np5VaEGLCtL(=|^TmkY>7uVRQ$c z3{h9(~Ehc7TKaDIjuOaIiD~0?v>+WYd6+#9Xfl*w8im4Iw!3X3z_Z>9}lx z!lI-K!qh|q)T-8JJA;t&sN;jpxH-GS6h%=XineEhEeV5X33SY-SE6J{RDN+jj=ad| zTdPmnowGRsGA4*1LYrvzy+L+5}_otVgA>B7aq*nq_X7f4_h!O+i1INFbP z_U8^`?-q_!Qn`m8XoUMW4CB&pTCNhnfHaMWR{>=IQVDZRIEV8ubWx`oC{sK?hAA_W zXyUSgem2;K5BOJP#}{BAUd)WZi{OtR6J~p5{L&UY^NgsME+}5_KvAc=Pcp7sQf?q!`gSDay{K ziOLC&;5L8g3cG*XzV8X^*sdhUuaZ9?3l}J2vD$_AKi_8fh-nyYNQ+Zd%?&l$zVgXFA#gtwuEFFRIvg>&m^3tH%<0r>f0I4@KdMvNk<2n?+G&Mv=dG zltI9!>2dmV5q1rH+DpJg6%jkPe3;h^BYs;U)b~ZZWdC3_{HL?OtXQqsq+ayUx#+lr zULH{^c>*`ELY^^TBp-(`CGx{#QHyXpBCL|UMVM6~VK%XRaQjKRI0_xniBzRIL&n#s zzmHlPyjkJZ6+jI^|EmS?DPV8nY4P8TLObC#W})T29de{WZ0i0fBq?;^N>>#gaX1?xM^u7plRVauBo<=Sn&Oki;W%s?u!TYJ@tU-OXpFTcXo`Jl4mA`Gj6R4(|I^JTX>`)HRFoH%#a-~t75?#BZRpwmW=5&1gUXiFs(k{)7~UxVJ~9ijbs%bYQ` z@VzSVlaJ`(%m`*2^4#u{1s>JKJD@X@iYuCSP}M;})vF!58P8S!i_MrGlNt1{pjWx% zmInf`^@^8Ny+)X4@UmV%r){TISmOQPoEsxxbMEMJ#K-eLmb}jY)Punf{Mp9GNvVemmaX=UOoa@h zy%QLTtW4n=!640F+Hs$(d|DiVSn;C}l-AQ_MESw2@cZIJs4Y~hwtZs2O<+a%N`Bt1 z5687ayt@Hd-2ej}u^_q(ULe30`i{y3d#{owSlE6Fw@AsFWO_BF{8l@`k`yIXQ9i>k zDw^Zry`!DJFOk{d!Mu}wBV9rCxIEb10gFj;A0H|c0ApZJL5G!AO};yHW&@dQlAA7f zRFzNbz22@{Qys+6m>YYbe#9eo`207l9@iM6rT0a^f<@AHB<-UM^ik8skY5jq^LOvk zWV{}`E+ZGR>!fzsHs6}Id(WCKj+gYOt%Klw2@DTp^-B{y?hJ0nj>7NT-LBmsep0Te zebK+1E$#p#6k~@Jb+7QvX1pGUFE$phErq9`g&*y_FG$+2N-G`M z@T`0;B9!GS%i$$xBn-pC5R~e}mm>{4F*R7B_knuV`d(<8mkl(3gqv-Vy`#nK+S?iI zloj0JjRq5jE8) zGnU2}ZeAp<9rKHqY*AWq%Fg&tjyX z)JQVX!y2mPwmT4#e??BpUf|)j2Q(f96^vzeNWBGX&pB-OVGqcL$g7j0naEIB%q<~I zZtt?)kuhPJ(2twNgiS16ho;EWrwt)v^0GZIf=Yk{xE%!KIG<9r!+4T8+NA%Zui?K* zpX!HEj$07dnCy9+_;T|qYfPmZ%*zW|>$QsRtaEqV)m|MH& z#31F*+V&7hE&)PT!fW#A4xDe+o6`r_iQmH8&3+d3;?2h{jyArI90y}xi zSEBPu?{m?!jb5gOKN5_=1PYy-k1zhU# zg5dD>*u|<}cj;9Up577GKPOImU(!<8{7`zb&Lg}SmP65*#)aajfC zT&Z3Up+$bv40(HSlgkJMyUv*<;dRWRP>}JCbS7)>`01sR?61>`q_c2M4c`p?`R~|f zIV~7!UkL)CG&k*x1A%RJhGuy#r907R>n#g^2}hyEWBXhC*52Nin_4fwhEcHGvsvL# z$QZ`6$vZLE#yyMU2t~uuxJ`%hd9JD1N5bRACM*>D#tElw)?&qq%?_w+ZD<~gLhJg7 zk8PvOC1^NAmLe>j9o+gFR1tA;iDdHH#!nFAt$KHD#4-$|u=6D;1`4t53WjE4*CgZ? z+==!=G-kVqtAk!y45>H&RiKo#I#nDYA}J8o7phRScNldk{+i02%9vs%tI0d`l2cNX zjK2`Nqcsv`T>_8$w>0ym-yEumOS5BkB zf-FZ8M_=E`tVb9$8K0Wg7t3E?gF-9}Y7E);sjs@jqmvPaw^dt6e$dl0<&CB*^E7ni z&XAZ`DWBt%eUHNvB)uw+Woa^b*G>+L2g{F_il{$k#uGz?oYAS=HR||uQ+JLVoI(6@ zwz*sVl12SPprC^?D8mDgHSE;K#;P^DGT+9*gL6xngrVuchK^^WpyNAVi!7Aak5H}m zYd`EtjU7Q%b8(C}RC&9dPROj6 zQ2rA)HZ$!Y{N*ekUw^Q}$#WczSsUvXE(+gp5ttJ zU2Qzrk0>Gi%EztYbuaZ5<=J$!1}I)EkRNK3U=0jywPV_ZSEJip^KSxX&t{RJQIER|1d#nV;^TtzH}*Q}c9fi% z7hmO+K*%yh2FDf9aw*l$qX?owu`1h30QTcQ(f4ZxBV(SbCY8UmF_~H$Sq*2<{ShE? z#Y3p&xiKD0!|R68cTuy$SLS(K|Im_G1M{zUAKf_t=Av5nQWmf_q{a9ICXvCK3EU>S z3(2EGgkp0s9nBp>wo^uV;kl*T7$orF)%0c&nCN|h`y0+$=m(q)6FQyiOzA$+80Z)= zo$9eLyUusM^zlj4NC@gi5R5tUq){@T5fR1Q@1afyCv@1oRvd3wg4iF1-;d?_Yz!J? z-9yOYw)MYnJy$wra7b=T<=E(bh?C{j6&`grG++qrB~Ij&z*d1|Y@M;729uNRJ~Nr? zSmF7yQDbK^S^&jUv;ljc=^-U=_VEy*j(shg!8Il4oSNEQ{{;U@5f1+UHe-~uo@-0O zMQiM^o#~uSzyJKNJAxhHw_B51W!0dG)$C*gl7p@D&vI1^fc2>CfzkL02TNR$5%k@o z(EE{+b@*=#!#pRyHTxYP*j>8gVe(*eup#<|Yq-d#y~>17u*$gxJctD?-=^^fPkDYw zN>@5Nw{>;P_K!H+eO1u^S+se*3R}SOQcSyUO)!F)QZsw44Pgiu>Fl5iCbWZFCYQSB zSN@;-sMzY2Z|nWq#TY#CEIIoh7;#zyaxqB}&6VtiZ%X_SJO%Q8^F@^yMDD2d?v6o+ zdbACkP(>h+7~X@2=N}#-dJf}0{XaRf%X~k=K(Up4`N48T)hF-JN8+7t3GZ^V8#tdbd-gc)TIVC0E-aO(6?vtom_K3I=17LsB zuVkeVk1r(mO^2F@(qQ}M>sX#sgeDlo-uvUz6XQATKis1I>IdjB^KyY{tL{ROjlPEK zO$d~9{I~Des@#Jhkaf@ZMgvQYPf34rL$6`6FOJs~q#w@QJvfBsU|^^R*s&hppD>>a)=w zo0sJUOFy+Dgk~X)qiyrc}fThe%dZcKPrk3wjMy9-p?-S->kz=ETfG1&)ff8|IbqR_qN}U zsNvsD`u`65?-%`hT>(7$-`oFZ*vsb2Pe1plu#6POAEYhK5AH~*94Qu3sE;cn|NZ?SOenCd;e`Qh)0j$b>dT?6@?(TLd^aFB(78VqYV znp5wswA?o>n5#{)X}j-QVfAp+sqVgmihAw3Tg5$qCzXPU@_zjK0Uif%w;7AiAsxjFdz<~B!O zRk@VD0uP6D>lTgo-82Q z-%eR-@hGW1^cMk`bq9w{Kl?p%ocLc zlvNPwMNeyy-_n`PK2veDTZLd`#gIDpr(9(?@c!q!ipEl2dZp!Ru*>tEhntrsAaP?^ zNl?{`9_{;w3paTM9ZKh+;p~Q*!Kx*)Ve@fh@At7Y_+qv#o3g30S6+Vq+VLH7%77~B zy%HrFh*h(F>aX!!wf|BF6f@NsE=}ddPk5a@lj6~FuLaXCtSx445Y+m2ifAVZFRBU` zbTRB#hW2lG0NppCz&Ncz;ykHl)H|$)GwkTzxz&+a%SB+ol%OufCrY>VN?^KxF-B2( z*%XU~_J1_MX*T5wJ6y)49q~s%$B@}X?)x@W? z69fn63^3d~g96kH^;422rH5T3m@_jxXJL%{w63%b;2mgr<7dkjo9(JwFi8{Lf zN*=6c3*C3DTd1K9q2)@0dc_;n#o#WTf)`%i<-?AK85xg+k_lz`(}tidmhX1Y*&xA} z<%tC?s*MY{zrJ^0C7<~ma>^>pFSdRf|2P^hBzqVB`$zA4YX+Z;yjlmi50l%|d z$OlEyGjRKtTC?S5o@pDcv+%{$Qy)tzqO$g?2W{n9*{>h~ry;m%=+W5yS2r=%aulGq zRzrM;(c2-uv&J<9fU*|GFZBnombASqWC`jD2~O{{52DDR#p3?`8%EQuJQPV0$rDyI z8mGUKnD(VwRyQq_p<)@g2km`JE-t|*<4LZfD{Edz-i+Nwz-|B_HDhu%BLde(q-jUg zOv`f3QuV1D2?&crNd6;IUCX<(c5ZA;FgD!oanuJ=jF&T|$FKu>N%|xTu1<@-|DBx+a}5T(WkQ(; zBgN!f`^bT_q945_5f>9PKQyzr9IKG%1ERpT$B!EC^xzeN-GbCi*(&y=9zoy^WlBW~ zChlgX>g56)0a2qn3)3RD=h8<{BQExA-}7P?zhg-WF76~*5^lUxK5*1b?>dDY*abF( zanJ(rI&GwcrQ1ZexCHMjQK7@okm-4|s7~z~7OqK0zWAy~O()aH>wbi>iEU$I+s4GUv18k|y<=ly+dg@| zKb*7P^ZwbZyQ{ia7w-PlUDu^&^zC&aC6>4Z|50c&@9+Nl5Zhrd<2g43jqDQ9u~XJR4gu3qM9P8)%?UD2~$22TCjrKK=a^wnb-LXkxU}Oy0@R?nN)`@&C7T zx(JGg$yQkx6BEII*Mona@4oTBS!@T~B$#lRAtE9D z^1J4PaKRY~cpvr7%;Z||Jw~9wgK=|4@~*&;#&1LK>Co_pG1LxW9JTj|eG!sKXMAur zz3W2>R0FSc0qp%TIK92geCn{5_?x1Xw^$6X@av{gg8U>Tu$aw1L;9gJCUnz(I6V&Hy zsRLXLKE{&ln$ALMZE~HD-QD&ZQC%J^w;!W*Nl@&?4*C|&A^pcRi&9>#5HimX{>oc9 z%Mkq3wuR(QiHJ%x;@b?t?<2->6!q0Ja!Nu#wuI{ae=`6VuJ#R8W~&VP_lOu5F5ysU zD6F7IK0Yl&pVX}NBPiob-<8wZtXGFk52DwUuk>Hl#1lF2B1hfNAzpl90bzfHIu`?d z^kKMTWLL-HYZCc5-)n$Pl?{be@qMJ`T?qz?3^S{}*rd=%C(FZr2l#FeD|BZkdq9>y zB*J-_@J44H$!uQyp@|~DGIcB|8_H@~yX`mSPMT^2`fiF?&O>Axj9RF}pzTL`So2KQ zC~TGpEhr|4(8@1Iom=6KnViO8H`nYei*0C*Ry;gWQ}+r!D+m&A*@eBK`CRXkpsYL}BqGw+ z-x+Z#qAv?DlQJT;2AFJ0aL1~Z{>_*4sLP`XgLW;z`q*b()8d9??2d3K38-bR+_>U} zQ$#1S^O#AGMQv+vVKfi*7v_2(3TcHr(s+=lOF|>3@}_vve`V7&UrQnlA{+HG<*DUf zr%hi&k7{-E(_z^hHQbv5vFG`niVOmu3y6pXfstZM)<`krC};}E3K?R}G|)#Uuqrzv z2suA4*32wysp9dEM6VZu_Sn@@R$a5jwRj(Aw3W3nFX>-AW=CmrFs@-zJ82?0 zGbh6@#7wlhY2Kv-(s=1nd}lxY(Cl|QPO7L+1Z3>--CUx&f(+E!MCsB^NTQn~)4c+& zFpVtaOt}fS<&Xb>A6(u#4f>KT2hG2F!sjBZ@hgjFWz;Q_%*vdk{CeM7Z8Ic03k%G1 zw0Km6S%=5f5)Tdq51@%jH~X^|f!?zE8L#n)Ef7&UogwR8>=Zu~MC$ar@)d2WQw+J=8hRRnQuw%9H188Cl_Ch~rBit6)kK2Cz({kajixs<6f|Ts zg?#sBni66=c;^GBBF-h9_-q)Vm{5-U8eK8d{4(r)BFXsvCMCNgW{2@)j~Ek%|J?hadj|++a+s{) zw0Z977Eo!vuq<(BZ65ICgFUnvwY)&7BxaF$VzH)samCFlF`u-yq0J_xb(-xxnBFyY zgvLj6#iox!gqOX1aw316dJ_&pTo%)ALVgOsr&)!U9w#OVNJ*$Er|tn6e0BVcZZ`SV z{R2r^%#YsaoR--`vqT1F%ikQ3BMl2FhT}LAs#hKg7+!uYQpZO2nbn0EScK&iw&g_% z9!aNUD8yqQyqCfc;pAI#=@^H?e5JYPFz!Ro1%Lw&K9{)>YD%gq;kscvp~C-!`uiKC zROJyrV0*^kNzGecVtby^)l&G^4lK)~pbhHu_=o?%K@W#RMU;l1uBfRGWWVAH^8r>l=vNzEbCs1Ir*y5&(e6+(oflk~ zLoqkfloVW4`j_oG6tUP#jIc3?3+8fv{&dpzOXDLgN8!+Ew4mrqNaOvH|eB5`H>;m zSDaoWcqZ0Z0Uq;#;y9ZBlm?Jm_MuU7tIyBSn{#fzB0tYz%(1fGZr5sMHoB3}m%gv_ zx2(Pd@79u7F)WC+S4iDk7FWl=SI|#m2&C~`go-$vLM@6srkJPEQc1NV+U-2!h>Klb z`j8z#0#a$G9nj9FIx+cPIC}hHED*%Y9bRGuk037(EXnMZT%MT}J!*T8QokeZt(|co zDx3B=Ko-|v%54B9=~a-$bM0aaW+#~jVJfJmcZ&x$NJ8VO=^|EXbCOJ$=g=Ivc{2#F zGYlkS_4XA|ulk!mZU{Dbxqt=DAPh|AbVpt0_&y;C@r$PyL-5@e*Evs?BFP-DI z{>-L`B_18m;%|@%x@cFLA0w3W>4+{2VSM-%8Jp}K6L+;R)Pjq#nMu}Sb_yM(%1a|o zIQVk6nL_qjSd&{QKBay5vsv+G`EYkdG1C=C1&0Rwt7oJL><1lKW*;_WYj3qrb`W)J zZi>{LwN(DChuV2#Uy@N{G=Ho|bo9*nTcxCZbT>Y}&Q-S5ObHHnzaq@_x^3)p+=t9N zIb&05x%OzE9<0l+q0{i*w09cO*MF584?KQ9{i&KX40HG?ro{Ex-c-|Q$#hxePrLJa zkznrtUbwX&D3mbE*0j>f2uLu%H2)*{oF+_?hNdf*ExjAhz|r`j1<`2xC&W}MxPoVR zoF6r1@mGBVTob3HJgpeimx2mue_4g~!|pWz3=DQ)4K2K)a@~~2n}|BmC+>#~(9S{Z z7h2l?-(GqeaeftvTaodyZY~;2+-j5f0ih54JvA|l$kFWg0!g{;M z1+_w=_aGWbhAtxVM+qY~$1 z$qsWcW$YdbHL0~!Q1FJ7;n^bZo63-T zvsnzA)x;&{XJ5spB(wB4*QL`$&hPpHbq2ZzOd(F1bDt`Cfy_}t8g{DFz8*Z?+2!`6gyAG|9lXs zDU6l0Xls$BGx67d_@xMoVrZWzA?1FEG%=ni@QJcd8OYCt7On5<;>p!>!PGeY40f9+ zP%n~+&^i>w9mnJA<%ecnIV~|9z$2SU9t>Y$ zwdezSqa>9@VLV9+#=NY!lu(szXztktPku}mfZ6m^TMA(#22Ekm(XNI2KI8=%lWcgb z6#AepZ&7Q^?`>F3OzD(2!;Al~4?F}bWX(Y;M{3r3Z&}*rJga+OZ4mR9))PRtN;s}@ zdfvlUJ&KqrPPa+A=zts!MS8GTqMzf`FM+i}qdpyNtJ-)iOBYj1>os3F-I%4h^p9c4 zzIMtuV}nc4{qzcK6@?2xg?5Ii^&VL<)CW65sSS|TA}l~##4*?kl1nggAZ!B|K5mg7 z?2C{uAd0!e*<;UrO)yBGDrAU{#A4BJ9|}zuJmOaev5u;RA6 z028=XndaK*$>pMJ?S?=+%ESWx*hh+$*1r|s5FGjMsZ8Iql{!V7yN(pNHqtp%76ddp z_!8Kx^cwQx!7FOnyZcvQ7^r590Odu^gNkX?^vNm&tIb7htCz#v_TNF$`!cgy$N}g~ zPOAbe-J5-dYhM;2B7?i!kK*)3NAV%ScEhV^%{v6H;owyvMGBLJxTQ-%?z?9KE}D77 zft>diOiT?t8>a7l4{_+3oG!q`a<#CEJ;})qT2Y_uo(PCLoz66sTT#VNYs|Q&ojk=$ zpcQvy)V+ikqG*Mr$Xls9EtipBgr$#3rq@08HJ;iIyDfUay8p@mn_--xxGwgRUQ_WNhG*%@2tW$!x(XuPi!#=boZgzuycu2};je?iwa&SrNC` zLHZ-OAQIZGB|YBDgC;|8Hw@~=_>t8QI!lK@+}j3_Z$q@NZux;@DrAp8OPVmxF43Wq zkV->i5|B{N9IZ00AjqDQs`}Woz>+qn#g2qcAQXFPQw4=~bw^#D9EhH3WbA%++f-wv zXI;j<>iDYu55t$#cR!~G7eq)p8sD{!fXrFjLr&KXhm_jye7Dn!2I>!UZ`MdSCPZX6 zyH}=KS9m+>iobeQzc-Lx*M@(NCR7l+xGNCfqvj&}5Y2nD;@u1vlJC75Z^#w|}U zKp{$i-&_WqAibKx8uk47M!*L)T>IR#6EmI&$z1OvQnqk0851{HqPYeZf^2{=%~YhW z`Xr}@!3*ct!fndo@O-Vy1L^H&g%=0TRxk2!!qbfhd+6L}>_q{W2bzXke+lI@Uv# z4sRN0m4aKgW2i&#ENh%MbIVBV5GH z#iw^rZkXNMcLn5b_rSilAIw+_a}iu9azq$V*;QROS+$Z6`W3S*#fd?(E~cA}C$7;} z+5PeFpza)$)4cLxKSb9MW-nb5k}5VI8%(}Qy*w^p1ws;VqnNTQ_&)^=2?DN{h2__L)52eena-X3^h z!B_Snzlp!*a(k;m+%`z>mHw>uIsBjyzpg2tPSiw39p`c=HS9N23fbSeu|QQmsOMx^ zrX`zr#SK>W@2RfR9Yc*F@GV?0>m4t#;Wn~HkHVEFUJHZq-gx7NhNeOrtX!}UHh)g6 z0bydrv##fz2;TC=T-K`=H-_~NiH+BKi!yL`aIj1hUKCmx@#kH+Li3~+$#io4L27YY z96Ori4Egbn%%qVH^i`N6;d4c*PL<$xj)I?%I}`!T8z)Uy0Xc6vTM@;t_ZB;QYx=SNWc#^G}?S9 z*?M>Fnrez>ZVuh1ZjIAJWEEiE^|I-;!WaT!xnQ&8J~5Q8>@3B>Qj*`SSR+<|;l7&9 z0N~M#c+8!&)T)zZ@U`jPg7c+hOuC(cld+ZNInmru%RgHSPM8yK9}KBG+oJst^bKz- z;TrYa3MJ&L7Y)|W;jDNaW}C|id}2n+1;dEI7k(~?kEL!%#W_t(+}QY6#3;XMdo4*D z`T?t66)keqPmh?Z*2iDuSz440RJMd8EDkpUM!{%-(KJGV%^K!{Nc_;1QWhrN#q!0Y z>BPLkhF^Efeuy2&=r@%&5z>4#)`-c#8~Lo1Lw7&|eDMZmb+XV8Sm;QO_D@Px`cyD$ zA8S`3c>(wrs2?gzlG6(#jS0chj5X%8(tN2&%AfR*v+{Q4E5elJ<#F%rVY}@9TO=Y6 zVBC-1+%QcVTM_%1swc#-mbyCAvt{Jct%*d?2qQFjc_$UTRxqjgKRY*QZ;wjJQWL8g?mld~uNe3Hg;)UN-}?L-5FR^WF=;q5j5_%hg{G-C#4%Tz zlXKp$g;*f)f-(;7S&X>pSZ@6!hdcLFOvP3tN=Kt|FksFfj&fULK?%_>xxlq z2+|LV?i-73R;o1p=5PDx1^Z<42!`pd*-_&WB3Y&bfA6J7w*)F z-ZoLTqjo@Tgn})Ok8!b}A3-aMX|%#y?HR-D$9>}?+QmhXy-2S_Z1y z@in78Ah(E_uLaEe2w%`)@lenfdS6y2)oOouxLDsya*==XIpemQCer<+G-}=jAF57) zw`f9(-L}heJ#kY$ZRh1r1l@w4pQjo(*c#x9^q?_>*xjR}r*0e>`K|+rWp9I7*xD-X zw7Q{mcOQ?5jjJWhHI+hb`^xT?Wrn0mLaGyZ1YHY-A`3K093Se?ioN?ePo79w(f)y8 z$s|cb((yR^!*(tXPxN&L~D&wpD4<9e~%%ve0 zWjZw;&r{*&7byKlLviMYB8UAtOv|q*0UQeX!(^m-BHuV=Khu+3-c$jxn0)aUSNYjx zh%n(NMO^kTn@a=2G~s`*BzOiEcT1|`ZFO`VZD~l`*nC* zRo3D=GO2hh;Why*2_&|&eeBs4LIA2?BH@4P`Z{wZ5-UL-`@e^TNa9}wi$A#v-uvf& z_1LAsDA9hO{n}MmajKSD8$uvN)$7rvFB>WdWY0(`>JirU?}L1&`nNb=s`xjJ#wS9i z{neTJMv?=I>}54%91qw}!(4**_n4xX^+(`H=B_>Rzt#7BVth}NZ22_kGT-`#okER= zJKChbaNtZp*2jlxQ)+4-m;de)6H6fCTE}HOTS;!g5uR2@ME)ilx$m}939Fqh&n#se zR6p+tb+{Mw{`T1P!}zIs;;~aAxNR%z%+O1UJu_qCV+->)Du~mSF%)w_cV+JZ;C$B9 z-Kx{P!f1m>l=i(82?I)IUf|LBCr)rlsr-Kn$N_iyt63VH{$nEEzpL2D%Vd6TxC@KdjQMyt*P`Ydp=wFggKm0Gq(9Rtu>)gEd1y%$%XP#V} zf5^1Iq!MIIowSdAe+cJ(BJm+3x4*l(`-J;&+e!&@j7E9HKo%z=%Y+el{MZaP$JEoP zLWRJ_#!M^=?F`Bc*yUpCV@T8VZd0VU`qBCF-qR@KId}oE=@|{jLE)7@H|6EY21%!-D={oDLMV-dWa>B?zWgJ3e#@ZEG%BA*3DCz2G+#cK{MIBIXiDj-J^P&w z>ac6LT?9{iz2gYr%&@%@@z5M-gD=zGHq{aeD7tW$XKX77-RU{gVX=2DC{p(UwSKe6 zqpxl~;f`<8aKLslT+A&drc;e`8w^pvJJ~%rkvOFC*(=G@vAuVkaZirX>`7nQF#o$F z*{>tTk@4I8hXSO@TzMFGH0y@hyd(WL4N2qQ{0{UqMb3FyQgoUzYojZ?N@kba(&tS| zoKMOs16*6i{bR!{ILb7y9P}dd-%K7Y{M!v>*0Jx6Y<{W2C%sULu|30T3w)B>w6H!5 z9lA*NI#$4xr`%9syffUeSUUK4qiw}mm!6&p2H4bd+$pEo#{1NG^Sl>-P9-#a=0q7a z-JNOp18LwB*cr=Px}xp**xgX-l50<^OCCMDMrIVNIuP>7kr>kSukhW| zH5A@r1eof>7~4)hmh9sci@KvLvZ>3n2!~y1uZz8I^7}j3mx`$z5Qu`KqXgSjR94UR z=`!-XHF-j(3mjKdVD9R8#|V4EvC+d672RQXth$`jiU+=1sr@LWHrkvIp+51;*hp$# z+bLD*&~;X=H7;qeE$Y>k1_?4zUf{P++clY(5AfzELi3R!V`!2O78s;;tUxFulwRjTNgQAYf}XoEfh9KS(C zNpG%_kPsn~Rud;<{r#&w6>7yxUiFJF!6}kUr6!*C*6 z2bKsc!yO7XQcFbU!k_yW&U{`tZ9@r`pmqZSizPM+PbZ*E>=p6U6nTfP%~{vkdPSpy`xBR$-PH)kIeU} z^clyFBe8nLd0<`4?J3tjctwEe?LtjPgHCgJ^yNd_X963bB($^F+lF_{kjW5-S{*A- ztL{5I2yEer_m5|IM_hiLyR6pqK$D{yHE?5eTlj~*&&PBZH@q4cbW%P(_EBq7US|N^ z{y6qNoUuJe$@fhZErqG|tR^MM?Q5dMAj|Rxj^*TH>Fr$FnGRk|#WiH5_M!P^sU49_ zdetWMqf?E)fA!Kp-PtD$KlXTF4n|rX?r^r^9nj&OGUpMNd^Po?o5^KWoaNE0K?QI) znCB&=-z?86VX$f%%6GRdByWx@t)QbQ$VXB(mcXgqJp9a=SKY>1>~@eL@Fy{+*TE`b zC|W9ZMb?Uno~*Pe^dZdMjgUvp|&O%ima%#P3~(AAVvh0a-=So3BYN(&RbFkUb47oG-z_ ztx5AezjP6dO`y#kykWP1pbC9LSqDh~TJqg0?#RK%LkEg@U*2@~5UEzn>hMh3TJZ#5;rHav{)?a7D=5Bu)u*F;CK8{1vZ zWYd#i7UpM-I+e;y^0IC)vwzjciGD064#7aQ8ySp?RTb**0^7M#=gA90(O9T%K$|9MjC3(iF9;koA6~?v4v_V@sSlRCpqxfIXb^l0^;xC#YoL3u+FS0{l4fUL0z#M z+xobhA0XW{Lu)!3(tq|#hAvr4uc#o$C1-NA=me9ajAFvX$oa}NthquolFkPpJ)ih!S6joCC7O<~5IxwH-g!N@OZ6jAjfO%Q!zIQb&S4DLB9 zC`*!$9L_v!-2UjkFH6N z&9CQ__T+rWbXa_zv zVBL=x7{&w&*H4IoaAI~WJ4lbVkbv?kBJ|{By=jzg)3s5~9i3o}4AwwCj>#gpS5C(( z(j_4b)1cAgwq30DcAUNW;xjYZ_1|glu3;BiE%sw6_H-3YIJiBhe|l%7{~dSy`)_?i z(nVRcYLap{H|NXS{3Y1{S(_2VK1ZOpSy5c)$1+_B?tj7Al=rormYBw~VSJ{^_R=6w zk?s9>eF?1D**K10w$D7707z@ya`6z0pVhc*P(3(Td;q(q5#xY{0XPts>&SGKpCL>a zYuk7-FA?AaY;QJ^Rd*f#QPaaxc5qbi;bNL8T`B)`<>_>~)PQ}j#JIP#9^iV%!jeh3 z^{j`OKiNv_!ndiQp*ggVN2z~n`>Qinl(Pv8$4~?bQbv1fX?DE?!|V7ZDvUB=7#9r- zC%kB+j8h)Iw{k_y!=}@J;sNOQ->MF$3ebS1ORnGB zPo17(R>iOXA~#FA1BSGD{pSA#h2MQHg|9&z%V*^m^91~295#l?9t`K;IQLhypb_W^2#xtkApi;vUmWV_CLzfRy#l|pqCQASz<>M`Vy~I# zQqzC-&X<)rP!iISgX*$BInTF{ibNnVU`aBzqH$m|iC!cHE&gN3>uG(X5nAEz5p@tWY0%5vsD6T@e3#%Zd3-Il`Ds*fh^>uqUf_!F zP^J?d-#mjfV3ypQo7ijGrowaRnkC#W!fuf^DzBXt{`zE~jgYQ+rMa(_M`AEdyW4X( zV4_7r6dwW=yv(hBU@0VW%J7U0gMeRbc&rx@R>Wf0EjDK8FQ>Z`HVaKr?ZJ^MX)5%^ zqy&g#kw1=|KAvrYBO{IOrl{tpH1Hp9;EzHq=S9Yif!?9bx=mL zB>3fHikoNEa0ygdIs^R55v!9MwJ*&)L79EKf9JG4@&?96BRt@XW;u)hw~&9a*?$o^ zY;ggIf2r7iAOC;p8NVDM8V|o~Y|gr4c!~$ZcIMlbvho8~x8VwUob%A7Vn<45eofwg z(Xyf*Pl&Cp$HBIP(!-QrSc4BtK$CbSaOKc7W&@olYWhEKjWoi~oV_{hx`P`%TzZok^kz#24qw)9PeI&6e(E;|bU>;RlnpYafA%}fgcPrgTl<}KB z4yCTcZ2^BswF#XUIJgJ^A*RB_s=bP~we%Mj&KT3@KZ04EhM#FXT~0qg=Ul~=OT}Bf zp+C2lnDyVt>*Oqyhmbthv*%nBKE`Cl{|ku`{TBiK{u}}&F+X*A?THw+HE{fvebzI}Wmn!h>zQ+gy_WDB{?o#p(5YjRO}p7Vmz&NlFyeP|!22TwI33p1 z-l+Fg*<3W)u)o8_cyjzms|fGFW#AxPCHw)&ljk?xqYC&P{yM;+ z+x{4oWBDb#YWlfnIsiLFN#yokoj?Qf>8WBhZ@!mMogBfatMACaRCAnq>)7cU^?cTd z@U)6FzoR?o2j7xgfj4ZSb7$i7jXGYX`KR>f`9yIA0Q3oKU^!jic)Pz4e#gOLKlz zJxms`xQ=2e)WVvEA9SMtqt4vU4X3SbzHA9)ddr&JVQr6Ho{V6)YRgHn-2t5{@;LhH zAd4W$Gf)x7k3ufD7Y?H2ns@D2nfDFfdjIaMMwYqjd5J!6Z;#^5nAEv#{=6pO1P*EP zm>1Sg!uo~&9Buw#N+Ymhw12teiTP9)O(sa-q+T?9m@#VXlx$zbbRppA@e3H{XfJ~y zn-zlUN>&}*59^V$7)&uH0RT*k>>qY^J> zlKOY#_~Q5AEVZZ-L24_rZg3Y7V)j^qC)UK_QF}`y-8arB)Lk2xvSXvAcN*n=p0`xd z)wXhXnS8VzRlkrNgLKshhTJjAiTM?yl^gpGDe)fvS?67CWE$^2iIc z50eiVn=W-l%8PF?YdFAzZm@`ktB~^DFswO2EA6&7OG<||^z?6|S2j&YK`tYiJ8iW)0xr zY(%hB*|g$w&b&X*Pn$C(TGGu{w$&1WRrC2hslRLg1Y8yAj&zp3bypYHI+MdWZ9dy@ z)-13n1%I|4@+~Le9K6)Cm6V8l8=iHvChznD<7mjE+Me?Suyc?Q5Osde8L{EW{_Sba zr?u~xSWogx-7|+=prZbzv8=?@oip2PU5gtvslV9M>fspuH`5L4?6h<-i}jBT8|i0 zrY;Mr9Y~nHFHmiE3*MzMTfpkCJvrVCwRC>Bixsi({ZEU8g{`ovonGqi>-{!f;rjP@ zVgEEYYdKY|pw;vTa&|j*#ws_PNx0aGV$5z^+55ur`hcbdliOI~@?!IoI zHT4r3mbi1A{LJHxLT*y0xG1m9NQBmDpsC2P#OKVXwbWq}a-wMRN!GL>Sg>)w|v zr>!6|&?8Oy5Kb|5n8W_)K9uVt7d2$ng;VVo&8_{0864+`A7d$2+K3;yE1&bWki(UU zn(=TB0OO89wBh|{>kr%=jh$!%L=oM`AUK01E#50rnRA)=Szk-RVzIsYvSv;-#miVL zNu}lHwzM5!35-CoJORelU(n6_gTpmbbGs0)?<2pOG5Kp68I)Ra(F)R;hx-2JOS9g@ z)p*QQz?NL(!ct``HXG3*=xwys@q_g;lZfM)%MZbFW^^B3fT)_&_YGdQ^2Cmt@aHR0 z{gL)crs73F+U$>L$o291pVK*km8@Z}hm1Z`s>C=i4nEE>l6zG71{k{ZwpL@~C|WBu zWU<9*wi2?7{U<;;TuBAVC|F*nlIa%6D4G&q^Mada;|J^C!#De<9Pul`Xd#b)(zfK~ zA|o>|;fpOew9C#StpKL+U_F9&7?i^=?J2wv7W0_P{U{c1cmGP9Cd4O}gyzvvP9!N- zwy74cK*#+TrY>X7+D*K)c@P@#^I?XS#Q)v#Wi~IGnH6|CYcdUx9ise1p1FY;KUy*8 z$hf5WGyoFR*s9v5FSzuLb~0^{e+rt}AZj6@jAWrGc$tTlrFKf=bp}D|R+Ra-XF$wO z4<@1C(i47$v}xF{g%AOU>vk3N(P&AF+2y+4F*rg;grqQM+HrWh)5bSz=KWt#<1;>s zGeqb0(cxagJ*HSojt@kJk;ixnj$tV zXBcDb8G+Lcd9Ls`TZ@C=5d4Ib!Mk&4wlW4_`Ad$j&9g{bTgq2zvR*3%pyzj)O2RPP z1Ll7ziLtZCC}iReV#5f2Kmq9Jz*43LI3=Ahj1YJM6HxZJ3A?BE-gq~RU~QWTPT?^K;4ov_e&E+ zBF8v2`7#~-V}`*z%6TsQ zKSbC9S6{r=KqF~RM2uoMxle3n7n-DbyW0WrV)c>p>fMa1Wy!cNZT>sBqL}VyXUrX} zQ=F-hS6}g^p5)wti#Go;Xw>qc0dpfYUQMq4am1Or$;vxQ%JOZHy6JB%nh{piA+C#ORvFnAU^9Z)7PKf<=$-1Vj=+VYtyW$bsPcxE2(){>k!iC+`7yQ4OD@@meebNs|NNR zqr&i#VnD;OXtS@jf|>)d|%Gma(EPJO0Q0q*Q4#PEz99%=4i@E?cL8_Bk*jj>^opNsu~T zZlX{sgg#Pz`)h|QH z@QiBTN12o`hrzbwh3+IK1-;7BjEk-6sQdFol%!*5^$?uRmGhzQnVXqE&CE5~*e3zR z(Mj>4OAiI6*?e~v8u1huByno4F9A*OC3Iu7W;64NBrp%ZHbm#m6tgGJZ#gyF$R=eP z|C>p2y2stvMQ26#=9>KA%Y30cyou+d4YwJbxPRsF)I&AtJ#49VQxhdudm!kW_JnC) zVlYx%Gawx@$y1KscyO?i4~--~`?N4iE_#P15LJmjY=$Da3X{)M$)!fS-v_VC?oCEH zwUDYEPzNLhCE!_$ zsZnom4_;@=j(jo3&mReWT2qscCJ)C;C(8)>%@;(?W_>MaG#baAf2?mkW=ezsAOL?- zK*iq7hwbrtPZ0Kw`u2h~dPvs6^7*~9u4qH4*tw`~JtZZd9D#?-NU(lG*?FL4KmG() zDr;7WIJC}qtg5qJ#kO?kgW<9ZJ4FoH^O02>h_B4Yz~{|>Hp*kJQR4SW2{FudJS;6(=-Z>8hMbfjB4yxG13wa(+q9z;a0 z`c=dt+L5fdEs4B`vSHqfU{Ob&>yrt^l@lo$42u-k|DBki(y)N~c7ZYROHCM0&!w8Y zg?n+JQbFzj!V9-E(eXND6s zX`|j9C37}ZDLP&{zEH@1Z!9cQ3NviUy1_AemIad5tYhvBMv*nB42Qui*Cpej`Q*x# zM)IiJi3BZw{OpxV)!K=iwW<#Me0=JUlpp)fx21V3SqnAZr>xisf}2CW6;iJvzmD69 zT1C;W_Y7f!M_K>kl~Y^2tQ_k*u4I}w{}ltzG+}upAr!-A6~PYDSU4;_WHaVRk492I z*_ZAo$DhZuM@=Y8Vx;t!s_goR=A>igR2>ko@?Z^N3q)GWBgid1oK?2P9#=-e+?Se^hA$6&^j#rog;6i~lMls} zSg`h}HbY09{v1fLCW;rV1=ry0z=#%5KM8W|CwH62>s3f7Q!d?khqQiG(27K?v6%rk ztd&``(2KB18k$Gip;{9pZ3oEULV$`tBdFY3SPT55q z+46l3&r=a@hx-5i#@Y>avYaYs#k;cD#02q)#jX^fpa9c{A-I`JszrlszVlT|o9!oD z9lv0@0~{CZs3`~x9|m;8*e*xkM1YiNP0`;bdCX@`(Ol`c>-1dMC-`jm3fpSTY;YzP zB8gWotj(V-;P5)q=a%ac#EjSqzR0jV2iQEv}N(PFtwe;b{~`>#&|K8`}W(_)`H zE%!f--kvx83o!($v-$duvWa1@N%#+J9BjwKF78?fHmQwfkUAVbD!ZP}6s2pZ z<8UqtVAa0+iMfQj7xTJD0yZu|HvzHh}PM;-IP!Z?Tgar%_0@ z`J0#O)8;x4)^Ov>7OIpZk<2pXR%Y}ca#~J_VCr;cpS6{iXC8F#?!trvHi!r9(Nl7i z)CB<6mQ1k(Lmz83{bcT3&(`!QN5Vd{R{Wh1zeyI|n=^9tcb|QyK^rH_=>(g_kYzUx z_B>T_SzG<*haV&{bEyDB6tzvtFurH7xgxLe)j0;L3r_ze%MfC%H9z#NAVupVaF68o zX(blA+k*p`H@+qcOJ>h)9J^37nf|m*NBZa4n!&;0+~>JgWk;kC2B4{_E*XyLi=9{; z|Fj(+2Xxd} z)jag@VHpibq(FRT{3hfHNqZ078T!9?d-^r+yJDF4mAdvZm!4&wO*I*?1ri}_jyfs; zsBz&Eo*6h2LW;S%tM?o>3)l&DtLUi{G>cnOixl-4c2$~gj9|`ct z9z!8^Pt^rDf?MC{X>^T6YJ|IHg;6L8Y$poB6(r$Fi>nTzQ~$r476s`ZRE<36&kvPnN;6D zn`8D}(U9PZV*?p-jbV%W9V8$z5BgogZp05t5_BQenJWY9!gxEEX zJCH_LweA~MF+}>Eo;Gi>c2nJzTj($V$;zx$WcjU)V~W*C;|VI*BB;g}MD!h$z1Q=h zm)MDb%ytFah*QzudkEG2NF%!*th)ShibN7XzrC-O2LF0`_3mdrA4g!~74d9F%OScJ zV4dnUiHu;cKT~6G*>?XHj!njQ38`X0>A6U6_#7i9ZvDaA{d_k>ZUks7(ztmIvrkkS zM6UBCD8A?-q`GDj@T~rS7<;E6LDpakccw9I+qP}nwr$(CZQJIwZQHi(zP;+ zbf4>`qADsY|6D8Aw^Mfxf9c#tw`Pjbd%rPoOP3XRT!xy|I#GJ&;Hp3oq)->o=IBWH zD*5ol@}{g4a9(B**^J;53qm(!hRhri6MmOIb9$)HpX`3H+NBJOQJ>>ga&`B!Ff`2P z(Y99?aqggxc2MgJE<#P);7+f>zND+O4(om2yt6uH-004jaej}$?J!AbOyt=wQ(eN! zye4hwWA8u2N;iH)TQZcSU{I>c>|}q4l2SzphtdJ|K0Nnqj#K>_QTX=4qNt@DkXt}N zN~Hi_S4g+HO=;-uiIcntx_1&fHV*J>flJ>b-}p3emv!p{V=X6bJH@7rhEvJNdrXN zk$B=F1iHP19=uc>F=4kb#?msV$u+rJ;nL<|2ZIrCUPt1H=CqBbWtY+Bq?uYm7jWLo zP@3Ev^hEUTfEzJlhB|YbVgku?EIMx0^g`qe!_`pSP#D!%hc5mS+OVN>B)oG{&d4?6 z&vo9Ex?s)K=R4Z^Msws|!`qjq-{L`d>t zGL=t^rTTyga)g(lSv`xh*@?y!s$#*5ii+$W&laZ~dwm=tyr1QGe!>z-|3le01( zT4Ub}!lK{yt;cyWyvLe-x~RNE&r;V_ z`acv>47nf``txt-A1=zwtEHnjnPo}#r!A#W)xz#7zcOL994;!-ebi_WQEZjIZUf}d zQ9fjD_{pGiiNp<(pE6faNLUdwso_U9R?_dd|C&%8s@`^0s&}WP?eXt@{g5nV)(5L4 z97>ZqJ!w({GSS=8u(^WaO=r`msxZq`Kj@$9@6ZlTM}X1V-PvF!(9qFxi{k!Py)q*y zy-_*Sq>j_wawHs8k(tN^!>xbJYTOcd#9;5de`2V%yF-dpSLNpUy$R_&tWp7;ITxB> ziL_6?1W|9l+(#XYCTCquOn|V+vP~n7&QL(ZJnO5LLR?}f>>H<# zB~{3jEj0;uZ49e~i0m*?BBne=l`0OQTebO{S1-nKf$mfrIS8vDmo!Go@?R+xt)fHN z;iXeY$HkP+IC*?kgW@HXVoF%p1$P~9`l)2}B8nUd@VBnGZ=vs%q z1my;uCQ(^-@`To%*}HF-PPh0d4ZagfGYSYDUxd zn9YEDW~AWd&mnqmFoe{Q{ODCX@N=RG=LV*!e@$UWv%9k67dp&V%3YzOO(#w$pc_rk zgrQ2vQ+2*bQ?x2D7s=Cd**(*CSdkVf*X#H8kc$7%sI$C*BOp7E7WvTW`J%<4e}$ry|CQ zkB%+YGACM+@$t{<3BIrL&{goW7EMMZm}iZSgHp6NP0q(LhTlFNX*1`v`8A(KJ&uK~Sj5lYdHYUeIEmWNOM27V;5(oOWF0yNngT4N6{5-_o^9z$%_R2O-1lu`e1 z4e=NykK-L%fFB8*w@7nkf*Q{1FC$kLii;mPcl5G^WDxR45-TcZnvL5gy2=0D$zpBX zHLgKDVKofDzQl@lYCp(3H9uTON{8p_t|44J(YyWco}azFwgI$ITiq&6`jkNB_BE|( zYH|#Qy@&*`S&Zq{8Z&FHxE;RZ}cDBpFIW%hO7I)sB+%Rusy z^q-C{+klkC&a(U@qa|4DQ`T7uiWYvmlvs`;+ce{kSBqj*1AWZlS&V7f))YMBZ^z_K z)1HZ(@UkfW?d`gNn`DW$M+Xgi>{s`Q?;dl>Eypyv{;k6Y=-di7Yw4P-r4Y~e-&%Cj zlPxV2m1$vtqxJkmmJ(eAdH^&}ktLfGDi3dVL{>Nvg=%I$u6}s8k%FO+4bRIn*0t>; z)gFj9M~Wc)fBiqGnt0QVIc`CpA&|GwE0Yi9H;xJ>N5;tSCt@B1>d>bV{n<*M?~jIz zC5`>em((IKnv;_-i~0PE;V0vOYCHxIMt@U?oUfUy$)QXSZsZQ0w5}fFv@asRCJ^#+ zW^~*|E_i^{G*(=$w~(wiTJio>mjm&4lv-gM?|-;LZh*bTi;jBZW$%3yMqd*2SKs)M zj?{RjCR~?+!MF^hG@eZ_9XH}1R8~4Pd4b7oJDM%=x`bcU4App$TUbORI@pN8Ds-@d z=(s1zHh7KB%&-p_HSpLJ^MM!^9H57eOh8an482uNCAw7#YN@Vt07f9fk;xIxj^j{Juc_xmK|hEp)q!3Wi?No9$QCiwL7OPX{I z<<)B|bO}zU&YJz%fHUr^{mHE*uK=RCn-}uvpctB+Y z+rmhQ!K#f1gXWfqfFMe20yksigBl7dK%@^LH*EPojfsKs&m)>{;J^1s@|*_ozK6G*dYFkh_ydaqIXm%eesjE!qsMoo zakw0Hx@=8kIgnM>*1~tg&HTNeFDvUpUMww=S!+_CdzewYy&iw9d?B7RRm>0$K1!;u z*{NqyOM@**tw*6l(0A{%MT=K+Z)<~xqf%%oG&=Z3VJ(9?LeDjgv)q%7WIunTq zg-5zuL+jmsbzzN=L3saS?i(QBi5(hFC&x;Rc^Y%kwlj&W@(aJY)_UZ{=H|#+C7#=5 zWPv;nO5uE%oYQDeJzA5+A^(+^du)T9&03C9^BzF>`mt2i#6p+`eKwNQxx%oR$H^DS z(RqhQV_gbTnFAZXHA(Yi`Lb}k3NAOoNq7qzS!z@fL{R=u`{ya5GPggb&{-x|R57|P z(;4}upc|%9w4O5@DMD~I{XuHuLqmUtGvXP~_k~q12l5U1wDv%=cO3R#$aW62(1@gX z&p4*r$#Pwwo*1p!?yZjA!ZUHOW_!dcu}y4^Rd6~Epp;Nuf!OOz6K#-k8WX;@GQE5R zlx}g2Vs*Al*mNwl38;g@rObGj|1-_)!Jr2zx_Y0cOd0$W_zm|Vn6}|4Uw1RGxu+&K z;-DQ5jel1V9pi!PhljTj)3|wqDaPr!sywS>FnLkcC<6pQg5&ObXpu69ZnH;83^JdraU~Ib{q#C5?r#X zU*P$+h4OV5-v@~0Bi_j0I=W#0l1e|uUnFsH^pzNdmhk?;q@3O$fQ6ypoj%A%o@_uq zF*n=VU;Eje*N8Jdk<0fT59_a&VxQ1ivv5P~+VsqT)3bqQUk16vRG+Lpj;qK_@T6!k z&AY{^(pj?Me;MD{>_&iUR>*p_!qVVZD@hl=;H=%ZNpww|ehxaEoEM~Wn_WMb-Q#RF z>EQ0E^S4Q&e|Tijb{yMUwm(xPffzl5eD8WsWL-h%$dU7HpQ@swK2I~jygt{OxynFp zJ6^9xAs}x$g<_S5?*v06EPe!WAIEiuK{VwY{ZWUAZhoS^b*1rh@4BW}-JPW*1yAll}2 z8)*9^@kQMS^oG(9E19xWJ02|*;{&P<5tg7Y@m>TV7NHmSvWD-nYMOVR(dB%=-FpK|}=?ruswgh5`){gLa}HMZ{ar zj0PMBU^jNfD#+rfxhn|V{{@nEs_gw`L(YWl{$A(j3J&XI!lenhmR5Y^8fMK4MLdEGr*w2O zy;jWt(=R~yzvlqjlb7lbgbbQgWIpPQA&Q+{f*L$%CfKt{>(pYyAt*$04HQ6FX&>Ee zx|O(-u&HDjX*HojZc{EXt3+Tu>Z}q z9rOv}1&=3y%NpS8l+KO?-R0@u3>mb|s7IXlU=}<)0%W6gvLJm?us4>2*6#T16kL99qDGo09;1V+nKs&?OZ@l z8J6kYb&+IyrE^ub;(Q9a?Dzd}N^K+99Y19osKyE5i9YN%N@VFcE7tA4#>5nr^Y4;# zBDHIsVXTf&U$lp9w?uE|tPb1SDwt`-g_Q7Q-fi~hjx49}>t77C+f*-o3Q~3ZP{si& zmFgW0Wl*(t0fbo6_75cxZ6dh`B7WQs)vvh(e5NK-u0d00* zEDL_bx`24F@c6oG8EK|+!(s&W!`j|rGP_9he)vh)rs$;qN`9U-COkpUYljEXlrmVT zQj$9ANl9Paulsc^kfOJiJY2fEj!}S)f@>KD!@NnIxMl;gt&%c}lV9x}91`Pz8>$se ztgcS$j1{(7XQY~O!*mr0thd?s%kb}$5XPY?<@+K;h5ntLkC}{Pj?-`ZDi8x-FJkEE zS6~4bl89nCyKhU-sVy0UXc?2OoPpri^_!tGkd4JFgXhH6l^lgN>c!Sa)aPNkgTImf zEh<`t7te#4fMnZ@A=Lk6A%h)!W0cmy;$!FK=Hg0sW=?M$Xk}*YQo1wc_{$!BQ4CWR zkUhrX+Vil;jT+~(7U_)XDA4hc*VwDecR&(yg$r3)j-JcmZ{7Zyv|hI}5YaHq+y?yK zRJpBZMPXwLa)osVZvXuDHQ~})uzeh?8<9F8gZEH&9`v2Hrk!mN^k9K7?2@JsvQ}bb z#Le-7A%O|T>op~94tX=E4MSUdb`)}|21kF&ivD75Kk0a)=Rf}8js%EuN>T*VasaLh zU(U`qvA2>#&APbztc>_js|+uIrt#h14u5coTDD=uopTX3XvtrYwPT0d-pi$)tHHQ4 zWzx;Hpx9C)#!!IIP_+Bif-*pU6#z~=RLvNy>9UGz6ek}6PX3T~3_#Y5Gl#LiH(TH8 zQQO$qc2pmPYSNG4P}M-UCi_9>uY$UYUEmyvG0;0mFEpD0JPZP5rP*T~rn@0e<`ee{ zBuN{uz?RQ6OBpXBPCu;-DN#`H=}8f5m^5;?f4MYboq>U9GxGOo^A+5yYeHv*7ze@p zOeLWP`z#GR5X3KA@}f9KPGI2JK7IiMg0woJMYKVL^wQh?cY2X8G%paoj$tQJ+8 zA-8g1COhZ*^P`I`3ap7vc2LocmBV+gg60=CI-+vYq`R9gQf+TMcs#Z-t)?1S->HLi z!-~38N$6p)419CfgoV4i2hS@k2M5bi@~_SlO!g-z0W}JW$xNm|2Kj=!%U3lNBPDvqgJ&fZxpvQOvwl+ia}O zjD7QT9~44;jPp{O7$9Nvs9JlL%vup*<%FFL@(>_!Pq*To1H!-|VagzNXiL6oQ-m!V zIb%I%N%`f#JS3$VDV9|pfPzC{G?a|?mz-SxFWcFf>^^KbI1g@jY_6=7LcBz(22?sa zrg7!57*VYGVtH7BM-n2DW%d{+-KbjR@K$US>Tad)OM-Xm%qCj30yRNSC-uLv;1S;d zeu3^Fk?4j&AGK+yI|#lGb)&9!??BR9Q{-ya6jgyf+l}M+CLn<{rwP6o;hwl7T)92tEm~r}(61HZdqIo+WB>iPgO+oHc8$gk4 ztd8+^Cx{BwSNr(oz{VgqrBQ&_!5HkmzwYP$1|wbUs6NwCXG<8o1>h~G)a>aIwIHEv zL-vt1>8*IVG9*i$`|p5{R)?%mEXU@}|KUD2 z&WrH-^$LlB5MSv%4k%*oLwhyO76aVbUa;J{2nq(#(|aRHx?~aR4sK)xhs$b?;{B&h&x4=JD#I@q|O(oyovVVi+AC&R;AtcAXvF(9%6jCRAmcbv7MVF;| z7|6iW3r~B1TNwIp@PCQ-%Sf!PrUbmBJh85)!#!lz*n=&5&g?O4SR>R#!9W2$7z^C^MEn??%~ zxXQ{Ki=AkICZ_)+#BqkaZUi(J`^Z^8=$jiUXJD>377;5ul_hLzkxwKT$sh;OSV}cb zUW{%|rca=|&rY!p@%Tf6ziy^OQfZBL)-gC)Z-!cy2&Ign$0BqFuBB%rBzPd0FKonB zUYI10(&BbX^SyzgD=qs{W;7KjQ(rBVgfO5zZ^^_9g04CaRQy4E;E}{ZAUN1k70a54 zD$Db*Ft?No*)SHZxA2^*jK%90L36aMg&TEXEj*}8>avAH3XaNG2X8V}RLzU5#0D4x z#g=$fN~;@u5U`4oHmoV#;%yQRq8rZ1-wnR zr}uM{ilVQx+!h1V`4hgy-QVzhMq6RvJ9lbCH1?%dUR+D7SkVFH|LppD0K7$k-Z!Ut ztswkI&zd~Di!#`+h?F6y^n&ofYUE1ukr|&+nf?TnAlh1bp(J?9Pbq?;mrnuXk6VfujM^j#D_9Y1X}emCLad0&2|Ptnu5%A3GO zAR(vMB;RDa@eK95(XQQx`2q?{h-TmBDzR%q4OD}?L0TQnDcW2slO9pg1^84hy))R& z*C9fOYYnJ?gu@A09n9jt^oM-?+B8$ukKirqlbey!mzKY+8H75P=~^EtG5BqJcJ1*f7;zn^j1&nK9i0rP$6pRrg9NaS-X7Tb%fZ~7zV32GH7Ym40=n7T0luUfrC@B9Qy zvH-`*A7{yTO%_+&Z-~ldE9_w$4a(v6GfRl>WzSur5LOilSD^Po(lA{@DOl&6n{SG=79WnhB|huE&-{1HplM&13F0e zUPqB%YY$@YH0$nSd1|(_yC#o?*mDUMj5BPiE zE4~$>Aw?K>eF9+|aC&#{^p~V{v0q~Z1g(<Yv1iYCPM7 zd+Q^_Tty0h*7@L1MT&Y9NY86-rbkq&D6sx32I@Iv&^0pHufS1fu*}AJ7-j|&AK78@4#L<<9Y{t4u$0`QKmXD((_2eE78k9z3%hnsE<><RtA#?Vi!&Tf|MoDGf4q%ewwS1EZ}|4cE3agICKDrPnySBdwFR|gC6 z^p&Ufb>z}gkL1l1%Er;a@a!ZHQQaf z;@?{uM#D34cGRpsPXd0rK}uUf;Al*;lNAM@Z8pa0EHE;A#1Z`s;4!L(Kn=u8i6wCR z!fi`LDplr~KOE-pDqH@D*{}oe-|#_<}ZpQMoL7uU^;Rn&8&)}VRq0-L_iJ>WC zmn)^Be9-t6RIm$A68Xy{UW!s`Ax`^L8RGYC#Rl^MqjDI+IL+y-^uLtpEd&fqqDz*T z4nqr0#K-qu2YedC)s^?-{pBd$yrvM(v{jN$`*wDj@&@x46;iIcD~<6B3B({e@06%zVOTbKFOXPEM}IReiEp5z%< zm@v5kcrGVSXaH$P+i{Ah{>QA>zr%deJ=7&djRtw)znQeuIMO*SAw|W`=NB z%pMsYwZF9GW1h1xB;5RkM97^uD4{@gCh|b&B^7v%pz<9g9hPh6D@D`?M>*}lLfjEo zEbRQoJV9x4W+kdYCvfYGT!G3C+AV^vxRxKa70GbPm;w%{(ymHb77iz2S>v=H;3e}QMJAB3(U zJ6wFOR0sU0gL0CX?C2agc6c!Wf?rJ-be_C7#K1K_6J`N~)bN&7^S-Wk-G|RXY$ox` za%5bBORATN*`XsRLJs>RDm}Blq&COwduAASEtLI-07XN>?V+;CEz{!r-!01%eaWoe zqvmDoXR7J^nn~qIm8e5R6QUyM-I8`VSNh9^*rxI|zc<{adzLcPVCgr6Nz*kLF@4pz ztK>c>g)Fn#05;WId#c7sE2BnwN|em2@gfJI4)~RnkT8e1xw|_SajvfV3bCbRYy2?W zrB}i;)FiUoM3{sclE>x788v`w$4|c4w zvD>M+qd>~gM7zAeGdeT)j{B`D)0%+oKE{A5%?g6^%3Vj*gw)V5tC1lslo7tGipM@C zSEvwgZqE)ehG2q1)i;o%(3$+taZ2Kd5cdun1Vw9vq2H#mQ8^t^gJV9h6uvfsC|aU* z6O%N9;2eVijeAR+oI2WC(HKM=1t3sZ9MPJP;m|B252k-5{||EuR3Un=rdBf8@HWoV z2?qcGp!WDf0TDj$W!L*6oDx7p10!7%I`De#wwN%R_GQyO?0~^}BO7a)Jj@S74ws1leBKh3eq`7GevnF8I{ST;B!~Oh zR6r!+HFLU=N=Uv8mkMfblb|Od=~7Q$FXXD?%70iXAkK>z`LO8d;7m+S zIBQcK9h{CAD{$1*)JS!BgxD()5^eUinXYg!pBuS~cdreLR=NyC03j|x`d`t_CkOe# z5OH6rb#w3p6IXhNtwgQrR*+NNneyR^CoR@6CP@&jU5h9cRl>Q#3-lLaI|AqsaSYec zGATl>*j?ye?ZyVS7zV+L*+bC^Z96Bfxj|SCvW=m<$op$&cB+=F;KeQ~yS(wRi|?*I zLTE2HWsLmN*3|bt+~5ukv6yX8?@t>hU-5u7sXYz2q+Yo+ZcY9 zQRcFTioI=#0UMgZx3>^+8A*{NR`0dP-1FRQ*x_aP)Fm-XmsxrCyX?(x)xnFQ=%MP( zAV2Q}x8gn5;z_rW&RF#D6pJ-!+%H-LB6K6+TT1xHvd+;IaGD+!%84Br z=ziteVu0@HA3o#ZL%D(R(Z83Jm^*=2IIJza0(FG9FRIe0nFO%D{ZZS~0H#?PZD1qF z%vfIL->+@#?O99r?=e7*X(ERw2i5+me?4uS7Bj92DgOm~vQ7mz+8=7NRn5I2bmtNJ z41W!>U@;3|3$&D!+BbN`G)_|tGdn+zW0EsN*x#N#*6l&pLZ@Ed2o+Eyy73}-Zbo@A zlz`w*{mCic+vZ|yA}fv)bX%eMT)L;fPTbBsF*=j|$xLu$66@YI)1`Mo&+&(ShUm-f z`slo(SO-~9fpUs_)TwaOArS^gIB5cY@&|vDQXBlFSTQD31a_k`p{A-dNPQ~ygu&UN z`MfWIkpb>2V)tf(q);=hw`|3F#E@f!)ZN|Efd^N&Awm@S;|c{D$so*8Tme8zBM4?3 zX7;mh^HUSPQZ(Vxy!DB!xl+_WcN?0G{gI^!mBf8&Xy00HIJXw!uLDNj5++>D9Q9X~ zl=?iJv{`8?RXFGU?mGS&7|qelTcf;46F!8zMj(1WdM?8LU46_tKhB@t!2jD4!l|5^ z#5zDf14=LruJIsct?-TRD5*ji8Hb5b?c-)A6qGP#IN-#{#AKM>{GY>G=`V>C>Y$pM z>+kBSKF-3S!CfR7h$akG-fIeqWdBSzO~1^AA7!Ui0qrk{ zj!Jr_;Q&W{e5(lB3oMqaCn_-7A8!P|;S}nw`XuaRX}-6JA+NVUB>E$`sW)~$0AwCe zI{{-}CW1`XNgqz=p#SD12L8IYG3cMkM#X^rZlWO6#>t8n^T>gMO}hABFM!u1ZAUby zu%N@Ro?#dnLO_u-)SbWTG477Bu4MUB&);l{u?{3+P9)Iy` z4ICV1biLLamzTb{WvVC`Y(&L=K6IrwnB9)(>LiThv3er0Wn{gmnB!S4N*@1K3d zV*)ZVu(o_71^f>g--_V$C23R3Z>Kv_|IA>pN-J^!?7{Bf;yR|xbmky~&zOTcPDLn; zp4n=D`Xq~7zl2W3JJRYfyizC(mY{~mZIYOHbM&6kuj^P5F%KrmN<9U%J5oCIp~&qF zW+y|@tT&fVzj2G@U@Zd^RUd&nQZs)tOH3xk7djL;dwquD zk2;8HAs)EG{jWAyP4~pdBylh|uw~e<7mDuPVT1RDSJsp-s?!+ENGeia#NM73Jq2dlBS2$x4n)RZ-c90UOv9x$W-cqWD3Q) zdjnyl)YQh;KWp~NMOMqe0l|>G5Dd(YIlvIfyvlGt=~;U>qY12Np2#XokN(oTUV__X zrHrGapjjZ>{WabE%7LyPPE5g#cK!!3{3O+`>wY5<+VD#-2=}b$SI3CbjdsWH`?qG_00RkEs&4#I#Q&9V zw|-k^&)Xe{#jQNKzvwE+uwVDSOv{mN8ujc3iV2HGp8Q9j(isce{o^ayKDA%v9%x| zw(5fNo)eq6HwQG~&|qykiviAqyhZ5}2;8Q1WpwgQ@Su_8N%!?H47h>t^dIOcOLfAp zVl;_Y7GB+Q_W-5|17K_X2R{ ziQ8S@BgA}w7)Ti4mCSO=S3Cmi9VZPG>#-Hn}$wBU$2Pi?$JkudBN@L8F3&lz3tcWh|;Tz#OyHpPE zW0TRCv4^^ax+f)PwX+V;DdJND=r;MO6w1IU4FAJjqV?ZE)3q-3FaQePnqo2e`S^|2 zo9G-aSAyo|t;=5tke+`i%+r=g>dZ7(i_>ET**} z_52)SyKJA%QI51;@nUzcP`=E7E!f&ri3UN$WP*Q$18rPVjW3n{>f7>;N87a{5Ni+F9#uOI($y zAE(qd#CHR7+!5ZFa)O5rcr`g0QH3&$b=T)%T4}v-nZZNwcJ|mTuaf;=0aJFY(@{@*ahWopjfsYOf2}nLB9^ zPUwqHQvseFU=HReFh{3A7$%7sfD0gFg-7=Nx`sB`F9XpBxIY{6#*{quwF+74Q`p@)Mx!4S;6Fg( z9D^5qw$gWMeRd47lX8i~JOHq=eqCM9f4RFPy);H^Mk(Gq>Uw0YqC@jTfzh*_C7xJ$ zQhZ9KSamy5R=3*WujFnbwFW_`iW$baN8|3PPyqxRPRSdVU37fDJ5i z;vVn)#+|rX-wSW7ds;jdWJC3|(`Hl-S)faC(Q8k<7eab$jIVQBN3%QQ z>`f3@fzN}K2*7!!|8aE_5yygofz>uO1%-!;Cyk5B$PCx&_0RluvAMN)x!HAnf1>hm z(eL#igo(;Ar{cYN`xAZH=6k^6CTn&Qv{;g|`y70?)4iL#dMA_fLWe>Wt{~2w+B%0_ zrp01#_K|Lz*oPNk9f;RwN!!Pf%9mpiX%?_ta1G+?LIG-0&oo1BPLeFda0r$Z=lF#= zSMm+ug=B=Nk+yp{#W1pD8dRD!4m-I(swmy}>M(s9LI*MyjWs(thIlps^@)r)+xl$F zNH-_goPgBm;E`9;1dYgq-b?uG#+HGY@z7sN{AUKXS@@ov;)e6^kN=dRK!FmXvv{PR z{hV8-2OW5^aM}v}H%zI!Gym~roNYywW;LhL@^92jV*n{Vk5;uxK6`cU>X6`m&jlve zrFnx7Cit$-W<5z$aANlr{jEdO15};C`5~@dSd3_m>xx}XO9Ds7Z~iX9ejwyvbJ;zO zo}me#=yjW(*C(RP?fn=LIU2c43x7>24^$)T-VYwd-PJONW|8*1W_FyqH*#6(X8)w# zlm_th6XK%COd67W@B&-*4S;@Y=fE^FpUn@QoWe%jXk5!( zYEq&*ISwCZ8w@=x|AgT}^C=WYF^$(`my`z=6CDR3L1v3%H~_aI5ng(_g{6IZ6jX2X zWlmiHWc0w&P6bZFcqfTVOAl3R{oT2|jJmk6JUKm8I(-?A!P%ckW7vy|#1GvX9v)U{ z!~9n;Fu^t2ywRZP4@ilzGYljO$JXgv6db){5)nco$K(zNmq11c0wyIT3>G03IE_Fq zZ^?{63W$ttwP5lutb~{2`yHOBluOPX3>am87QbhIFPCcsj$vV;%0PnwWApOr&ijmD zfrQV}{Y$-=dGETa%4%o#5<~|^i>@w7MfvT*G@3I}iBMbz6B^_WoTyv}Gj7CEO?lie zGhbe8152e)1_J(n)Npu>N-NHt%VP+bPV^h_)^K0EqZin&-vL>dv@bUnWQSxaCy{gq z=@erVyriT%d_tE7xr`v?6O%f!69LLU07{2v0DkHXzwBY4#%gbjl<45yY9o-w*~D3~ zz7|mI^T?xumVI-0nBb^0hJ)Z!2tXPjO{gB&dl=AdTGT1$0K1o_T5+SqCuuxzx4V}U zZt8u5L7MD{L>_0)G7^ZcP{7eAE21YJTMF}G70crhGX65c(0C2`yh=Ki=vMk+avw{I z6bN|n=)4Y@|R#mD`p~o_(tK$Uwz*P6K5Y?ly@G z7V2{1N3vIhCmELLNs}n6t#9(p?*dsf57N7Z>uE}YT4SUc`VumcZ4mG<9VM@RA@-Lp z(_6XfU+FMJZ&w@_RImFL#FApLGl%Gy*?=}&of+6-&4|DEst>Of-8M>EplA#r6kNy@ z-akqZwvz`67UFNKFt$dcB8E01D$-mk!En9*bzft1ypss)rq*J$1!Z(^ms#Cn*s&j52WN~UB zmFF)v`Rb}Y;)$5()n#ju>yb0m+GNieZAx!gKNZtSqM)UP<@5DQ;{ATf5{bs}=O?+W z;-M}qENrFKjzBtx8w%?utF=SD$^7R2zJI08V2~m18~LSfowi&ACUX6=&=B&@&ZA%U z0TaXb#U~S4u#kEdhs$R>ie#H~P*jhfHaX@SsnZ>%Pq5oT^s8Fq)2+3+{+s1a2njcQ zJ$tD^(C;8ZrR7T%?$yQ|T=QQayTp> z6}wpQ4G0dmjlpy5%SHox3q416$5I;B24O-ebwYwJjQv;}zNM)gw2~hMxk8xXBt^Db(f$PyH zg>+@CimT0UObdQ*b4AVeDS|y}umD$ug@6bU8p?wLn>e1vMs2tM-8ZND*#u$Il}`<<-6q)Er_e^>l02W+zBebx? zT&tcJoQ~XHS}e;Q5}+U9eZuWQsNRkh>|FO};qgHCjmc)AHqa~`W+=L0U@Iy>S39_y zl-V(54!Q_@JqMpaD)6VappB?S4dmlxqaN%9N)2&#jF<sJB9$< zobsCeh>07?J^?r)KkqvaAYelsO5QFnvY0K#mW%xaJog*L`h+PaekP`00FB9j^ z0f`4AxpN;g4$pRjU+i=@ko^3(V=m|Gpa1}ujTL=LL>WIs57TMSsmW6hGwWjC%W)i#9gqr=J2B4c$cUiL zeah`@qgmrK;P9*?xAYRT-<=pH9Gf713v)Hs*@`#@_wi|ew>2k>wXn32i{y#2RM=$e#{I2oQnd|5FTSq281yC5>Z z99dQL6pRk>`7Gce5W-`S}?aM%WHNEbF$k2N&bf4&p*_F8t$VYJ4(;(?9487 z!NI%CK)8*p^IRl6i6X%gk|R*Fw}0wHgb;#g#95H~!lH93V0KyRf2s6SaPFMl0R{&; z^I<-GTq>1z256=r(s<&%yAZYW!lpV;YaDxFJgU^{4Z~ixGgxfo$CIhV`1t%FAt6n7 z`+^h|6>mpf&X=gHkLtibp zOo@r>pOJ>EN`Jab77Iau$U-dtZe+T;|8+e4I-h$)Wx6+Nd34Y%Woc_6Mu@*z~G!=b~2neR=!Nw$+!YS&__ zYyhLax13S=2a7;%F57=c&+sdPr*o7|^3%LIpN_#@!2v|X{ItoxI#IL4;p!6qnwolH zq>JtG0jki|4nGrAoy{ArDrY^UZqsiAgtA~9&1lN2m!o}`C%c`=fe>U!hC2i&q6SR} zj>7CC|B~S2PDkhqqn$D{90(1u%bm2zMqehHigWaNM1dS1Iq7%C zSnQxoI45|{mFN+*HluYP=$WZj45tfmt@Z0@oSPe}8}JDJN4C(S+(pOalaFcK{j#YiZ9UY+35w_r$x?9ZJ( zMoAr*8Oh8SfDdxdl+DH|3wP&LmT-*DFC-;%9x*5>T`YI>e~y$s^S#}e!nLhM7c`i; zCBk+3sxw^ogRfZF8TF9Y*T0D6g&#%K?C?JjY04nyPOl)D8W#<=ACiO!V}UfH&!Ki* zW_7PneeLrT?jj%}0{Qs(w6?YFrs#P4)z{kx4KG%zAv73I!k3^ShQ&Rf%nDF~5vn&= zE0jR<^YiD{)Wonk9DR&a$@@|r6})QBygub zA1kVUJE2+7l;BYbfMVU&>+w*kb0AqAu335vc)XDlrx)AwA<(w(-HOdealC}&tQ#sJ8a$t?kmfXBM z%-SgC=HbO$aFE#5x^pyQwqxaea`cxfwgy=;{fVw8V0UitFJp&M`6#S#nP_e)-Iy~c z`@Wf(lNA2j`sXII<@Y@MNP)x^(Fzr7$aq^fuK+iOi!`?2qcatqqX+4m3v)bH_Q0Zm z1dA7tAQzu_AJPF!4$L?@yJ^{VOvH0So`(Rob%hk_UmFRfsMsRoyN{SPc_eb*b{r42 zVEGY)7v{v`VmygMzIGi7J#ga`<05)(w{tT z#Ln_?yZxasmTk}={yJQ@5NNCcyOMks`;B^DTKIan7%(>D$~qBA(eS;FT;e?;d3qQ3ul-C1&8dh3VBifTh#k;O8`Zf%>DP>A7kJB7QBdV<; z|FitNa$HuN;Eq8ej&L#$it9o~C8HSUT z1BgeFb$2LK5$szonNP#GvA&M9-qLPn`nP*{Lug%Bq=S20NqH~)?Wevz0zNJ1j3fRd zkQ(riTEy)#k0kO*SLbhneOYA>qmF|F)2#ca(DMc&Tg^9y5@46nohqiw#Usb#g1^4T zh`l3hFt}AxA?aIgUPxm_|K4O*FyTe2Ua-$*N*#K5N31VjWbL0qZG&y{bt#;^&5Rvo z{>NB#knx`7umS53w%0rSTXabOnMa&>t*oLVYG6Rv)Z9GO7+?5Qs6F|Gb*tqZy!>*c zNPkfhM|w;tPmyQ!yF6%HKx8tCeK5B(ysf7mFXQW-{V{}mf9e7Z+F$y&)dI9kOU$gW z@{fz-h21M55ceRDzyuy^XNqD8k#%4~C-me6A0gGe{H_`kn#hE?(Q*s*p)U)U%FG<* zKM5|!eMf%Qyyx#Oq#&70(fwQhr-qt5G4)k0k^Et-$ezsR_mSbiT(FaL)K*mQZ_o&) z+ktx5dwB2(gxt=VDM3hHOXw(Iw-Rp86 zccmOgC5Jd%R?IN7s{R6nBz8oa=y1XgfT*h!4}PWsEf_ zcaphoj_y=)>C()fp)o1d=%gR;<(Yv2sJB# zb)_=)e!`KF%vCA{xm@|zec13&F0zSCX8$jx?lJCXDBjfU z`3IN`{UuE2ZV+^h2)0H5nw<3xJ4W4v9PLeAv%-m9JlZKqvB3R=v4StB6=*e?4FJK+ zJC7YBt8&sCLAk(N{GmxMoc}L;`ohL2%>gOB#t1tmh%ocB9<%GAJD(~=1@PRCE3%Xi zt*MA}Q9)551842TW~50*`0|evyBomE+hI=jXPEK%kvX&&NB(AHeS7wxd!QxuJNV3k zR8%T;jz!sBWP-QWF%z`iWnS7O87p+oBtUjDP79S%nZBLB%(7*KDFvF9r@XQ&+A|CY7{ zdc5S4fEtDxt++Lv}3{080x^@5?J^Qs(WFO+w9Tj?RuGR`opbA%&ip zXRJj==|@tFFBmlI^{xr`{m6$0tAq5dMb<7Gh^Xp|Cmugu5$E+wFUd|=N|q4?gPCF z{!?ZUgw=x=)wHjw$W})yn%YJ%V{|GmK7nTn9YG1vX;UvOOMglmo za_HPGq%Ek)q4E`9QwfK`-?8$>7JxYOElQKCqJEiYG3vzS5!$PvRpweI)wKWOvJ?+d z7Hz-(17vDaE=2yg>FBYYFw?^{i+KjHeBL`tu`vZCh#|8tB+;xua>ibsvOS?6$PyN6 z`mprq1~aI33@oh?beR)K6;iior-z=#6wTI`6WE?-6>JQ4QLjYH+?@X}+<1Bn^Ig`U z-va9G&f)Q~%p62GMNb|>XX?53vrjV0j!oXDxvyQW$c#ia+t&G*0Y<#B{4_z9T!zoL z_18Bz&`+iM_4~(IJkX}kHPpU1!0JxQF%9BzSeE}FLlkBq!_XTz4S?i~xufMKOcIho zAIgrsW4%KV<3jMwEdXEH96a^WMN0K4H@)+OAQsRaO0xa?y7uoV3h4f9@{lzy@VIqlx!XuU)PC#s4=lxznmO>QsFZ*YfA zbev^ERzwA3aU0gK)z`oEUxq1$p_{A8vfci6GJMKYx9EgNDUUG!NgzFg$K1gb8bWn{ zgu%66_?5aXT^59-Xl3Dm=A8Ky2z!vG40i_ODnT#lo#RW8xscfA%F8>NeJ)8<+IGL< z3P_^TUQ;alJvp#A^P7uca-tXzOh0OMOCuu_Ro1JFAU$Pnz6ML<*@W?z{ZuyUV`a|L z0zswjvBYL3$V$gWAW^k}az@+d?_`A4qMl-Ga+QG9@~1Q}$x-^*P$)XjRA%xbZsJPe zLsRcUB6>6LY$}$Q>!fTL`oFj`2A3^q-LY){tvvDfeHqK>vFk87f$B*B`)GdzWu8o7 z)3Y${l5mWz`8IuX^bP6rM2lV-n8_3;1*_$1vW^0Dp>6rP70*7W&?3C%?uh1Pgyc`y4uds#g&BQ2iVUlk?8;# z*{yR+9oGb{0J)8PwCYHIiCTp?5;}FbTiEadk1;7r$De$Iymq{o>{qvR-YzqF-rBtL z=UGFn?Bm;M4Ge$HCDu(@U603`Zk!y=?q@5^EpE%5Of5d}2qNW+Llm!el*}pC)yGfH zQ8{hszLzYk6z5m4|M6Z9;IuO3e0wjY!o9Vl^^))%>0b*qrwoy?wZltg!ca=L;6~)^ zjh)(fB=zsa1(cQUqz&)aIUx&fS`r%~?TP98;e!YGdgb!q4y=OfyRX6;FbeP1C!i5{ zgH$!iZkVgFMMWSRV%CewY}}rQ*u{7L8dx$p{DNEhKwhY0Dt+<@t+03jY-0!rKbKSO zwmS^B;|vreokje*N-?$^#egbUgF1H(i{Bw&iX5|Mk=a>GyxG5c}dq*H2Hec)zKW-@woP78Iit=T(Ns z`L{HJp9VT}uwQV;{BHrTbQ2W)S}ng+W1c;h)+HD%|M{TC*QA?C1sG`^QJ5^rk=#)Y zV@RBz2bLMP7W>A}wyGW30O!(OGevQRZ47b?3!_It@zXb>on$h)N!GO&+r<;M&dC1w zr68;Bu6{RZcy%3RS}9xzrUzzg@0=GR?T&5_Nw^{x69YY8S{ovf(j{NH+L_Clr%NYZ zy6`9aFn(rS-{Tv9dIbA$dV`>Kv{QNm1uEd5lIB5RBy5KH|DW@+M@HZ);5-LLFJ|p) zMChVbS{lx3&itnYoJ<6^8DvR3xh$}c2_BLIV9OQ`Z(cM;K_Xa3wKayf$Vh* z+q7BQ-#lcNy%7MaIkh>b+l5_Ho7q1*4~mJ|A6J4`S_L1JRXQpy;iy)OdcXb z2o1g@l2$nDP#*-WBRND*q3wx!)kAbBR!mk`-?2<~T2xb-K9aFajyP`&*+@=-cD6AX zXpymNsK&Ot1$DBK?A!K6?{9=i4E`ZSwKibYPdR9wTvQ@$q0lX3aVgIOisQDlEarp7 zXJ)ksgL{Y-+-JnB_2cDBa;Rj0dzt#jM*j+6tO~?ZB|aEd(9qU@LPTtiWDjccZ2(TDK5oMXO)seQsSzga;{b%+BYgmetx@o>C!bS@XH(m}|CRtyjkcm^0W@Y~^Uib?e z(v;84Fp~?UaF`)2CKW}3T#YnEYau!lY?LykAx);P@+)X4#LxLV>XzVYb$}xp5($6v z4-YQyKH(7gqc!!S8%S%#~Ue$_|0zB2&Al78(l_1|2qPc>d4u zE|_gyGLinY{fePT*xKO2c8=laI0YjqQ(k9>kb_kY5LZ5(B6h~Z9FE~)Ek@NZS?vu3 zzs%g;eZN2elkB~FMQ@D+)!cX&Qzor$Z@V2yE)CDX$_|nLCByZpFRx7UwqM&srDI^H z9(qJ(%`R_^&~Dd6HPS89(7sH)CF=uXA;7SAzJ;L*H(yz!mU9hiDZ_`04?`S;jW$^Q z57&-RNGZX=!5ZcrF&eID~inhZtxywNvyAjVPy@OIIu%V0yx zfO9`?xWKvGhZ;0>sHos_F)ud^ug4!|<`)=?((}zVHn_tM6U$v1o9ATZ`^S2F{WU&r zP}>UJZ&?LE!4t9Es;};|3v2%{Qh$E0U7N0(_o2Q)FpEJ_9Y@McY)Jr1-XNJR#T$qt z(<^K)W4$Ex9fv6`ux-asASDa09oy3L*s3T3)RqG|^(%_ZulU-HG%j);jgCK;(F2i7?!O zr~yA=6W~_|Jn((S1%Q2bZ%(Iw@ng*~{#jO)D6Obov|i3E9_=$%OL{=Z%-*e@UUSYPYxFgvz@<-?7ua2Ql)b-dpVwTt3iAi*g4} z-1xO_kg?(9A{tZCLuRpQ&dG@+NrWu zV^616Fg<&J9kvRnm`tf9Q}|03H;{gZYo;A95_l_V-K56uPfVh>f9TlA7F(q{chKfk z@te#sd#C#bUz&Co13i^$hgUmV!d8#e3brH~IGU`V=aFOTHB*>CGZf376GgpUdsbQ$w^pM~wXR}=z2JpPB@zVpMkiJpnC~m%eYS@%L>VQn26l zYfsTBhoXM@5VKyd$5Q>wvpYIbnN%zqU0P1{j>(oFv$Z?zki}5L>`11ZM*ZxN(!{Mh zSCrx5j{|nBC!~}xJm9wk##%W4T^^1=_uVb`JVz(YlNGbLD6^dtx+Sx+-!*T49C6O< zwB(q=`zM!Ur)T**FGO8iBchw25O#tz}&lTPpXf@j zR6HlAlbV_|MZBy&^TO#@!@kCBdbfUgqaD&M;=0t6H9=MLf(4a*@fhLO*!MMenun=I zo__mD05BK0RZ`uFu{ZNpBU-Z7+f@V)8GiBePw+(=U6k{!V%ejTr@@Ana_YJ=txqx2 zHrn(IIowg^F{dK>-!Men{=w^TlAKIs*Kl58-jgA^L=K(jur$xEn-N)2PjXI?U|zXhF2 zgb-;*^T_?#6I|45C1U8gPKLd*BXJOu(n%zJbFVv{)oO4>Dj3|^JhF zbzHP;)973zsN#{*&us{uQ`&a}RmKAIS3Ewe;s_3T=pL~@YY|P;8`->2d1Vdlpwb0~ zapa4Luo4w8I({_dk0eK>w#6c^3Qg=OR2$pZ#>HHwacxtb9PpzK7PJD=0pd*M8b8Vx zQ~7%`~z>Ix1Gz zT8EQ|IDYytpq!NON>9*+vj<|QA(MdzX2@0m~wv|NYsi>ck0JH*kOa~@Dz!R#k? z5mM0O2=;M6aJtUVuev>!|5_o1nn&4PoBLVkkr^mok3;RS26GWA0?uK|Q`(7}$*$~u zr!QZEZ>CpKrss8vfD3wdhr*4H6?=fM_}r9IsT#WL<|AwX<*y5N*vTcm%8m4 zo$P1WADtECQvcUeT|KX2R)L2Q%S;^z8{(gw!2IJt`VwagTi_(rq}YJhU)KrSOQi;-RyUyxvVAaN~m)~1d;)Ze7o*=wt!AWYldR9wgH3Dfw^Z&=W%cMTGOJo zJHH38M6W~GJ4-WK4y2?WE&tI&!gPP@5|8bp{~l!a(zOuI)FPU;0*mjKOjmmrQJ|k# z=X)z?2_5_s5DHlVn@nYr5dh8lHZ}AL#=^}ifrhoOYS!v3Ws|TpiKaAdm zE`9lqUP(dpMOgCw$yg2f5PfzW0MTFCG|(8lL(F_G_^cFS1@)ciJYw?kwBgA6N$(zZ zIcV068$A_cZSL?1;SY}kZ)Z<4zQfvrA2IQclDLNCvO*+0nLsn!i5%yOR`7-66pnI5 zuMyei(B5ySU(~*&hI`&?|{)M6UuU}~nJzcls|gtB39F2Y{2|jjzcfyF!Lnsj9y}P)NpBkwai`0Q8z`LH#{O#*=JtBzskI7o zN7^|H|8{msuw~sGTxT$U5@fob^-=>UV97rD4Ei~;bv^N(@%$0xhyAw$nuH2y^4QMu zY>ObGU_fAQK$0$`cE`Zy3KeFwSHp(w@qR(vS`yJ{}ny0^$SCjzMC2D~x)9C9D7l|AKMJw%PNA9}^Q@Q1qxtWFj!q zhZ9xMWJ&YtVy)>y^pwX1OsGf1)sUwl^_@c5bAq$E$SYJ^KnKcWl%z9t>DiyNbJx}n z)eDd*RcC6%21WaL!s=tU&VfrwPMQ7jaAML#sh*4}SPOjECB>V+xPz5hr(||mdj23ZPCeSc?9!udVGXMn2SmJ;C?Nn# z8Fu*hvErJWd>!E@^QjsOaQE4;W-iM}@&G^B1l%a;?|&Jw#l!z+yrKxa#}{V`g@q7F zh&n{2yq9Q}@Yx}R_*P5lyImCts=(Br9lVpZ`t~Fy%hMzOb{P9#%7`d}q)^5!w}(Ne z&dL*u>=0!yfLYWHeftD{s>|%aQ1h;GT+^#JlDJ`pQ2&T9Ys-+Dj zgd1%MZc6(6Aw)+^VODH-$OFT`NC-WBK{aFidu@D(j?ydMt5QTjmI3w_1+?GA+F2kx zBpfl$_x0Woi4sn&YZb2f=s`XZ@E6SB#`k%Ski~vaiSP4#*VZ89|0%Hla}4p{@jY+s zm0k26iV$9ZJ~BJ+*naj8#2EI3ob>+sR)B&L<_0sbUeQgyeemY?jJ=?8c?2K@a6!4Y zw1_;-fYn_K!^(*NarlgM$~8zw`NVdJq>mY3HB^Mxb(So&jfh*JKcA^+euHPiyOBDG zr||UX0bhGV;kP^4Nj2c*Hyt68$R6Fj1rLFw7xR62L%;j<=c-z`GTHcoRB!1BgW~V< zW4Y{LCJ%4M`4g^-8+a6u8W2*{j1N-)qV;GHGd@xT#*^KOgMU`Opa0(`KN?4w?f55O?At?y@UJ;>?!@k{fw4<*_fYT#?CTl6mA+dGQh0KmJy}A@{9Be=)uF3#n^9| z)x0p?F}{4-0ZdmpInrvyk$j#dOrIS5oTt$n+xJU8;5ZwnA@5Qwf^~Ls6$8(l;f*+O z!7nLOo(&TV*wfN@PTvUp9}li@hU^i+8{9NUhzt{r5SUdLG!s?v~6x>d;JYZVF0U7U8c97eo@iE7bl{&;GG# z%x@o9xU`>cjovjqCY|IHFeir&wBNp<*xCbKJK8z5A$<05nYv($N z)=$;C4-Em)b7y?ZtTkA_)?oebhDhl=_@$Z$j@t8>29U9nPht)}Hd<>BL0A3Mdk7LF zg~xHj4Q&;-FHiL@ueRc*u*I)KF-c8dqzwm}q`lR6w&!}x+@3=7!iOUKD zuM=jY+^j_YT^Gi76z6z5q2Z|VPq#z|zK34?$Bn9B|DDkXWW|MrplfSu`--8S13Ll0 zebtTnFAQ7VCvge(ESwm;HH*7$!c0C566m|!&Tj*K~a z;Rp;I;;J?ga}Bjb1+Q39Rg>oiEQq5$v7AnK#ja()di&6LW}j`TAuTlxfZ;wMbU+QE zenNILs!LgeHVoI@{Ugv14MuFP1_Bd{XA`?nB2Ec{fk;8Cbh6Gq82i^;fO=gQ z$VY;mKoAMdcvAayQ2b0vhT7r?!|Sc%rq_w`y;iVH zQwo!nT)DQei=mkT9TM+3e7z>vzMCkRRkp;qDVKrx$pezJc}999ETj4DgH>*7s3=LM zp(99zd>9$Fgt{~C%Pd{Zr?U8y5lrK03Azycp70O>vc4UDEaNe2%awbS<**!dCX3yj zttf;W{B#aMswJjNG?=$A>fP2g-MP~&vT&h4@XHZ!H+MV{!isZ0rVKAfwq2NpWC=-I zBu#w8>1D1_Ej+HIe!}@tE790*IRuUM++$lgqNWSyNJa6t?-eQDj>6@}UZN(UN` ze$r>UplFbcII$QbN#1e+?6p`u1B{o`|K}%qY;5dTWo6|v+3V*_d|VM9BAHZ~knfwe z(QgOE-z8GJtw~Hf3Nqkc9O~DE*&^bukl>rnYVr8o`0AtTidG__MW8(Uh0%0@kwr-S z(O%O0uE-wK1pN`&$BuaGR|Mj|q-M~DN78W0MIT={LHr$P%Sl|X`e0&SnSby{x@(QcT zdCePV)2m3myfA3twxhLzmQlpKa3{Y_o2v5NK<;W|? z=PU#|lfQGWpe!@kT5R}VGjoaK`3ZR1$_yS0dU1F8k+lp7N=n?wcB0GAjd6s&C9ju!X;FawRvHB$H)i>&*^GvSA|W0hM?f_PLO75q7%l{G23CE<}ep+p#el zCO2(`*i44weX~B$>%-@LH=u-<;^Lr$f|fq=?S@DYsE>H314^|&!muWLgD(D_{-FV> z+#+}5Uz(ekf*lLc>z$~qZ(A9H;~aC6_RbAFJybY7A)UWC>~(qu=f<<_tEy#_gKIE* zsvmq-;$oJVkfgOVwuT`K7FkVh!|}US0K5&`h5PCK+D~I5F)AzNHRk=#fAI|x@w(t+ ze<+;i!#@mqdU_*kYgjKYFKBR3aR~_#RaLad$H(}jBpW3!a`=DtJKYS7Gt0{@eJ|US zyk?gpv1kyxU7OKNxDNhoBaWVDB8QJpor}~P10$6T8nv6jSIeekQfDsDZCn@P%8agVgd(PF;~1I1+BQ?h)mAptOv}YPfSYD`uh-`%{RTT(KTp zr1Iw@H@^+NHWRmBWz_?>uoUyt!;Fp2a(V9D8FqY^TD`fduJ)(!m3nL;Gc%ShjVG|^ zS53P27{0yVxzSp=Kocs=KGoH&wdMSwo0+weDh(Fot(sJUIdJb2ziB9}Y>YW^J z{#&Htf2Qp4#XOtPxw5>_xkzHPxjtj#LfDEuzfz=ggv0fcAgh?& zgtF!c!bw5+YS(N1Qvc)W;yhjLj4W5{-s}&--SnWLqHgoIE6B>C86>~#=Q|z@$9(%I zs#-hy`$cV6>p!O5@v~d(Hd>4!Z|sdnYT$NT-yj>iaY9#;l+3D`04o_W ztKDP}QI(*n%>XHroNQ3^6g;sJZ*~pF8#IF>b!JaDZbD7pP>BM-tOJaQLOBobw;6lb zuv4jd5+#x#tbc+QoU5i8I8tX2pKV**0QYQm9{Nv+`gCui=wq(h?17XYLjV8W-Y+-T zYIS5+h;|Cx;`K`wq8BgoLb*=d1WFbl3^Ni&N%vfywzoid`Vy)g#e@cMjkHM=?Flq! zY-8FfF;aAOiu@1_o(8BnxP)+8L#R$sDygW1bSnQy_4NboX3VMIkVD8oQe(bff#L8) z#f4`Zz@N-Thi?3?YAu{_m8S7}z^0Io>2avn0D(Rz-M6kHwl*N+&925usiAVli@&Mi zdEw%~`*~7>BdgL*8%~K|D~`yj@>mc(OUSIVkNIMCC{~dirRFqq9V6@zME+p9B8*g7>R3Uc8U|LhMW)nzp2V4 z192Sd-_r4a0GthUnl+?ApE=EI*9Zw45uPSj1f|pz8u)JQa5bv_B#f)up5PbHAR)@*J|=faK^z6N#E}kML%DOSHY)m|uS9V^`qTzu57>YAwCwehz+y zSF6Ev%y2y5U>HH=J2Xn3dg+CQjm>5?K}|!FN->ul3=C|3d70AKQHFwof@pBrL$Km* z{_k>(>G&wqn-B2ke>lf$vOxshL`jpb$LUxUZ){LvS+e&V2*#2EDV;<0{rjfptKXBv zcxC&t9{fLXg(%gEi!rR%tZW6ZT2oxPCx?>x1lk79Z8<5)dCu)Bpwl+XF)>M-q@Jv~W=%YM786UpzK z%hXr8RK8nEQTBPz5<72{%oc?3iZD1gcjsUh&2IJS@>k2dEcDx}3;a6?%+W5{$t#Vx zB*os?nf6I!Seqw3>PaG8$l9ILnJqbD^%o?YzYlTl_Q{EXlSmSS1m zfVX#ROTQCQfq#sY$?(AG=&Xl_mzVQ5KL!TI{rQ^eJ8JA{Pho5N(&FML%8nZQMsI%u zSafFPJHrv34emg{9@M@jgIbf3$sD5hKeud#C0C>EZDic$q|tF*x-MU`{_3Lv7NbK` zUjch!P{a&kqu*A|0#l)%?v`Nkv2wx2w#JAA3IhI1stO1_HoTw=Nr=o#%052wnb{53 zt?taWuY2b6YE5#peQHqFs3{o3RYPh$f4Q&Th2ZBC1E_k$9h;_%*XFP@$BDd|IgP%b z&4m#x0Y^(iZGkT?gStOq<*^j;2raa70O8=Uy3O@l1^^mo9s#mHYPu09=@7&(K7}Oe zsc+pJWD%~Md&Ei=gnSgdmUka_OtC!3%5jfZzg$E8Q`ggJ|w z7_9QT5##f1^sez?zYUrg=nXPtg{(Dx?9JN|i+;U>3CSCTW9)brbjV}*3i=_LJVNvh z6tJ};LJ!Z4fL;^jNgck7?50uemeEAjn|C95udWuB?XV6mmf%ssCm(1+_Eu*hoa;f7 zc?RHa8?bFEO;wqYhspQ1Lb(izs3|Y zWO}M_Oj~d3NiSI*3>&W%uccpH1=)j%B{;g%fTn(FuMq~>o+IT(+I_c{-YcWg>NFSh z^q2)g4Ilmcdgg_j+X2W#2Hx5vJ& zffjsitI#v%3x!7`q+`6!>?YunCHCoDIXx%||HjU_n^M4_AW-+q&4`1MIKWgU$Lzv_ z&s|na3nwO{UbuV~XT%BzXY%(?zPB19?l3Vh>MJ+GM5kb)0MkZ8%of~_NW;JG_OJnk z*9mx2B6&l~TI*?dUn*Jc^$6ZE264f%db8m%*qFlpa@Rx@yP`n+b-&A)Y3o9`LqEMP zZIBZOQRMR_lnMk|2}Fh*p91|pe_uW-)ECxLJ6NQE;Q9^@7Ql{^Ew)k!T}r<(H4hs6 zS2HNMtw7Z21L3INZk*ZL*4|NJoCf0o^SlU-MbJmR26AAvMN$1W85-Ps+AeKe992X| z9n}JXu}{D-^MXa&{Tpw#6${>;6jtx)s+OAz2 zSCvkBe!Qg9mqXN-yuNtuilz40To0O)+w0If_z@#xX3Nrg&ur66u_CzNse9OpONJ(2 z+b*6FDuWWX5{Hk_gRo4eOf#3mpNW{vo_?yjwHj$4Z7S;yV@t24nYjn)YB6kMm8I}8 zoS$gqm+QfDPt4~ZUf7e)iH`qdG)h`BEzNmIAY0-7jJDtNX%K0S+=n-=@71d#ww9fG>vr-$Wf3&c;!JuRanEfM(*3B

l(c@eEs3!J3KYK3a;3g4;A|WJ4m>(y^ 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

V6r&4%Q|=Wqut0CC=#qVm-$a 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%0ApYvwFGWk~gSL2Ou=Mhg|)E(fin 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%0D-S2Hxf2*K+9zLSV#bY&fF>chA>gE{iV&RA&@ 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 FO#lNB8!!L> literal 0 HcmV?d00001 From 982bf88934c9f9cfa926fcb8e1da043f0b4f80ee Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:03:15 +0000 Subject: [PATCH 027/355] Automatic changelog for PR #4884 [ci skip] --- html/changelogs/AutoChangeLog-pr-4884.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4884.yml diff --git a/html/changelogs/AutoChangeLog-pr-4884.yml b/html/changelogs/AutoChangeLog-pr-4884.yml new file mode 100644 index 000000000000..78950c4b43e9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4884.yml @@ -0,0 +1,4 @@ +author: "Releasethesea" +delete-after: True +changes: + - rscadd: "Adds Colonial Space Grunts to rec vend aswell as several pens and Dice for playing the game." \ No newline at end of file From c5e14071f97345a7770df53fa205de30bb19fd9d Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Mon, 13 Nov 2023 00:44:11 -0800 Subject: [PATCH 028/355] Fixes guns occasionally ceasing to work (#4882) # About the pull request https://github.com/tgstation/TerraGov-Marine-Corps/pull/10691 Credit to BraveMole for the original PR and thegamer01 for letting me know about the PR, I made some changes to make it work better # Changelog :cl: BraveMole, Zonespace fix: Guns should no longer very rarely jam mid-burst. /:cl: --- code/datums/components/autofire/autofire.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/datums/components/autofire/autofire.dm b/code/datums/components/autofire/autofire.dm index d052127effc3..455fb70a9fa1 100644 --- a/code/datums/components/autofire/autofire.dm +++ b/code/datums/components/autofire/autofire.dm @@ -82,6 +82,8 @@ /datum/component/automatedfire/autofire/proc/initiate_shot() SIGNAL_HANDLER if(shooting)//if we are already shooting, it means the shooter is still on cooldown + if(bursting && (world.time > (next_fire + (burstfire_shot_delay * burst_shots_to_fire)))) + hard_reset() return shooting = TRUE process_shot() From 8fd39fa0c585f4186c4358fc4521a41be66320c5 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:17:13 +0000 Subject: [PATCH 029/355] Automatic changelog for PR #4882 [ci skip] --- html/changelogs/AutoChangeLog-pr-4882.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4882.yml diff --git a/html/changelogs/AutoChangeLog-pr-4882.yml b/html/changelogs/AutoChangeLog-pr-4882.yml new file mode 100644 index 000000000000..c7fb30820171 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4882.yml @@ -0,0 +1,4 @@ +author: "BraveMole, Zonespace" +delete-after: True +changes: + - bugfix: "Guns should no longer very rarely jam mid-burst." \ No newline at end of file From 9473bd7a6abc916c4713f4d2c5a8a89adb7ef247 Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 13 Nov 2023 09:44:20 +0100 Subject: [PATCH 030/355] Hotfix for missing Traitbound Elements Handlers (#4879) # About the pull request AKA "Why are my leadership action buttons missing?" I was a bit too confident in #4869 copying over /tg/ backend and didn't question that Segrain's awesome CM-brewed traitbound elements bits were missing from their code. Oops. # Explain why it's good for the game Restores functionality for eg. silenced guns and leadership action buttons # Testing Photographs and Procedure Tested the actions are back # Changelog :cl: fix: Fixed an issue in traits backend update causing among others leadership action buttons to be missing. /:cl: --- code/__DEFINES/traits.dm | 25 +++++++++++++++---- .../character_traits/biology_traits.dm | 8 +++--- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index b2704fc66862..bbf8fda99f61 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -10,6 +10,9 @@ _L = target._status_traits; \ _L[trait] = list(source); \ SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ + if(trait in GLOB.traits_with_elements){ \ + target.AddElement(GLOB.traits_with_elements[trait]); \ + } \ } else { \ _L = target._status_traits; \ if (_L[trait]) { \ @@ -17,6 +20,9 @@ } else { \ _L[trait] = list(source); \ SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ + if(trait in GLOB.traits_with_elements){ \ + target.AddElement(GLOB.traits_with_elements[trait]); \ + } \ } \ } \ } while (0) @@ -38,6 +44,9 @@ if (!length(_L[trait])) { \ _L -= trait; \ SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ + if(trait in GLOB.traits_with_elements) { \ + target.RemoveElement(GLOB.traits_with_elements[trait]); \ + } \ }; \ if (!length(_L)) { \ target._status_traits = null \ @@ -62,6 +71,9 @@ if (!length(_traits_list[trait])) { \ _traits_list -= trait; \ SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ + if(trait in GLOB.traits_with_elements) { \ + target.RemoveElement(GLOB.traits_with_elements[trait]); \ + } \ }; \ if (!length(_traits_list)) { \ target._status_traits = null \ @@ -78,8 +90,11 @@ if (!length(_L[_T])) { \ _L -= _T; \ SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T), _T); \ + if(trait in GLOB.traits_with_elements) { \ + target.RemoveElement(GLOB.traits_with_elements[trait]); \ }; \ };\ + };\ if (!length(_L)) { \ target._status_traits = null\ };\ @@ -101,8 +116,11 @@ if (!length(_L[_T])) { \ _L -= _T; \ SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T)); \ + if(_T in GLOB.traits_with_elements) { \ + target.RemoveElement(GLOB.traits_with_elements[_T]); \ }; \ };\ + };\ if (!length(_L)) { \ target._status_traits = null\ };\ @@ -124,9 +142,6 @@ /// Example trait // #define TRAIT_X "t_x" -/// cannot be removed without admin intervention -#define ROUNDSTART_TRAIT "roundstart" - //-- mob traits -- /// Apply this to make a mob not dense, and remove it when you want it to no longer make them undense, other sorces of undesity will still apply. Always define a unique source when adding a new instance of this! #define TRAIT_UNDENSE "undense" @@ -355,6 +370,8 @@ GLOBAL_LIST(trait_name_map) /// Example trait source // #define TRAIT_SOURCE_Y "t_s_y" #define TRAIT_SOURCE_INHERENT "t_s_inherent" +/// cannot be removed without admin intervention +#define ROUNDSTART_TRAIT "roundstart" //-- mob traits -- ///Status trait coming from lying down through update_canmove() #define LYING_TRAIT "lying" @@ -364,8 +381,6 @@ GLOBAL_LIST(trait_name_map) #define TRAIT_SOURCE_HIVE "t_s_hive" ///Status trait coming from being buckled. #define TRAIT_SOURCE_BUCKLE "t_s_buckle" -///Status trait coming from roundstart quirks (that don't exist yet). Unremovable by REMOVE_TRAIT -#define TRAIT_SOURCE_QUIRK "t_s_quirk" ///Status trait coming from being assigned as [acting] squad leader. #define TRAIT_SOURCE_SQUAD_LEADER "t_s_squad_leader" ///Status trait coming from their job diff --git a/code/modules/character_traits/biology_traits.dm b/code/modules/character_traits/biology_traits.dm index a269aabede9f..c90ea7b8751e 100644 --- a/code/modules/character_traits/biology_traits.dm +++ b/code/modules/character_traits/biology_traits.dm @@ -58,13 +58,13 @@ to_chat(target, SPAN_WARNING("Your species is too sophisticated for you be able to recieve the lisping trait.")) return - ADD_TRAIT(target, TRAIT_LISPING, TRAIT_SOURCE_QUIRK) + ADD_TRAIT(target, TRAIT_LISPING, ROUNDSTART_TRAIT) target.speech_problem_flag = TRUE ..() /datum/character_trait/biology/lisp/unapply_trait(mob/living/carbon/human/target) - REMOVE_TRAIT(target, TRAIT_LISPING, TRAIT_SOURCE_QUIRK) + REMOVE_TRAIT(target, TRAIT_LISPING, ROUNDSTART_TRAIT) target.speech_problem_flag = FALSE ..() @@ -127,9 +127,9 @@ to_chat(target, SPAN_WARNING("Only riflemen can have the Hardcore trait.")) return - ADD_TRAIT(target, TRAIT_HARDCORE, TRAIT_SOURCE_QUIRK) + ADD_TRAIT(target, TRAIT_HARDCORE, ROUNDSTART_TRAIT) ..() /datum/character_trait/biology/hardcore/unapply_trait(mob/living/carbon/human/target) - REMOVE_TRAIT(target, TRAIT_HARDCORE, TRAIT_SOURCE_QUIRK) + REMOVE_TRAIT(target, TRAIT_HARDCORE, ROUNDSTART_TRAIT) ..() From 59bf5ad25167a25ed615dd7de2d682cdb89c488c Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:31:24 +0000 Subject: [PATCH 031/355] Automatic changelog for PR #4879 [ci skip] --- html/changelogs/AutoChangeLog-pr-4879.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4879.yml diff --git a/html/changelogs/AutoChangeLog-pr-4879.yml b/html/changelogs/AutoChangeLog-pr-4879.yml new file mode 100644 index 000000000000..cede9d3da3ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4879.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed an issue in traits backend update causing among others leadership action buttons to be missing." \ No newline at end of file From af3f182c291668188ae440738bbd3135f37a6388 Mon Sep 17 00:00:00 2001 From: Ediblebomb <95509996+Ediblebomb@users.noreply.github.com> Date: Mon, 13 Nov 2023 02:44:36 -0600 Subject: [PATCH 032/355] Changes a confusing healthscanner reading (#4910) # About the pull request Changes "Subject is brain-dead." to "Subject has taken extreme amounts of brain damage." when scanning somebody with 100 brain damage. # Explain why it's good for the game Defibs also say ![why I changed it](https://github.com/cmss13-devs/cmss13/assets/95509996/0861867f-8574-4c8e-9f2a-621d21f2be76) when trying to revive a perma corpse. This change should help prevent confusion about whether or not somebody is actually perma. # Testing Photographs and Procedure

Screenshots & Videos ![brain damage](https://github.com/cmss13-devs/cmss13/assets/95509996/92a67848-6e6b-44a6-ac69-630d8922b7a0)
# Changelog :cl: Ediblebomb qol: Changed "Subject is brain-dead." to "Subject has taken extreme amounts of brain damage." when scanning somebody with 100 brain damage. /:cl: --- code/modules/mob/living/living_healthscan.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/living_healthscan.dm b/code/modules/mob/living/living_healthscan.dm index 6875aa934fd2..f3355157a40f 100644 --- a/code/modules/mob/living/living_healthscan.dm +++ b/code/modules/mob/living/living_healthscan.dm @@ -441,7 +441,7 @@ GLOBAL_LIST_INIT(known_implants, subtypesof(/obj/item/implant)) data["ssd"] = null //clear the data in case we have an old input from a previous scan if(target_mob.getBrainLoss() >= 100 || !target_mob.has_brain()) - data["ssd"] = "Subject is brain-dead." + data["ssd"] = "Subject has taken extreme amounts of brain damage." else if(target_mob.has_brain() && target_mob.stat != DEAD && ishuman(target_mob)) if(!target_mob.key) data["ssd"] = "No soul detected." // they ghosted @@ -586,7 +586,7 @@ GLOBAL_LIST_INIT(known_implants, subtypesof(/obj/item/implant)) if(!D.hidden[SCANNER]) dat += "\t *Warning: [D.form] Detected\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]\n" if (src.getBrainLoss() >= 100 || !src.has_brain()) - dat += "\t *Subject is brain dead.\n" + dat += "\t *Subject has taken extreme amounts of brain damage.\n" if(src.has_brain() && src.stat != DEAD && ishuman(src)) if(!src.key) From e91e1a71362ccfe69df18030cddbac3ea570808c Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:45:05 +0000 Subject: [PATCH 033/355] Automatic changelog for PR #4910 [ci skip] --- html/changelogs/AutoChangeLog-pr-4910.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4910.yml diff --git a/html/changelogs/AutoChangeLog-pr-4910.yml b/html/changelogs/AutoChangeLog-pr-4910.yml new file mode 100644 index 000000000000..dbc366c56510 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4910.yml @@ -0,0 +1,4 @@ +author: "Ediblebomb" +delete-after: True +changes: + - qol: "Changed \"Subject is brain-dead.\" to \"Subject has taken extreme amounts of brain damage.\" when scanning somebody with 100 brain damage." \ No newline at end of file From 45d5fb6d63df07eaa9af8bb25cb12b1b09f608ba Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Mon, 13 Nov 2023 08:45:21 +0000 Subject: [PATCH 034/355] Refactors a few vars on /mob/living/carbon/xenomorph (#4899) # About the pull request - Renames `wound_icon_carrier` & `backpack_icon_carrier` to `wound_icon_holder` and `backpack_icon_holder` respectively. We have a caste called Carrier & disabiguation good. - Deletes unused defender related vars - Replaces `var/steelcrest` on all xenos with a check for `mutation_type == DEFENDER_STEELCREST` in defender code. - Corrects small style inconsistency in `/mob/verb/debug_xeno_mind()` No gameplay impact. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Starts refactoring some vars on xenomorph class /:cl: --- code/game/objects/items/storage/backpack.dm | 6 +-- .../mob/living/carbon/xenomorph/Xenomorph.dm | 38 +++++++------------ .../abilities/defender/defender_powers.dm | 12 +++--- .../living/carbon/xenomorph/castes/Carrier.dm | 8 ++++ .../mutators/strains/carrier/eggsac.dm | 4 +- .../mutators/strains/defender/steel_crest.dm | 1 - .../living/carbon/xenomorph/update_icons.dm | 24 ++++++------ .../mob/living/simple_animal/hostile/alien.dm | 24 ++++++------ 8 files changed, 58 insertions(+), 59 deletions(-) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 4b4252bac4b9..8bc717a0a6aa 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -72,9 +72,9 @@ return FALSE // Create their vis object if needed - if(!xeno.backpack_icon_carrier) - xeno.backpack_icon_carrier = new(null, xeno) - xeno.vis_contents += xeno.backpack_icon_carrier + if(!xeno.backpack_icon_holder) + xeno.backpack_icon_holder = new(null, xeno) + xeno.vis_contents += xeno.backpack_icon_holder target_mob.put_in_back(src) return FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 068e99ecbf4f..51cab73e80e6 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -21,7 +21,8 @@ if(mind in SSticker.mode.xenomorphs) to_chat(src, SPAN_DEBUG("[src] mind is in the xenomorph list. Mind key is [mind.key].")) to_chat(src, SPAN_DEBUG("Current mob is: [mind.current]. Original mob is: [mind.original].")) - else to_chat(src, SPAN_DEBUG("This xenomorph is not in the xenomorph list.")) + else + to_chat(src, SPAN_DEBUG("This xenomorph is not in the xenomorph list.")) #endif #undef DEBUG_XENO @@ -279,7 +280,6 @@ /// 0/FALSE - upright, 1/TRUE - all fours var/agility = FALSE var/ripping_limb = FALSE - var/steelcrest = FALSE /// The world.time at which we will regurgitate our currently-vored victim var/devour_timer = 0 /// For drones/hivelords. Extends the maximum build range they have @@ -337,34 +337,23 @@ //Burrower Vars var/used_tremor = 0 - // Defender vars - var/used_headbutt = 0 - var/used_fortify = 0 // Burrowers var/used_burrow = 0 var/used_tunnel = 0 - //Carrier vars - var/threw_a_hugger = 0 - var/huggers_cur = 0 - var/eggs_cur = 0 - var/huggers_max = 0 - var/eggs_max = 0 - var/laid_egg = 0 - //Taken from update_icon for all xeno's var/list/overlays_standing[X_TOTAL_LAYERS] - var/atom/movable/vis_obj/xeno_wounds/wound_icon_carrier - var/atom/movable/vis_obj/xeno_pack/backpack_icon_carrier + var/atom/movable/vis_obj/xeno_wounds/wound_icon_holder + var/atom/movable/vis_obj/xeno_pack/backpack_icon_holder /mob/living/carbon/xenomorph/Initialize(mapload, mob/living/carbon/xenomorph/oldXeno, h_number) var/area/A = get_area(src) if(A && A.statistic_exempt) statistic_exempt = TRUE - wound_icon_carrier = new(null, src) - vis_contents += wound_icon_carrier + wound_icon_holder = new(null, src) + vis_contents += wound_icon_holder if(oldXeno) set_movement_intent(oldXeno.m_intent) @@ -718,11 +707,11 @@ built_structures = null - vis_contents -= wound_icon_carrier - QDEL_NULL(wound_icon_carrier) - if(backpack_icon_carrier) - vis_contents -= backpack_icon_carrier - QDEL_NULL(backpack_icon_carrier) + vis_contents -= wound_icon_holder + QDEL_NULL(wound_icon_holder) + if(backpack_icon_holder) + vis_contents -= backpack_icon_holder + QDEL_NULL(backpack_icon_holder) QDEL_NULL(iff_tag) @@ -945,8 +934,9 @@ if(is_zoomed) zoom_out() if(iscarrier(src)) - huggers_max = caste.huggers_max - eggs_max = caste.eggs_max + var/mob/living/carbon/xenomorph/carrier/carrier = src + carrier.huggers_max = caste.huggers_max + carrier.eggs_max = caste.eggs_max need_weeds = mutators.need_weeds diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm index 67e16d4b70de..bf773645e491 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm @@ -51,7 +51,7 @@ if(!check_and_use_plasma_owner()) return - if(fendy.fortify && !fendy.steelcrest) + if(fendy.fortify && !fendy.mutation_type == DEFENDER_STEELCREST) to_chat(fendy, SPAN_XENOWARNING("You cannot use headbutt while fortified.")) return @@ -78,7 +78,9 @@ SPAN_XENOWARNING("You ram [carbone] with your armored crest!")) if(carbone.stat != DEAD && (!(carbone.status_flags & XENO_HOST) || !HAS_TRAIT(carbone, TRAIT_NESTED)) ) - var/h_damage = 30 - (fendy.crest_defense * 10) + (fendy.steelcrest * 7.5) //30 if crest up, 20 if down, plus 7.5 + var/h_damage = 30 - (fendy.crest_defense * 10) + if(fendy.mutation_type == DEFENDER_STEELCREST) + h_damage += 7.5 carbone.apply_armoured_damage(get_xeno_damage_slash(carbone, h_damage), ARMOR_MELEE, BRUTE, "chest", 5) var/facing = get_dir(fendy, carbone) @@ -159,7 +161,7 @@ if (!istype(xeno)) return - if(xeno.crest_defense && xeno.steelcrest) + if(xeno.crest_defense && xeno.mutation_type == DEFENDER_STEELCREST) to_chat(src, SPAN_XENOWARNING("You cannot fortify while your crest is already down!")) return @@ -207,7 +209,7 @@ if(fortify_state) to_chat(X, SPAN_XENOWARNING("You tuck yourself into a defensive stance.")) - if(X.steelcrest) + if(X.mutation_type == DEFENDER_STEELCREST) X.armor_deflection_buff += 10 X.armor_explosive_buff += 60 X.ability_speed_modifier += 3 @@ -228,7 +230,7 @@ to_chat(X, SPAN_XENOWARNING("You resume your normal stance.")) X.frozen = FALSE X.anchored = FALSE - if(X.steelcrest) + if(X.mutation_type == DEFENDER_STEELCREST) X.armor_deflection_buff -= 10 X.armor_explosive_buff -= 60 X.ability_speed_modifier -= 3 diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm b/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm index 6b847a6a4fec..c13555cba12c 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Carrier.dm @@ -84,6 +84,14 @@ var/mutable_appearance/hugger_overlays_icon var/mutable_appearance/eggsac_overlays_icon + //Carrier specific vars + var/threw_a_hugger = 0 + var/huggers_cur = 0 + var/eggs_cur = 0 + var/huggers_max = 0 + var/eggs_max = 0 + var/laid_egg = 0 + /mob/living/carbon/xenomorph/carrier/update_icons() . = ..() if (mutation_type == CARRIER_NORMAL) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm index 18d28675557e..524571fc0dfd 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/carrier/eggsac.dm @@ -58,7 +58,7 @@ /datum/action/xeno_action/active_toggle/generate_egg/should_use_plasma() . = FALSE - var/mob/living/carbon/xenomorph/xeno = owner + var/mob/living/carbon/xenomorph/carrier/xeno = owner if(!xeno) return if(xeno.eggs_cur < xeno.eggs_max) @@ -67,7 +67,7 @@ /datum/action/xeno_action/active_toggle/generate_egg/life_tick() . = ..() if(.) - var/mob/living/carbon/xenomorph/xeno = owner + var/mob/living/carbon/xenomorph/carrier/xeno = owner if(!xeno) return if(xeno.eggs_cur < xeno.eggs_max) diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/defender/steel_crest.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/defender/steel_crest.dm index 630477bd053e..957e7f1b8926 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/defender/steel_crest.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/defender/steel_crest.dm @@ -23,7 +23,6 @@ defender.mutation_type = DEFENDER_STEELCREST defender.mutation_icon_state = DEFENDER_STEELCREST defender.damage_modifier -= XENO_DAMAGE_MOD_VERY_SMALL - defender.steelcrest = TRUE if(defender.fortify) defender.ability_speed_modifier += 2.5 mutator_update_actions(defender) diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm index 30e78a5fed94..2eb86ac0470e 100644 --- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm +++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm @@ -131,12 +131,12 @@ apply_overlay(X_L_HAND_LAYER) /mob/living/carbon/xenomorph/update_inv_back() - if(!backpack_icon_carrier) + if(!backpack_icon_holder) return // Xenos will only have a vis_obj if they've been equipped with a pack before var/obj/item/storage/backpack/backpack = back if(!backpack?.xeno_icon_state) - backpack_icon_carrier.icon_state = "none" + backpack_icon_holder.icon_state = "none" return var/state_modifier = "" @@ -150,11 +150,11 @@ else if(handle_special_state()) state_modifier = handle_special_backpack_states() - backpack_icon_carrier.icon_state = backpack.xeno_icon_state + state_modifier + backpack_icon_holder.icon_state = backpack.xeno_icon_state + state_modifier - backpack_icon_carrier.layer = -X_BACK_LAYER + backpack_icon_holder.layer = -X_BACK_LAYER if(dir == NORTH && (back.flags_item & ITEM_OVERRIDE_NORTHFACE)) - backpack_icon_carrier.layer = -X_BACK_FRONT_LAYER + backpack_icon_holder.layer = -X_BACK_FRONT_LAYER /mob/living/carbon/xenomorph/proc/update_inv_resource() remove_overlay(X_RESOURCE_LAYER) @@ -269,24 +269,24 @@ // Shamelessly inspired from the equivalent proc on TGCM /mob/living/carbon/xenomorph/proc/update_wounds() - if(!wound_icon_carrier) + if(!wound_icon_holder) return var/health_threshold - wound_icon_carrier.layer = layer + 0.01 + wound_icon_holder.layer = layer + 0.01 health_threshold = max(CEILING((health * 4) / (maxHealth), 1), 0) //From 0 to 4, in 25% chunks if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) - wound_icon_carrier.icon_state = "none" + wound_icon_holder.icon_state = "none" else if(lying) if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) - wound_icon_carrier.icon_state = "[caste.caste_type]_rest_[health_threshold]" + wound_icon_holder.icon_state = "[caste.caste_type]_rest_[health_threshold]" else - wound_icon_carrier.icon_state = "[caste.caste_type]_downed_[health_threshold]" + wound_icon_holder.icon_state = "[caste.caste_type]_downed_[health_threshold]" else if(!handle_special_state()) - wound_icon_carrier.icon_state = "[caste.caste_type]_walk_[health_threshold]" + wound_icon_holder.icon_state = "[caste.caste_type]_walk_[health_threshold]" else - wound_icon_carrier.icon_state = handle_special_wound_states(health_threshold) + wound_icon_holder.icon_state = handle_special_wound_states(health_threshold) ///Used to display the xeno wounds/backpacks without rapidly switching overlays diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index ffe85017bb28..5e56b0204777 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -40,7 +40,7 @@ pixel_x = -12 old_x = -12 - var/atom/movable/vis_obj/xeno_wounds/wound_icon_carrier + var/atom/movable/vis_obj/xeno_wounds/wound_icon_holder /mob/living/simple_animal/hostile/alien/Initialize() maxHealth = health @@ -52,8 +52,8 @@ var/datum/hive_status/hive = GLOB.hive_datum[hivenumber] color = hive.color - wound_icon_carrier = new(null, src) - vis_contents += wound_icon_carrier + wound_icon_holder = new(null, src) + vis_contents += wound_icon_holder /mob/living/simple_animal/hostile/alien/proc/generate_name() change_real_name(src, "[caste_name] (BD-[rand(1, 999)])") @@ -105,22 +105,22 @@ update_wounds() /mob/living/simple_animal/hostile/alien/proc/update_wounds() - if(!wound_icon_carrier) + if(!wound_icon_holder) return - wound_icon_carrier.layer = layer + 0.01 - wound_icon_carrier.dir = dir + wound_icon_holder.layer = layer + 0.01 + wound_icon_holder.dir = dir var/health_threshold = max(CEILING((health * 4) / (maxHealth), 1), 0) //From 0 to 4, in 25% chunks if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) - wound_icon_carrier.icon_state = "none" + wound_icon_holder.icon_state = "none" else if(lying) if((resting || sleeping) && (!knocked_down && !knocked_out && health > 0)) - wound_icon_carrier.icon_state = "[caste_name]_rest_[health_threshold]" + wound_icon_holder.icon_state = "[caste_name]_rest_[health_threshold]" else - wound_icon_carrier.icon_state = "[caste_name]_downed_[health_threshold]" + wound_icon_holder.icon_state = "[caste_name]_downed_[health_threshold]" else - wound_icon_carrier.icon_state = "[caste_name]_walk_[health_threshold]" + wound_icon_holder.icon_state = "[caste_name]_walk_[health_threshold]" /mob/living/simple_animal/hostile/alien/bullet_act(obj/projectile/P) . = ..() @@ -148,8 +148,8 @@ animate(src, 5 SECONDS, alpha = 0, easing = CUBIC_EASING) /mob/living/simple_animal/hostile/alien/Destroy() - vis_contents -= wound_icon_carrier - QDEL_NULL(wound_icon_carrier) + vis_contents -= wound_icon_holder + QDEL_NULL(wound_icon_holder) return ..() /mob/living/simple_animal/hostile/alien/ravager From b739ba8f98abe7206c5779d13a6e6596a5c0b758 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:00:49 +0000 Subject: [PATCH 035/355] Automatic changelog for PR #4899 [ci skip] --- html/changelogs/AutoChangeLog-pr-4899.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4899.yml diff --git a/html/changelogs/AutoChangeLog-pr-4899.yml b/html/changelogs/AutoChangeLog-pr-4899.yml new file mode 100644 index 000000000000..3fbcc6ec0be8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4899.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Starts refactoring some vars on xenomorph class" \ No newline at end of file From 56893fe33f3988bc45e3ea0b2447878abc0a6dc7 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Mon, 13 Nov 2023 08:46:09 +0000 Subject: [PATCH 036/355] Adds observer UI button for toggling HUDs (#4891) # About the pull request Adds button to ghost UI for toggling HUDs # Explain why it's good for the game Icon based UX is good. # Testing Photographs and Procedure
Screenshots & Videos Jerryrigged codersprite ![dreammaker_2023-11-10_21-20-48](https://github.com/cmss13-devs/cmss13/assets/25027759/acc984ef-b3be-4dc2-b2b8-9c84d4e0a11c)
# Changelog :cl: add: Toggle HUD button to ghost UI /:cl: --- code/_onclick/hud/ghost.dm | 11 +++++++++++ icons/mob/screen_ghost.dmi | Bin 32136 -> 33501 bytes 2 files changed, 11 insertions(+) diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm index a6754747a019..a99129d09bcd 100644 --- a/code/_onclick/hud/ghost.dm +++ b/code/_onclick/hud/ghost.dm @@ -48,6 +48,14 @@ var/mob/dead/observer/G = usr G.reenter_corpse() +/atom/movable/screen/ghost/toggle_huds + name = "Toggle HUDs" + icon_state = "ghost_hud_toggle" + +/atom/movable/screen/ghost/toggle_huds/Click() + var/client/client = usr.client + client.toggle_ghost_hud() + /datum/hud/ghost/New(mob/owner, ui_style='icons/mob/hud/human_white.dmi', ui_color, ui_alpha = 230) . = ..() var/atom/movable/screen/using @@ -68,6 +76,9 @@ using.screen_loc = ui_ghost_slot4 static_inventory += using + using = new /atom/movable/screen/ghost/toggle_huds() + using.screen_loc = ui_ghost_slot5 + static_inventory += using /datum/hud/ghost/show_hud(version = 0, mob/viewmob) // don't show this HUD if observing; show the HUD of the observee diff --git a/icons/mob/screen_ghost.dmi b/icons/mob/screen_ghost.dmi index 195cf31e36893536054f30468ef1457da11cf271..3fedae4c80b10a8d8516787f077b104a5b4a8c11 100644 GIT binary patch delta 18001 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 W8hgbSz+Y?tdGSp1X~`3dcmD^%Ud%%P From a4b8501efa8f8849436cee57ced318f1a4df68d1 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:17:50 +0000 Subject: [PATCH 037/355] Automatic changelog for PR #4891 [ci skip] --- html/changelogs/AutoChangeLog-pr-4891.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4891.yml diff --git a/html/changelogs/AutoChangeLog-pr-4891.yml b/html/changelogs/AutoChangeLog-pr-4891.yml new file mode 100644 index 000000000000..171d7447fa24 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4891.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - rscadd: "Toggle HUD button to ghost UI" \ No newline at end of file From feba0a8c938c6011c77810c3c759c268353f7bd6 Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 13 Nov 2023 09:49:02 +0100 Subject: [PATCH 038/355] /tg/ Status Effects Prelude E - Living Status Effects Refactor (#4885) # About the pull request Another bit of #4828 to prepare for /tg/ status Simply refactors most mob status to apply to /mob/living instead of /mob and untangles some related logic There's bit of a crutch in update_canmove but all that is going away in the full PR No player facing changes --- code/_onclick/human.dm | 2 +- code/datums/ammo/xeno.dm | 8 +- code/game/objects/structures/morgue.dm | 2 +- .../admin/player_panel/actions/general.dm | 12 +- .../admin/player_panel/player_panel.dm | 7 +- code/modules/mob/hear_say.dm | 21 +- code/modules/mob/living/carbon/carbon.dm | 4 +- code/modules/mob/living/carbon/human/emote.dm | 2 +- code/modules/mob/living/living_defines.dm | 8 + .../modules/mob/living/living_health_procs.dm | 291 +++++++++++++++++ code/modules/mob/mob.dm | 13 +- code/modules/mob/mob_defines.dm | 9 +- code/modules/mob/mob_helpers.dm | 2 +- code/modules/mob/mob_status_procs.dm | 298 ------------------ code/modules/mob/mob_verbs.dm | 3 +- code/modules/projectiles/gun.dm | 4 +- code/modules/recycling/disposal.dm | 16 +- 17 files changed, 359 insertions(+), 343 deletions(-) diff --git a/code/_onclick/human.dm b/code/_onclick/human.dm index cb71e27f9d1a..8f329656ef6c 100644 --- a/code/_onclick/human.dm +++ b/code/_onclick/human.dm @@ -99,7 +99,7 @@ if(xeno.stat != DEAD) // If the Xeno is alive, fight back var/mob/living/carbon/carbon_user = user if(!carbon_user || !carbon_user.ally_of_hivenumber(xeno.hivenumber)) - user.KnockDown(rand(xeno.caste.tacklestrength_min, xeno.caste.tacklestrength_max)) + carbon_user.KnockDown(rand(xeno.caste.tacklestrength_min, xeno.caste.tacklestrength_max)) playsound(user.loc, 'sound/weapons/pierce.ogg', 25, TRUE) user.visible_message(SPAN_WARNING("\The [user] tried to unstrap \the [back_item] from [xeno] but instead gets a tail swipe to the head!")) return diff --git a/code/datums/ammo/xeno.dm b/code/datums/ammo/xeno.dm index 9d91920ac6f8..75c78298fe4f 100644 --- a/code/datums/ammo/xeno.dm +++ b/code/datums/ammo/xeno.dm @@ -37,7 +37,7 @@ neuro_callback = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(apply_neuro)) -/proc/apply_neuro(mob/M, power, insta_neuro) +/proc/apply_neuro(mob/living/M, power, insta_neuro) if(skillcheck(M, SKILL_ENDURANCE, SKILL_ENDURANCE_MAX) && !insta_neuro) M.visible_message(SPAN_DANGER("[M] withstands the neurotoxin!")) return //endurance 5 makes you immune to weak neurotoxin @@ -69,7 +69,7 @@ M.adjust_effect(1 * power, WEAKEN) // KD them a bit more M.visible_message(SPAN_DANGER("[M] falls prone.")) -/proc/apply_scatter_neuro(mob/M) +/proc/apply_scatter_neuro(mob/living/M) if(ishuman(M)) var/mob/living/carbon/human/H = M if(skillcheck(M, SKILL_ENDURANCE, SKILL_ENDURANCE_MAX)) @@ -317,7 +317,7 @@ shrapnel_type = /obj/item/shard/shrapnel/bone_chips shrapnel_chance = 60 -/datum/ammo/xeno/bone_chips/on_hit_mob(mob/M, obj/projectile/P) +/datum/ammo/xeno/bone_chips/on_hit_mob(mob/living/M, obj/projectile/P) if(iscarbon(M)) var/mob/living/carbon/C = M if((HAS_FLAG(C.status_flags, XENO_HOST) && HAS_TRAIT(C, TRAIT_NESTED)) || C.stat == DEAD) @@ -347,7 +347,7 @@ damage = 10 shrapnel_chance = 0 -/datum/ammo/xeno/bone_chips/spread/runner/on_hit_mob(mob/M, obj/projectile/P) +/datum/ammo/xeno/bone_chips/spread/runner/on_hit_mob(mob/living/M, obj/projectile/P) if(iscarbon(M)) var/mob/living/carbon/C = M if((HAS_FLAG(C.status_flags, XENO_HOST) && HAS_TRAIT(C, TRAIT_NESTED)) || C.stat == DEAD) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index dc8cf08d13f1..b3fb2423008a 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -113,7 +113,7 @@ else . = ..() -/obj/structure/morgue/relaymove(mob/user) +/obj/structure/morgue/relaymove(mob/living/user) if(user.is_mob_incapacitated()) return if(exit_stun) diff --git a/code/modules/admin/player_panel/actions/general.dm b/code/modules/admin/player_panel/actions/general.dm index 174dfef55ad8..79cf192fa420 100644 --- a/code/modules/admin/player_panel/actions/general.dm +++ b/code/modules/admin/player_panel/actions/general.dm @@ -34,12 +34,16 @@ name = "Toggle Sleeping" /datum/player_action/mob_sleep/act(client/user, mob/target, list/params) + if(!istype(target, /mob/living)) + return TRUE + var/mob/living/living = target + if (!params["sleep"]) //if they're already slept, set their sleep to zero and remove the icon - target.sleeping = 0 - target.RemoveSleepingIcon() + living.sleeping = 0 + living.RemoveSleepingIcon() else - target.sleeping = 9999999 //if they're not, sleep them and add the sleep icon, so other marines nearby know not to mess with them. - target.AddSleepingIcon() + living.sleeping = 9999999 //if they're not, sleep them and add the sleep icon, so other marines nearby know not to mess with them. + living.AddSleepingIcon() message_admins("[key_name_admin(user)] toggled sleep on [key_name_admin(target)].") diff --git a/code/modules/admin/player_panel/player_panel.dm b/code/modules/admin/player_panel/player_panel.dm index 4b79c8c91569..a8217b5d9402 100644 --- a/code/modules/admin/player_panel/player_panel.dm +++ b/code/modules/admin/player_panel/player_panel.dm @@ -474,7 +474,12 @@ . = list() .["mob_name"] = targetMob.name - .["mob_sleeping"] = targetMob.sleeping + if(istype(targetMob, /mob/living)) + var/mob/living/livingTarget = targetMob + .["mob_sleeping"] = livingTarget.sleeping + else + .["mob_sleeping"] = 0 + .["mob_frozen"] = targetMob.frozen .["mob_speed"] = targetMob.speed diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 19f461be757c..ca5639c36cd0 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -7,10 +7,6 @@ if(!client && !(mind && mind.current != src)) return - if(stat == UNCONSCIOUS) - hear_sleep(src, message, src == speaker, Adjacent(speaker)) - return - var/style = "body" var/comm_paygrade = "" @@ -67,9 +63,6 @@ if(!client && !(mind && mind.current != src)) return - if(stat == UNCONSCIOUS) - hear_sleep(src, message, FALSE, FALSE) - return var/comm_paygrade = "" var/track = null @@ -207,7 +200,19 @@ M.show_message(message) src.show_message(message) -/mob/proc/hear_sleep(mob/speaker = null, message, hearing_self = FALSE, proximity_flag = FALSE) +/mob/living/hear_say(message, verb, datum/language/language, alt_name, italics, mob/speaker, sound/speech_sound, sound_vol) + if(client && mind && stat == UNCONSCIOUS) + hear_sleep(src, message, src == speaker, Adjacent(speaker)) + return + return ..() + +/mob/living/hear_radio(message, verb, datum/language/language, part_a, part_b, mob/speaker, hard_to_hear, vname, command, no_paygrade) + if(client && mind && stat == UNCONSCIOUS) + hear_sleep(src, message, FALSE, FALSE) + return + return ..() + +/mob/living/proc/hear_sleep(mob/speaker = null, message, hearing_self = FALSE, proximity_flag = FALSE) var/heard = "" if(sdisabilities & DISABILITY_DEAF || ear_deaf) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index a4eb3b99a13a..0d33503bcef4 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -437,11 +437,11 @@ set name = "Sleep" set category = "IC" - if(usr.sleeping) + if(sleeping) to_chat(usr, SPAN_DANGER("You are already sleeping")) return if(alert(src,"You sure you want to sleep for a while?","Sleep","Yes","No") == "Yes") - usr.sleeping = 20 //Short nap + sleeping = 20 //Short nap /mob/living/carbon/Collide(atom/movable/AM) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 9dcb531f6359..7da0376bbef1 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -86,7 +86,7 @@ key_third_person = "faints" message = "faints!" -/datum/emote/living/carbon/human/faint/run_emote(mob/user, params, type_override, intentional) +/datum/emote/living/carbon/human/faint/run_emote(mob/living/carbon/human/user, params, type_override, intentional) . = ..() user.sleeping += 10 diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 4293595e1a51..97d71fcb4e8e 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -110,3 +110,11 @@ /// This is what the value is changed to when the mob dies. Actual BMV definition in atom/movable. var/dead_black_market_value = 0 + + var/dazed = 0 + var/knocked_out = 0 + var/stunned = 0 + var/knocked_down = 0 + var/slowed = 0 // X_SLOW_AMOUNT + var/superslowed = 0 // X_SUPERSLOW_AMOUNT + var/sleeping = 0 diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index 14f017fd459f..3a96400ade6a 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -82,6 +82,287 @@ maxHealth = newMaxHealth +/mob/living + VAR_PROTECTED/stun_timer = TIMER_ID_NULL + +/mob/living/proc/stun_callback() + stunned = 0 + handle_regular_status_updates(FALSE) + if(stun_timer != TIMER_ID_NULL) + deltimer(stun_timer) + stun_timer = TIMER_ID_NULL + +/mob/living/proc/stun_callback_check() + if(stunned && stunned < recovery_constant) + stun_timer = addtimer(CALLBACK(src, PROC_REF(stun_callback)), (stunned/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) + return + + if(stun_timer != TIMER_ID_NULL) + deltimer(stun_timer) + stun_timer = TIMER_ID_NULL + +// adjust stun if needed, do not call it in adjust stunned +/mob/living/proc/stun_clock_adjustment() + return + +/mob/living/proc/Stun(amount) + if(status_flags & CANSTUN) + stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun + stun_clock_adjustment() + stun_callback_check() + return + +/mob/living/proc/SetStun(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" + if(status_flags & CANSTUN) + stunned = max(amount,0) + stun_clock_adjustment() + stun_callback_check() + return + +/mob/living/proc/AdjustStun(amount) + if(status_flags & CANSTUN) + stunned = max(stunned + amount,0) + stun_callback_check() + return + +/mob/living/proc/Daze(amount) + if(status_flags & CANDAZE) + dazed = max(max(dazed,amount),0) + return + +/mob/living/proc/SetDaze(amount) + if(status_flags & CANDAZE) + dazed = max(amount,0) + return + +/mob/living/proc/AdjustDaze(amount) + if(status_flags & CANDAZE) + dazed = max(dazed + amount,0) + return + +/mob/living/proc/Slow(amount) + if(status_flags & CANSLOW) + slowed = max(slowed, amount, 0) + return + +/mob/living/proc/SetSlow(amount) + if(status_flags & CANSLOW) + slowed = max(amount,0) + return + +/mob/living/proc/AdjustSlow(amount) + SetSlow(amount + slowed) + return + +/mob/living/proc/Superslow(amount) + if(status_flags & CANSLOW) + superslowed = max(superslowed, amount, 0) + return + +/mob/living/proc/SetSuperslow(amount) + if(status_flags & CANSLOW) + superslowed = max(amount,0) + return + +/mob/living/proc/AdjustSuperslow(amount) + SetSuperslow(superslowed + amount) + return + +/mob/living + VAR_PRIVATE/knocked_down_timer + +/mob/living/proc/knocked_down_callback() + knocked_down = 0 + handle_regular_status_updates(FALSE) + knocked_down_timer = null + +/mob/living/proc/knocked_down_callback_check() + if(knocked_down && knocked_down < recovery_constant) + knocked_down_timer = addtimer(CALLBACK(src, PROC_REF(knocked_down_callback)), (knocked_down/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick + return + + if(knocked_down_timer) + deltimer(knocked_down_timer) + knocked_down_timer = null + +/mob/living + VAR_PRIVATE/knocked_out_timer + +/mob/living/proc/knocked_out_start() + return + +/mob/living/proc/knocked_out_callback() + knocked_out = 0 + handle_regular_status_updates(FALSE) + knocked_out_timer = null + +/mob/living/proc/knocked_out_callback_check() + if(knocked_out && knocked_out < recovery_constant) + knocked_out_timer = addtimer(CALLBACK(src, PROC_REF(knocked_out_callback)), (knocked_out/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick + return + else if(!knocked_out) + //It's been called, and we're probably inconscious, so fix that. + knocked_out_callback() + + if(knocked_out_timer) + deltimer(knocked_out_timer) + knocked_out_timer = null + +// adjust knockdown if needed, do not call it in adjust knockdown +/mob/living/proc/knockdown_clock_adjustment() + return + +/mob/living/proc/KnockDown(amount, force) + if((status_flags & CANKNOCKDOWN) || force) + knocked_down = max(max(knocked_down,amount),0) + knockdown_clock_adjustment() + knocked_down_callback_check() + return + + +/mob/living/proc/SetKnockDown(amount) + if(status_flags & CANKNOCKDOWN) + knocked_down = max(amount,0) + knockdown_clock_adjustment() + knocked_down_callback_check() + return + +/mob/living/proc/AdjustKnockDown(amount) + if(status_flags & CANKNOCKDOWN) + knocked_down = max(knocked_down + amount,0) + knocked_down_callback_check() + return + +/mob/living/proc/knockout_clock_adjustment() + return + +/mob/living/proc/KnockOut(amount) + if(status_flags & CANKNOCKOUT) + knocked_out = max(max(knocked_out,amount),0) + knockout_clock_adjustment() + knocked_out_callback_check() + return + +/mob/living/proc/SetKnockOut(amount) + if(status_flags & CANKNOCKOUT) + knocked_out = max(amount,0) + knockout_clock_adjustment() + knocked_out_callback_check() + return + +/mob/living/proc/AdjustKnockOut(amount) + if(status_flags & CANKNOCKOUT) + knocked_out = max(knocked_out + amount,0) + knocked_out_callback_check() + return + +/mob/living/proc/Sleeping(amount) + sleeping = max(max(sleeping,amount),0) + return + +/mob/living/proc/SetSleeping(amount) + sleeping = max(amount,0) + return + +/mob/living/proc/AdjustSleeping(amount) + sleeping = max(sleeping + amount,0) + return + +/mob/living/proc/EyeBlur(amount) + eye_blurry = max(max(eye_blurry, amount), 0) + update_eye_blur() + return + +/mob/living/proc/SetEyeBlur(amount) + eye_blurry = max(amount, 0) + update_eye_blur() + return + +/mob/living/proc/AdjustEyeBlur(amount) + eye_blurry = max(eye_blurry + amount, 0) + update_eye_blur() + return + +/mob/living/proc/ReduceEyeBlur(amount) + eye_blurry = max(eye_blurry - amount, 0) + update_eye_blur() + return + +///Apply the blurry overlays to a mobs clients screen +/mob/living/proc/update_eye_blur() + if(!client) + return + var/atom/movable/plane_master_controller/game_plane_master_controller = hud_used.plane_master_controllers[PLANE_MASTERS_GAME] + + if(!eye_blurry) + clear_fullscreen("eye_blur", 0.5 SECONDS) + game_plane_master_controller.remove_filter("eye_blur") + return + + switch(client.prefs?.pain_overlay_pref_level) + if(PAIN_OVERLAY_IMPAIR) + overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/impaired, CEILING(clamp(eye_blurry * 0.3, 1, 6), 1)) + if(PAIN_OVERLAY_LEGACY) + overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/blurry) + else // PAIN_OVERLAY_BLURRY + game_plane_master_controller.add_filter("eye_blur", 1, gauss_blur_filter(clamp(eye_blurry * 0.1, 0.6, 3))) + + +/mob/living/proc/TalkStutter(amount) + stuttering = max(max(stuttering, amount), 0) + return + + +/mob/living/proc/SetTalkStutter(amount) + stuttering = max(amount, 0) + return + +/mob/living/proc/AdjustTalkStutter(amount) + stuttering = max(stuttering + amount,0) + return + + +/mob/living/proc/SetEyeBlind(amount) + eye_blind = max(amount, 0) + return + + +/mob/living/proc/AdjustEyeBlind(amount) + eye_blind = max(eye_blind + amount, 0) + return + +/mob/living/proc/ReduceEyeBlind(amount) + eye_blind = max(eye_blind - amount, 0) + return + +/mob/living/proc/AdjustEarDeafness(amount) + var/prev_deaf = ear_deaf + ear_deaf = max(ear_deaf + amount, 0) + if(prev_deaf) + if(ear_deaf == 0) + on_deafness_loss() + else if(ear_deaf) + on_deafness_gain() + + +/mob/living/proc/SetEarDeafness(amount) + var/prev_deaf = ear_deaf + ear_deaf = max(amount, 0) + if(prev_deaf) + if(ear_deaf == 0) + on_deafness_loss() + else if(ear_deaf) + on_deafness_gain() + +/mob/living/proc/on_deafness_gain() + to_chat(src, SPAN_WARNING("You notice you can't hear anything... you're deaf!")) + SEND_SIGNAL(src, COMSIG_MOB_DEAFENED) + +/mob/living/proc/on_deafness_loss() + to_chat(src, SPAN_WARNING("You start hearing things again!")) + SEND_SIGNAL(src, COMSIG_MOB_REGAINED_HEARING) + + @@ -211,3 +492,13 @@ if(stat >= UNCONSCIOUS) return return ..() + +/mob/living/is_laid_down() + if(knocked_down || knocked_out) + return TRUE + return ..() + +/mob/living/is_mob_incapacitated(ignore_restrained) + if(stunned || knocked_down || knocked_out) + return TRUE + return ..() diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 73c0bdc50147..827b94394671 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -710,7 +710,7 @@ note dizziness decrements automatically in the mob's Life() proc. //Updates canmove, lying and icons. Could perhaps do with a rename but I can't think of anything to describe it. /mob/proc/update_canmove() - var/laid_down = (stat || knocked_down || knocked_out || !has_legs() || resting || (status_flags & FAKEDEATH) || (pulledby && pulledby.grab_level >= GRAB_AGGRESSIVE)) + var/laid_down = is_laid_down() if(laid_down) lying = TRUE @@ -724,7 +724,13 @@ note dizziness decrements automatically in the mob's Life() proc. else lying = FALSE - canmove = !(stunned || frozen) + canmove = !frozen + + if(isliving(src)) // Temporary I SWEAR. This whole proc is going down + var/mob/living/living = src + if(living.stunned) + canmove = FALSE + if(!can_crawl && lying) canmove = FALSE @@ -756,6 +762,9 @@ note dizziness decrements automatically in the mob's Life() proc. return canmove +/mob/proc/is_laid_down() + return (stat || !has_legs() || resting || (status_flags & FAKEDEATH) || (pulledby && pulledby.grab_level >= GRAB_AGGRESSIVE)) + /mob/proc/face_dir(ndir, specific_dir) if(!canface()) return 0 if(dir != ndir) diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 3e765e167ec1..eec0ca75af8d 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -65,22 +65,15 @@ var/dizziness = 0//Carbon var/jitteriness = 0//Carbon var/floatiness = 0 - var/knocked_out = 0 - var/stunned = 0 var/frozen = 0 - var/knocked_down = 0 var/losebreath = 0.0//Carbon - var/dazed = 0 - var/slowed = 0 // X_SLOW_AMOUNT - var/superslowed = 0 // X_SUPERSLOW_AMOUNT var/shakecamera = 0 // bool status effects \\ /// bool that tracks if blind var/blinded = FALSE - var/sleeping = 0 //Carbon - var/resting = 0 //Carbon + var/resting = 0 var/is_floating = 0 var/is_dizzy = 0 var/is_jittery = 0 diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 56951097a12c..4b8aadfad85b 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -312,7 +312,7 @@ var/global/list/limb_types_by_name = list( return /mob/proc/is_mob_incapacitated(ignore_restrained) - return (stat || stunned || knocked_down || knocked_out || (!ignore_restrained && is_mob_restrained()) || status_flags & FAKEDEATH) + return (stat || (!ignore_restrained && is_mob_restrained()) || status_flags & FAKEDEATH) //returns how many non-destroyed legs the mob has (currently only useful for humans) diff --git a/code/modules/mob/mob_status_procs.dm b/code/modules/mob/mob_status_procs.dm index b700fad2c136..ced7b7bdaf45 100644 --- a/code/modules/mob/mob_status_procs.dm +++ b/code/modules/mob/mob_status_procs.dm @@ -1,301 +1,3 @@ -/mob/var/stun_timer = TIMER_ID_NULL - -/mob/proc/stun_callback() - stunned = 0 - handle_regular_status_updates(FALSE) - update_canmove() - if(stun_timer != TIMER_ID_NULL) - deltimer(stun_timer) - stun_timer = TIMER_ID_NULL - -/mob/proc/stun_callback_check() - if(stunned && stunned < recovery_constant) - stun_timer = addtimer(CALLBACK(src, PROC_REF(stun_callback)), (stunned/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) - return - - if(stun_timer != TIMER_ID_NULL) - deltimer(stun_timer) - stun_timer = TIMER_ID_NULL - -// adjust stun if needed, do not call it in adjust stunned -/mob/proc/stun_clock_adjustment() - return - -/mob/proc/Stun(amount) - if(status_flags & CANSTUN) - stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun - stun_clock_adjustment() - stun_callback_check() - update_canmove() - return - -/mob/proc/SetStun(amount) //if you REALLY need to set stun to a set amount without the whole "can't go below current stunned" - if(status_flags & CANSTUN) - stunned = max(amount,0) - stun_clock_adjustment() - stun_callback_check() - update_canmove() - return - -/mob/proc/AdjustStun(amount) - if(status_flags & CANSTUN) - stunned = max(stunned + amount,0) - stun_callback_check() - update_canmove() - return - -/mob/proc/Daze(amount) - if(status_flags & CANDAZE) - dazed = max(max(dazed,amount),0) - return - -/mob/proc/SetDaze(amount) - if(status_flags & CANDAZE) - dazed = max(amount,0) - return - -/mob/proc/AdjustDaze(amount) - if(status_flags & CANDAZE) - dazed = max(dazed + amount,0) - return - -/mob/proc/Slow(amount) - if(status_flags & CANSLOW) - slowed = max(slowed, amount, 0) - return - -/mob/proc/SetSlow(amount) - if(status_flags & CANSLOW) - slowed = max(amount,0) - return - -/mob/proc/AdjustSlow(amount) - SetSlow(amount + slowed) - return - -/mob/proc/Superslow(amount) - if(status_flags & CANSLOW) - superslowed = max(superslowed, amount, 0) - return - -/mob/proc/SetSuperslow(amount) - if(status_flags & CANSLOW) - superslowed = max(amount,0) - return - -/mob/proc/AdjustSuperslow(amount) - SetSuperslow(superslowed + amount) - return - -/mob/var/knocked_down_timer - -/mob/proc/knocked_down_callback() - knocked_down = 0 - handle_regular_status_updates(FALSE) - update_canmove() - knocked_down_timer = null - -/mob/proc/knocked_down_callback_check() - if(knocked_down && knocked_down < recovery_constant) - knocked_down_timer = addtimer(CALLBACK(src, PROC_REF(knocked_down_callback)), (knocked_down/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick - return - - if(knocked_down_timer) - deltimer(knocked_down_timer) - knocked_down_timer = null - -/mob/var/knocked_out_timer - -/mob/proc/knocked_out_start() - return - -/mob/proc/knocked_out_callback() - knocked_out = 0 - handle_regular_status_updates(FALSE) - update_canmove() - knocked_out_timer = null - -/mob/proc/knocked_out_callback_check() - if(knocked_out && knocked_out < recovery_constant) - knocked_out_start() - knocked_out_timer = addtimer(CALLBACK(src, PROC_REF(knocked_out_callback)), (knocked_out/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick - return - else if(!knocked_out) - //It's been called, and we're probably inconscious, so fix that. - knocked_out_callback() - - if(knocked_out_timer) - deltimer(knocked_out_timer) - knocked_out_timer = null - -// adjust knockdown if needed, do not call it in adjust knockdown -/mob/proc/knockdown_clock_adjustment() - return - -/mob/proc/KnockDown(amount, force) - if((status_flags & CANKNOCKDOWN) || force) - knocked_down = max(max(knocked_down,amount),0) - knockdown_clock_adjustment() - knocked_down_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/SetKnockDown(amount) - if(status_flags & CANKNOCKDOWN) - knocked_down = max(amount,0) - knockdown_clock_adjustment() - knocked_down_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/AdjustKnockDown(amount) - if(status_flags & CANKNOCKDOWN) - knocked_down = max(knocked_down + amount,0) - knocked_down_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/knockout_clock_adjustment() - return - -/mob/proc/KnockOut(amount) - if(status_flags & CANKNOCKOUT) - knocked_out = max(max(knocked_out,amount),0) - knockout_clock_adjustment() - knocked_out_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/SetKnockOut(amount) - if(status_flags & CANKNOCKOUT) - knocked_out = max(amount,0) - knockout_clock_adjustment() - knocked_out_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/AdjustKnockOut(amount) - if(status_flags & CANKNOCKOUT) - knocked_out = max(knocked_out + amount,0) - knocked_out_callback_check() - update_canmove() //updates lying, canmove and icons - return - -/mob/proc/Sleeping(amount) - sleeping = max(max(sleeping,amount),0) - return - -/mob/proc/SetSleeping(amount) - sleeping = max(amount,0) - return - -/mob/proc/AdjustSleeping(amount) - sleeping = max(sleeping + amount,0) - return - -/mob/proc/Resting(amount) - resting = max(max(resting,amount),0) - return - -/mob/proc/SetResting(amount) - resting = max(amount,0) - return - -/mob/proc/AdjustResting(amount) - resting = max(resting + amount,0) - return - -/mob/proc/EyeBlur(amount) - eye_blurry = max(max(eye_blurry, amount), 0) - update_eye_blur() - return - -/mob/proc/SetEyeBlur(amount) - eye_blurry = max(amount, 0) - update_eye_blur() - return - -/mob/proc/AdjustEyeBlur(amount) - eye_blurry = max(eye_blurry + amount, 0) - update_eye_blur() - return - -/mob/proc/ReduceEyeBlur(amount) - eye_blurry = max(eye_blurry - amount, 0) - update_eye_blur() - return - -///Apply the blurry overlays to a mobs clients screen -/mob/proc/update_eye_blur() - if(!client) - return - var/atom/movable/plane_master_controller/game_plane_master_controller = hud_used.plane_master_controllers[PLANE_MASTERS_GAME] - - if(!eye_blurry) - clear_fullscreen("eye_blur", 0.5 SECONDS) - game_plane_master_controller.remove_filter("eye_blur") - return - - switch(client.prefs?.pain_overlay_pref_level) - if(PAIN_OVERLAY_IMPAIR) - overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/impaired, CEILING(clamp(eye_blurry * 0.3, 1, 6), 1)) - if(PAIN_OVERLAY_LEGACY) - overlay_fullscreen("eye_blur", /atom/movable/screen/fullscreen/blurry) - else // PAIN_OVERLAY_BLURRY - game_plane_master_controller.add_filter("eye_blur", 1, gauss_blur_filter(clamp(eye_blurry * 0.1, 0.6, 3))) - - -/mob/proc/TalkStutter(amount) - stuttering = max(max(stuttering, amount), 0) - return - -/mob/proc/SetTalkStutter(amount) - stuttering = max(amount, 0) - return - -/mob/proc/AdjustTalkStutter(amount) - stuttering = max(stuttering + amount,0) - return - -/mob/proc/SetEyeBlind(amount) - eye_blind = max(amount, 0) - return - -/mob/proc/AdjustEyeBlind(amount) - eye_blind = max(eye_blind + amount, 0) - return - -/mob/proc/ReduceEyeBlind(amount) - eye_blind = max(eye_blind - amount, 0) - return - -/mob/proc/AdjustEarDeafness(amount) - var/prev_deaf = ear_deaf - ear_deaf = max(ear_deaf + amount, 0) - if(prev_deaf) - if(ear_deaf == 0) - on_deafness_loss() - else if(ear_deaf) - on_deafness_gain() - - -/mob/proc/SetEarDeafness(amount) - var/prev_deaf = ear_deaf - ear_deaf = max(amount, 0) - if(prev_deaf) - if(ear_deaf == 0) - on_deafness_loss() - else if(ear_deaf) - on_deafness_gain() - -/mob/proc/on_deafness_gain() - to_chat(src, SPAN_WARNING("You notice you can't hear anything... you're deaf!")) - SEND_SIGNAL(src, COMSIG_MOB_DEAFENED) - -/mob/proc/on_deafness_loss() - to_chat(src, SPAN_WARNING("You start hearing things again!")) - SEND_SIGNAL(src, COMSIG_MOB_REGAINED_HEARING) - /mob/proc/getBruteLoss() return diff --git a/code/modules/mob/mob_verbs.dm b/code/modules/mob/mob_verbs.dm index 19296ba90b20..114547188d3c 100644 --- a/code/modules/mob/mob_verbs.dm +++ b/code/modules/mob/mob_verbs.dm @@ -98,8 +98,7 @@ if(length(mind.memory) < 4000) mind.store_memory(msg) else - src.sleeping = 9999999 - message_admins("[key_name(usr)] auto-slept for attempting to exceed mob memory limit. [ADMIN_JMP(src.loc)]") + message_admins("[key_name(usr)] auto-slept for attempting to exceed mob memory limit.]", loc.x, loc.y, loc.z) else to_chat(src, "The game appears to have misplaced your mind datum, so we can't show you your notes.") diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ac7be20c42ee..4767f443506b 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -488,7 +488,7 @@ Note: pickup and dropped on weapons must have both the ..() to update zoom AND twohanded, As sniper rifles have both and weapon mods can change them as well. ..() deals with zoom only. */ -/obj/item/weapon/gun/equipped(mob/user, slot) +/obj/item/weapon/gun/equipped(mob/living/user, slot) if(flags_item & NODROP) return unwield(user) @@ -732,7 +732,7 @@ As sniper rifles have both and weapon mods can change them as well. ..() deals w // END TGUI \\ -/obj/item/weapon/gun/wield(mob/user) +/obj/item/weapon/gun/wield(mob/living/user) if(!(flags_item & TWOHANDED) || flags_item & WIELDED) return diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 2c7401ac278c..b2afd77d4aed 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -221,7 +221,7 @@ update() ///Attempt to move while inside -/obj/structure/machinery/disposal/relaymove(mob/user) +/obj/structure/machinery/disposal/relaymove(mob/living/user) if(user.stat || user.stunned || user.knocked_down || flushing) return FALSE if(user.loc == src) @@ -229,7 +229,7 @@ return TRUE ///Leave the disposal -/obj/structure/machinery/disposal/proc/go_out(mob/user) +/obj/structure/machinery/disposal/proc/go_out(mob/living/user) if(user.client) user.client.eye = user.client.mob user.client.perspective = MOB_PERSPECTIVE @@ -302,12 +302,12 @@ for(var/atom/movable/AM in src) AM.forceMove(loc) AM.pipe_eject(0) - if(ismob(AM)) - var/mob/M = AM - M.stunned = max(M.stunned, 2) //Action delay when going out of a bin - M.update_canmove() //Force the delay to go in action immediately - if(!M.lying) - M.visible_message(SPAN_WARNING("[M] is suddenly pushed out of [src]!"), + if(isliving(AM)) + var/mob/living/living = AM + living.Stun(2) + living.update_canmove() //Force the delay to go in action immediately + if(!living.lying) + living.visible_message(SPAN_WARNING("[living] is suddenly pushed out of [src]!"), SPAN_WARNING("You get pushed out of [src] and get your bearings!")) update() From 22c3480dff8930c29f652d7630af341f7533ceaf Mon Sep 17 00:00:00 2001 From: Releasethesea <135743398+Releasethesea@users.noreply.github.com> Date: Mon, 13 Nov 2023 02:49:17 -0600 Subject: [PATCH 039/355] Functional bedrolls (#4874) # About the pull request When playing on an event in a seperate server the event runner had bedrolls we could lay out which made me wonder why we dont have them in CM! So much like pill packets, with a bit of help here they are functional bedrolls! # Explain why it's good for the game Roleplay is good, i can see many situations where this could be used, bedrolls around a campfire on sorokyne, making a more comfortable FOB, pretending to go camping using the new tents, the opportunities are endless # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
https://imgur.com/a/O8m9gpc # Changelog :cl: add: Adds functional bedrolls to the game. /:cl: --- .../vending/vendor_types/requisitions.dm | 3 +++ .../vending/vendor_types/squad_prep/squad_prep.dm | 1 + .../structures/stool_bed_chair_nest/bed.dm | 14 ++++++++++++-- icons/obj/items/bedrolls.dmi | Bin 0 -> 809 bytes 4 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 icons/obj/items/bedrolls.dmi diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 1dbd31c63de4..93680fb93d2c 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -413,6 +413,9 @@ list("MASKS", -1, null, null, null), list("Gas Mask", 20, /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), list("Heat Absorbent Coif", 10, /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR), + + list("MISCELLANEOUS", -1, null, null), + list("Bedroll", 30, /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), ) /obj/structure/machinery/cm_vending/sorted/uniform_supply/ui_state(mob/user) diff --git a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm index 222cd4693cd2..94325b09e9eb 100644 --- a/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm +++ b/code/game/machinery/vending/vendor_types/squad_prep/squad_prep.dm @@ -158,6 +158,7 @@ list("USCM Flair", round(scale * 15), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR), list("Falling Falcons Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch/falcon, VENDOR_ITEM_REGULAR), list("USCM Shoulder Patch", round(scale * 15), /obj/item/clothing/accessory/patch, VENDOR_ITEM_REGULAR), + list("Bedroll", round(scale * 20), /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), ) //--------------SQUAD SPECIFIC VERSIONS-------------- diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index 7979994915f4..bc3b4ad7f4d0 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -404,7 +404,17 @@ var/global/list/activated_medevac_stretchers = list() //bedroll /obj/structure/bed/bedroll - name = "bedroll" - desc = "bedroll" + name = "unfolded bedroll" + desc = "Perfect for those long missions, when there's nowhere else to sleep, you remembered to bring at least one thing of comfort." + icon = 'icons/monkey_icos.dmi' icon_state = "bedroll_o" + buckling_y = 0 + foldabletype = /obj/item/roller/bedroll + accepts_bodybag = FALSE + +/obj/item/roller/bedroll + name = "folded bedroll" + desc = "A standard issue USCMC bedroll, They've been in service for as long as you can remember. The tag on it states to unfold it before rest, but who needs rules anyway, right?" icon = 'icons/monkey_icos.dmi' + icon_state = "bedroll" + rollertype = /obj/structure/bed/bedroll diff --git a/icons/obj/items/bedrolls.dmi b/icons/obj/items/bedrolls.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c36e07002a3daa55878524165220013d77e192b9 GIT binary patch literal 809 zcmV+^1J?YBP)00DGTPE!Ct=GbNc004D*R9JLG zWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TB zGg33tGfE(w;*!LYR3K9+DK(`iKPM+XUx|w|C9|j)C}zRMnO2mTn+jqZVyHx@Gel9R ztl;YB0(JrbFp?)mSHFn*0006wNkld(x5QeFca;{TlljFu!B#wa9@CRIJ zITjVExn;K!oU2vqUKgnnduOHi-|mbJ#O5Q}T=r7lgT-Jy8XL^KjN?q2bVccPGa6!q zuz-MW@XCxs&TkzDM|0ktrzzc}poFIB+Bf12=MTQS;5;$r9T#sua?m|a`RC#Z`2PUB zEQr(eUjf3{+;`WE5epbU8n=`NzI#JyXdMk=9zNn5@s^P9zWarcXJg)(F~+iI7}z$0 zVQHB_02 zrK~z-M;@BGMCn69L7N4o$q|q?Am!op3~*S)7Xq(U)dFziJG1m2|yRQDGF@50FTixKE?sqB|OGvNxP$8^a1_m;cS$He$hV~+8=(cR?9)Z z=ow1m4^b2i`o*Xph+Mo){xIp&X{73ptJ@z8$PMtLtmk_DLAL<`1snYAVNL-}@oj!X zJ4Hb);t?xPvbBNM5A3pI0KxtUNUWu+*Z_*+JWv;34S3}#U{?duSW-Vj=(oV{9#9PI zp$mL7mgJQM0G Date: Mon, 13 Nov 2023 02:50:37 -0600 Subject: [PATCH 040/355] Fixes minor mapping errors (#4873) # About the pull request The last one i put up had merge conflicts so i decided to just close it and make a new one since i couldnt figure out how to fix them lmao # Explain why it's good for the game Mapping errors bad, fixing them good # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Fixxed the improperly area'd hull south of construction site, adds fire shutters to north fueling pod to make it mirror the south one /:cl: --- maps/map_files/USS_Almayer/USS_Almayer.dmm | 690 ++++++++++----------- 1 file changed, 343 insertions(+), 347 deletions(-) diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index e858c128f1d7..62a748d9ecd0 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -6147,11 +6147,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"atW" = ( -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "atY" = ( /obj/structure/closet/emcloset, /obj/item/clothing/mask/gas, @@ -14292,20 +14287,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) -"bcB" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/surface/table/almayer, -/obj/item/tool/hand_labeler, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/chemistry) "bcC" = ( /obj/item/reagent_container/glass/beaker/bluespace, /obj/structure/machinery/chem_dispenser/medbay, @@ -19958,16 +19939,6 @@ /obj/docking_port/stationary/marine_dropship/almayer_hangar_1, /turf/open/floor/plating, /area/almayer/hallways/hangar) -"bGa" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 4; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "bGb" = ( /turf/closed/wall/almayer, /area/almayer/hallways/port_hallway) @@ -23417,21 +23388,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"bUA" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver, -/obj/item/prop/helmetgarb/gunoil{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/item/weapon/gun/rifle/l42a{ - pixel_x = 17; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "bUE" = ( /turf/open/floor/almayer{ dir = 4; @@ -28770,6 +28726,16 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"cRg" = ( +/obj/item/tool/weldpack{ + pixel_y = 15 + }, +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/welding, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "cRi" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -29472,6 +29438,17 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) +"dfP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "dgg" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -29786,6 +29763,15 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) +"dlN" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "dmg" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -30537,6 +30523,17 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) +"dAi" = ( +/obj/structure/sign/nosmoking_2{ + pixel_x = 32 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "dAq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -31722,17 +31719,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"dZN" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "eaf" = ( /obj/structure/machinery/cm_vending/clothing/military_police{ density = 0; @@ -32606,6 +32592,18 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"epK" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/smg/m39{ + pixel_y = 6 + }, +/obj/item/weapon/gun/smg/m39{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "eqb" = ( /obj/structure/surface/table/almayer, /obj/item/tool/stamp/denied{ @@ -32728,6 +32726,14 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) +"erz" = ( +/obj/structure/closet/crate, +/obj/item/ammo_box/magazine/l42a, +/obj/item/ammo_box/magazine/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "erG" = ( /obj/structure/disposalpipe/junction{ dir = 2; @@ -34148,6 +34154,15 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/offices) +"eXU" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "eYr" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -39194,12 +39209,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"heH" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "heK" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -39673,18 +39682,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) -"hnE" = ( -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/smg/m39{ - pixel_y = 6 - }, -/obj/item/weapon/gun/smg/m39{ - pixel_y = -6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "hnV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -41395,6 +41392,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"iaE" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "iaF" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -42317,16 +42320,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) -"iuy" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/plating, -/area/almayer/living/briefing) "iuz" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/warhead, @@ -42735,15 +42728,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) -"iDK" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "iDN" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -44416,6 +44400,11 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"jkL" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "jkS" = ( /obj/structure/window/framed/almayer/hull/hijack_bustable, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -44729,6 +44718,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"jrV" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "jss" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -45078,6 +45077,36 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) +"jBY" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = -3 + }, +/obj/structure/noticeboard{ + desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "jCa" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -49781,6 +49810,61 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) +"lAj" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "lAl" = ( /turf/open/floor/almayer{ dir = 4; @@ -49985,6 +50069,20 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) +"lDK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/supply/weapons/m39{ + pixel_x = 2 + }, +/obj/structure/largecrate/supply/weapons/m41a{ + layer = 3.1; + pixel_x = 6; + pixel_y = 17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "lDL" = ( /obj/structure/machinery/light{ dir = 4 @@ -50606,13 +50704,6 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"lPW" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "lQj" = ( /obj/structure/machinery/door_control{ id = "InnerShutter"; @@ -52033,20 +52124,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"mzl" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate/supply/weapons/m39{ - pixel_x = 2 - }, -/obj/structure/largecrate/supply/weapons/m41a{ - layer = 3.1; - pixel_x = 6; - pixel_y = 17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "mzo" = ( /turf/closed/wall/almayer, /area/almayer/hull/lower_hull/l_f_p) @@ -52197,10 +52274,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"mCe" = ( -/obj/structure/largecrate/supply/weapons/pistols, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "mCo" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -53229,6 +53302,19 @@ dir = 1 }, /area/almayer/medical/containment/cell) +"mXa" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "mXj" = ( /turf/closed/wall/almayer, /area/almayer/living/commandbunks) @@ -53266,6 +53352,17 @@ icon_state = "blue" }, /area/almayer/hallways/port_hallway) +"mYX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/m41a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "mYY" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -54299,6 +54396,17 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) +"nuI" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/tool/hand_labeler, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/chemistry) "nuK" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/franks{ @@ -56738,36 +56846,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"ouu" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = -3 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = 9 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = -3 - }, -/obj/structure/noticeboard{ - desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ouB" = ( /obj/structure/bed/sofa/vert/grey/bot, /turf/open/floor/almayer, @@ -59483,6 +59561,18 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"pJn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/secure{ + pixel_x = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "pJD" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -59567,12 +59657,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_medbay) -"pLJ" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "pLO" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -60962,6 +61046,21 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) +"qmr" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/prop/helmetgarb/gunoil{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/item/weapon/gun/rifle/l42a{ + pixel_x = 17; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "qmt" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -62966,6 +63065,14 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"rcW" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "rde" = ( /obj/structure/sign/prop1, /turf/closed/wall/almayer, @@ -64730,6 +64837,17 @@ icon_state = "plate" }, /area/almayer/living/gym) +"rOZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "rPh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -66862,15 +66980,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"sNx" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Armourer's Workshop"; - req_access = null - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/hull/upper_hull/u_m_s) "sNz" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -67545,19 +67654,6 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell) -"tbC" = ( -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = -6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "tbD" = ( /obj/structure/ladder{ height = 2; @@ -67704,18 +67800,6 @@ /obj/effect/landmark/late_join, /turf/open/floor/almayer, /area/almayer/living/cryo_cells) -"teB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/secure{ - pixel_x = -5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "teH" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -68358,61 +68442,6 @@ /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, /area/almayer/lifeboat_pumps/south1) -"trg" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "trB" = ( /turf/open/floor/almayer{ dir = 10; @@ -68489,14 +68518,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) -"tsv" = ( -/obj/structure/sign/nosmoking_2{ - pixel_x = 32 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "tsy" = ( /obj/structure/filingcabinet{ pixel_x = 8 @@ -68976,16 +68997,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) -"tDA" = ( -/obj/item/tool/weldpack{ - pixel_y = 15 - }, -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/welding, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "tDZ" = ( /obj/structure/machinery/cryopod{ pixel_y = 6 @@ -69526,14 +69537,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"tQE" = ( -/obj/item/storage/toolbox/mechanical{ - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "tQL" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/light, @@ -70068,10 +70071,7 @@ /area/almayer/command/computerlab) "uaZ" = ( /obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/m41a, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -70092,6 +70092,17 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"uck" = ( +/obj/structure/surface/rack, +/obj/item/stack/cable_coil, +/obj/item/attachable/flashlight/grip, +/obj/item/ammo_box/magazine/l42a{ + pixel_y = 14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "ucp" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -71147,17 +71158,6 @@ dir = 4 }, /area/almayer/medical/containment/cell) -"uvS" = ( -/obj/structure/surface/rack, -/obj/item/stack/cable_coil, -/obj/item/attachable/flashlight/grip, -/obj/item/ammo_box/magazine/l42a{ - pixel_y = 14 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "uvY" = ( /turf/open/floor/almayer{ dir = 8; @@ -71695,17 +71695,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) -"uGz" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "uGQ" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /turf/open/floor/almayer{ @@ -74073,6 +74062,14 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) +"vCz" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "vCG" = ( /obj/structure/toilet{ dir = 8 @@ -76275,14 +76272,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/bravo) -"wta" = ( -/obj/structure/closet/crate, -/obj/item/ammo_box/magazine/l42a, -/obj/item/ammo_box/magazine/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "wtd" = ( /obj/structure/machinery/vending/coffee, /obj/item/toy/bikehorn/rubberducky{ @@ -77094,11 +77083,6 @@ dir = 1 }, /area/almayer/medical/containment/cell) -"wLE" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "wLG" = ( /obj/item/bedsheet/blue{ layer = 3.2 @@ -77811,6 +77795,15 @@ }, /turf/open/floor/plating, /area/almayer/engineering/ce_room) +"wYZ" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Armourer's Workshop"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hull/upper_hull/u_m_s) "wZa" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -78141,6 +78134,16 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) +"xgE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "xgJ" = ( /obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ @@ -80521,6 +80524,10 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) +"ydr" = ( +/obj/structure/largecrate/supply/weapons/pistols, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "ydx" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -80695,17 +80702,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"yfQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/m41a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "yfS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -106501,7 +106497,7 @@ bsk sxu cBI bkA -bcB +nuI bej arX vSG @@ -106802,7 +106798,7 @@ awW awW awW fSm -atW +vCz apl bbL bbL @@ -107005,7 +107001,7 @@ ajf ajf ajf oAO -heH +dlN aod qgG amC @@ -107208,7 +107204,7 @@ awW awW awW aSJ -tsv +dAi dtM aii mce @@ -116447,7 +116443,7 @@ dYX tBF lBz aLG -iuy +bdg bqZ beH bgO @@ -118165,7 +118161,7 @@ abg caF aar aar -sNx +wYZ aar aar ael @@ -118367,10 +118363,10 @@ bWs abg caF aar -tQE +rcW sTB -uaZ -bUA +jrV +qmr ael afE agT @@ -118570,9 +118566,9 @@ acO aJs cbN aar -mzl +lDK aap -iDK +eXU vFb ael afH @@ -118773,10 +118769,10 @@ pNQ abx hTy aar -teB +pJn aao aao -wta +erz ael afI agY @@ -118976,10 +118972,10 @@ acP bUE qFQ aar -ouu +jBY aap aao -yfQ +mYX ael afJ agY @@ -119179,10 +119175,10 @@ acG abx caF aar -mCe +ydr aap aao -yfQ +mYX ael afK ahc @@ -119384,7 +119380,7 @@ lCz aar tAV sTB -uvS +uck wKn ael afL @@ -119585,7 +119581,7 @@ acG abx caF aar -sNx +wYZ aar aar aar @@ -119790,8 +119786,8 @@ arJ aar aao aao -uGz -dZN +rOZ +dfP adO afM fpR @@ -119991,10 +119987,10 @@ jSY abx hTy aar -trg +lAj aao aao -bGa +xgE adO afN ahh @@ -120194,10 +120190,10 @@ acP bUE qFQ aar -wLE -pLJ +jkL +iaE aao -tbC +mXa adO afO ahh @@ -120397,10 +120393,10 @@ aJa abg ccf aar -tDA -lPW +cRg +uaZ aap -hnE +epK adO jkj ahh From 863b6236d6fc1966da7c94bbd64fdec26ee7cc88 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:03:24 +0000 Subject: [PATCH 041/355] Automatic changelog for PR #4873 [ci skip] --- html/changelogs/AutoChangeLog-pr-4873.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4873.yml diff --git a/html/changelogs/AutoChangeLog-pr-4873.yml b/html/changelogs/AutoChangeLog-pr-4873.yml new file mode 100644 index 000000000000..404186a3e1c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4873.yml @@ -0,0 +1,4 @@ +author: "Releasethesea" +delete-after: True +changes: + - bugfix: "Fixxed the improperly area'd hull south of construction site, adds fire shutters to north fueling pod to make it mirror the south one" \ No newline at end of file From aefa658158c28ef63bd97bbd10ed9ea97ec77674 Mon Sep 17 00:00:00 2001 From: fira Date: Mon, 13 Nov 2023 09:57:54 +0100 Subject: [PATCH 042/355] Echo pad droppod fix (#4889) # About the pull request I manage to screw something up with every PR it seems - see #4868 Updated droppod constructor arguments in droppod cosmetic PR (to make it so you have the crate falling down sky) but only did so for Overwatch pods, not Echo's. This causes a deleted droppod to be launched anyway and remain on the ground. AWKWARD. # Changelog :cl: fix: Fixed ghost droppods appearing when launching crates by Echo pad. /:cl: --- code/game/supplyshuttle.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index e8f40c1d52b3..cf7f81b2204f 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -327,7 +327,7 @@ var/datum/controller/supply/supply_controller = new() M.count_niche_stat(STATISTICS_NICHE_CRATES) playsound(C.loc,'sound/effects/bamf.ogg', 50, 1) //Ehh - var/obj/structure/droppod/supply/pod = new() + var/obj/structure/droppod/supply/pod = new(null, C) C.forceMove(pod) pod.launch(T) visible_message("[icon2html(src, viewers(src))] [SPAN_BOLDNOTICE("'[C.name]' supply drop launched! Another launch will be available in five minutes.")]") From 69fee2e9e169a84c4724fcb88d13d54c754fc0d2 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:23:46 +0000 Subject: [PATCH 043/355] Automatic changelog for PR #4889 [ci skip] --- html/changelogs/AutoChangeLog-pr-4889.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4889.yml diff --git a/html/changelogs/AutoChangeLog-pr-4889.yml b/html/changelogs/AutoChangeLog-pr-4889.yml new file mode 100644 index 000000000000..f5d054772715 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4889.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed ghost droppods appearing when launching crates by Echo pad." \ No newline at end of file From 895c0713cd6e4a1f32dbff4a27c19ef94b717269 Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Mon, 13 Nov 2023 17:10:32 +0800 Subject: [PATCH 044/355] Less Overpowered Commando ERTs (Marsoc, WY Whiteout, UPP Commandos) (#4466) # About the pull request This PR adds three new alternative Commando distress calls for admin/staff only usage. These are variants of the Marsoc, WY Whiteout and UPP Commando that use less overpowered gear. The non-OP versions have no unique identifier in the admin menus, however the overpowered versions are denoted with the affix of "(!DEATHSQUAD!)". This applies to both the distress call and the preset. Marsoc: Have lost HEAP/Special Explosives/Unique Medical Items WY Whiteout: Have lost HEAP/Special OP Flamer/Extra OP Smartgun, they are still combat Synthetics UPP: Have lost their cloaking abilities, they still retain a cloak for the aesthetic but it is non-functional. # Explain why it's good for the game Commando ERTs are virtually never used in game outside of zombies or for clean-up after an event due to how oppressively overpowered they are. This addition will allow admins/staff to make usage of these unique ERTs more commonly for events without having to worry about them annihilating the entire server. While each ERT is still quite powerful, they are not as destructive. I am 100% open to further changes as needed. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Less powerful variants of the Commando ERTs (Marsoc, WY Whiteout, UPP Commandos) have been added for admin use. admin: The powerful versions of commando ERTs are denoted with (!DEATHSQUAD!) in the distress call and equipment preset menus. /:cl: --------- Co-authored-by: Steelpoint --- code/datums/emergency_calls/deathsquad.dm | 105 +++++++--- code/datums/emergency_calls/upp_commando.dm | 28 ++- code/game/objects/items/storage/backpack.dm | 4 + code/game/objects/items/storage/pouch.dm | 12 ++ code/modules/gear_presets/upp.dm | 106 +++++++++- code/modules/gear_presets/uscm.dm | 68 ++++++- code/modules/gear_presets/whiteout.dm | 185 +++++++++++++++++- .../modules/projectiles/guns/flamer/flamer.dm | 3 + code/modules/projectiles/guns/rifles.dm | 2 + 9 files changed, 478 insertions(+), 35 deletions(-) diff --git a/code/datums/emergency_calls/deathsquad.dm b/code/datums/emergency_calls/deathsquad.dm index 0bfab8fbf2b7..1cd5bdef6713 100644 --- a/code/datums/emergency_calls/deathsquad.dm +++ b/code/datums/emergency_calls/deathsquad.dm @@ -3,7 +3,7 @@ //Weyland-Yutani Deathsquad - W-Y Deathsquad. Event only /datum/emergency_call/death - name = "Weyland Whiteout Operators" + name = "Weyland Whiteout Operators (!DEATHSQUAD!)" mob_max = 8 mob_min = 5 arrival_message = "'!`2*%slau#*jer t*h$em a!l%. le&*ve n(o^ w&*nes%6es.*v$e %#d ou^'" @@ -18,41 +18,76 @@ // DEATH SQUAD-------------------------------------------------------------------------------- -/datum/emergency_call/death/create_member(datum/mind/M, turf/override_spawn_loc) +/datum/emergency_call/death/create_member(datum/mind/player, turf/override_spawn_loc) var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() if(!istype(spawn_loc)) return //Didn't find a useable spawn point. - var/mob/living/carbon/human/H = new(spawn_loc) - M.transfer_to(H, TRUE) + var/mob/living/carbon/human/person = new(spawn_loc) + player.transfer_to(person, TRUE) - if(!leader && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(H.client, JOB_SQUAD_LEADER, time_required_for_job)) - leader = H - to_chat(H, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/leader, TRUE, TRUE) - else if(medics < max_medics && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(H.client, JOB_SQUAD_MEDIC, time_required_for_job)) + if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = person + to_chat(person, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/leader, TRUE, TRUE) + else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job)) medics++ - to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/medic, TRUE, TRUE) - else if(heavies < max_heavies && HAS_FLAG(H.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(H.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job)) + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/medic, TRUE, TRUE) + else if(heavies < max_heavies && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(person.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job)) heavies++ - to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout/terminator, TRUE, TRUE) + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/terminator, TRUE, TRUE) else - to_chat(H, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!")) - to_chat(H, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) - arm_equipment(H, /datum/equipment_preset/pmc/w_y_whiteout, TRUE, TRUE) + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout, TRUE, TRUE) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) + +/datum/emergency_call/death/low_threat + name = "Weyland Whiteout Operators" + +// DEATH SQUAD-------------------------------------------------------------------------------- +/datum/emergency_call/death/low_threat/create_member(datum/mind/player, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/person = new(spawn_loc) + player.transfer_to(person, TRUE) + + if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job)) + leader = person + to_chat(person, SPAN_ROLE_HEADER("You are the Whiteout Team Leader!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/leader, TRUE, TRUE) + else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job)) + medics++ + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Medic!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/medic, TRUE, TRUE) + else if(heavies < max_heavies && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_SMARTGUNNER) && check_timelock(person.client, list(JOB_SQUAD_SPECIALIST, JOB_SQUAD_SMARTGUN), time_required_for_job)) + heavies++ + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Terminator!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat/terminator, TRUE, TRUE) + else + to_chat(person, SPAN_ROLE_HEADER("You are a Whiteout Team Operative!")) + to_chat(person, SPAN_ROLE_BODY("Whiteout protocol is in effect for the target, all assets onboard are to be liquidated with expediency unless otherwise instructed by Weyland Yutani personnel holding the position of Director or above.")) + arm_equipment(person, /datum/equipment_preset/pmc/w_y_whiteout/low_threat, TRUE, TRUE) + + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) //################################################################################################ // Marine commandos - USCM Deathsquad. Event only /datum/emergency_call/marsoc - name = "Marine Raider Strike Team" + name = "Marine Raider Strike Team (!DEATHSQUAD!)" mob_max = 8 mob_min = 5 probability = 0 @@ -81,7 +116,7 @@ return /datum/emergency_call/marsoc_covert - name = "Marine Raider Operatives (Covert)" + name = "Marine Raider Operatives (!DEATHSQUAD! Covert)" mob_max = 8 mob_min = 5 probability = 0 @@ -107,3 +142,27 @@ to_chat(H, SPAN_BOLDNOTICE("You are absolutely loyal to High Command and must follow their directives.")) to_chat(H, SPAN_BOLDNOTICE("Execute the mission assigned to you with extreme prejudice!")) return + + +/datum/emergency_call/marsoc/low_threat + name = "Marine Raider Operatives" + +/datum/emergency_call/marsoc/low_threat/create_member(datum/mind/MIND) + + var/turf/spawn_loc = get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/player = new(spawn_loc) + MIND.transfer_to(player, TRUE) + if(!leader && HAS_FLAG(player.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(player.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader. + leader = player + to_chat(player, SPAN_WARNING(FONT_SIZE_BIG("You are a Marine Raider Team Leader, better than all the rest."))) + arm_equipment(player, /datum/equipment_preset/uscm/marsoc/low_threat/sl, TRUE, TRUE) + else + to_chat(player, SPAN_WARNING(FONT_SIZE_BIG("You are an elite Marine Raider, the best of the best."))) + arm_equipment(player, /datum/equipment_preset/uscm/marsoc/low_threat, TRUE, TRUE) + to_chat(player, SPAN_BOLDNOTICE("You are absolutely loyal to High Command and must follow their directives.")) + to_chat(player, SPAN_BOLDNOTICE("Execute the mission assigned to you with extreme prejudice!")) + return diff --git a/code/datums/emergency_calls/upp_commando.dm b/code/datums/emergency_calls/upp_commando.dm index 14c4af46c27b..1bc2b59ba08c 100644 --- a/code/datums/emergency_calls/upp_commando.dm +++ b/code/datums/emergency_calls/upp_commando.dm @@ -1,7 +1,7 @@ //UPP COMMANDOS /datum/emergency_call/upp_commando - name = "UPP Commandos" + name = "UPP Commandos (!DEATHSQUAD!)" mob_max = 6 probability = 0 objectives = "Stealthily assault the ship. Use your silenced weapons, tranquilizers, and night vision to get the advantage on the enemy. Take out the power systems, comms and engine. Stick together and keep a low profile." @@ -51,3 +51,29 @@ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), H, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) +/datum/emergency_call/upp_commando/low_threat + name = "UPP Commandos" + +/datum/emergency_call/upp_commando/create_member(datum/mind/mind, turf/override_spawn_loc) + var/turf/spawn_loc = override_spawn_loc ? override_spawn_loc : get_spawn_point() + + if(!istype(spawn_loc)) + return //Didn't find a useable spawn point. + + var/mob/living/carbon/human/person = new(spawn_loc) + mind.transfer_to(person, TRUE) + + if(!leader && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_LEADER) && check_timelock(person.client, JOB_SQUAD_LEADER, time_required_for_job)) //First one spawned is always the leader. + leader = person + arm_equipment(person, /datum/equipment_preset/upp/commando/leader/low_threat, TRUE, TRUE) + to_chat(person, SPAN_ROLE_HEADER("You are a Commando Team Leader of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) + else if(medics < max_medics && HAS_FLAG(person.client.prefs.toggles_ert, PLAY_MEDIC) && check_timelock(person.client, JOB_SQUAD_MEDIC, time_required_for_job)) + medics++ + to_chat(person, SPAN_ROLE_HEADER("You are a Commando Medic of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) + arm_equipment(person, /datum/equipment_preset/upp/commando/medic/low_threat, TRUE, TRUE) + else + to_chat(person, SPAN_ROLE_HEADER("You are a Commando of the Union of Progressive People, a powerful socialist state that rivals the United Americas!")) + arm_equipment(person, /datum/equipment_preset/upp/commando/low_threat, TRUE, TRUE) + print_backstory(person) + + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), person, SPAN_BOLD("Objectives: [objectives]")), 1 SECONDS) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 8bc717a0a6aa..966b18fc494b 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -1127,6 +1127,10 @@ GLOBAL_LIST_EMPTY_TYPED(radio_packs, /obj/item/storage/backpack/marine/satchel/r max_storage_space = 21 camo_alpha = 10 +/obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak + desc = "A thermo-optic camouflage cloak commonly used by UPP commando units. This one is less effective than normal." + actions_types = null + //----------TWE SECTION---------- /obj/item/storage/backpack/rmc has_gamemode_skin = FALSE diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index 525909cb621d..acb87e988879 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -683,6 +683,18 @@ new /obj/item/reagent_container/hypospray/autoinjector/stimulant/redemption_stimulant(src) new /obj/item/reagent_container/hypospray/autoinjector/stimulant/speed_stimulant(src) +/obj/item/storage/pouch/medical/socmed/not_op/fill_preset_inventory() + new /obj/item/device/healthanalyzer(src) + new /obj/item/stack/medical/splint(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) + new /obj/item/stack/medical/advanced/ointment(src) + new /obj/item/reagent_container/hypospray/autoinjector/bicaridine(src) + new /obj/item/reagent_container/hypospray/autoinjector/kelotane(src) + new /obj/item/reagent_container/hypospray/autoinjector/oxycodone(src) + new /obj/item/reagent_container/hypospray/autoinjector/emergency(src) + new /obj/item/reagent_container/hypospray/autoinjector/emergency(src) + new /obj/item/tool/extinguisher/mini(src) + /obj/item/storage/pouch/medical/socmed/dutch name = "\improper Dutch's Medical Pouch" desc = "A pouch bought from a black market trader by Dutch quite a few years ago. Rumoured to be stolen from secret USCM assets. Its contents have been slowly used up and replaced over the years." diff --git a/code/modules/gear_presets/upp.dm b/code/modules/gear_presets/upp.dm index 6c361795b4a6..6406cf5301f2 100644 --- a/code/modules/gear_presets/upp.dm +++ b/code/modules/gear_presets/upp.dm @@ -2902,7 +2902,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/upp/commando - name = "UPP Commando" + name = "UPP Commando (!DEATHSQUAD!)" flags = EQUIPMENT_PRESET_EXTRA skills = /datum/skills/commando @@ -3031,7 +3031,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/upp/commando/medic - name = "UPP Commando Medic" + name = "UPP Commando Medic (!DEATHSQUAD!)" flags = EQUIPMENT_PRESET_EXTRA skills = /datum/skills/commando/medic @@ -3200,7 +3200,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/upp/commando/leader - name = "UPP Commando Leader" + name = "UPP Commando Leader (!DEATHSQUAD!)" flags = EQUIPMENT_PRESET_EXTRA skills = /datum/skills/commando/leader @@ -3351,6 +3351,106 @@ list("Drop Pouch", 10, /obj/item/clothing/accessory/storage/droppouch, null, VENDOR_ITEM_REGULAR), ) +/datum/equipment_preset/upp/commando/low_threat + name = "UPP Commando" + +/datum/equipment_preset/upp/commando/low_threat/load_gear(mob/living/carbon/human/new_human) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/kdo, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/commando, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92/suppressed, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) + + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/firstaid/full, WEAR_L_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK) + + spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 8) + +/datum/equipment_preset/upp/commando/medic/low_threat + name = "UPP Commando Medic" + +/datum/equipment_preset/upp/commando/medic/load_gear(mob/living/carbon/human/new_human) + //TODO: add backpacks and satchels + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/kdo/medic, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP/medic, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/commando, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) + + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/medical/lifesaver/upp/full, WEAR_WAIST) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/surgical_line, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/surgery/synthgraft, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/adv, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) + if(new_human.disabilities & NEARSIGHTED) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health/prescription(new_human), WEAR_IN_BACK) + else + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/hud/health(new_human), WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_L_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_JACKET) + + spawn_weapon(/obj/item/weapon/gun/rifle/type71/carbine/commando, /obj/item/ammo_magazine/rifle/type71, new_human, 0, 5) + +/datum/equipment_preset/upp/commando/leader/low_threat + name = "UPP Commando Leader" + +/datum/equipment_preset/upp/commando/leader/load_gear(mob/living/carbon/human/new_human) + //TODO: add backpacks and satchels + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/UPP/kdo/command, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/marine/veteran/UPP, WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/suit/storage/marine/faction/UPP/commando, WEAR_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/type71/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/uppcap/beret, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/satchel/scout_cloak/upp/weak, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/upp, WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/upp, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/upp, WEAR_EYES) + + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/type47/np92/suppressed, WEAR_WAIST) + + new_human.equip_to_slot_or_del(new /obj/item/reagent_container/food/snacks/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus/upp, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/explosive/C4, WEAR_L_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/handcuffs, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/box/handcuffs, WEAR_IN_BACK) + //*****************************************************************************************************/ /datum/equipment_preset/upp/tank diff --git a/code/modules/gear_presets/uscm.dm b/code/modules/gear_presets/uscm.dm index baee71eee8b4..573b8a87342d 100644 --- a/code/modules/gear_presets/uscm.dm +++ b/code/modules/gear_presets/uscm.dm @@ -789,7 +789,7 @@ //############ Marine Raiders ############# //Operator /datum/equipment_preset/uscm/marsoc - name = "Marine Raider" + name = "Marine Raider (!DEATHSQUAD!)" flags = EQUIPMENT_PRESET_EXTRA assignment = "Marine Raider" rank = JOB_MARINE_RAIDER @@ -856,7 +856,7 @@ //Covert Raiders /datum/equipment_preset/uscm/marsoc/covert - name = "Marine Raiders (Covert)" + name = "Marine Raiders (!DEATHSQUAD! Covert)" uses_special_name = TRUE /datum/equipment_preset/uscm/marsoc/covert/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = MALE @@ -867,7 +867,7 @@ //Team Leader /datum/equipment_preset/uscm/marsoc/sl - name = "Marine Raider Team Leader" + name = "Marine Raider Team Leader (!DEATHSQUAD!)" assignment = JOB_MARINE_RAIDER_SL rank = JOB_MARINE_RAIDER_SL role_comm_title = "TL." @@ -884,7 +884,7 @@ //Codenamed Team Leader /datum/equipment_preset/uscm/marsoc/sl/covert - name = "Marine Raider Team Leader (Covert)" + name = "Marine Raider Team Leader (!DEATHSQUAD! Covert)" uses_special_name = TRUE /datum/equipment_preset/uscm/marsoc/sl/covert/load_name(mob/living/carbon/human/new_human, randomise) new_human.gender = MALE @@ -894,7 +894,7 @@ return "O" //Officer /datum/equipment_preset/uscm/marsoc/cmd - name = "Marine Raider Officer" + name = "Marine Raider Officer (!DEATHSQUAD!)" assignment = JOB_MARINE_RAIDER_CMD rank = JOB_MARINE_RAIDER_CMD role_comm_title = "CMD." @@ -906,3 +906,61 @@ if(get_job_playtime(new_human.client, rank) > JOB_PLAYTIME_TIER_3) return "MO4" return paygrade + +/datum/equipment_preset/uscm/marsoc/low_threat + name = "Marine Raider" + +/datum/equipment_preset/uscm/marsoc/low_threat/load_gear(mob/living/carbon/human/new_human) + //back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/marine/marsoc, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/phosphorus, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/motiondetector, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/almayer/sof, WEAR_L_EAR) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/marsoc, WEAR_FACE) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/sof, WEAR_HEAD) + new_human.equip_to_slot_or_del(new /obj/item/prop/helmetgarb/helmet_nvg/marsoc, WEAR_IN_HELMET) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_HELMET) + //uniform + var/obj/item/clothing/under/marine/veteran/marsoc/uniform = new() + var/obj/item/clothing/accessory/storage/black_vest/accessory = new() + uniform.attach_accessory(new_human, accessory) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + for(var/i in 1 to accessory.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/handful/shotgun/buckshot, WEAR_IN_ACCESSORY) + //jacket + var/obj/item/clothing/suit/storage/marine/sof/armor = new() + new_human.equip_to_slot_or_del(armor, WEAR_JACKET) + for(var/i in 1 to armor.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/xm40, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/elite/xm40/ap, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/shotgun/combat/marsoc, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/marine/knife(new_human), WEAR_FEET) + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine, WEAR_HANDS) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/medical/socmed/not_op, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/tools/tactical/full, WEAR_R_STORE) + +/datum/equipment_preset/uscm/marsoc/low_threat/sl + name = "Marine Raider Team Leader" + assignment = JOB_MARINE_RAIDER_SL + rank = JOB_MARINE_RAIDER_SL + role_comm_title = "TL." + paygrade = "MO1" + skills = /datum/skills/commando/deathsquad/leader + + minimap_icon = "leader" + +/datum/equipment_preset/uscm/marsoc/sl/load_rank(mob/living/carbon/human/new_human) + if(new_human.client) + if(get_job_playtime(new_human.client, rank) > JOB_PLAYTIME_TIER_2) + return "MO2" + return paygrade diff --git a/code/modules/gear_presets/whiteout.dm b/code/modules/gear_presets/whiteout.dm index dde564f93375..2028148c8181 100644 --- a/code/modules/gear_presets/whiteout.dm +++ b/code/modules/gear_presets/whiteout.dm @@ -1,5 +1,5 @@ /datum/equipment_preset/pmc/w_y_whiteout - name = "Whiteout Team Operative" + name = "Whiteout Team Operative (!DEATHSQUAD!)" flags = EQUIPMENT_PRESET_EXTRA uses_special_name = TRUE //We always use a codename! faction = FACTION_WY_DEATHSQUAD @@ -130,7 +130,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/pmc/w_y_whiteout/terminator - name = "Whiteout Team Terminator" + name = "Whiteout Team Terminator (!DEATHSQUAD!)" flags = EQUIPMENT_PRESET_EXTRA assignment = "Whiteout Team Terminator" role_comm_title = "WO-TT" @@ -170,7 +170,7 @@ //*****************************************************************************************************/ /datum/equipment_preset/pmc/w_y_whiteout/leader - name = "Whiteout Team Leader" + name = "Whiteout Team Leader (!DEATHSQUAD!)" flags = EQUIPMENT_PRESET_EXTRA assignment = "Whiteout Team Leader" role_comm_title = "WO-TL" @@ -216,3 +216,182 @@ var/obj/item/device/internal_implant/agility/implant = new() implant.on_implanted(new_human) + +//*****************************************************************************************************/ + +/datum/equipment_preset/pmc/w_y_whiteout/low_threat + name = "Whiteout Team Operative" + +/datum/equipment_preset/pmc/w_y_whiteout/low_threat/load_gear(mob/living/carbon/human/new_human) + // back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/commando, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/nanopaste, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/synth, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/flamer_tank, WEAR_IN_BACK) + + + //face + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/m42c, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/leader, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/commando, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc/commando, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/pmc/commando/uniform = new() + var/obj/item/clothing/accessory/storage/webbing/accessory = new() + uniform.attach_accessory(new_human, accessory) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + for(var/i in 1 to accessory.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/pmc, WEAR_IN_ACCESSORY) + //jacket + var/obj/item/clothing/suit/storage/marine/veteran/pmc/commando/armor = new() + new_human.equip_to_slot_or_del(armor, WEAR_JACKET) + for(var/i in 1 to armor.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/elite, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/flamer/deathsquad/standard, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc/commando, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/commando/knife, WEAR_FEET) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_rifle, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_rifle, WEAR_L_STORE) + + var/obj/item/device/internal_implant/agility/implant = new() + implant.on_implanted(new_human) + +//*****************************************************************************************************/ + +/datum/equipment_preset/pmc/w_y_whiteout/low_threat/medic + name = "Whiteout Team Medic" + +/datum/equipment_preset/pmc/w_y_whiteout/low_threat/medic/load_gear(mob/living/carbon/human/new_human) + // back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/commando, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/synth, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/synth, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/synth, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/synth, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/healthanalyzer, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/device/defibrillator/upgraded, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/roller, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/medhud, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/leader, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/commando, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc/commando, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/pmc/commando/uniform = new() + var/obj/item/clothing/accessory/storage/webbing/accessory = new() + uniform.attach_accessory(new_human, accessory) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + for(var/i in 1 to accessory.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/stack/nanopaste, WEAR_IN_ACCESSORY) + //jacket + var/obj/item/clothing/suit/storage/marine/veteran/pmc/commando/armor = new() + new_human.equip_to_slot_or_del(armor, WEAR_JACKET) + for(var/i in 1 to armor.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/m39/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/m39/elite, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/flamer/deathsquad/standard, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc/commando, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/commando/knife, WEAR_FEET) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_m39, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_m39, WEAR_R_STORE) + + var/obj/item/device/internal_implant/agility/implant = new() + implant.on_implanted(new_human) + +/datum/equipment_preset/pmc/w_y_whiteout/low_threat/terminator + name = "Whiteout Team Terminator" + +/datum/equipment_preset/pmc/w_y_whiteout/low_threat/terminator/load_gear(mob/living/carbon/human/new_human) + //face + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/leader, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/commando, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc/commando, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/pmc/commando/uniform = new() + var/obj/item/clothing/accessory/storage/webbing/accessory = new() + uniform.attach_accessory(new_human, accessory) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + for(var/i in 1 to accessory.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/pmc, WEAR_IN_ACCESSORY) + //jacket + var/obj/item/clothing/suit/storage/marine/smartgunner/veteran/pmc/terminator/armor = new() + new_human.equip_to_slot_or_del(armor, WEAR_JACKET) + for(var/i in 1 to armor.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/stack/nanopaste, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/smartgun/dirty, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/smartgunner/pmc/full, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc/commando, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/commando/knife, WEAR_FEET) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_sg, WEAR_R_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_sg, WEAR_L_STORE) + + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m56_goggles/whiteout, WEAR_EYES) + + var/obj/item/device/internal_implant/agility/implant = new() + implant.on_implanted(new_human) + +//*****************************************************************************************************/ +/datum/equipment_preset/pmc/w_y_whiteout/low_threat/leader + name = "Whiteout Team Leader" + +/datum/equipment_preset/pmc/w_y_whiteout/low_threat/leader/load_gear(mob/living/carbon/human/new_human) + // back + new_human.equip_to_slot_or_del(new /obj/item/storage/backpack/commando, WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/nanopaste, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/stack/nanopaste, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/tool/crowbar/tactical, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/explosive/plastic/breaching_charge, WEAR_IN_BACK) + new_human.equip_to_slot_or_del(new /obj/item/storage/firstaid/synth, WEAR_IN_BACK) + //face + new_human.equip_to_slot_or_del(new /obj/item/clothing/glasses/night/m42_night_goggles/m42c, WEAR_EYES) + new_human.equip_to_slot_or_del(new /obj/item/clothing/mask/gas/pmc/leader, WEAR_FACE) + new_human.equip_to_slot_or_del(new /obj/item/device/radio/headset/distress/commando, WEAR_L_EAR) + //head + new_human.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/marine/veteran/pmc/commando, WEAR_HEAD) + //uniform + var/obj/item/clothing/under/marine/veteran/pmc/commando/uniform = new() + var/obj/item/clothing/accessory/storage/webbing/accessory = new() + uniform.attach_accessory(new_human, accessory) + new_human.equip_to_slot_or_del(uniform, WEAR_BODY) + for(var/i in 1 to accessory.hold.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/explosive/grenade/high_explosive/pmc, WEAR_IN_ACCESSORY) + //jacket + var/obj/item/clothing/suit/storage/marine/veteran/pmc/commando/armor = new() + new_human.equip_to_slot_or_del(armor, WEAR_JACKET) + for(var/i in 1 to armor.storage_slots) + new_human.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/ap, WEAR_IN_JACKET) + new_human.equip_to_slot_or_del(new /obj/item/weapon/gun/rifle/m41a/elite, WEAR_J_STORE) + //waist + new_human.equip_to_slot_or_del(new /obj/item/storage/belt/gun/mateba/full, WEAR_WAIST) + //limbs + new_human.equip_to_slot_or_del(new /obj/item/clothing/gloves/marine/veteran/pmc/commando, WEAR_HANDS) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/veteran/pmc/commando/knife, WEAR_FEET) + //pockets + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_rifle, WEAR_L_STORE) + new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/magazine/large/pmc_rifle, WEAR_R_STORE) + + var/obj/item/device/internal_implant/agility/implant = new() + implant.on_implanted(new_human) diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 323e994529ae..44fe816c0e6a 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -250,6 +250,9 @@ /obj/item/weapon/gun/flamer/deathsquad/nolock flags_gun_features = GUN_WIELDED_FIRING_ONLY +/obj/item/weapon/gun/flamer/deathsquad/standard + current_mag = /obj/item/ammo_magazine/flamer_tank + /obj/item/weapon/gun/flamer/M240T name = "\improper M240-T incinerator unit" desc = "An improved version of the M240A1 incinerator unit, the M240-T model is capable of dispersing a larger variety of fuel types." diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm index 65e4a6f2b7b3..1ee8aa189ed3 100644 --- a/code/modules/projectiles/guns/rifles.dm +++ b/code/modules/projectiles/guns/rifles.dm @@ -357,6 +357,8 @@ burst_scatter_mult = SCATTER_AMOUNT_TIER_10 scatter_unwielded = SCATTER_AMOUNT_TIER_4 +/obj/item/weapon/gun/rifle/m41a/elite/xm40/ap + current_mag = /obj/item/ammo_magazine/rifle/xm40 //------------------------------------------------------- //M41A TRUE AND ORIGINAL From e1b59d5b33d0b04786c2f115ccfb937350d60e86 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 11:44:24 +0000 Subject: [PATCH 045/355] Automatic changelog for PR #4874 [ci skip] --- html/changelogs/AutoChangeLog-pr-4874.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4874.yml diff --git a/html/changelogs/AutoChangeLog-pr-4874.yml b/html/changelogs/AutoChangeLog-pr-4874.yml new file mode 100644 index 000000000000..27ca1368c5f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4874.yml @@ -0,0 +1,4 @@ +author: "Releasethesea" +delete-after: True +changes: + - rscadd: "Adds functional bedrolls to the game." \ No newline at end of file From 942526719908b3cf0179c82d41911eca7efa8bd3 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 13 Nov 2023 12:22:23 +0000 Subject: [PATCH 046/355] WIP --- code/modules/mob/living/carbon/xenomorph/update_icons.dm | 4 ++-- code/modules/mob/living/simple_animal/hostile/alien.dm | 4 ++-- code/modules/mob/mob_helpers.dm | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/update_icons.dm b/code/modules/mob/living/carbon/xenomorph/update_icons.dm index 9e1eb7a0d06e..880f23f2d8b4 100644 --- a/code/modules/mob/living/carbon/xenomorph/update_icons.dm +++ b/code/modules/mob/living/carbon/xenomorph/update_icons.dm @@ -299,10 +299,10 @@ health_threshold = max(CEILING((health * 4) / (maxHealth), 1), 0) //From 0 to 4, in 25% chunks if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) - wound_icon_carrier.icon_state = "none" + wound_icon_holder.icon_state = "none" else if(body_position == LYING_DOWN) if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) - wound_icon_carrier.icon_state = "[caste.caste_type]_rest_[health_threshold]" + wound_icon_holder.icon_state = "[caste.caste_type]_rest_[health_threshold]" else wound_icon_holder.icon_state = "[caste.caste_type]_downed_[health_threshold]" else if(!handle_special_state()) diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index ae5637970599..6e8d0b8a2867 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -113,10 +113,10 @@ var/health_threshold = max(CEILING((health * 4) / (maxHealth), 1), 0) //From 0 to 4, in 25% chunks if(health > HEALTH_THRESHOLD_DEAD) if(health_threshold > 3) - wound_icon_carrier.icon_state = "none" + wound_icon_holder.icon_state = "none" else if(body_position == LYING_DOWN) if(!HAS_TRAIT(src, TRAIT_INCAPACITATED) && !HAS_TRAIT(src, TRAIT_FLOORED)) - wound_icon_carrier.icon_state = "[caste_name]_rest_[health_threshold]" + wound_icon_holder.icon_state = "[caste_name]_rest_[health_threshold]" else wound_icon_holder.icon_state = "[caste_name]_downed_[health_threshold]" else diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index c384303e71e8..a491697fdc1d 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -314,6 +314,7 @@ var/global/list/limb_types_by_name = list( /// Returns if the mob is incapacitated and unable to perform general actions /mob/proc/is_mob_incapacitated(ignore_restrained) // note that stat includes knockout via unconscious + // TODO: re-re-re-figure out if we need TRAIT_FLOORED here or using TRAIT_INCAPACITATED only is acceptable deviance from legacy behavior return (stat || (!ignore_restrained && is_mob_restrained()) || (status_flags & FAKEDEATH) || HAS_TRAIT(src, TRAIT_INCAPACITATED)) /mob/proc/get_eye_protection() return EYE_PROTECTION_NONE From 651974a0e60bfce0b98a1d3c3253ad0eb777438a Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 13 Nov 2023 12:32:24 +0000 Subject: [PATCH 047/355] watch this blow up --- code/modules/mob/living/living_health_procs.dm | 5 ----- code/modules/mob/mob.dm | 2 ++ 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index d808e7806a19..dec1af897d4e 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -489,11 +489,6 @@ var/mob/living/carbon/human/H = src H.update_body() -/mob/living/canface() - if(!(mobility_flags & MOBILITY_MOVE)) - return FALSE // Choice by default, feel free to change - return ..() - /mob/living/keybind_face_direction(direction) if(!canface()) return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5b4d8bb08003..2e8a5bcf16b3 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -705,6 +705,8 @@ note dizziness decrements automatically in the mob's Life() proc. if(anchored) return 0 if(monkeyizing) return 0 if(is_mob_restrained()) return 0 + if(HAS_TRAIT(src, TRAIT_INCAPACITATED)) // We allow rotation if simply floored + return FALSE return 1 /mob/proc/face_dir(ndir, specific_dir) From 66e955747d0b18477465c8e813065c185d38ac0e Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 13 Nov 2023 12:38:13 +0000 Subject: [PATCH 048/355] Automatic changelog for PR #4466 [ci skip] --- html/changelogs/AutoChangeLog-pr-4466.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4466.yml diff --git a/html/changelogs/AutoChangeLog-pr-4466.yml b/html/changelogs/AutoChangeLog-pr-4466.yml new file mode 100644 index 000000000000..0a9a0bdf0355 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4466.yml @@ -0,0 +1,5 @@ +author: "Steelpoint" +delete-after: True +changes: + - rscadd: "Less powerful variants of the Commando ERTs (Marsoc, WY Whiteout, UPP Commandos) have been added for admin use." + - admin: "The powerful versions of commando ERTs are denoted with (!DEATHSQUAD!) in the distress call and equipment preset menus." \ No newline at end of file From 54bea0359f0eaced079c5a8d1fc72457792cfbc4 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 13 Nov 2023 12:43:05 +0000 Subject: [PATCH 049/355] reverted sent changes --- code/datums/ammo/xeno.dm | 15 +++++++++------ code/modules/mob/living/living_health_procs.dm | 8 ++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/code/datums/ammo/xeno.dm b/code/datums/ammo/xeno.dm index 8e20a1ccb38c..9ecc9ebf9321 100644 --- a/code/datums/ammo/xeno.dm +++ b/code/datums/ammo/xeno.dm @@ -49,8 +49,9 @@ if(!isxeno(M)) if(insta_neuro) - M.adjust_effect(1 * power, WEAKEN) - return + if(M.GetKnockDownValueNotADurationDoNotUse() < 3) // If they have less than somewhere random between 4 and 6 seconds KD left and assuming it doesnt get refreshed itnernally + M.adjust_effect(1 * power, WEAKEN) + return if(ishuman(M)) M.apply_effect(2.5, SUPERSLOW) @@ -64,8 +65,9 @@ no_clothes_neuro = TRUE if(no_clothes_neuro) - M.adjust_effect(1 * power, WEAKEN) // KD them a bit more - M.visible_message(SPAN_DANGER("[M] falls prone.")) + if(M.GetKnockDownValueNotADurationDoNotUse() < 5) // If they have less than somewhere random between 8 and 10 seconds KD left and assuming it doesnt get refreshed itnernally + M.adjust_effect(1 * power, WEAKEN) // KD them a bit more + M.visible_message(SPAN_DANGER("[M] falls prone.")) /proc/apply_scatter_neuro(mob/living/M) if(ishuman(M)) @@ -77,8 +79,9 @@ H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!")) return - M.apply_effect(0.5, WEAKEN) - M.visible_message(SPAN_DANGER("[M] falls prone.")) + if(M.GetKnockDownValueNotADurationDoNotUse() < 0.7) // basically (knocked_down && prob(90)) + M.apply_effect(0.7, WEAKEN) + M.visible_message(SPAN_DANGER("[M] falls prone.")) /datum/ammo/xeno/toxin/on_hit_mob(mob/M,obj/projectile/P) if(ishuman(M)) diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index dec1af897d4e..0cd59ded16fd 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -496,3 +496,11 @@ return face_dir(direction) return ..() + +// Transition handlers. do NOT use this. I mean seriously don't. It's broken. Players love their broken behaviors. +/mob/living/proc/GetStunValueNotADurationDoNotUse() + return stunned +/mob/living/proc/GetKnockDownValueNotADurationDoNotUse() + return knocked_down +/mob/living/proc/GetKnockOutValueNotADurationDoNotUse() + return knocked_out From ddb1ff62bc0801ee8e791f379c04b227bf25781f Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 13 Nov 2023 12:49:12 +0000 Subject: [PATCH 050/355] missing trait in trait list --- code/__DEFINES/traits.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index ece9b81b503b..375c87cd6571 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -306,6 +306,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( /mob = list( "TRAIT_KNOCKEDOUT" = TRAIT_KNOCKEDOUT, "TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED, + "TRAIT_INCAPACITATED" = TRAIT_INCAPACITATED, "TRAIT_FLOORED" = TRAIT_FLOORED, "TRAIT_UNDENSE" = TRAIT_UNDENSE, "TRAIT_YAUTJA_TECH" = TRAIT_YAUTJA_TECH, From b6393a1f63e66b0d0c3d4a0350e764bb0828cc94 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 13 Nov 2023 12:58:54 +0000 Subject: [PATCH 051/355] fix explosion crawling --- code/modules/mob/living/carbon/human/human.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 52421c3cab0d..d7601c504e5a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -170,10 +170,10 @@ var/obj/item/item1 = get_active_hand() var/obj/item/item2 = get_inactive_hand() apply_effect(round(knockdown_minus_armor), WEAKEN) + apply_effect(round(knockdown_minus_armor), STUN) // Remove this to let people crawl after an explosion. Funny but perhaps not desirable. var/knockout_value = damage * 0.1 var/knockout_minus_armor = min(knockout_value * bomb_armor_mult * 0.5, 0.5 SECONDS) // the KO time is halved from the knockdown timer. basically same stun time, you just spend less time KO'd. apply_effect(round(knockout_minus_armor), PARALYZE) - apply_effect(round(knockout_minus_armor), STUN) // Remove this to let people crawl after an explosion. Funny but perhaps not desirable. apply_effect(round(knockout_minus_armor) * 2, DAZE) explosion_throw(severity, direction) From 084c827b07f3a4d470ed47fe2a26f44240f28e16 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 13 Nov 2023 13:06:54 +0000 Subject: [PATCH 052/355] explicit explosion stun --- code/modules/mob/living/carbon/human/human.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index c4b9665a218c..d7601c504e5a 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -170,6 +170,7 @@ var/obj/item/item1 = get_active_hand() var/obj/item/item2 = get_inactive_hand() apply_effect(round(knockdown_minus_armor), WEAKEN) + apply_effect(round(knockdown_minus_armor), STUN) // Remove this to let people crawl after an explosion. Funny but perhaps not desirable. var/knockout_value = damage * 0.1 var/knockout_minus_armor = min(knockout_value * bomb_armor_mult * 0.5, 0.5 SECONDS) // the KO time is halved from the knockdown timer. basically same stun time, you just spend less time KO'd. apply_effect(round(knockout_minus_armor), PARALYZE) From 29acd0d84351344a46f65adbcdb344eda9b35d28 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 14 Nov 2023 01:09:28 +0000 Subject: [PATCH 053/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4466.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4873.yml | 4 --- html/changelogs/AutoChangeLog-pr-4874.yml | 4 --- html/changelogs/AutoChangeLog-pr-4879.yml | 4 --- html/changelogs/AutoChangeLog-pr-4882.yml | 4 --- html/changelogs/AutoChangeLog-pr-4884.yml | 4 --- html/changelogs/AutoChangeLog-pr-4889.yml | 4 --- html/changelogs/AutoChangeLog-pr-4890.yml | 4 --- html/changelogs/AutoChangeLog-pr-4891.yml | 4 --- html/changelogs/AutoChangeLog-pr-4893.yml | 4 --- html/changelogs/AutoChangeLog-pr-4894.yml | 4 --- html/changelogs/AutoChangeLog-pr-4897.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4899.yml | 4 --- html/changelogs/AutoChangeLog-pr-4906.yml | 4 --- html/changelogs/AutoChangeLog-pr-4910.yml | 4 --- html/changelogs/archive/2023-11.yml | 32 +++++++++++++++++++++++ 16 files changed, 32 insertions(+), 62 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4466.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4873.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4874.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4879.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4882.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4884.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4889.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4890.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4891.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4893.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4894.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4897.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4899.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4906.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4910.yml diff --git a/html/changelogs/AutoChangeLog-pr-4466.yml b/html/changelogs/AutoChangeLog-pr-4466.yml deleted file mode 100644 index 0a9a0bdf0355..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4466.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - rscadd: "Less powerful variants of the Commando ERTs (Marsoc, WY Whiteout, UPP Commandos) have been added for admin use." - - admin: "The powerful versions of commando ERTs are denoted with (!DEATHSQUAD!) in the distress call and equipment preset menus." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4873.yml b/html/changelogs/AutoChangeLog-pr-4873.yml deleted file mode 100644 index 404186a3e1c9..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4873.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Releasethesea" -delete-after: True -changes: - - bugfix: "Fixxed the improperly area'd hull south of construction site, adds fire shutters to north fueling pod to make it mirror the south one" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4874.yml b/html/changelogs/AutoChangeLog-pr-4874.yml deleted file mode 100644 index 27ca1368c5f5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4874.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Releasethesea" -delete-after: True -changes: - - rscadd: "Adds functional bedrolls to the game." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4879.yml b/html/changelogs/AutoChangeLog-pr-4879.yml deleted file mode 100644 index cede9d3da3ff..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4879.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed an issue in traits backend update causing among others leadership action buttons to be missing." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4882.yml b/html/changelogs/AutoChangeLog-pr-4882.yml deleted file mode 100644 index c7fb30820171..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4882.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BraveMole, Zonespace" -delete-after: True -changes: - - bugfix: "Guns should no longer very rarely jam mid-burst." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4884.yml b/html/changelogs/AutoChangeLog-pr-4884.yml deleted file mode 100644 index 78950c4b43e9..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4884.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Releasethesea" -delete-after: True -changes: - - rscadd: "Adds Colonial Space Grunts to rec vend aswell as several pens and Dice for playing the game." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4889.yml b/html/changelogs/AutoChangeLog-pr-4889.yml deleted file mode 100644 index f5d054772715..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4889.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed ghost droppods appearing when launching crates by Echo pad." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4890.yml b/html/changelogs/AutoChangeLog-pr-4890.yml deleted file mode 100644 index a97e5129371c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4890.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - rscadd: "Observer with Security HUD enabled can examine and read security records." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4891.yml b/html/changelogs/AutoChangeLog-pr-4891.yml deleted file mode 100644 index 171d7447fa24..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4891.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - rscadd: "Toggle HUD button to ghost UI" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4893.yml b/html/changelogs/AutoChangeLog-pr-4893.yml deleted file mode 100644 index b07b3b6f66d3..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4893.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - code_imp: "Replaces burrow var from Xenomorph with burrowed trait" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4894.yml b/html/changelogs/AutoChangeLog-pr-4894.yml deleted file mode 100644 index c55c2cdc4086..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4894.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "BeagleGaming1" -delete-after: True -changes: - - rscdel: "Removes icon baking on surfaces (primarily seen on tables)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4897.yml b/html/changelogs/AutoChangeLog-pr-4897.yml deleted file mode 100644 index 2afee7c29f7f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4897.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Boiler acid shroud now works on hotkey 5" - - code_imp: "Replaces single letter vars and removes unused code for boiler." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4899.yml b/html/changelogs/AutoChangeLog-pr-4899.yml deleted file mode 100644 index 3fbcc6ec0be8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4899.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - code_imp: "Starts refactoring some vars on xenomorph class" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4906.yml b/html/changelogs/AutoChangeLog-pr-4906.yml deleted file mode 100644 index 4b058bcd6a76..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4906.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpartanBobby" -delete-after: True -changes: - - maptweak: "fixes broken sidewalk on bigred" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4910.yml b/html/changelogs/AutoChangeLog-pr-4910.yml deleted file mode 100644 index dbc366c56510..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4910.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Ediblebomb" -delete-after: True -changes: - - qol: "Changed \"Subject is brain-dead.\" to \"Subject has taken extreme amounts of brain damage.\" when scanning somebody with 100 brain damage." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index f72503ae13eb..20675d53516a 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -176,3 +176,35 @@ SpartanBobby Tophatpenguin: - maptweak: redetails a room on the upper deck of the USS Almayer, places a few L42As in this room +2023-11-14: + BeagleGaming1: + - rscdel: Removes icon baking on surfaces (primarily seen on tables) + Birdtalon: + - bugfix: Boiler acid shroud now works on hotkey 5 + - code_imp: Replaces single letter vars and removes unused code for boiler. + - code_imp: Replaces burrow var from Xenomorph with burrowed trait + - code_imp: Starts refactoring some vars on xenomorph class + - rscadd: Observer with Security HUD enabled can examine and read security records. + - rscadd: Toggle HUD button to ghost UI + BraveMole, Zonespace: + - bugfix: Guns should no longer very rarely jam mid-burst. + Ediblebomb: + - qol: Changed "Subject is brain-dead." to "Subject has taken extreme amounts of + brain damage." when scanning somebody with 100 brain damage. + Releasethesea: + - bugfix: Fixxed the improperly area'd hull south of construction site, adds fire + shutters to north fueling pod to make it mirror the south one + - rscadd: Adds Colonial Space Grunts to rec vend aswell as several pens and Dice + for playing the game. + - rscadd: Adds functional bedrolls to the game. + SpartanBobby: + - maptweak: fixes broken sidewalk on bigred + Steelpoint: + - rscadd: Less powerful variants of the Commando ERTs (Marsoc, WY Whiteout, UPP + Commandos) have been added for admin use. + - admin: The powerful versions of commando ERTs are denoted with (!DEATHSQUAD!) + in the distress call and equipment preset menus. + fira: + - bugfix: Fixed ghost droppods appearing when launching crates by Echo pad. + - bugfix: Fixed an issue in traits backend update causing among others leadership + action buttons to be missing. From dcab36b4a60ec7e126e3cdc42d894c4812aceeb0 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Tue, 14 Nov 2023 05:52:22 +0000 Subject: [PATCH 054/355] Runner: replace single letter vars (#4898) # About the pull request Replaces single letter vars in runner code. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Replaced single letter vars in runner code. /:cl: --------- Co-authored-by: fira --- .../abilities/runner/runner_powers.dm | 169 +++++++++--------- .../living/carbon/xenomorph/castes/Runner.dm | 6 +- 2 files changed, 87 insertions(+), 88 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm index 71f994612279..06bf3e0e2e0a 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/runner/runner_powers.dm @@ -1,151 +1,150 @@ -/datum/action/xeno_action/activable/runner_skillshot/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner - if (!istype(X)) +/datum/action/xeno_action/activable/runner_skillshot/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner + if (!istype(xeno)) return if (!action_cooldown_check()) return - if(!A || A.layer >= FLY_LAYER || !isturf(X.loc) || !X.check_state()) + if(!affected_atom || affected_atom.layer >= FLY_LAYER || !isturf(xeno.loc) || !xeno.check_state()) return if (!check_and_use_plasma_owner()) return - X.visible_message(SPAN_XENOWARNING("[X] fires a burst of bone chips at [A]!"), SPAN_XENOWARNING("You fire a burst of bone chips at [A]!")) + xeno.visible_message(SPAN_XENOWARNING("[xeno] fires a burst of bone chips at [affected_atom]!"), SPAN_XENOWARNING("You fire a burst of bone chips at [affected_atom]!")) - var/turf/target = locate(A.x, A.y, A.z) - var/obj/projectile/P = new /obj/projectile(X.loc, create_cause_data(initial(X.caste_type), X)) + var/turf/target = locate(affected_atom.x, affected_atom.y, affected_atom.z) + var/obj/projectile/projectile = new /obj/projectile(xeno.loc, create_cause_data(initial(xeno.caste_type), xeno)) - var/datum/ammo/ammoDatum = GLOB.ammo_list[ammo_type] + var/datum/ammo/ammo_datum = GLOB.ammo_list[ammo_type] - P.generate_bullet(ammoDatum) + projectile.generate_bullet(ammo_datum) - P.fire_at(target, X, X, ammoDatum.max_range, ammoDatum.shell_speed) + projectile.fire_at(target, xeno, xeno, ammo_datum.max_range, ammo_datum.shell_speed) apply_cooldown() return ..() -/datum/action/xeno_action/activable/acider_acid/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner - if(!istype(A, /obj/item) && !istype(A, /obj/structure/) && !istype(A, /obj/vehicle/multitile)) - to_chat(X, SPAN_XENOHIGHDANGER("Can only melt barricades and items!")) +/datum/action/xeno_action/activable/acider_acid/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner + if(!istype(affected_atom, /obj/item) && !istype(affected_atom, /obj/structure/) && !istype(affected_atom, /obj/vehicle/multitile)) + to_chat(xeno, SPAN_XENOHIGHDANGER("Can only melt barricades and items!")) return - var/datum/behavior_delegate/runner_acider/BD = X.behavior_delegate - if (!istype(BD)) + var/datum/behavior_delegate/runner_acider/behavior_delegate = xeno.behavior_delegate + if (!istype(behavior_delegate)) return - if(BD.acid_amount < acid_cost) - to_chat(X, SPAN_XENOHIGHDANGER("Not enough acid stored!")) + if(behavior_delegate.acid_amount < acid_cost) + to_chat(xeno, SPAN_XENOHIGHDANGER("Not enough acid stored!")) return - X.corrosive_acid(A, acid_type, 0) - for(var/obj/item/explosive/plastic/E in A.contents) - X.corrosive_acid(E,acid_type,0) + xeno.corrosive_acid(affected_atom, acid_type, 0) + for(var/obj/item/explosive/plastic/plastic_explosive in affected_atom.contents) + xeno.corrosive_acid(plastic_explosive, acid_type, 0) return ..() -/mob/living/carbon/xenomorph/runner/corrosive_acid(atom/O, acid_type, plasma_cost) +/mob/living/carbon/xenomorph/runner/corrosive_acid(atom/affected_atom, acid_type, plasma_cost) if (mutation_type != RUNNER_ACIDER) - ..(O, acid_type, plasma_cost) - return - if(!O.Adjacent(src)) - if(istype(O,/obj/item/explosive/plastic)) - var/obj/item/explosive/plastic/E = O - if(E.plant_target && !E.plant_target.Adjacent(src)) - to_chat(src, SPAN_WARNING("You can't reach [O].")) + return ..() + if(!affected_atom.Adjacent(src)) + if(istype(affected_atom,/obj/item/explosive/plastic)) + var/obj/item/explosive/plastic/plastic_explosive = affected_atom + if(plastic_explosive.plant_target && !plastic_explosive.plant_target.Adjacent(src)) + to_chat(src, SPAN_WARNING("You can't reach [affected_atom].")) return else - to_chat(src, SPAN_WARNING("[O] is too far away.")) + to_chat(src, SPAN_WARNING("[affected_atom] is too far away.")) return if(!isturf(loc) || HAS_TRAIT(src, TRAIT_ABILITY_BURROWED)) - to_chat(src, SPAN_WARNING("You can't melt [O] from here!")) + to_chat(src, SPAN_WARNING("You can't melt [affected_atom] from here!")) return - face_atom(O) + face_atom(affected_atom) var/wait_time = 10 - var/turf/T = get_turf(O) + var/turf/turf = get_turf(affected_atom) - for(var/obj/effect/xenomorph/acid/A in T) - if(acid_type == A.type && A.acid_t == O) - to_chat(src, SPAN_WARNING("[A] is already drenched in acid.")) + for(var/obj/effect/xenomorph/acid/acid in turf) + if(acid_type == acid.type && acid.acid_t == affected_atom) + to_chat(src, SPAN_WARNING("[affected_atom] is already drenched in acid.")) return - var/obj/I + var/obj/object //OBJ CHECK - if(isobj(O)) - I = O + if(isobj(affected_atom)) + object = affected_atom - if(istype(O, /obj/structure/window_frame)) - var/obj/structure/window_frame/WF = O - if(WF.reinforced && acid_type != /obj/effect/xenomorph/acid/strong) - to_chat(src, SPAN_WARNING("This [O.name] is too tough to be melted by your weak acid.")) + if(istype(object, /obj/structure/window_frame)) + var/obj/structure/window_frame/window_frame = object + if(window_frame.reinforced && acid_type != /obj/effect/xenomorph/acid/strong) + to_chat(src, SPAN_WARNING("This [object.name] is too tough to be melted by your weak acid.")) return - wait_time = I.get_applying_acid_time() + wait_time = object.get_applying_acid_time() if(wait_time == -1) - to_chat(src, SPAN_WARNING("You cannot dissolve \the [I].")) + to_chat(src, SPAN_WARNING("You cannot dissolve [object].")) return else - to_chat(src, SPAN_WARNING("You cannot dissolve [O].")) + to_chat(src, SPAN_WARNING("You cannot dissolve [affected_atom].")) return wait_time = wait_time / 4 if(!do_after(src, wait_time, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) return // AGAIN BECAUSE SOMETHING COULD'VE ACIDED THE PLACE - for(var/obj/effect/xenomorph/acid/A in T) - if(acid_type == A.type && A.acid_t == O) - to_chat(src, SPAN_WARNING("[A] is already drenched in acid.")) + for(var/obj/effect/xenomorph/acid/acid in turf) + if(acid_type == acid.type && acid.acid_t == affected_atom) + to_chat(src, SPAN_WARNING("[acid] is already drenched in acid.")) return if(!check_state()) return - if(!O || QDELETED(O)) //Some logic. + if(!affected_atom || QDELETED(affected_atom)) //Some logic. return - if(!O.Adjacent(src) || (I && !isturf(I.loc)))//not adjacent or inside something - if(istype(O,/obj/item/explosive/plastic)) - var/obj/item/explosive/plastic/E = O - if(E.plant_target && !E.plant_target.Adjacent(src)) - to_chat(src, SPAN_WARNING("You can't reach [O].")) + if(!affected_atom.Adjacent(src) || (object && !isturf(object.loc)))//not adjacent or inside something + if(istype(affected_atom, /obj/item/explosive/plastic)) + var/obj/item/explosive/plastic/plastic_explosive = affected_atom + if(plastic_explosive.plant_target && !plastic_explosive.plant_target.Adjacent(src)) + to_chat(src, SPAN_WARNING("You can't reach [affected_atom].")) return else - to_chat(src, SPAN_WARNING("[O] is too far away.")) + to_chat(src, SPAN_WARNING("[affected_atom] is too far away.")) return - var/datum/behavior_delegate/runner_acider/BD = behavior_delegate - if (!istype(BD)) + var/datum/behavior_delegate/runner_acider/behavior_del = behavior_delegate + if (!istype(behavior_del)) return - if(BD.acid_amount < BD.melt_acid_cost) + if(behavior_del.acid_amount < behavior_del.melt_acid_cost) to_chat(src, SPAN_XENOHIGHDANGER("Not enough acid stored!")) return - BD.modify_acid(-BD.melt_acid_cost) + behavior_del.modify_acid(-behavior_del.melt_acid_cost) - var/obj/effect/xenomorph/acid/A = new acid_type(T, O) + var/obj/effect/xenomorph/acid/acid = new acid_type(turf, affected_atom) - if(istype(O, /obj/vehicle/multitile)) - var/obj/vehicle/multitile/R = O - R.take_damage_type(20 / A.acid_delay, "acid", src) - visible_message(SPAN_XENOWARNING("[src] vomits globs of vile stuff at \the [O]. It sizzles under the bubbling mess of acid!"), \ - SPAN_XENOWARNING("You vomit globs of vile stuff at [O]. It sizzles under the bubbling mess of acid!"), null, 5) + if(istype(affected_atom, /obj/vehicle/multitile)) + var/obj/vehicle/multitile/multitile_vehicle = affected_atom + multitile_vehicle.take_damage_type(20 / acid.acid_delay, "acid", src) + visible_message(SPAN_XENOWARNING("[src] vomits globs of vile stuff at [multitile_vehicle]. It sizzles under the bubbling mess of acid!"), \ + SPAN_XENOWARNING("You vomit globs of vile stuff at [multitile_vehicle]. It sizzles under the bubbling mess of acid!"), null, 5) playsound(loc, "sound/bullets/acid_impact1.ogg", 25) - QDEL_IN(A, 20) + QDEL_IN(acid, 20) return - A.add_hiddenprint(src) - A.name += " ([O])" + acid.add_hiddenprint(src) + acid.name += " ([affected_atom])" - visible_message(SPAN_XENOWARNING("[src] vomits globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!"), \ - SPAN_XENOWARNING("You vomit globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!"), null, 5) + visible_message(SPAN_XENOWARNING("[src] vomits globs of vile stuff all over [affected_atom]. It begins to sizzle and melt under the bubbling mess of acid!"), \ + SPAN_XENOWARNING("You vomit globs of vile stuff all over [affected_atom]. It begins to sizzle and melt under the bubbling mess of acid!"), null, 5) playsound(loc, "sound/bullets/acid_impact1.ogg", 25) -/datum/action/xeno_action/activable/acider_for_the_hive/use_ability(atom/A) +/datum/action/xeno_action/activable/acider_for_the_hive/use_ability(atom/affected_atom) var/mob/living/carbon/xenomorph/xeno = owner if(!istype(xeno)) @@ -169,15 +168,15 @@ if(xeno.mutation_type != RUNNER_ACIDER) return - var/datum/behavior_delegate/runner_acider/BD = xeno.behavior_delegate - if(!istype(BD)) + var/datum/behavior_delegate/runner_acider/behavior_delegate = xeno.behavior_delegate + if(!istype(behavior_delegate)) return - if(BD.caboom_trigger) + if(behavior_delegate.caboom_trigger) cancel_ability() return - if(BD.acid_amount < minimal_acid) + if(behavior_delegate.acid_amount < minimal_acid) to_chat(xeno, SPAN_XENOWARNING("Not enough acid built up for an explosion.")) return @@ -188,10 +187,10 @@ xeno.set_light_color("#22FF22") xeno.set_light_range(3) - BD.caboom_trigger = TRUE - BD.caboom_left = BD.caboom_timer - BD.caboom_last_proc = 0 - xeno.set_effect(BD.caboom_timer*2, SUPERSLOW) + behavior_delegate.caboom_trigger = TRUE + behavior_delegate.caboom_left = behavior_delegate.caboom_timer + behavior_delegate.caboom_last_proc = 0 + xeno.set_effect(behavior_delegate.caboom_timer*2, SUPERSLOW) xeno.say(";FOR THE HIVE!!!") return ..() @@ -201,17 +200,17 @@ if(!istype(xeno)) return - var/datum/behavior_delegate/runner_acider/behavior = xeno.behavior_delegate - if(!istype(behavior)) + var/datum/behavior_delegate/runner_acider/behavior_delegate = xeno.behavior_delegate + if(!istype(behavior_delegate)) return - behavior.caboom_trigger = FALSE + behavior_delegate.caboom_trigger = FALSE xeno.color = null xeno.set_light_range(0) - behavior.modify_acid(-behavior.max_acid / 4) + behavior_delegate.modify_acid(-behavior_delegate.max_acid / 4) // Done this way rather than setting to 0 in case something else slowed us // -Original amount set - (time exploding + timer inaccuracy) * how much gets removed per tick / 2 - xeno.adjust_effect(behavior.caboom_timer * -2 - (behavior.caboom_timer - behavior.caboom_left + 2) * xeno.life_slow_reduction * 0.5, SUPERSLOW) + xeno.adjust_effect(behavior_delegate.caboom_timer * -2 - (behavior_delegate.caboom_timer - behavior_delegate.caboom_left + 2) * xeno.life_slow_reduction * 0.5, SUPERSLOW) to_chat(xeno, SPAN_XENOWARNING("You remove all your explosive acid before it combusted.")) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Runner.dm b/code/modules/mob/living/carbon/xenomorph/castes/Runner.dm index f946ec44b5b7..77e4291ee84b 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Runner.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Runner.dm @@ -68,10 +68,10 @@ icon_xenonid = 'icons/mob/xenonids/runner.dmi' -/mob/living/carbon/xenomorph/runner/initialize_pass_flags(datum/pass_flags_container/PF) +/mob/living/carbon/xenomorph/runner/initialize_pass_flags(datum/pass_flags_container/pass_flags_container) ..() - if (PF) - PF.flags_pass |= PASS_FLAGS_CRAWLER + if (pass_flags_container) + pass_flags_container.flags_pass |= PASS_FLAGS_CRAWLER /datum/behavior_delegate/runner_base name = "Base Runner Behavior Delegate" From a102c0b5fddb710274f21444976f35b3791b4f05 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 14 Nov 2023 06:05:11 +0000 Subject: [PATCH 055/355] Automatic changelog for PR #4898 [ci skip] --- html/changelogs/AutoChangeLog-pr-4898.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4898.yml diff --git a/html/changelogs/AutoChangeLog-pr-4898.yml b/html/changelogs/AutoChangeLog-pr-4898.yml new file mode 100644 index 000000000000..afdd0cf5b954 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4898.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Replaced single letter vars in runner code." \ No newline at end of file From cd0c4ebe2210e0b0c48107fafb20b4862758f789 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 15 Nov 2023 01:10:49 +0000 Subject: [PATCH 056/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4898.yml | 4 ---- html/changelogs/archive/2023-11.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4898.yml diff --git a/html/changelogs/AutoChangeLog-pr-4898.yml b/html/changelogs/AutoChangeLog-pr-4898.yml deleted file mode 100644 index afdd0cf5b954..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4898.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - code_imp: "Replaced single letter vars in runner code." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 20675d53516a..75f629cbd028 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -208,3 +208,6 @@ - bugfix: Fixed ghost droppods appearing when launching crates by Echo pad. - bugfix: Fixed an issue in traits backend update causing among others leadership action buttons to be missing. +2023-11-15: + Birdtalon: + - code_imp: Replaced single letter vars in runner code. From 533e8ed5fe8298d7f3ee17826d4e68daea726d9f Mon Sep 17 00:00:00 2001 From: fira Date: Wed, 15 Nov 2023 22:24:50 +0100 Subject: [PATCH 057/355] /tg/ Status Effects Prelude D - Mob Freeze Refactor (#4878) # About the pull request Another bit split off #4828 - this implements TRAIT_IMMOBILIZED partially by using it to replace freeze functionality. It does not include all the interactions with other traits because they're not yet in this version. # Explain why it's good for the game Stops issues with freeze getting stuck thanks to Trait magic. Also a mandatory passage point toward removing update_canmove in Part 1 PR # Testing Photographs and Procedure Tested Admin Panel Freeze/Unfreeze, that they were updated timely and not on Lifetick, Runner pounce, and interaction of both of them # Changelog :cl: fix: Rooting effects should now properly update when stacked and unstacked. /:cl: --- code/__DEFINES/traits.dm | 5 ++++ code/datums/agents/tools/chloroform.dm | 4 ++-- .../effects/xeno_strains/boiler_trap.dm | 12 ++++------ code/datums/mob_hud.dm | 2 +- code/game/objects/items/storage/smartpack.dm | 6 ++--- .../objects/structures/vulture_spotter.dm | 4 ++-- .../admin/player_panel/actions/general.dm | 8 +++++-- .../admin/player_panel/player_panel.dm | 2 +- code/modules/cm_marines/m2c.dm | 2 +- code/modules/cm_marines/smartgun_mount.dm | 4 ++-- .../living/carbon/human/human_abilities.dm | 6 ++--- .../mob/living/carbon/human/human_defense.dm | 10 -------- .../mob/living/carbon/human/human_helpers.dm | 1 - .../mob/living/carbon/human/update_icons.dm | 8 +++++++ .../mob/living/carbon/xenomorph/XenoProcs.dm | 8 ++++--- .../abilities/ability_helper_procs.dm | 4 ++-- .../abilities/burrower/burrower_powers.dm | 6 ++--- .../abilities/defender/defender_powers.dm | 4 ++-- .../xenomorph/abilities/general_abilities.dm | 2 +- .../xenomorph/abilities/general_powers.dm | 6 ++--- .../abilities/praetorian/praetorian_powers.dm | 24 +++++++++---------- .../abilities/predalien/predalien_powers.dm | 11 +++++---- .../abilities/ravager/ravager_powers.dm | 4 ++-- .../mutators/strains/praetorian/oppressor.dm | 2 +- code/modules/mob/living/init_signals.dm | 15 ++++++++++++ code/modules/mob/mob.dm | 18 +------------- code/modules/mob/mob_defines.dm | 1 - 27 files changed, 90 insertions(+), 89 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index bbf8fda99f61..af8af22ca707 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -143,6 +143,8 @@ // #define TRAIT_X "t_x" //-- mob traits -- +/// Prevents voluntary movement. +#define TRAIT_IMMOBILIZED "immobilized" /// Apply this to make a mob not dense, and remove it when you want it to no longer make them undense, other sorces of undesity will still apply. Always define a unique source when adding a new instance of this! #define TRAIT_UNDENSE "undense" @@ -294,6 +296,7 @@ GLOBAL_LIST_INIT(mob_traits, list( */ GLOBAL_LIST_INIT(traits_by_type, list( /mob = list( + "TRAIT_IMMOBILIZED" = TRAIT_IMMOBILIZED, "TRAIT_UNDENSE" = TRAIT_UNDENSE, "TRAIT_YAUTJA_TECH" = TRAIT_YAUTJA_TECH, "TRAIT_SUPER_STRONG" = TRAIT_SUPER_STRONG, @@ -411,6 +414,8 @@ GLOBAL_LIST(trait_name_map) //Status trait coming from clothing. #define TRAIT_SOURCE_CLOTHING "t_s_clothing" +/// traits associated with actively interacted machinery +#define INTERACTION_TRAIT "interaction" /// trait effect related to active specialist gear #define SPECIALIST_GEAR_TRAIT "specialist_gear" /// traits associated with usage of snowflake dropship double seats diff --git a/code/datums/agents/tools/chloroform.dm b/code/datums/agents/tools/chloroform.dm index cc804c1d270c..c6e3320688eb 100644 --- a/code/datums/agents/tools/chloroform.dm +++ b/code/datums/agents/tools/chloroform.dm @@ -47,7 +47,7 @@ /obj/item/weapon/chloroform/proc/grab_stun(mob/living/M, mob/living/user) M.anchored = TRUE - M.frozen = TRUE + ADD_TRAIT(M, TRAIT_IMMOBILIZED, CHLOROFORM_TRAIT) ADD_TRAIT(M, TRAIT_UNDENSE, CHLOROFORM_TRAIT) M.able_to_speak = FALSE M.update_canmove() @@ -82,7 +82,7 @@ M.density = TRUE M.able_to_speak = TRUE M.layer = MOB_LAYER - M.unfreeze() + REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, CHLOROFORM_TRAIT) REMOVE_TRAIT(M, TRAIT_UNDENSE, CHLOROFORM_TRAIT) QDEL_NULL(mask_item) diff --git a/code/datums/effects/xeno_strains/boiler_trap.dm b/code/datums/effects/xeno_strains/boiler_trap.dm index 61451391e816..1833b9641a9a 100644 --- a/code/datums/effects/xeno_strains/boiler_trap.dm +++ b/code/datums/effects/xeno_strains/boiler_trap.dm @@ -4,19 +4,17 @@ effect_name = "boiler trap" duration = null flags = INF_DURATION - /// Ghetto flag indicating whether we actually placed the freeze or not, until we have an actual effects system - var/freezer = FALSE /datum/effects/boiler_trap/New(atom/A, mob/from, last_dmg_source, zone) . = ..() if(!QDELETED(src)) var/mob/M = affected_atom - freezer = M.freeze() + ADD_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) /datum/effects/boiler_trap/Destroy(force) - if(ismob(affected_atom) && freezer) + if(ismob(affected_atom)) var/mob/M = affected_atom - M.unfreeze() + REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) return ..() /datum/effects/boiler_trap/validate_atom(atom/A) @@ -29,7 +27,5 @@ . = ..() if(!.) return FALSE var/mob/M = affected_atom - if(M.frozen) return TRUE - if(!freezer) - freezer = M.freeze() + ADD_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY(effect_name)) return TRUE diff --git a/code/datums/mob_hud.dm b/code/datums/mob_hud.dm index 65c5a47896fa..b0df9bca7745 100644 --- a/code/datums/mob_hud.dm +++ b/code/datums/mob_hud.dm @@ -798,7 +798,7 @@ var/global/image/hud_icon_hudfocus tag_holder.overlays += image('icons/mob/hud/hud.dmi', src, "prae_tag") // Hacky, but works. Currently effects are hard to make with precise timings - var/freeze_found = frozen + var/freeze_found = HAS_TRAIT(src, TRAIT_IMMOBILIZED) && !buckled && !lying if (freeze_found) freeze_holder.overlays += image('icons/mob/hud/hud.dmi', src, "xeno_freeze") diff --git a/code/game/objects/items/storage/smartpack.dm b/code/game/objects/items/storage/smartpack.dm index 8df079c92ca4..0b0fd05eac17 100644 --- a/code/game/objects/items/storage/smartpack.dm +++ b/code/game/objects/items/storage/smartpack.dm @@ -144,7 +144,7 @@ immobile_form = FALSE M.status_flags |= CANPUSH M.anchored = FALSE - M.unfreeze() + REMOVE_TRAIT(M, TRAIT_IMMOBILIZED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) ..() /obj/item/storage/backpack/marine/smartpack/attack_self(mob/user) @@ -236,7 +236,7 @@ battery_charge -= IMMOBILE_COST user.status_flags &= ~CANPUSH user.anchored = TRUE - user.frozen = TRUE + ADD_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) to_chat(user, SPAN_DANGER("[name] beeps, \"You are anchored in place and cannot be moved.\"")) to_chat(user, SPAN_INFO("The current charge reads [battery_charge]/[SMARTPACK_MAX_POWER_STORED]")) @@ -248,7 +248,7 @@ else user.status_flags |= CANPUSH user.anchored = FALSE - user.unfreeze() + REMOVE_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_EQUIPMENT(WEAR_BACK)) to_chat(user, SPAN_DANGER("[name] beeps, \"You can now move again.\"")) user.remove_filter("synth_immobile_form") diff --git a/code/game/objects/structures/vulture_spotter.dm b/code/game/objects/structures/vulture_spotter.dm index 50505ab239b8..44efd5ce84ea 100644 --- a/code/game/objects/structures/vulture_spotter.dm +++ b/code/game/objects/structures/vulture_spotter.dm @@ -92,7 +92,7 @@ user.lighting_alpha = 127 user.sync_lighting_plane_alpha() user.overlay_fullscreen("vulture_spotter", /atom/movable/screen/fullscreen/vulture/spotter) - user.freeze() + ADD_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Vulture spotter")) user.status_flags |= IMMOBILE_ACTION user.visible_message(SPAN_NOTICE("[user] looks through [src]."),SPAN_NOTICE("You look through [src], ready to go!")) user.forceMove(loc) @@ -105,7 +105,7 @@ /obj/structure/vulture_spotter_tripod/on_unset_interaction(mob/user) user.status_flags &= ~IMMOBILE_ACTION user.visible_message(SPAN_NOTICE("[user] looks up from [src]."),SPAN_NOTICE("You look up from [src].")) - user.unfreeze() + REMOVE_TRAIT(user, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Vulture spotter")) user.reset_view(null) user.Move(get_step(src, reverse_direction(src.dir))) user.client?.change_view(world_view_size, src) diff --git a/code/modules/admin/player_panel/actions/general.dm b/code/modules/admin/player_panel/actions/general.dm index 79cf192fa420..a47a42d44cc2 100644 --- a/code/modules/admin/player_panel/actions/general.dm +++ b/code/modules/admin/player_panel/actions/general.dm @@ -113,9 +113,13 @@ name = "Toggle Frozen" /datum/player_action/toggle_frozen/act(client/user, mob/target, list/params) - target.frozen = text2num(params["freeze"]) + var/frozen = text2num(params["freeze"]) + if(frozen) + ADD_TRAIT(target, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ADMIN) + else + REMOVE_TRAIT(target, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ADMIN) - message_admins("[key_name_admin(user)] [target.frozen? "froze" : "unfroze"] [key_name_admin(target)]") + message_admins("[key_name_admin(user)] [frozen? "froze" : "unfroze"] [key_name_admin(target)]") return TRUE // MESSAGE diff --git a/code/modules/admin/player_panel/player_panel.dm b/code/modules/admin/player_panel/player_panel.dm index a8217b5d9402..e29ea83ef5ce 100644 --- a/code/modules/admin/player_panel/player_panel.dm +++ b/code/modules/admin/player_panel/player_panel.dm @@ -480,7 +480,7 @@ else .["mob_sleeping"] = 0 - .["mob_frozen"] = targetMob.frozen + .["mob_frozen"] = HAS_TRAIT_FROM(targetMob, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ADMIN) .["mob_speed"] = targetMob.speed .["mob_status_flags"] = targetMob.status_flags diff --git a/code/modules/cm_marines/m2c.dm b/code/modules/cm_marines/m2c.dm index a0943bb7f0a6..75c96f67176b 100644 --- a/code/modules/cm_marines/m2c.dm +++ b/code/modules/cm_marines/m2c.dm @@ -466,7 +466,7 @@ return if(user.get_active_hand() == null && user.get_inactive_hand() == null) - user.freeze() + ADD_TRAIT(user, TRAIT_IMMOBILIZED, INTERACTION_TRAIT) user.set_interaction(src) give_action(user, /datum/action/human_action/mg_exit) else diff --git a/code/modules/cm_marines/smartgun_mount.dm b/code/modules/cm_marines/smartgun_mount.dm index b450f5f02841..225b85506279 100644 --- a/code/modules/cm_marines/smartgun_mount.dm +++ b/code/modules/cm_marines/smartgun_mount.dm @@ -831,7 +831,7 @@ to_chat(user, SPAN_WARNING("You aren't allowed to use firearms!")) return else - user.freeze() + ADD_TRAIT(user, TRAIT_IMMOBILIZED, INTERACTION_TRAIT) user.set_interaction(src) give_action(user, /datum/action/human_action/mg_exit) @@ -859,7 +859,7 @@ SEND_SIGNAL(src, COMSIG_GUN_INTERRUPT_FIRE) user.status_flags &= ~IMMOBILE_ACTION user.visible_message(SPAN_NOTICE("[user] lets go of \the [src]."),SPAN_NOTICE("You let go of \the [src], letting the gun rest.")) - user.unfreeze() + REMOVE_TRAIT(user, TRAIT_IMMOBILIZED, INTERACTION_TRAIT) UnregisterSignal(user, list(COMSIG_MOB_MOUSEUP, COMSIG_MOB_MOUSEDOWN, COMSIG_MOB_MOUSEDRAG)) user.reset_view(null) user.remove_temp_pass_flags(PASS_MOB_THRU) // this is necessary because being knocked over while using the gun makes you incorporeal diff --git a/code/modules/mob/living/carbon/human/human_abilities.dm b/code/modules/mob/living/carbon/human/human_abilities.dm index fda4cea20ad1..027e279e2983 100644 --- a/code/modules/mob/living/carbon/human/human_abilities.dm +++ b/code/modules/mob/living/carbon/human/human_abilities.dm @@ -456,21 +456,21 @@ CULT to_chat(chosen, SPAN_HIGHDANGER("You feel a dangerous presence in the back of your head. You find yourself unable to move!")) - chosen.frozen = TRUE + ADD_TRAIT(chosen, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Cultist Stun")) chosen.update_canmove() chosen.update_xeno_hostile_hud() if(!do_after(H, 2 SECONDS, INTERRUPT_ALL | BEHAVIOR_IMMOBILE, BUSY_ICON_HOSTILE, chosen, INTERRUPT_ALL, BUSY_ICON_HOSTILE)) to_chat(H, SPAN_XENOMINORWARNING("You decide not to stun [chosen].")) - unroot_human(chosen) + unroot_human(chosen, TRAIT_SOURCE_ABILITY("Cultist Stun")) enter_cooldown(5 SECONDS) return enter_cooldown() - unroot_human(chosen) + unroot_human(chosen, TRAIT_SOURCE_ABILITY("Cultist Stun")) chosen.apply_effect(10, PARALYZE) chosen.make_jittery(105) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 56eba38a4000..f3f58b859e25 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -378,16 +378,6 @@ Contains most of the procs that are called when a mob is attacked by something var/list/overlap = compare_group & access_to_check return length(overlap) -/mob/living/carbon/human/freeze() - . = ..() - if(.) - update_xeno_hostile_hud() - -/mob/living/carbon/human/unfreeze() - . = ..() - if(.) - update_xeno_hostile_hud() - /mob/living/carbon/human/get_target_lock(access_to_check) if(isnull(access_to_check)) return diff --git a/code/modules/mob/living/carbon/human/human_helpers.dm b/code/modules/mob/living/carbon/human/human_helpers.dm index 7f36df8ceae2..c4690c03068f 100644 --- a/code/modules/mob/living/carbon/human/human_helpers.dm +++ b/code/modules/mob/living/carbon/human/human_helpers.dm @@ -230,7 +230,6 @@ /mob/living/carbon/human/proc/disable_special_flags() status_flags |= CANPUSH anchored = FALSE - frozen = FALSE /mob/living/carbon/human/proc/disable_special_items() set waitfor = FALSE // Scout decloak animation uses sleep(), which is problematic for taser gun diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index fd9c786bd147..1dcefec9b63b 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -799,3 +799,11 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, #undef FIRE_LAYER #undef BURST_LAYER +/* To update the rooting graphic effect. Surely there's a better way... */ +/mob/living/carbon/human/on_immobilized_trait_gain(datum/source) + . = ..() + update_xeno_hostile_hud() + +/mob/living/carbon/human/on_immobilized_trait_loss(datum/source) + . = ..() + update_xeno_hostile_hud() diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index 27895555a9f1..780299547a51 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -320,9 +320,8 @@ if(pounceAction.freeze_play_sound) playsound(loc, rand(0, 100) < 95 ? 'sound/voice/alien_pounce.ogg' : 'sound/voice/alien_pounce2.ogg', 25, 1) canmove = FALSE - frozen = TRUE - pounceAction.freeze_timer_id = addtimer(CALLBACK(src, PROC_REF(unfreeze)), pounceAction.freeze_time, TIMER_STOPPABLE) - + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) + pounceAction.freeze_timer_id = addtimer(CALLBACK(src, PROC_REF(unfreeze_pounce)), pounceAction.freeze_time, TIMER_STOPPABLE) pounceAction.additional_effects(M) if(pounceAction.slash) @@ -330,6 +329,9 @@ throwing = FALSE //Reset throwing since something was hit. +/mob/living/carbon/xenomorph/proc/unfreeze_pounce() + REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) + /mob/living/carbon/xenomorph/proc/pounced_mob_wrapper(mob/living/L) pounced_mob(L) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm index 6b1c7d14b262..6ce6de84a086 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ability_helper_procs.dm @@ -160,11 +160,11 @@ SPAN_XENOWARNING("You vomit globs of vile stuff all over [O]. It begins to sizzle and melt under the bubbling mess of acid!"), null, 5) playsound(loc, "sound/bullets/acid_impact1.ogg", 25) -/proc/unroot_human(mob/living/carbon/H) +/proc/unroot_human(mob/living/carbon/H, trait_source) if (!isxeno_human(H)) return - H.frozen = 0 + REMOVE_TRAIT(H, TRAIT_IMMOBILIZED, trait_source) H.update_canmove() if(ishuman(H)) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm index 4ce83f37592c..8b8e3f9c86a3 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_powers.dm @@ -35,7 +35,6 @@ return // TODO Make immune to all damage here. to_chat(src, SPAN_XENOWARNING("You burrow yourself into the ground.")) - frozen = TRUE invisibility = 101 anchored = TRUE density = FALSE @@ -45,6 +44,7 @@ COMSIG_LIVING_FLAMER_CROSSED, COMSIG_LIVING_FLAMER_FLAMED, ), PROC_REF(flamer_crossed_immune)) + ADD_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Burrow")) ADD_TRAIT(src, TRAIT_ABILITY_BURROWED, TRAIT_SOURCE_ABILITY("Burrow")) ADD_TRAIT(src, TRAIT_UNDENSE, TRAIT_SOURCE_ABILITY("Burrow")) playsound(src.loc, 'sound/effects/burrowing_b.ogg', 25) @@ -74,9 +74,9 @@ COMSIG_LIVING_FLAMER_CROSSED, COMSIG_LIVING_FLAMER_FLAMED, )) + REMOVE_TRAIT(src, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Burrow")) REMOVE_TRAIT(src, TRAIT_ABILITY_BURROWED, TRAIT_SOURCE_ABILITY("Burrow")) REMOVE_TRAIT(src, TRAIT_UNDENSE, TRAIT_SOURCE_ABILITY("Burrow")) - frozen = FALSE invisibility = FALSE anchored = FALSE density = TRUE @@ -166,9 +166,7 @@ /mob/living/carbon/xenomorph/proc/do_tunnel(turf/T) to_chat(src, SPAN_NOTICE("You tunnel to your destination.")) anchored = FALSE - unfreeze() forceMove(T) - UnregisterSignal(src, COMSIG_LIVING_FLAMER_FLAMED) burrow_off() /mob/living/carbon/xenomorph/proc/do_tunnel_cooldown() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm index bf773645e491..bbb202fef3c2 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/defender/defender_powers.dm @@ -217,7 +217,7 @@ else X.armor_deflection_buff += 30 X.armor_explosive_buff += 60 - X.frozen = TRUE + ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Fortify")) X.anchored = TRUE X.small_explosives_stun = FALSE X.update_canmove() @@ -228,7 +228,7 @@ X.fortify = TRUE else to_chat(X, SPAN_XENOWARNING("You resume your normal stance.")) - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Fortify")) X.anchored = FALSE if(X.mutation_type == DEFENDER_STEELCREST) X.armor_deflection_buff -= 10 diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm index c1b1ee5f8902..5e3ab3b0afd9 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm @@ -251,7 +251,7 @@ if(freeze_timer_id == TIMER_ID_NULL) return var/mob/living/carbon/xenomorph/X = owner - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) X.update_canmove() deltimer(freeze_timer_id) freeze_timer_id = TIMER_ID_NULL diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm index 1882f2b69157..270ddbdfcc82 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_powers.dm @@ -411,7 +411,7 @@ if (windup) X.set_face_dir(get_cardinal_dir(X, A)) if (!windup_interruptable) - X.frozen = TRUE + ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) X.anchored = TRUE X.update_canmove() pre_windup_effects() @@ -419,14 +419,14 @@ if (!do_after(X, windup_duration, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) to_chat(X, SPAN_XENODANGER("You cancel your [ability_name]!")) if (!windup_interruptable) - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) X.anchored = FALSE X.update_canmove() post_windup_effects(interrupted = TRUE) return if (!windup_interruptable) - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Pounce")) X.anchored = FALSE X.update_canmove() post_windup_effects() diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm index e926349af60d..0d7a86c58318 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm @@ -175,14 +175,14 @@ vanguard_user.visible_message(SPAN_XENODANGER("[vanguard_user] slams [target_atom] into the ground!"), SPAN_XENOHIGHDANGER("You slam [target_atom] into the ground!")) - target_carbon.frozen = TRUE + ADD_TRAIT(target_carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Cleave")) target_carbon.update_canmove() if (ishuman(target_carbon)) var/mob/living/carbon/human/Hu = target_carbon Hu.update_xeno_hostile_hud() - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), target_carbon), get_xeno_stun_duration(target_carbon, root_duration)) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), target_carbon, TRAIT_SOURCE_ABILITY("Cleave")), get_xeno_stun_duration(target_carbon, root_duration)) to_chat(target_carbon, SPAN_XENOHIGHDANGER("[vanguard_user] has pinned you to the ground! You cannot move!")) vanguard_user.flick_attack_overlay(target_carbon, "punch") @@ -292,7 +292,7 @@ var/throw_target_turf = get_step(X.loc, facing) - X.frozen = TRUE + ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) X.update_canmove() if(!do_after(X, windup, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 1)) to_chat(X, SPAN_XENOWARNING("You relax your tail.")) @@ -302,7 +302,7 @@ telegraph_atom_list -= XT qdel(XT) - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) X.update_canmove() return @@ -310,7 +310,7 @@ if(!check_and_use_plasma_owner()) return - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) X.update_canmove() playsound(get_turf(X), 'sound/effects/bang.ogg', 25, 0) @@ -340,7 +340,7 @@ H.apply_effect(1, SLOW) else if (LAZYLEN(targets) == 2) - H.frozen = TRUE + ADD_TRAIT(H, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) H.update_canmove() if (ishuman(H)) var/mob/living/carbon/human/Hu = H @@ -409,16 +409,16 @@ oppressor_user.animation_attack_on(target_carbon) oppressor_user.flick_attack_overlay(target_carbon, "punch") - if (target_carbon.frozen || target_carbon.slowed || target_carbon.knocked_down) + if (HAS_TRAIT(target_carbon, TRAIT_IMMOBILIZED) || target_carbon.slowed || target_carbon.knocked_down) target_carbon.apply_damage(get_xeno_damage_slash(target_carbon, damage), BRUTE, target_limb? target_limb.name : "chest") - target_carbon.frozen = TRUE + ADD_TRAIT(target_carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Oppressor Punch")) target_carbon.update_canmove() if (ishuman(target_carbon)) var/mob/living/carbon/human/Hu = target_carbon Hu.update_xeno_hostile_hud() - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), target_carbon), get_xeno_stun_duration(target_carbon, 12)) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), target_carbon, TRAIT_SOURCE_ABILITY("Oppressor Punch")), get_xeno_stun_duration(target_carbon, 1.2 SECONDS)) to_chat(target_carbon, SPAN_XENOHIGHDANGER("[oppressor_user] has pinned you to the ground! You cannot move!")) var/datum/action/xeno_action/activable/prae_abduct/abduct_action = get_xeno_action_by_type(oppressor_user, /datum/action/xeno_action/activable/prae_abduct) @@ -1012,7 +1012,7 @@ if(!(behind_turf.density)) throw_target_turf = behind_turf - X.frozen = TRUE + ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Praetorian Retrieve")) X.update_canmove() if(windup) if(!do_after(X, windup, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 1)) @@ -1023,12 +1023,12 @@ telegraph_atom_list -= XT qdel(XT) - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Praetorian Retrieve")) X.update_canmove() return - X.frozen = FALSE + REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Praetorian Retrieve")) X.update_canmove() playsound(get_turf(X), 'sound/effects/bang.ogg', 25, 0) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm index 3b52a60419df..a26cc922c528 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/predalien/predalien_powers.dm @@ -78,14 +78,14 @@ for(var/mob/living/carbon/carbon in oview(round(behavior.kills * 0.5 + 2), xeno)) if(!xeno.can_not_harm(carbon) && carbon.stat != DEAD) - carbon.frozen = 1 + ADD_TRAIT(carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Smash")) carbon.update_canmove() if (ishuman(carbon)) var/mob/living/carbon/human/human = carbon human.update_xeno_hostile_hud() - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), carbon), get_xeno_stun_duration(carbon, freeze_duration)) + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), carbon, TRAIT_SOURCE_ABILITY("Smash")), get_xeno_stun_duration(carbon, freeze_duration)) for(var/mob/M in view(xeno)) @@ -125,7 +125,7 @@ if (!check_and_use_plasma_owner()) return - carbon.frozen = 1 + ADD_TRAIT(carbon, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Devastate")) carbon.update_canmove() if (ishuman(carbon)) @@ -134,7 +134,7 @@ apply_cooldown() - xeno.frozen = 1 + ADD_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Devastate")) xeno.anchored = TRUE xeno.update_canmove() @@ -151,8 +151,9 @@ playsound(owner, 'sound/voice/predalien_growl.ogg', 75, 0, status = 0) - xeno.frozen = 0 + REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Devastate")) xeno.anchored = FALSE + unroot_human(carbon, TRAIT_SOURCE_ABILITY("Devastate")) xeno.update_canmove() unroot_human(carbon) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm index cd4533eabc83..ae28cd63fef9 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm @@ -385,7 +385,7 @@ else xeno.visible_message(SPAN_XENODANGER("[xeno] begins digging in for a strike!"), SPAN_XENOHIGHDANGER("You begin digging in for a strike!")) - xeno.frozen = 1 + ADD_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Eviscerate")) xeno.anchored = TRUE xeno.update_canmove() @@ -430,7 +430,7 @@ if(!xeno.on_fire) xeno.gain_health(Clamp(valid_count * lifesteal_per_marine, 0, max_lifesteal)) - xeno.frozen = 0 + REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Eviscerate")) xeno.anchored = FALSE xeno.update_canmove() diff --git a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm index 4a3bd3a7d182..ecb0e1eff51e 100644 --- a/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm +++ b/code/modules/mob/living/carbon/xenomorph/mutators/strains/praetorian/oppressor.dm @@ -56,7 +56,7 @@ if(target_carbon.stat == DEAD) return - if(!(target_carbon.knocked_down || target_carbon.frozen || target_carbon.slowed)) + if(!(target_carbon.knocked_down || HAS_TRAIT(target_carbon, TRAIT_IMMOBILIZED) || target_carbon.slowed)) return target_carbon.apply_armoured_damage(get_xeno_damage_slash(target_carbon, tearing_damage), ARMOR_MELEE, BRUTE, bound_xeno.zone_selected ? bound_xeno.zone_selected : "chest") diff --git a/code/modules/mob/living/init_signals.dm b/code/modules/mob/living/init_signals.dm index b591844a937a..d7edd02893b3 100644 --- a/code/modules/mob/living/init_signals.dm +++ b/code/modules/mob/living/init_signals.dm @@ -1,7 +1,22 @@ /// Called on [/mob/living/Initialize(mapload)], for the mob to register to relevant signals. /mob/living/proc/register_init_signals() + + RegisterSignal(src, SIGNAL_ADDTRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_gain)) + RegisterSignal(src, SIGNAL_REMOVETRAIT(TRAIT_IMMOBILIZED), PROC_REF(on_immobilized_trait_loss)) RegisterSignal(src, list(SIGNAL_ADDTRAIT(TRAIT_UNDENSE), SIGNAL_REMOVETRAIT(TRAIT_UNDENSE)), PROC_REF(undense_changed)) +/// Called when [TRAIT_IMMOBILIZED] is added to the mob. +/mob/living/proc/on_immobilized_trait_gain(datum/source) + SIGNAL_HANDLER +// mobility_flags &= ~MOBILITY_MOVE + update_canmove() + +/// Called when [TRAIT_IMMOBILIZED] is removed from the mob. +/mob/living/proc/on_immobilized_trait_loss(datum/source) + SIGNAL_HANDLER +// mobility_flags |= MOBILITY_MOVE + update_canmove() + /// Called when [TRAIT_UNDENSE] is gained or lost /mob/living/proc/undense_changed(datum/source) SIGNAL_HANDLER diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 827b94394671..c28de81ecfc1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -724,7 +724,7 @@ note dizziness decrements automatically in the mob's Life() proc. else lying = FALSE - canmove = !frozen + canmove = !HAS_TRAIT(src, TRAIT_IMMOBILIZED) if(isliving(src)) // Temporary I SWEAR. This whole proc is going down var/mob/living/living = src @@ -799,22 +799,6 @@ note dizziness decrements automatically in the mob's Life() proc. /mob/proc/get_species() return "" -/// Sets freeze if possible and wasn't already set, returning success -/mob/proc/freeze() - if(frozen) - return FALSE - frozen = TRUE - update_canmove() - return TRUE - -/// Attempts to unfreeze mob, returning success -/mob/proc/unfreeze() - if(!frozen) - return FALSE - frozen = FALSE - update_canmove() - return TRUE - /mob/proc/flash_weak_pain() overlay_fullscreen("pain", /atom/movable/screen/fullscreen/pain, 1) clear_fullscreen("pain") diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index eec0ca75af8d..dc107e1bd190 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -65,7 +65,6 @@ var/dizziness = 0//Carbon var/jitteriness = 0//Carbon var/floatiness = 0 - var/frozen = 0 var/losebreath = 0.0//Carbon var/shakecamera = 0 From 944c20f08937156a3f74a892a1000811ed71508a Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 15 Nov 2023 21:33:04 +0000 Subject: [PATCH 058/355] Automatic changelog for PR #4878 [ci skip] --- html/changelogs/AutoChangeLog-pr-4878.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4878.yml diff --git a/html/changelogs/AutoChangeLog-pr-4878.yml b/html/changelogs/AutoChangeLog-pr-4878.yml new file mode 100644 index 000000000000..d7543d4862ee --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4878.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Rooting effects should now properly update when stacked and unstacked." \ No newline at end of file From b1ef41ae0ce351646956a9ce81f65937a0bfc24b Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 16 Nov 2023 01:12:06 +0000 Subject: [PATCH 059/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4878.yml | 4 ---- html/changelogs/archive/2023-11.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4878.yml diff --git a/html/changelogs/AutoChangeLog-pr-4878.yml b/html/changelogs/AutoChangeLog-pr-4878.yml deleted file mode 100644 index d7543d4862ee..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4878.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Rooting effects should now properly update when stacked and unstacked." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 75f629cbd028..fbec760f1e80 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -211,3 +211,6 @@ 2023-11-15: Birdtalon: - code_imp: Replaced single letter vars in runner code. +2023-11-16: + fira: + - bugfix: Rooting effects should now properly update when stacked and unstacked. From ad320a69816980b2d8da328b930d689f2f50e55b Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Thu, 16 Nov 2023 09:45:15 +0000 Subject: [PATCH 060/355] Hivelord: single letter var (#4932) # About the pull request Replaces a lone single letter var. Hivelords are blessed. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Replaces single letter var in hivelord code /:cl: --- code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm b/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm index b0a44b0e3835..23f8ffc8acd6 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Hivelord.dm @@ -119,7 +119,7 @@ /// This check mainly exists because of the new resin node ability for resin whisperer. /mob/living/carbon/xenomorph/hivelord/proc/on_weeds() - var/turf/T = get_turf(src) - if(locate(/obj/effect/alien/weeds) in T) + var/turf/turf = get_turf(src) + if(locate(/obj/effect/alien/weeds) in turf) return TRUE return FALSE From 7c17c0275891d81513d2b321086ee1f986ba113b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 09:53:41 +0000 Subject: [PATCH 061/355] Automatic changelog for PR #4932 [ci skip] --- html/changelogs/AutoChangeLog-pr-4932.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4932.yml diff --git a/html/changelogs/AutoChangeLog-pr-4932.yml b/html/changelogs/AutoChangeLog-pr-4932.yml new file mode 100644 index 000000000000..ddcca4066db7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4932.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Replaces single letter var in hivelord code" \ No newline at end of file From 03acf56131eea818b6ba2f68ed25a397683ba962 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Thu, 16 Nov 2023 09:45:42 +0000 Subject: [PATCH 062/355] Fixes propaganda posters in CL office (#4930) # About the pull request Fixes #4916 It looks like someone wanted this to be the IO poster but didn't quite get there. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Fixes posters in CL office displaying IO description. /:cl: --- code/game/objects/effects/decals/posters.dm | 6 ++++++ maps/map_files/USS_Almayer/USS_Almayer.dmm | 16 ++++++---------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/code/game/objects/effects/decals/posters.dm b/code/game/objects/effects/decals/posters.dm index c688c4e6fb67..7a8054efce1a 100644 --- a/code/game/objects/effects/decals/posters.dm +++ b/code/game/objects/effects/decals/posters.dm @@ -184,6 +184,12 @@ serial_number = pick(27,28,30,31) .=..() +/obj/structure/sign/poster/io + icon_state = "poster14" + +/obj/structure/sign/poster/io/Initialize() + serial_number = 14 + . = ..() //////////////// //Hero Posters// //////////////// diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 62a748d9ecd0..528e0a02f7e3 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -36331,11 +36331,9 @@ /obj/structure/flora/pottedplant{ icon_state = "pottedplant_21" }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 +/obj/structure/sign/poster/io{ + pixel_y = 32; + name = "propaganda poster" }, /obj/structure/sign/safety/escapepod{ pixel_x = -17 @@ -39271,11 +39269,9 @@ /obj/structure/machinery/photocopier{ anchored = 0 }, -/obj/structure/sign/poster{ - desc = "A large piece of cheap printed paper. This one proudly demands that you REMEMBER IO!"; - icon_state = "poster14"; - name = "propaganda poster"; - pixel_y = 32 +/obj/structure/sign/poster/io{ + pixel_y = 32; + name = "propaganda poster" }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliason) From d7c679f7877d8890c05fb314a3ebfa760475926e Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 10:07:19 +0000 Subject: [PATCH 063/355] Automatic changelog for PR #4930 [ci skip] --- html/changelogs/AutoChangeLog-pr-4930.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4930.yml diff --git a/html/changelogs/AutoChangeLog-pr-4930.yml b/html/changelogs/AutoChangeLog-pr-4930.yml new file mode 100644 index 000000000000..649f486d9393 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4930.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Fixes posters in CL office displaying IO description." \ No newline at end of file From f5fd6648d686d0a5a846cf636b03e036ba73370a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Urba=C5=84czyk?= Date: Thu, 16 Nov 2023 13:42:57 +0100 Subject: [PATCH 064/355] Fix ability to fulton revivable bodies (#4933) # About the pull request Fixes the ability to fulton revivable bodies when the player inside the body has ghosted. Closes #4926 # Explain why it's good for the game No more permaing in space or Normandy because an IO decided to kidnap you via fulton # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Removes the ability to fulton bodies that can still be revived /:cl: --- code/game/objects/items/fulton.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/fulton.dm b/code/game/objects/items/fulton.dm index 98987d1cd2b3..6a0e0f933144 100644 --- a/code/game/objects/items/fulton.dm +++ b/code/game/objects/items/fulton.dm @@ -90,7 +90,7 @@ var/global/list/deployed_fultons = list() var/mob/living/carbon/human/H = target_atom if(isyautja(H) && H.stat == DEAD) can_attach = TRUE - else if((H.stat != DEAD || H.mind && H.check_tod() && H.is_revivable())) + else if((H.stat != DEAD || H.check_tod() && H.is_revivable())) to_chat(user, SPAN_WARNING("You can't attach [src] to [target_atom], they still have a chance!")) return else From ecb96ce74ec764b7703ad0f1df34c5499190ee20 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 12:51:37 +0000 Subject: [PATCH 065/355] Automatic changelog for PR #4933 [ci skip] --- html/changelogs/AutoChangeLog-pr-4933.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4933.yml diff --git a/html/changelogs/AutoChangeLog-pr-4933.yml b/html/changelogs/AutoChangeLog-pr-4933.yml new file mode 100644 index 000000000000..0530d1ccc95e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4933.yml @@ -0,0 +1,4 @@ +author: "casperr04" +delete-after: True +changes: + - bugfix: "Removes the ability to fulton bodies that can still be revived" \ No newline at end of file From 1d900a09cf084b40e674c1f93c5b4bb00e1b0224 Mon Sep 17 00:00:00 2001 From: spartanbobby <71467726+spartanbobby@users.noreply.github.com> Date: Thu, 16 Nov 2023 16:23:47 +0000 Subject: [PATCH 066/355] Bigred Changes Part 2: Engineering And Reactor small touches (#4929) # About the pull request This PR does alot of floor detailing in the areas of engineering, filt and their nightmare incerts This PR also re-adds the reactor to the main file of bigred # Explain why it's good for the game Basically, every building in bigred uses the same floor tiles so I wanted engineering and filt to have their own look The reactor was removed from bigreds main file due to Xenos choosing to nest in there causing the nested marines to die from radiation poisoning that problem has since been removed and because the area that replaced the reactor is a bland cave with no detailing whatever I believe that readding and updating the reactor is the right choice to make engineering a bit more visually interesting this PR also removes the scattered engineering reactors from bigred since they were added when the reactor was removed now all of bigreds repairable engines are once again inside the reactor proper # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: SpartanBobby, GDS Pathe maptweak: Updates bigred floortiles maptweak: Re-adds reactor to bigred /:cl: --- maps/map_files/BigRed/BigRed.dmm | 4401 ++++++++++++----- .../BigRed/sprinkles/15.reactor_meltdown.dmm | 607 ++- .../sprinkles/35.filtration_restored.dmm | 719 ++- 3 files changed, 4138 insertions(+), 1589 deletions(-) diff --git a/maps/map_files/BigRed/BigRed.dmm b/maps/map_files/BigRed/BigRed.dmm index 412d970cffbd..2cdf06d411c7 100644 --- a/maps/map_files/BigRed/BigRed.dmm +++ b/maps/map_files/BigRed/BigRed.dmm @@ -10233,6 +10233,15 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"aCO" = ( +/obj/structure/surface/table, +/obj/item/stack/cable_coil, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "aCP" = ( /obj/structure/closet/secure_closet/bar, /obj/effect/landmark/objective_landmark/close, @@ -13544,7 +13553,10 @@ "aLJ" = ( /obj/structure/filingcabinet, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aLM" = ( /obj/structure/machinery/shower{ @@ -13579,7 +13591,9 @@ /obj/structure/surface/table, /obj/item/tool/lighter/random, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aLQ" = ( /obj/structure/window/reinforced/toughened{ @@ -13858,8 +13872,10 @@ /obj/structure/surface/table, /obj/effect/decal/cleanable/dirt, /obj/item/tool/pen, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aMC" = ( /obj/effect/landmark/railgun_camera_pos, @@ -18585,6 +18601,13 @@ icon_state = "dark" }, /area/bigredv2/outside/chapel) +"aZJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "aZK" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -18655,6 +18678,15 @@ }, /turf/open/floor/carpet, /area/bigredv2/outside/admin_building) +"aZV" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "aZW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -19377,6 +19409,13 @@ icon_state = "white" }, /area/bigredv2/outside/office_complex) +"bcg" = ( +/obj/effect/decal/cleanable/liquid_fuel, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "bch" = ( /obj/structure/surface/table, /obj/item/clipboard, @@ -21866,8 +21905,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bkw" = ( @@ -21875,8 +21914,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bkx" = ( @@ -21886,8 +21925,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bky" = ( @@ -21924,18 +21963,30 @@ icon_state = "sovietsoda-broken"; stat = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkE" = ( -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkG" = ( /obj/structure/reagent_dispensers/watertank, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkH" = ( /obj/structure/dispenser/oxygen, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkI" = ( /obj/structure/cryofeed/right{ @@ -21954,7 +22005,9 @@ "bkK" = ( /obj/structure/closet/toolcloset, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "bkL" = ( /obj/structure/surface/table, @@ -21962,29 +22015,43 @@ dir = 1 }, /obj/item/tank/air, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkM" = ( /obj/structure/surface/table, /obj/effect/spawner/random/bomb_supply, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkN" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkO" = ( /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkP" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Atmospherics Condenser Storage" }, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "bkS" = ( /obj/structure/closet/toolcloset, @@ -21992,7 +22059,10 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bkT" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/chan, @@ -22144,19 +22214,27 @@ /obj/effect/spawner/random/toolbox, /obj/item/tool/extinguisher, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bly" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blA" = ( /obj/structure/dispenser/oxygen, /obj/structure/machinery/camera/autoname{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blB" = ( /obj/effect/landmark/survivor_spawner, @@ -22168,24 +22246,34 @@ dir = 4; pixel_x = -30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blC" = ( /obj/structure/closet/firecloset/full, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blD" = ( /obj/structure/surface/table, /obj/item/circuitboard/firealarm, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blF" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -22199,12 +22287,6 @@ }, /turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) -"blL" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" - }, -/area/bigredv2/outside/engineering) "blT" = ( /obj/structure/bed/chair/office/light{ dir = 8 @@ -22212,7 +22294,9 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blV" = ( /obj/structure/bed/chair/office/light{ @@ -22221,7 +22305,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blW" = ( /obj/structure/surface/table, @@ -22231,25 +22317,35 @@ dir = 8 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blX" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "blY" = ( /obj/structure/bed/chair{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "blZ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bma" = ( /obj/effect/decal/cleanable/dirt, @@ -22258,7 +22354,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bmb" = ( /obj/structure/surface/table, @@ -22267,42 +22365,69 @@ pixel_x = 32 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bme" = ( /turf/open/mars, /area/bigredv2/outside/sw) "bmf" = ( /obj/structure/closet/secure_closet/engineering_personal, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bmg" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmh" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmi" = ( -/turf/open/floor, +/obj/effect/decal/cleanable/liquid_fuel, +/obj/structure/curtain/red, +/turf/open/floor{ + icon_state = "freezerfloor" + }, /area/bigredv2/outside/engineering) "bmj" = ( -/obj/structure/machinery/light{ - dir = 4 - }, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/obj/structure/machinery/shower{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, /area/bigredv2/outside/engineering) "bml" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmm" = ( /obj/structure/machinery/portable_atmospherics/canister/air, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmn" = ( /obj/structure/machinery/power/smes/buildable{ @@ -22312,31 +22437,41 @@ /area/bigredv2/outside/engineering) "bmp" = ( /obj/structure/machinery/mill, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmq" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bmr" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bms" = ( /obj/structure/machinery/autolathe, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmt" = ( /obj/structure/machinery/computer/atmos_alert, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmu" = ( /obj/structure/machinery/computer/station_alert, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmw" = ( /obj/structure/closet/secure_closet/engineering_chief, @@ -22344,20 +22479,32 @@ dir = 1 }, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmx" = ( /obj/structure/bookcase/manuals/engineering, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmy" = ( /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmz" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmA" = ( /obj/structure/barricade/wooden, @@ -22379,33 +22526,49 @@ dir = 4 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmD" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bmF" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bmG" = ( /obj/structure/closet/wardrobe/atmospherics_yellow, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmH" = ( /obj/structure/surface/table, /obj/item/tool/lighter/random, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bmM" = ( /obj/effect/landmark/hunter_primary, @@ -22420,14 +22583,24 @@ "bmO" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmP" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/liquid_fuel, /obj/item/stack/sheet/metal, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmQ" = ( /obj/structure/machinery/shower{ @@ -22443,13 +22616,18 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bmS" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bmT" = ( /obj/structure/machinery/power/terminal{ @@ -22475,23 +22653,33 @@ /area/bigredv2/outside/engineering) "bmW" = ( /obj/effect/decal/cleanable/blood, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bmX" = ( /obj/structure/bed/chair/office/dark, /obj/effect/landmark/corpsespawner/engineer, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bmZ" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bna" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnb" = ( /obj/structure/machinery/door_control{ @@ -22499,14 +22687,20 @@ name = "Storm Shutters"; pixel_x = -32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnd" = ( /obj/structure/machinery/light{ dir = 4 }, -/obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/obj/structure/machinery/computer3/server, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bne" = ( /obj/structure/cryofeed, @@ -22519,7 +22713,10 @@ /area/bigredv2/outside/filtration_plant) "bnf" = ( /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bng" = ( /obj/effect/decal/cleanable/dirt, @@ -22527,12 +22724,16 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnh" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnj" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -22541,8 +22742,8 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Atmospherics Condenser Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bnl" = ( @@ -22550,66 +22751,93 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnm" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnn" = ( /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bno" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/radio/headset, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnp" = ( /obj/structure/machinery/computer/area_atmos/area, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnr" = ( /obj/structure/largecrate/random, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bns" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; name = "\improper Engineering SMES" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bnt" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/welding, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnu" = ( /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnw" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnx" = ( /obj/structure/surface/table, @@ -22619,7 +22847,9 @@ /obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/meson, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bny" = ( /obj/structure/window/reinforced/toughened{ @@ -22644,41 +22874,55 @@ /obj/structure/surface/table, /obj/item/tool/lighter/zippo, /obj/item/tool/lighter/zippo, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnA" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass/colony{ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bnB" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnE" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnF" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bnH" = ( /obj/structure/machinery/computer/general_air_control, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnI" = ( /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnK" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -22687,40 +22931,53 @@ /obj/structure/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnL" = ( /obj/structure/pipes/standard/manifold/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnM" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnN" = ( /obj/structure/bed/chair{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnO" = ( /obj/structure/machinery/computer/atmos_alert{ dir = 8 }, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bnQ" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bnR" = ( /obj/structure/machinery/shower{ @@ -22733,30 +22990,40 @@ /area/bigredv2/outside/engineering) "bnS" = ( /obj/item/trash/eat, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnT" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ name = "\improper Engineering Secure Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bnV" = ( /obj/structure/sign/safety/electronics{ pixel_y = 32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnW" = ( /obj/structure/pipes/vents/pump, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bnX" = ( /obj/item/folder/yellow, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bnY" = ( /obj/structure/machinery/photocopier, @@ -22766,26 +23033,36 @@ name = "General Listening Channel"; pixel_x = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bnZ" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "boa" = ( /obj/structure/bed/chair{ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bob" = ( /obj/structure/bed/chair{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boc" = ( /obj/structure/machinery/light{ @@ -22793,64 +23070,85 @@ }, /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boe" = ( -/obj/structure/machinery/computer3/server, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bof" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "boj" = ( /obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bok" = ( /obj/structure/largecrate/random, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bop" = ( -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boq" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bor" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bos" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bou" = ( /obj/structure/machinery/light{ dir = 8 }, /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bov" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, /obj/item/weapon/twohanded/fireaxe, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "box" = ( /obj/item/frame/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "boy" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, @@ -22868,44 +23166,63 @@ dir = 1; name = "\improper Engineering Complex" }, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "boG" = ( /obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "boH" = ( /obj/effect/decal/cleanable/liquid_fuel, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "boI" = ( /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boK" = ( /obj/item/trash/pistachios, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "boL" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boM" = ( /obj/structure/closet/firecloset/full, /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boN" = ( /obj/structure/closet/firecloset/full, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boR" = ( /obj/structure/surface/table, @@ -22914,14 +23231,19 @@ dir = 1 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boS" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/technology_scanner, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "boU" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -22929,8 +23251,8 @@ dir = 1; name = "\improper Chief Engineer's Office" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "boV" = ( @@ -22938,17 +23260,22 @@ /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "boW" = ( /obj/structure/closet/secure_closet/atmos_personal, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "boX" = ( /obj/structure/machinery/pipedispenser, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "boY" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, @@ -22958,17 +23285,24 @@ phone_id = "Filtration"; pixel_y = 24 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "boZ" = ( /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpa" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpc" = ( /obj/structure/barricade/handrail, @@ -22978,26 +23312,41 @@ /area/bigredv2/outside/filtration_plant) "bpe" = ( /obj/effect/landmark/survivor_spawner, -/turf/open/floor, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpf" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpi" = ( /obj/structure/reagent_dispensers/watertank, /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpj" = ( /obj/structure/reagent_dispensers/watertank, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpk" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -23005,19 +23354,26 @@ dir = 1; name = "\improper Engineering Tool Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bpl" = ( /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpm" = ( -/obj/effect/landmark/corpsespawner/engineer, -/turf/open/floor, +/obj/structure/surface/table, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/glasses/welding, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpn" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23026,25 +23382,34 @@ /obj/structure/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bpo" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpp" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpq" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/item/frame/table, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpu" = ( /obj/structure/machinery/landinglight/ds2/delaythree{ @@ -23076,8 +23441,8 @@ dir = 1; name = "\improper Engineering Lockers" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bpA" = ( @@ -23086,44 +23451,51 @@ dir = 1; name = "\improper Engineering Lockers" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bpC" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpD" = ( /obj/structure/surface/rack, /obj/item/device/camera_film, -/obj/item/device/analyzer, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpE" = ( /obj/structure/surface/rack, -/obj/item/weapon/gun/smg/nailgun, -/obj/item/weapon/gun/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/obj/item/ammo_magazine/smg/nailgun, -/turf/open/floor, +/obj/item/device/analyzer, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpF" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpI" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23131,7 +23503,10 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/device/lightreplacer, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpK" = ( /obj/structure/machinery/light{ @@ -23140,31 +23515,43 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bpL" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/hunter_secondary, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bpM" = ( -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/obj/structure/pipes/standard/manifold/fourway/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpO" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bpP" = ( /obj/structure/machinery/camera/autoname{ @@ -23173,7 +23560,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpQ" = ( /obj/structure/machinery/light{ @@ -23183,20 +23572,26 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpR" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpS" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/good_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bpT" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -23207,13 +23602,14 @@ "bpU" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/stationary, /obj/effect/decal/warning_stripes, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bpV" = ( /obj/effect/decal/warning_stripes{ - icon_state = "N" + icon_state = "N"; + pixel_y = 1 }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bpX" = ( /turf/open/floor{ @@ -23275,8 +23671,8 @@ dir = 1; name = "\improper Engineering Break Room" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bqg" = ( @@ -23291,34 +23687,39 @@ dir = 1; pixel_y = -30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bql" = ( -/obj/effect/decal/cleanable/liquid_fuel, /obj/structure/machinery/door_control{ id = "Engineering"; name = "Storm Shutters"; pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bqo" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bqv" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bqw" = ( /obj/effect/decal/warning_stripes{ icon_state = "E-corner" }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "bqA" = ( /obj/structure/closet/toolcloset, @@ -23339,21 +23740,30 @@ icon_state = "snack-broken"; stat = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bqJ" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bqK" = ( /obj/item/folder/yellow, /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bqL" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23362,8 +23772,8 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engineering Workshop" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bqM" = ( @@ -23371,29 +23781,39 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bqN" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bqP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1; + pixel_y = -1 + }, /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; name = "\improper Engine Reactor Control" }, -/obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bqT" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/survivor_spawner, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bqV" = ( /obj/structure/machinery/light{ @@ -23402,13 +23822,16 @@ /obj/structure/surface/table, /obj/item/paper, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bqX" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" }, -/turf/open/floor, +/turf/open/floor/plating, /area/bigredv2/outside/filtration_plant) "brb" = ( /obj/structure/machinery/landinglight/ds2{ @@ -23434,14 +23857,17 @@ /area/bigredv2/outside/sw) "bre" = ( /obj/structure/bed/chair, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brf" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engineering Workshop" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "brg" = ( @@ -23449,57 +23875,73 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bri" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brj" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"brm" = ( -/obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brn" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/technology_scanner, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/obj/structure/transmitter/colony_net{ - phone_category = "Solaris Ridge"; - phone_color = "yellow"; - phone_id = "Engineering"; - pixel_y = 24 +/obj/structure/machinery/power/breakerbox/activated, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "bro" = ( /obj/structure/machinery/camera/autoname, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bru" = ( /obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brv" = ( /obj/structure/machinery/vending/snack, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brw" = ( /obj/structure/machinery/vending/cola, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brx" = ( /obj/structure/surface/table, /obj/item/stack/cable_coil, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bry" = ( /obj/structure/pipes/standard/manifold/hidden/green{ @@ -23507,14 +23949,18 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brz" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brA" = ( /obj/structure/surface/table, @@ -23529,17 +23975,25 @@ pixel_x = 30 }, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brB" = ( /obj/structure/machinery/light{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brC" = ( /obj/effect/landmark/good_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brD" = ( /turf/open/floor/plating, @@ -23560,42 +24014,61 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brJ" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/glass, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/hunter_primary, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brL" = ( /obj/structure/bed/chair/office/light{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brM" = ( /obj/structure/surface/table, /obj/effect/spawner/random/powercell, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brO" = ( /obj/structure/machinery/light{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "brP" = ( /obj/structure/bed/chair/office/light{ dir = 8 }, -/turf/open/floor, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "brR" = ( /obj/item/device/radio/intercom{ @@ -23604,36 +24077,50 @@ name = "General Listening Channel"; pixel_x = 30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/engineering) "brU" = ( /obj/structure/surface/table, /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brV" = ( /obj/structure/bed/chair/office/light{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brW" = ( /obj/structure/surface/table, /obj/item/weapon/baton, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "brY" = ( /obj/structure/bed/chair/office/light, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "brZ" = ( /obj/structure/bed/chair/office/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/filtration_plant) "bsa" = ( /obj/structure/machinery/floodlight/landing/floor, @@ -23683,11 +24170,9 @@ amount = 30 }, /obj/effect/landmark/crap_item, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bso" = ( -/obj/structure/machinery/power/geothermal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bss" = ( /obj/structure/prop/invuln/minecart_tracks{ @@ -23698,40 +24183,50 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) -"bsu" = ( -/obj/effect/landmark/crap_item, -/turf/open/floor, -/area/bigredv2/outside/engineering) "bsB" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsC" = ( /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsD" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsE" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsF" = ( /obj/structure/surface/table, /obj/item/circuitboard/solar_tracker, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bsG" = ( /obj/structure/closet/wardrobe/engineering_yellow, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "bsH" = ( /obj/effect/landmark/hunter_primary, @@ -23747,19 +24242,26 @@ icon_state = "coffee-broken"; stat = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsK" = ( /obj/structure/machinery/light, /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsL" = ( /obj/effect/landmark/crap_item, /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsM" = ( /obj/structure/machinery/door_control{ @@ -23767,7 +24269,10 @@ name = "Storm Shutters"; pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsN" = ( /obj/structure/surface/table, @@ -23779,49 +24284,62 @@ /obj/item/stack/sheet/glass{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bsP" = ( -/obj/structure/surface/table, -/obj/effect/spawner/random/toolbox, -/turf/open/floor, +/obj/structure/closet/radiation, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "bsX" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bsY" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/area/bigredv2/outside/filtration_plant) +/area/bigredv2/outside/engineering) "bsZ" = ( /obj/structure/janitorialcart, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bta" = ( /obj/structure/machinery/constructable_frame{ icon_state = "box_1" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btb" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/constructable_frame, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btc" = ( /obj/structure/surface/table, /obj/structure/machinery/light, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btd" = ( /obj/structure/surface/table, @@ -23829,28 +24347,48 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bte" = ( -/obj/structure/machinery/light, -/turf/open/floor, +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/sign/safety/high_rad{ + pixel_x = 32 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bti" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btj" = ( /obj/structure/bed/chair, /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "btk" = ( /obj/structure/bed/chair, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "btn" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -23865,43 +24403,40 @@ }, /area/bigredv2/outside/se) "btr" = ( -/obj/structure/machinery/computer/station_alert{ - dir = 1 +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" }, -/obj/structure/surface/table, -/turf/open/floor, -/area/bigredv2/outside/engineering) -"bts" = ( -/obj/structure/machinery/power/monitor{ - name = "Main Power Grid Monitoring" - }, -/turf/open/floor, /area/bigredv2/outside/engineering) "btt" = ( -/obj/structure/surface/table, -/obj/item/device/analyzer, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/obj/structure/bed/chair/office/light, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "btu" = ( -/obj/structure/machinery/computer/atmos_alert{ - dir = 1 +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" }, -/obj/structure/surface/table, -/turf/open/floor, /area/bigredv2/outside/engineering) "btw" = ( /turf/open/floor/plating, /area/bigredv2/outside/lz2_south_cas) "btA" = ( /obj/effect/landmark/hunter_primary, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "btB" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "btD" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_7" @@ -23915,8 +24450,8 @@ dir = 1; name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "btJ" = ( @@ -23924,13 +24459,19 @@ dir = 4 }, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "btK" = ( -/obj/structure/pipes/standard/manifold/hidden/green{ - dir = 1 +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/item/stack/sheet/metal, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "btN" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -23940,15 +24481,18 @@ /obj/structure/machinery/light{ dir = 4 }, -/turf/open/floor, -/area/bigredv2/outside/filtration_plant) +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "bua" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Engineering Complex" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "bub" = ( @@ -25524,7 +26068,9 @@ /obj/structure/surface/table, /obj/item/trash/kepler, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bAp" = ( /obj/structure/pipes/vents/pump{ @@ -25835,9 +26381,12 @@ }, /area/bigredv2/caves/eta/xenobiology) "bBg" = ( -/obj/structure/machinery/power/geothermal, -/turf/open/floor/plating, -/area/bigredv2/outside/medical) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "bBh" = ( /obj/structure/filingcabinet, /turf/open/floor{ @@ -27309,12 +27858,27 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/telecomm/lz2_cave) +"bYW" = ( +/obj/structure/pipes/vents/pump, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "bZp" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/open/floor/plating, /area/bigredv2/outside/nw/ceiling) +"bZJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/suit/radiation, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "bZL" = ( /obj/effect/landmark/monkey_spawn, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -27338,7 +27902,10 @@ /obj/structure/surface/table, /obj/effect/spawner/random/bomb_supply, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "cdA" = ( /turf/open/mars_cave{ @@ -27386,6 +27953,14 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"cla" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "clB" = ( /turf/open/floor{ dir = 1; @@ -27505,10 +28080,15 @@ icon_state = "darkyellowcorners2" }, /area/bigredv2/caves/eta/living) -"cuF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +"cud" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cvi" = ( /obj/effect/decal/cleanable/dirt, @@ -27583,12 +28163,6 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) -"cFb" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/stack/sheet/metal, -/obj/structure/bed/chair/office/light, -/turf/open/floor, -/area/bigredv2/outside/engineering) "cGQ" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor{ @@ -27603,7 +28177,10 @@ pixel_x = -32; start_charge = 0 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "cGZ" = ( /turf/open/mars_cave{ @@ -27681,6 +28258,12 @@ icon_state = "mars_cave_20" }, /area/bigredv2/caves_north) +"cKu" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "cLZ" = ( /obj/structure/closet/secure_closet/brig, /obj/effect/landmark/objective_landmark/close, @@ -27688,12 +28271,31 @@ icon_state = "dark" }, /area/bigredv2/outside/marshal_office) +"cNb" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "cNH" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ icon_state = "delivery" }, /area/bigredv2/outside/bar) +"cOa" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/crap_item, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "cOl" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" @@ -27799,6 +28401,12 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"cZB" = ( +/obj/structure/pipes/standard/manifold/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "daf" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -27835,6 +28443,14 @@ icon_state = "delivery" }, /area/bigredv2/outside/c) +"dhN" = ( +/obj/structure/window/framed/solaris, +/obj/structure/machinery/door/poddoor/almayer{ + id = "rad_door"; + name = "\improper Radiation Shielding" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/engineering) "dhS" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -27926,6 +28542,19 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dsm" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"dsy" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "dtf" = ( /obj/structure/prop/server_equipment/broken, /turf/open/floor{ @@ -27947,6 +28576,12 @@ /obj/effect/landmark/corpsespawner/colonist/burst, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"duA" = ( +/obj/structure/platform{ + dir = 1 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "dvB" = ( /obj/item/ore/coal{ pixel_x = 9; @@ -27959,10 +28594,10 @@ /area/bigredv2/caves/mining) "dvC" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, -/area/bigredv2/outside/filtration_plant) +/area/bigredv2/outside/engineering) "dwL" = ( /obj/structure/bed/chair{ buckling_y = 5; @@ -27991,6 +28626,16 @@ "dyv" = ( /turf/open/mars, /area/bigredv2/caves/eta/xenobiology) +"dyH" = ( +/obj/structure/machinery/computer/area_atmos{ + dir = 1 + }, +/obj/structure/surface/table, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "dzY" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/floor{ @@ -28035,6 +28680,17 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"dBU" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "dCb" = ( /obj/effect/landmark/corpsespawner/security/marshal, /obj/effect/decal/cleanable/blood/oil, @@ -28227,6 +28883,12 @@ icon_state = "mars_cave_23" }, /area/bigredv2/caves/mining) +"dQw" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_5" + }, +/area/bigredv2/caves_sw) "dQF" = ( /obj/effect/spawner/random/tool, /turf/open/mars_cave{ @@ -28234,16 +28896,13 @@ }, /area/bigredv2/caves/mining) "dQZ" = ( -/obj/structure/machinery/door/airlock/almayer/engineering/colony{ - name = "\improper Engine Reactor Control" - }, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 - }, +/obj/structure/closet/toolcloset, +/obj/effect/decal/cleanable/dirt, /turf/open/floor{ - icon_state = "delivery" + dir = 5; + icon_state = "darkyellow2" }, -/area/bigredv2/outside/engineering) +/area/bigredv2/outside/filtration_plant) "dSg" = ( /obj/effect/landmark/crap_item, /obj/effect/decal/cleanable/dirt, @@ -28273,6 +28932,14 @@ icon_state = "mars_cave_5" }, /area/bigredv2/outside/lz2_south_cas) +"dWd" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "dWg" = ( /obj/structure/pipes/standard/simple/hidden/green, /turf/open/mars{ @@ -28281,7 +28948,10 @@ /area/bigredv2/outside/c) "dWl" = ( /obj/structure/closet/toolcloset, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "dXs" = ( /obj/item/tool/pickaxe{ @@ -28325,6 +28995,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ebr" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "ebZ" = ( /turf/open/floor{ icon_state = "darkgreencorners2" @@ -28375,6 +29052,14 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"egL" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "egS" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -28548,6 +29233,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"ewv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/curtain/red, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/engineering) "exc" = ( /turf/open/floor{ dir = 4; @@ -28635,10 +29327,9 @@ }, /area/bigredv2/caves_sw) "eGM" = ( -/obj/structure/surface/table, -/obj/item/device/lightreplacer, -/obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "eHA" = ( /obj/structure/pipes/standard/simple/hidden/green, @@ -28646,6 +29337,14 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/xenobiology) +"eIN" = ( +/obj/structure/machinery/power/port_gen/pacman, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "eJE" = ( /turf/open/floor{ dir = 4; @@ -28670,7 +29369,10 @@ pixel_x = 30; throw_range = 15 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "eLp" = ( /obj/structure/closet/secure_closet/brig, @@ -28738,6 +29440,13 @@ }, /turf/closed/wall/solaris, /area/bigredv2/outside/dorms) +"eSm" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "eSu" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ @@ -28883,8 +29592,13 @@ /area/bigredv2/caves/lambda/research) "fgE" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/static_comms/net_two, -/turf/open/floor, +/obj/effect/decal/remains/human, +/obj/effect/landmark/static_comms/net_two{ + broken_on_spawn = 1 + }, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/engineering) "fhy" = ( /obj/structure/bed/chair/comfy/blue{ @@ -29085,6 +29799,11 @@ /obj/structure/pipes/standard/tank/phoron, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"fBo" = ( +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "fCb" = ( /turf/open/floor, /area/bigredv2/outside/filtration_cave_cas) @@ -29094,6 +29813,14 @@ icon_state = "darkred2" }, /area/bigredv2/caves/eta/research) +"fEv" = ( +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + name = "\improper Engine Reactor" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) "fFG" = ( /obj/structure/largecrate/random/barrel, /turf/open/mars_cave{ @@ -29141,6 +29868,12 @@ icon_state = "mars_cave_6" }, /area/bigredv2/caves_virology) +"fLl" = ( +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "fLA" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, @@ -29221,7 +29954,10 @@ /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "fOM" = ( /obj/effect/decal/warning_stripes{ @@ -29295,12 +30031,31 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"fUp" = ( +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + dir = 1; + name = "\improper Engine Reactor" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) "fWw" = ( /turf/open/jungle{ bushes_spawn = 0; icon_state = "grass_impenetrable" }, /area/bigredv2/caves/eta/xenobiology) +"fXm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "fYH" = ( /turf/closed/wall/solaris/reinforced/hull, /area/bigredv2/caves/mining) @@ -29330,8 +30085,8 @@ }, /area/bigredv2/outside/eta) "gad" = ( -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "gan" = ( @@ -29354,6 +30109,12 @@ "gda" = ( /turf/open/mars_cave, /area/bigredv2/outside/lz1_telecomm_cas) +"gdx" = ( +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gdN" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars, @@ -29363,6 +30124,14 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/outside/lz1_north_cas) +"gfX" = ( +/obj/structure/sign/safety/hazard{ + pixel_y = -32 + }, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "ggC" = ( /obj/structure/surface/rack, /obj/effect/landmark/good_item, @@ -29381,6 +30150,10 @@ "gio" = ( /turf/open/mars_cave, /area/bigredv2/outside/filtration_cave_cas) +"giB" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave, +/area/bigredv2/caves_sw) "giY" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -29420,6 +30193,15 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/lz2_south_cas) +"gmm" = ( +/obj/structure/window/framed/solaris, +/obj/effect/decal/cleanable/molten_item, +/obj/structure/machinery/door/poddoor/almayer{ + id = "rad_door"; + name = "\improper Radiation Shielding" + }, +/turf/open/floor/plating, +/area/bigredv2/outside/engineering) "gmN" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" @@ -29493,6 +30275,12 @@ "gtX" = ( /turf/open/mars_cave, /area/bigredv2/caves_se) +"guu" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "guM" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_4" @@ -29520,6 +30308,13 @@ icon_state = "elevatorshaft" }, /area/bigredv2/caves/lambda/breakroom) +"gwg" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gxJ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_18" @@ -29568,7 +30363,10 @@ "gCx" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "gCC" = ( /obj/structure/closet/secure_closet, @@ -29596,6 +30394,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_east) +"gFR" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gGO" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating{ @@ -29609,6 +30414,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"gHV" = ( +/obj/structure/surface/table, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gJw" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave, @@ -29619,6 +30431,13 @@ icon_state = "mars_cave_4" }, /area/bigredv2/caves_virology) +"gML" = ( +/obj/structure/machinery/power/turbine, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "gNz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -29640,6 +30459,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"gPh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + name = "\improper Engine Reactor" + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) "gPE" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/flashlight/lantern, @@ -29683,6 +30511,28 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"gUD" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"gVl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "gVm" = ( /turf/open/floor{ dir = 6; @@ -29726,12 +30576,50 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"gZc" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/sign/safety/high_rad{ + pixel_x = -32 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"haT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "hcb" = ( /obj/effect/landmark/hunter_secondary, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, /area/bigredv2/outside/lz1_telecomm_cas) +"hcH" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"hdc" = ( +/obj/structure/bed/chair{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "heG" = ( /obj/structure/bed/chair{ can_buckle = 0; @@ -29776,6 +30664,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/outside/lz1_north_cas) +"hhK" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "hiP" = ( /obj/structure/sign/safety/one{ pixel_x = 16 @@ -29874,7 +30768,9 @@ "hsF" = ( /obj/structure/closet/firecloset/full, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "hsJ" = ( /obj/item/ore, @@ -30126,6 +31022,18 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"hYB" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 5 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "hYI" = ( /obj/effect/landmark/xeno_hive_spawn, /obj/effect/landmark/ert_spawns/groundside_xeno, @@ -30161,6 +31069,10 @@ }, /turf/open/floor, /area/bigredv2/outside/cargo) +"iaC" = ( +/obj/structure/platform, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "iaN" = ( /obj/structure/largecrate/random/barrel/red, /obj/effect/decal/cleanable/dirt, @@ -30186,6 +31098,13 @@ icon_state = "mars_cave_6" }, /area/bigredv2/caves_sw) +"idM" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "iep" = ( /obj/structure/surface/rack, /obj/item/clothing/head/hardhat/dblue{ @@ -30254,6 +31173,11 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/outside/eta) +"iig" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/framed/solaris, +/turf/open/floor/plating, +/area/bigredv2/outside/engineering) "ijU" = ( /obj/structure/prop/almayer/cannon_cables{ name = "\improper Cables" @@ -30387,13 +31311,24 @@ "iyd" = ( /obj/structure/machinery/computer/general_air_control, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "iyY" = ( /turf/open/mars_cave{ icon_state = "mars_cave_13" }, /area/bigredv2/outside/lz1_north_cas) +"izb" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "izh" = ( /turf/open/mars_cave{ icon_state = "mars_cave_2" @@ -30422,6 +31357,12 @@ icon_state = "mars_cave_11" }, /area/bigredv2/caves_sw) +"iAI" = ( +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "iDJ" = ( /obj/effect/landmark/corpsespawner/miner, /obj/effect/decal/cleanable/blood{ @@ -30471,6 +31412,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"iFa" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/bananapeel, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "iGK" = ( /turf/open/mars_cave, /area/bigredv2/caves_sw) @@ -30511,10 +31460,8 @@ }, /area/bigredv2/caves/mining) "iNR" = ( -/turf/open/mars_cave{ - icon_state = "mars_cave_20" - }, -/area/bigredv2/caves_sw) +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "iOL" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -30534,12 +31481,10 @@ /turf/open/gm/river, /area/bigredv2/outside/filtration_plant) "iQC" = ( -/obj/structure/surface/table, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/landmark/crap_item, +/turf/open/floor{ + icon_state = "dark" }, -/obj/item/clothing/head/welding, -/turf/open/floor, /area/bigredv2/outside/engineering) "iQG" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -30569,6 +31514,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"iSz" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/obj/structure/barricade/handrail, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) "iUe" = ( /turf/open/floor{ dir = 6; @@ -30869,6 +31823,19 @@ icon_state = "bcircuitoff" }, /area/bigredv2/caves/lambda/research) +"jxA" = ( +/obj/structure/barricade/handrail, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) +"jxS" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jzD" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/floor{ @@ -30894,6 +31861,11 @@ icon_state = "mars_cave_5" }, /area/bigredv2/caves_sw) +"jAJ" = ( +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/engineering) "jAN" = ( /obj/item/tool/pickaxe, /turf/open/mars_cave{ @@ -30949,6 +31921,14 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"jDT" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jEx" = ( /obj/structure/machinery/power/port_gen/pacman/super, /turf/open/mars_cave{ @@ -31036,6 +32016,16 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_sw) +"jMn" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/cleanable/ash, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jOc" = ( /obj/structure/machinery/door/poddoor/almayer/closed{ dir = 4; @@ -31119,6 +32109,21 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"jRn" = ( +/obj/structure/machinery/computer3/server, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"jTk" = ( +/obj/structure/surface/table, +/obj/effect/decal/cleanable/molten_item, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jUc" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -31199,6 +32204,25 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"jXf" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"jXJ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light_construct{ + dir = 8 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jXP" = ( /obj/item/stack/cable_coil/cut, /turf/open/mars_cave{ @@ -31220,7 +32244,9 @@ /area/bigredv2/caves/mining) "jYF" = ( /obj/structure/machinery/recharge_station, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/engineering) "jYS" = ( /obj/effect/decal/cleanable/blood, @@ -31415,6 +32441,15 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"kka" = ( +/obj/structure/barricade/handrail, +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) "kli" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ @@ -31448,6 +32483,12 @@ icon_state = "delivery" }, /area/bigredv2/outside/admin_building) +"kmx" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "knN" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -31490,6 +32531,13 @@ /obj/effect/decal/cleanable/blood/writing, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"ksO" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "ktE" = ( /obj/item/tool/wrench{ pixel_x = -7; @@ -31507,6 +32555,13 @@ icon_state = "mars_cave_17" }, /area/bigredv2/outside/filtration_plant) +"ktY" = ( +/obj/effect/landmark/survivor_spawner, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "kuu" = ( /obj/effect/decal/cleanable/dirt, /obj/item/trash/cigbutt, @@ -31675,6 +32730,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_research) +"kNK" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "kNP" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 @@ -31758,10 +32820,10 @@ }, /area/bigredv2/outside/filtration_cave_cas) "kVT" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "kVY" = ( /obj/structure/surface/rack, @@ -31808,6 +32870,13 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"lck" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "lcu" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/clothing/mask/cigarette, @@ -31866,6 +32935,13 @@ }, /turf/open/floor, /area/bigredv2/outside/lz2_south_cas) +"lmi" = ( +/obj/structure/closet/toolcloset, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "lms" = ( /turf/open/floor{ dir = 6; @@ -31885,6 +32961,16 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"lqo" = ( +/obj/item/tool/lighter/random, +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "lrH" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -32036,6 +33122,14 @@ icon_state = "redfull" }, /area/bigredv2/caves/eta/research) +"lEi" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "lEw" = ( /obj/item/tool/pickaxe{ pixel_y = -3 @@ -32181,6 +33275,23 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"lTi" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"lTM" = ( +/obj/item/folder/yellow, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "lUd" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -32234,6 +33345,12 @@ icon_state = "platingdmg2" }, /area/bigredv2/caves/mining) +"lYH" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "lYZ" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -32246,8 +33363,8 @@ }, /area/bigredv2/caves/mining) "maD" = ( -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "maF" = ( @@ -32256,6 +33373,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"maH" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "mdU" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -32294,6 +33419,21 @@ }, /turf/closed/wall/solaris/reinforced/hull, /area/bigredv2/caves/mining) +"mhZ" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"mij" = ( +/obj/item/folder/yellow, +/obj/effect/landmark/crap_item, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "miD" = ( /obj/effect/decal/cleanable/blood, /obj/effect/landmark/corpsespawner/security/marshal, @@ -32308,6 +33448,13 @@ }, /turf/open/floor, /area/bigred/ground/garage_workshop) +"mlV" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "mmg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/drip{ @@ -32338,6 +33485,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"mqh" = ( +/obj/structure/window/framed/solaris, +/turf/open/floor{ + icon_state = "panelscorched" + }, +/area/bigredv2/outside/engineering) "mqX" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/mars_cave{ @@ -32563,6 +33716,14 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"mPK" = ( +/obj/effect/decal/cleanable/liquid_fuel, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "mRi" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/mars_cave{ @@ -32581,6 +33742,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"mSS" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "mST" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -32678,6 +33845,12 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"ndw" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "ndy" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -3; @@ -32699,6 +33872,15 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"niQ" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 6 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "njf" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_6" @@ -32734,6 +33916,12 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"nlJ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "nlW" = ( /obj/structure/platform/kutjevo/rock, /obj/structure/platform/kutjevo/rock{ @@ -32742,6 +33930,13 @@ /obj/structure/platform_decoration/kutjevo/rock, /turf/open/mars, /area/space) +"nmU" = ( +/obj/structure/surface/table, +/obj/item/device/analyzer, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "nny" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_7" @@ -32754,6 +33949,23 @@ icon_state = "asteroidfloor" }, /area/bigredv2/outside/e) +"nnU" = ( +/obj/structure/machinery/door_control{ + desc = "A remote control-switch for opening the engines blast doors."; + id = "rad_door"; + name = "Reactor Radiation Shielding control"; + pixel_x = 30; + req_access_txt = "7" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "npz" = ( /obj/structure/surface/table, /obj/item/spacecash/c100, @@ -32811,6 +34023,18 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"nug" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 9 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "nuw" = ( /obj/effect/decal/warning_stripes{ icon_state = "NE-out"; @@ -32821,6 +34045,19 @@ icon_state = "dark" }, /area/bigredv2/outside/admin_building) +"nuz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"nwB" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "nwS" = ( /obj/item/ore{ pixel_x = -7; @@ -32838,6 +34075,13 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"nzN" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "nBb" = ( /obj/item/ammo_magazine/pistol/b92fs, /obj/item/weapon/gun/pistol/b92fs{ @@ -32875,6 +34119,14 @@ icon_state = "mars_dirt_5" }, /area/bigredv2/outside/eta) +"nEP" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) "nEV" = ( /obj/item/weapon/twohanded/folded_metal_chair{ pixel_x = -10; @@ -32931,6 +34183,15 @@ icon_state = "delivery" }, /area/bigredv2/outside/filtration_cave_cas) +"nIi" = ( +/obj/structure/machinery/door/airlock/almayer/secure/colony{ + dir = 1; + name = "\improper Engine Reactor" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) "nKL" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "An exchange valve"; @@ -32944,6 +34205,12 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"nLw" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_dirt_4" + }, +/area/bigredv2/outside/sw) "nMB" = ( /obj/structure/machinery/door_control{ id = "workshop_br_g"; @@ -32963,6 +34230,15 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"nPz" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "nQl" = ( /obj/item/ore{ pixel_x = -1; @@ -33023,10 +34299,9 @@ }, /area/bigredv2/outside/filtration_cave_cas) "nVq" = ( -/obj/structure/surface/table, -/obj/item/clothing/glasses/welding, -/obj/structure/pipes/vents/pump, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "nVw" = ( /turf/open/mars_cave{ @@ -33211,6 +34486,12 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/outside/sw) +"ojD" = ( +/obj/structure/platform_decoration{ + dir = 4 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "okh" = ( /obj/structure/cable{ icon_state = "4-8" @@ -33351,7 +34632,9 @@ "orZ" = ( /obj/structure/closet/secure_closet/atmos_personal, /obj/effect/landmark/objective_landmark/medium, -/turf/open/floor, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, /area/bigredv2/outside/filtration_plant) "otb" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, @@ -33368,6 +34651,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ouh" = ( +/obj/item/tool/extinguisher, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "ovq" = ( /turf/open/floor{ icon_state = "delivery" @@ -33491,6 +34781,16 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves/mining) +"oIK" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 4 + }, +/obj/structure/platform_decoration{ + dir = 6 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "oJd" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -33657,6 +34957,14 @@ icon_state = "darkblue2" }, /area/bigredv2/outside/admin_building) +"oWp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "oWC" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A heavy duty power cable for high voltage applications"; @@ -33807,6 +35115,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"pgk" = ( +/obj/structure/machinery/portable_atmospherics/canister/air, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pgu" = ( /obj/effect/decal/warning_stripes{ icon_state = "W-corner" @@ -33856,6 +35171,15 @@ icon_state = "mars_dirt_11" }, /area/bigredv2/caves_north) +"pog" = ( +/obj/structure/platform{ + dir = 1 + }, +/obj/structure/platform{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "pow" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -33963,6 +35287,13 @@ icon_state = "dark" }, /area/bigredv2/outside/admin_building) +"pBv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "pBD" = ( /turf/open/floor{ dir = 4; @@ -34037,12 +35368,28 @@ icon_state = "mars_cave_14" }, /area/bigredv2/caves/mining) +"pKP" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/tool, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pLj" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/mars_cave{ icon_state = "mars_cave_19" }, /area/bigredv2/caves/mining) +"pMi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/tool/extinguisher, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pMm" = ( /turf/open/floor{ dir = 8; @@ -34076,12 +35423,28 @@ icon_state = "wood" }, /area/bigredv2/outside/admin_building) +"pOg" = ( +/obj/structure/machinery/compressor{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pOL" = ( /obj/structure/closet/crate/miningcar/yellow, /turf/open/mars_cave{ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"pPo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "pQv" = ( /obj/structure/surface/table, /obj/effect/landmark/objective_landmark/close, @@ -34098,6 +35461,14 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave, /area/bigredv2/outside/lz1_telecomm_cas) +"pRG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/blood/oil, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pRP" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/telecomm/n_cave) @@ -34137,6 +35508,16 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"pVv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/compressor{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "pVP" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ @@ -34144,6 +35525,14 @@ icon_state = "asteroidfloor" }, /area/bigred/ground/garage_workshop) +"pWs" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor/plating/plating_catwalk, +/area/bigredv2/outside/engineering) "pXm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -34241,7 +35630,10 @@ /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "qeX" = ( /obj/structure/largecrate, @@ -34395,6 +35787,13 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"qqw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "qrZ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/firstaid/fire, @@ -34541,6 +35940,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"qGY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"qHc" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) "qHY" = ( /turf/open/mars_cave{ icon_state = "mars_cave_10" @@ -34640,6 +36053,15 @@ icon_state = "dark" }, /area/bigredv2/caves/eta/xenobiology) +"qUF" = ( +/obj/structure/machinery/computer/area_atmos{ + dir = 1 + }, +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "qUS" = ( /turf/open/mars_cave{ icon_state = "mars_dirt_6" @@ -34743,6 +36165,13 @@ icon_state = "mars_cave_16" }, /area/bigredv2/caves_research) +"rdr" = ( +/obj/effect/decal/cleanable/blood, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "rdR" = ( /turf/open/floor, /area/bigredv2/outside/lz2_south_cas) @@ -34793,6 +36222,18 @@ icon_state = "warnplate" }, /area/bigredv2/outside/telecomm/warehouse) +"rhP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "rie" = ( /obj/effect/decal/cleanable/blood/drip, /obj/item/stack/cable_coil/cut{ @@ -34830,6 +36271,12 @@ "rnc" = ( /turf/open/mars_cave, /area/bigredv2/caves_research) +"rnV" = ( +/obj/item/stack/sheet/glass, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "row" = ( /turf/open/floor{ dir = 8; @@ -34934,6 +36381,12 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"rvS" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_sw) "rxh" = ( /turf/open/mars_cave{ icon_state = "mars_cave_2" @@ -34945,6 +36398,12 @@ icon_state = "mars_cave_23" }, /area/bigredv2/caves_east) +"rzb" = ( +/obj/structure/bed/chair, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "rzO" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/water_cooler/stacks{ @@ -35194,6 +36653,12 @@ }, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"rUN" = ( +/obj/structure/platform{ + dir = 4 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "rUZ" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -35249,6 +36714,13 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"rYr" = ( +/obj/structure/surface/table, +/obj/effect/decal/cleanable/ash, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "rYt" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ @@ -35276,6 +36748,23 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"sap" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"saX" = ( +/obj/structure/machinery/power/turbine, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sbk" = ( /obj/effect/landmark/corpsespawner/miner, /obj/effect/decal/cleanable/blood, @@ -35374,11 +36863,17 @@ icon_state = "mars_dirt_5" }, /area/bigredv2/caves/mining) +"slC" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) "slG" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + icon_state = "dark" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "smh" = ( /obj/structure/blocker/forcefield/multitile_vehicles, @@ -35411,6 +36906,15 @@ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"snv" = ( +/obj/structure/machinery/light_construct{ + dir = 4 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sog" = ( /obj/item/explosive/grenade/slug/baton{ dir = 1; @@ -35596,6 +37100,19 @@ icon_state = "mars_dirt_6" }, /area/bigredv2/caves/mining) +"szy" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"sAG" = ( +/obj/effect/landmark/hunter_primary, +/turf/open/mars_cave{ + icon_state = "mars_cave_2" + }, +/area/bigredv2/caves_sw) "sAS" = ( /obj/item/toy/prize/fireripley{ pixel_y = 19 @@ -35603,6 +37120,17 @@ /obj/structure/surface/table/reinforced/prison, /turf/open/floor/plating, /area/bigredv2/caves/mining) +"sBm" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "sBu" = ( /obj/effect/landmark/hunter_secondary, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -35617,9 +37145,9 @@ }, /area/bigredv2/caves/mining) "sCt" = ( -/obj/structure/closet/toolcloset, -/obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "sDs" = ( /obj/structure/closet/crate/miningcar, @@ -35639,6 +37167,20 @@ icon_state = "mars_cave_9" }, /area/bigredv2/caves_sw) +"sDO" = ( +/obj/structure/machinery/power/port_gen/pacman, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"sDZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/head/welding, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sEi" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -35716,6 +37258,12 @@ /obj/structure/machinery/suit_storage_unit/carbon_unit, /turf/open/floor/plating, /area/bigredv2/outside/admin_building) +"sNP" = ( +/obj/structure/window/framed/solaris, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/bigredv2/outside/engineering) "sNQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_11" @@ -35850,6 +37398,10 @@ icon_state = "mars_cave_3" }, /area/bigredv2/caves_research) +"tcP" = ( +/obj/effect/decal/cleanable/dirt/greenglow, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/engineering) "tdn" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 @@ -35875,6 +37427,14 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves_se) +"tdN" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "tdZ" = ( /obj/item/tool/pickaxe/drill, /obj/structure/machinery/light{ @@ -35965,6 +37525,17 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"tju" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + icon_state = "freezerfloor" + }, +/area/bigredv2/outside/engineering) "tkN" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -36034,7 +37605,10 @@ /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "trW" = ( /obj/item/clothing/suit/storage/hazardvest, @@ -36086,6 +37660,15 @@ icon_state = "mars_cave_14" }, /area/bigredv2/outside/lz2_south_cas) +"tub" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 5 + }, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "tuu" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -36110,12 +37693,29 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/lz2_south_cas) +"tvH" = ( +/obj/structure/machinery/compressor{ + dir = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "twS" = ( /turf/open/floor{ dir = 1; icon_state = "asteroidwarning" }, /area/bigredv2/outside/telecomm/lz2_cave) +"tzJ" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + name = "\improper Engine Reactor Control" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) "tAe" = ( /obj/structure/bed, /obj/effect/landmark/objective_landmark/close, @@ -36253,6 +37853,13 @@ icon_state = "mars_cave_7" }, /area/bigredv2/caves_lambda) +"tIv" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "tIA" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/toolbox, @@ -36282,6 +37889,15 @@ icon_state = "mars_dirt_4" }, /area/bigredv2/caves/mining) +"tKr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "tKC" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cans/beer{ @@ -36394,9 +38010,10 @@ }, /area/bigredv2/caves/lambda/research) "tTI" = ( -/obj/structure/surface/table, -/obj/item/pizzabox, -/turf/open/floor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "tUL" = ( /obj/effect/decal/cleanable/dirt, @@ -36444,6 +38061,17 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"uaS" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + name = "\improper Engine Reactor Control" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/engineering) "ubY" = ( /obj/structure/barricade/wooden, /turf/open/mars_cave{ @@ -36458,6 +38086,13 @@ icon_state = "mars_cave_4" }, /area/bigredv2/caves_se) +"ueL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/window/framed/solaris, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/bigredv2/outside/engineering) "ufu" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, @@ -36581,6 +38216,14 @@ icon_state = "delivery" }, /area/bigredv2/outside/admin_building) +"urn" = ( +/obj/structure/surface/table, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "usg" = ( /obj/item/tool/warning_cone, /turf/open/floor{ @@ -36657,6 +38300,14 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"uBi" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "uCa" = ( /obj/effect/landmark/corpsespawner/miner, /turf/open/floor/plating{ @@ -36677,6 +38328,12 @@ }, /turf/closed/wall/wood, /area/bigredv2/caves/mining) +"uDA" = ( +/obj/item/stack/sheet/glass, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "uDI" = ( /obj/structure/prop/invuln/minecart_tracks{ desc = "A pipe."; @@ -36726,6 +38383,13 @@ icon_state = "mars_cave_15" }, /area/bigredv2/caves/mining) +"uGs" = ( +/obj/structure/surface/table, +/obj/effect/decal/cleanable/ash, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "uGz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -36761,6 +38425,15 @@ icon_state = "asteroidfloor" }, /area/bigred/ground/garage_workshop) +"uJj" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "uJu" = ( /obj/item/robot_parts/robot_component/diagnosis_unit{ pixel_y = 15 @@ -36858,6 +38531,13 @@ icon_state = "mars_dirt_10" }, /area/bigredv2/outside/space_port_lz2) +"uTO" = ( +/obj/structure/machinery/pipedispenser, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "uUV" = ( /obj/structure/prop/server_equipment/yutani_server/broken, /turf/open/floor/greengrid, @@ -36868,6 +38548,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_cave_cas) +"uVn" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/mars_cave{ + icon_state = "mars_cave_7" + }, +/area/bigredv2/caves_sw) "uWo" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, /obj/effect/decal/cleanable/dirt, @@ -36891,6 +38577,13 @@ icon_state = "darkpurple2" }, /area/bigredv2/caves/lambda/research) +"vbp" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vcm" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -36918,6 +38611,17 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"vdl" = ( +/obj/effect/decal/cleanable/liquid_fuel, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vdS" = ( /obj/item/explosive/grenade/incendiary/molotov{ pixel_x = -10; @@ -36967,6 +38671,14 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"vin" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "vis" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -37067,6 +38779,14 @@ icon_state = "wood" }, /area/bigredv2/outside/library) +"voG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/barricade/handrail, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vpu" = ( /obj/item/weapon/twohanded/folded_metal_chair, /turf/open/mars_cave{ @@ -37222,6 +38942,13 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"vCf" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "vCU" = ( /turf/open/mars_cave{ icon_state = "mars_cave_16" @@ -37350,6 +39077,13 @@ icon_state = "mars_cave_2" }, /area/bigredv2/caves/mining) +"vTt" = ( +/obj/structure/surface/table, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vVl" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Dormitories Toilet" @@ -37359,6 +39093,15 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"vVz" = ( +/obj/structure/machinery/power/geothermal{ + name = "Reactor Turbine"; + power_generation_max = 100000 + }, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) "vVF" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -5; @@ -37371,6 +39114,12 @@ "vVZ" = ( /turf/closed/wall/solaris, /area/bigredv2/outside/filtration_cave_cas) +"vWm" = ( +/obj/structure/surface/table, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vXp" = ( /obj/structure/machinery/light{ dir = 8 @@ -37516,7 +39265,9 @@ "whE" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/landmark/objective_landmark/close, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "whZ" = ( /obj/effect/decal/cleanable/blood/oil/streak, @@ -37535,10 +39286,9 @@ /area/bigred/ground/garage_workshop) "wiK" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light{ - dir = 1 +/turf/open/floor{ + icon_state = "podhatchfloor" }, -/turf/open/floor, /area/bigredv2/outside/engineering) "wjW" = ( /obj/structure/platform/shiva{ @@ -37586,6 +39336,12 @@ icon_state = "mars_cave_19" }, /area/bigredv2/caves_north) +"wpn" = ( +/obj/structure/closet/radiation, +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) "wpT" = ( /obj/effect/landmark/lv624/xeno_tunnel, /turf/open/mars, @@ -37621,7 +39377,16 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"wtG" = ( +/obj/structure/machinery/computer3/server/rack, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "wtJ" = ( /obj/effect/decal/cleanable/blood{ @@ -37666,20 +39431,34 @@ }, /area/bigredv2/outside/virology) "wvK" = ( -/obj/structure/machinery/power/geothermal, -/turf/open/floor/plating, -/area/bigredv2/outside/admin_building) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) "wvR" = ( /turf/open/floor{ icon_state = "delivery" }, /area/bigredv2/caves/lambda/virology) +"wwT" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/wall/solaris/reinforced, +/area/bigredv2/outside/engineering) "wxo" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor{ icon_state = "asteroidwarning" }, /area/bigredv2/outside/c) +"wyF" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/toolbox, +/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "wBi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -37722,12 +39501,14 @@ }, /area/bigredv2/caves_north) "wFL" = ( -/obj/structure/surface/table, -/obj/structure/pipes/standard/simple/hidden/green{ - dir = 4 +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/safety/hazard{ + pixel_x = 8; + pixel_y = -32 + }, +/turf/open/floor{ + icon_state = "darkyellow2" }, -/obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, /area/bigredv2/outside/engineering) "wFO" = ( /turf/open/mars_cave{ @@ -37841,6 +39622,19 @@ icon_state = "mars_cave_9" }, /area/bigredv2/caves_north) +"wMM" = ( +/obj/structure/pipes/vents/pump{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "wMQ" = ( /obj/structure/largecrate/random/secure, /turf/open/floor, @@ -37919,6 +39713,22 @@ icon_state = "mars_cave_13" }, /area/bigredv2/caves/mining) +"wVw" = ( +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"wVB" = ( +/obj/structure/platform, +/obj/structure/platform{ + dir = 8 + }, +/obj/structure/platform_decoration{ + dir = 10 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) "wVQ" = ( /turf/open/mars_cave{ icon_state = "mars_cave_17" @@ -37954,6 +39764,16 @@ icon_state = "wood" }, /area/bigredv2/outside/bar) +"wYE" = ( +/obj/structure/prop/server_equipment/yutani_server{ + density = 0; + pixel_y = 16 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "wZC" = ( /turf/open/mars{ icon_state = "mars_dirt_11" @@ -38295,7 +40115,10 @@ /obj/structure/machinery/power/apc{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "xBn" = ( /obj/structure/platform{ @@ -38327,8 +40150,8 @@ "xDW" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/engineering) "xFZ" = ( @@ -38552,6 +40375,17 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"xXq" = ( +/obj/structure/barricade/handrail{ + dir = 1; + layer = 3.01; + pixel_y = 9 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "xXP" = ( /obj/structure/prop/invuln/minecart_tracks/bumper, /turf/open/mars_cave{ @@ -38588,6 +40422,12 @@ icon_state = "mars_dirt_7" }, /area/bigredv2/caves/mining) +"yar" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "ybk" = ( /turf/open/mars_cave{ icon_state = "mars_cave_17" @@ -38677,6 +40517,20 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"ygP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "yha" = ( /obj/structure/surface/table, /obj/item/device/radio{ @@ -38704,8 +40558,8 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "yjU" = ( @@ -38715,6 +40569,15 @@ icon_state = "platingdmg3" }, /area/bigredv2/caves/mining) +"yjV" = ( +/obj/structure/platform_decoration{ + dir = 8 + }, +/turf/open/gm/river, +/area/bigredv2/outside/engineering) +"ykR" = ( +/turf/closed/wall/mineral/uranium, +/area/bigredv2/outside/engineering) "ykW" = ( /obj/effect/decal/cleanable/blood/drip{ pixel_x = -3; @@ -47992,7 +49855,7 @@ ayf bsa ayf axX -bmi +maD boD axX bpx @@ -48209,8 +50072,8 @@ ayf ayf ayf azb -bmi -bmi +hhK +sCt azb bpx ufD @@ -48426,8 +50289,8 @@ aFc aFc aFc azb -bmi -bmi +hhK +sCt azb bpx ufD @@ -48643,8 +50506,8 @@ aFc aFc bme azb -bmi -bmi +hhK +sCt azb bpx ufD @@ -48860,8 +50723,8 @@ aFc aFc bme azb -bmi -bmi +hhK +sCt azb bpy ufD @@ -49077,8 +50940,8 @@ aFc aFc bme azb -bmi -bmi +hhK +sCt azb bme bqe @@ -49294,8 +51157,8 @@ aFc bme bme azb -bmi -bmi +hhK +sCt axX azB axX @@ -49511,15 +51374,15 @@ bme bme bme azb -bmi -bmi -bmi -bmi +hhK +mSS +btr +kVT azb bqI bre -bmq -bob +maH +hdc bsJ axX bsI @@ -49728,16 +51591,16 @@ bme bme bme azb -bmi -bmi -bmi -bmi +hhK +nVq +nVq +sCt azb -bmi -bmi -bmi -bmi -bmi +hhK +nVq +nVq +nVq +sCt azb bme bme @@ -49945,15 +51808,15 @@ bme bme bme azb -bmi -bmi -bmi -bmi +hhK +nVq +nVq +nVq bqf -bmi -bmi -bmg -bre +nVq +nVq +tTI +rzb bsK axX bme @@ -50162,15 +52025,15 @@ bme bme bme azb -bmi -bmi -bmi -bmi +hhK +nVq +nVq +sCt azb -bmi -bmi -bmg -bre +hhK +nVq +tTI +rzb bsL azb bme @@ -50379,15 +52242,15 @@ bme bme bme azb -bmi -bmi -bmi -bmi +fLl +btu +btu +gdx azb -bmi -bmi -bmi -bmi +fLl +nVq +btu +nVq bsM axX bpx @@ -50817,16 +52680,16 @@ boj boG boj axX -bmi -bmi -bmi +jYF +sap +nVq brI -bmi +sCt azb bpx bpx bpx -aao +bpx aao aao aao @@ -51030,21 +52893,21 @@ bmf bmf bmf bnQ -bmi -bmi +ygP +cud bpe axX jYF -bmi -bmi -bmg -bmi +sap +nVq +tTI +sCt azb kdh -aao -aao -aao -aao +bpx +bpx +bpx +bpx aao aao euF @@ -51245,23 +53108,23 @@ bli bsX bmg bmO -bmy -bmy -bmg -bmg -bmi +vdl +vdl +rhP +tTI +sCt axX ayr ayr brg -bmg -bmi +tTI +sCt axX axX axX -aao -aao -aao +bpx +bpx +bpx aao aao aao @@ -51459,26 +53322,26 @@ bfB bbe bbe blj -blL +dvC bmh bmP bnq -bnq -bnq +qGY +qGY boH bpf bpz -bmg +lck bqJ -bmg +tTI brJ -bpF +niQ bsN bsZ axX -aao -aao -aao +bpx +bpx +bpx aao aao aao @@ -51685,17 +53548,17 @@ ayr boI bor ayr -bmg -bmg -bmg +tTI +tTI +tTI brK -bor -bmg -bmi +cla +tTI +sCt axX -aao -aao -aao +bpx +bpx +bpx aao aao aao @@ -51896,25 +53759,23 @@ aZr axX bmj bmQ -bmQ -bnR +tju bnR -bnW +ewv +bYW bpO bpA -bop +eSm bqK -bnq -bop +kNK +slG bqN -bmg +tTI bta -axX -aao -aao -aao -aao -aao +azb +nLw +bpx +bpx aao aao aao @@ -51923,9 +53784,11 @@ aao aao aao wog +oQI +wog +wog +wog wog -trk -jXX aao uCD aao @@ -52120,30 +53983,30 @@ ayr ayr ayr ayr -bor +nPz bri -bmi +nVq bsm -bmi +nVq btb -axX -aao -aao -aao -aao -aao -aao -aao -aao +azb +nLw +bpx +bpx aao aao aao wog wog -hiY -dxV -dxV -dxV +wog +wog +sAG +wog +oQI +wog +wog +wog +aao aao aao aao @@ -52335,20 +54198,18 @@ bnr bok bnr bpi -bmi +kVT ayr -bor -bmi +nPz +nVq brL -bmi -bmi +nVq +nVq btc axX -aao -aao -aao -aao -aao +nLw +bpx +bpx aao aao aao @@ -52356,11 +54217,13 @@ wog wog wog wog -trk -jXX -dxV -qUS -dxV +wog +wog +wog +icQ +wog +aao +aao aao aao aao @@ -52547,38 +54410,38 @@ bll axX bmm bmS -bmg -bmg -bsu +tTI +tTI +iQC boK -bmi -bmg +nVq +cKu ayr -bor +nPz brj brM aMB -bmg +gwg btd axX +nLw +nLw aao aao aao +giB +giB +giB +giB +giB +giB +giB +giB +giB +aao aao aao aao -wog -wog -trk -wog -wog -jXX -dxV -dxV -dxV -dxV -buz -sDC aao aao qUS @@ -52762,11 +54625,11 @@ aZu aZu blm axX -bmm -bmm -bmi +mhZ +pgk +btu bnS -bmg +tTI boL bpj bpC @@ -52778,27 +54641,27 @@ ayZ axX axX axX +axX +axX +axX +axX +axX +axX +axX +axX +wwT +axX +axX +axX +axX +axX +axX +axX +axX aao aao aao aao -aao -aao -aao -jXX -dxV -qgY -hiY -dxV -dxV -dxV -dxV -dxV -qgY -wog -aao -aao -aao buz wog wog @@ -52988,32 +54851,32 @@ ayr ayr ayr ayr -bor -bmi -bmg -bso -bso -bso +cla +btr +lck +kVT +ayZ +bsP +ayZ +ouh +lck +jXJ +btr +sDO +pOg +saX +pVv +saX +eIN +lck +btr +ayZ +btr +kVT +axX axX aao aao -aao -aao -aao -aao -aao -dxV -dxV -qgY -hiY -dxV -pYt -dxV -pYt -dxV -iNR -wog -wog wog wog wog @@ -53199,37 +55062,37 @@ axX bmn bmT ayr -bmg -bmg +nzN +tTI boM ayr bpD -bmi +btr bqM -bmi -bmi -bmi -bmi +rnV +nVq +tTI +nIi bte +nIi +btu +gwg +gwg +gwg +tTI +btu +gwg +gwg +tTI +btu +btu +ndw +fUp +nVq +sCt +wpn axX aao -aao -aao -aao -aao -aao -dxV -dxV -dxV -qgY -hiY -dxV -dxV -buz -sDC -dxV -dxV -qgY wog wog wog @@ -53416,37 +55279,37 @@ axX bmn bmU bns -bmi -bmg +hhK +tTI boN ayr bpE -bmi -bor -bmi -bmi -bso -bso -bso +nVq +cla +nVq +nVq +gfX +axX +axX +axX +iig +iig +iig +mqh +fEv +iig +iig +ayZ +fEv +ueL +ueL +ayZ +axX +fEv +ayZ +axX axX aao -aao -aao -aao -aao -dxV -dxV -dxV -buz -wog -hiY -dxV -buz -wog -hiY -dxV -dxV -qgY wog wog wog @@ -53634,36 +55497,36 @@ bmn bmV ayr bnV -bmg -bmg +tTI +cKu ayZ bpF -bop +slG bqN -bmi -bmi -bmi -bmi +nVq +nVq +uDA +bsP bsP axX +hYB +iAI +iAI +dsy +iSz +hYB +iAI +wVB +kka +pog +iAI +wVB +ayZ +ndw +sCt +axX aao aao -aao -aao -dxV -dxV -buz -ibZ -wog -wog -wog -ibZ -wog -wog -wog -sDC -dxV -iNR wog wog wog @@ -53851,36 +55714,36 @@ ayr ayr ayr xAX -bmg -bmg +tTI +cKu ayZ -bor -bmg +nPz tTI -brm -bmi -bmi -bmi -brm +tTI +tTI +dsm +mSS +mij +kVT +dhN +duA +iNR +ykR +iaC +iSz +duA +iNR +iaC +kka +duA +ykR +iaC +ayZ +hhK +sCt axX aao -aao -dxV -aao -dxV -dxV -qgY -wog -wog -wog -wog -aao -wog wog -wog -jXX -dxV -dxV qgY wog hiY @@ -54065,40 +55928,40 @@ asK asK axX dWl -bmi -bmi +btr +btr bnW -bop -bmz +slG +ksO bpk bpM -bmi -bmi -bmi -bmi -bmi -bmi +slG +slG +slG +slG +slG +dWd +sCt +dhN +duA +iNR +iNR +iaC +iSz +duA +iNR +iaC +kka +duA +iNR +iaC +ayZ +hhK sCt axX aao -aao -dxV -dxV -dxV -dxV -iNR wog wog -aao -aao -aao -aao -wog -hiY -dxV -dxV -buz -wog wog hiY dxV @@ -54281,40 +56144,40 @@ bjx bjx bjw axX -dWl -bmi -bmg -bmg -bmg -bmg +lmi +nVq +tTI +tTI +tTI +cKu ayZ bpH -bmg -bmg -bmg +kmx +gwg +gwg brO -bmg -bmi -dWl +gwg +cla +gdx +dhN +nug +yjV +ykR +iaC +iSz +duA +iNR +iaC +kka +duA +ykR +iaC +ayZ +hhK +sCt axX -aao -aao -dxV -qUS -pYt -dxV -dxV -qgY -aao -aao -aao -aao -aao +uVn wog -hiY -dxV -dxV -iNR wog wog hiY @@ -54499,39 +56362,39 @@ bjB blq axX bmp -bmi -bmg +nVq +tTI bnX -bmg +tTI aLP ayZ bpI -bmg +cKu axX axX axX axX +uaS axX axX axX -aao -aao -aao -dxV -dxV -dxV -dxV -qgY -aao -aao -aao -aao -qUS +duA iNR -jXX -dxV -dxV -dxV +iaC +iSz +nug +rUN +oIK +kka +duA +iNR +iaC +ayZ +hhK +sCt +axX +dQw +wog qgY wog wog @@ -54716,39 +56579,39 @@ bkp blq axX bmq -bmi +nVq bnt -bmg -bmi +tTI +nVq boR ayr -bor -bmi +nPz +sCt axX brn -bmq -trr -bpl +jDT +vTt +cla btr -axX -aao -aao -aao -dxV -dxV -dxV -dxV -qgY +jTk +dhN +duA +ykR +iaC +pWs +vVz +vVz +vVz +jxA +duA +ykR +iaC +ueL +nzN +sCt +tcP +dQw wog -aao -aao -aao -dxV -dxV -dxV -dxV -dxV -buz wog wog wog @@ -54933,38 +56796,38 @@ bjA blq axX trr -bmg -bmg -bmi -bmi -fOK +tTI +tTI +nVq +nVq +wyF ayZ bpH -bmg +cKu axX bro brP slG -bmg -trr -axX -aao -aao -aao -aao -dxV -dxV -buz -wog -wog -aao -aao -dxV -dxV -pYt -dxV -dxV -buz +bqN +btt +uGs +gmm +duA +iNR +iaC +gUD +btr +jxS +btr +oWp +duA +iNR +iaC +ueL +nzN +cKu +tcP +rvS wog wog wog @@ -55150,38 +57013,38 @@ bjA blq axX bms -bmg +gwg bnu bnY -trr +hcH boS ayZ btK -bnq +tTI bqP -bop -bop -bpM -bmg -bts +fXm +wMM +gVl +tTI +nVq +qUF +dhN +duA +ykR +iaC +dBU +guu axX -aao -aao -aao -aao -aao -buz -wog -wog -wog -wog -wog -ibZ -sDC -dxV -dxV -buz -wog +cNb +nuz +duA +ykR +iaC +ayZ +hhK +cKu +axX +rvS wog wog wog @@ -55378,27 +57241,27 @@ bqk axX wiK fgE -bor -cFb +sap +tTI btt +nmU +dhN +duA +iNR +iaC +xXq +btu +uJj +gwg +voG +duA +iNR +iaC +ayZ +hhK +sCt axX -aao -aao -aao -aao -aao -wog -wog -trk -trk -wog -wog -wog -wog -ibZ -ibZ -wog -wog +rvS wog wog trk @@ -55584,39 +57447,39 @@ bjH blq axX bmt -bmi +btr fOK -trr -bmq +pKP +egL ayZ bpl bpL -bmg +cKu axX -bmi +jAJ brR -bor -bmi +nnU +nVq btu +gHV +dhN +duA +ykR +iaC +pWs +vVz +vVz +vVz +jxA +duA +ykR +iaC +ayZ +nzN +sCt axX -aao -aao -aao -aao +rvS wog -wog -jXX -dxV -dxV -iNR -wog -wog -wog -wog -wog -aao -aao -aao jXX pYt dxV @@ -55801,37 +57664,37 @@ bjH blq axX bmu -bmi +nVq bnw bnZ boq azE -bmi -bor +hhK +cla bql axX axX axX -dQZ axX +tzJ axX axX -aao -aao -aao -wog -wog -hiY -dxV -dxV -pYt -dxV +axX +duA iNR -wog -wog -trk -trk -aao +iaC +iSz +hYB +iAI +wVB +kka +duA +iNR +iaC +ayZ +nzN +sCt +axX aao aao aao @@ -56023,32 +57886,32 @@ bnx boa bor ayZ -bmi -bor -bmg -bmi -bmi -bmi -bor -bmg +hhK +cla +bZJ +btr +btr +jMn +btr +tTI kVT -axX -axX -aao -aao -wog -wog -wog -sDC -dxV -dxV -dxV -dxV +dhN +hYB +ojD +ykR +iaC +iSz +duA iNR -jXX -dxV -aao -aao +iaC +kka +duA +ykR +iaC +iig +nzN +sCt +axX aao aao aao @@ -56237,39 +58100,39 @@ axX bmw bmX bAo -bmg +tTI bos boU -bop -bpM -bmi -bmi -bmi -bmi -bor -bmg -bmi +slG +cZB +cOa +lEi +lEi +tTI +nVq +tTI +sCt +dhN +duA +iNR +iNR +iaC +iSz +duA +iNR +iaC +kka +duA +iNR +iaC +ayZ +hhK +sCt axX aao aao aao aao -wog -wog -wog -ibZ -ibZ -sDC -dxV -dxV -dxV -dxV -aao -aao -aao -aao -aao -aao aao aao wog @@ -56452,42 +58315,42 @@ bjH blr axX bmx -bmW +rdr bnz bob -bmi +gdx ayZ -bmy -bor +bcg +cla bpm -bmi -bre -bmr +izb +rYr +tTI iQC -bob -bmi +nVq +vWm +dhN +duA +iNR +ykR +iaC +iSz +duA +iNR +iaC +kka +duA +ykR +iaC +ayZ +hhK +sCt axX aao aao aao aao aao -wog -wog -wog -wog -hiY -dxV -dxV -aao -aao -aao -aao -aao -aao -aao -aao -aao aao aao wog @@ -56674,32 +58537,32 @@ ayZ ayr ayr ayr -bpe -bor -bmi -bmi -bre +ktY +cla +vCf +mlV +lqo nVq eGM -bob -bmi +btu +dyH +axX +nug +rUN +rUN +oIK +iSz +nug +rUN +oIK +kka +nug +rUN +oIK +ayZ +slC +sCt axX -aao -aao -aao -aao -aao -aao -aao -wog -aao -aao -qUS -aao -aao -aao -aao -aao aao aao aao @@ -56888,36 +58751,36 @@ bsX bmy bmZ bmZ -bmO -bmg +mPK +lck boV -bmi +slC bpN -bmi -bmi -bre -fOK +bqo +bqo +sBm +tTI wFL -bob -bmg axX -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao +axX +axX +ayZ +ayZ +ayZ +ayZ +fEv +ayZ +sNP +ueL +gPh +sNP +ayZ +ayZ +axX +fEv +ayZ +axX +axX aao aao aao @@ -57108,16 +58971,32 @@ bmz boc bmz xDW -bop +eSm +jXf +eSm +ebr bpO -bop -bop -bop -bnq -cuF -bmi -bmi -axX +bpf +tTI +nIi +gZc +nIi +btr +lck +lck +lck +tTI +lck +lck +ouh +tTI +btr +btr +slC +fUp +nVq +sCt +wpn axX aao aao @@ -57127,22 +59006,6 @@ aao aao aao aao -bub -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao -aao wog wog wog @@ -57328,30 +59191,30 @@ axX axX axX axX -axX -bmi -bmg -bor -bmg -bmi -axX +wYE +lTM +bqM +pMi +ayZ +bsP +ayZ +btu +iFa +snv +btu +gFR +tvH +gML +tvH +gML +gFR +btu +btu +ayZ +btu +gdx axX axX -gNH -aao -bjA -bjA -bjA -bjH -bub -bub -bub -aao -aao -aao -aao -aao -aao aao aao aao @@ -57481,7 +59344,7 @@ axC alu ayV ayV -bBg +ayV alu aHF aMg @@ -57543,31 +59406,31 @@ bjx bjx bjx bjx -bjx bjw axX +axX bru -bmg bqM -bmi -bmi +sDZ +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX +axX axX axX axX axX -bjY -bjA -bjA -bjA -bjH -bub -bub -bub -aao -aao -aao -aao -aao aao aao aao @@ -57698,7 +59561,7 @@ axE alu ayW ayV -bBg +ayV alu aHD aBR @@ -57760,17 +59623,17 @@ bjA bjA bjA bjA -bjA -blq +blu +bjw axX brv -bmi bos -bop -bop -bop -bop -boq +szy +vbp +vbp +vbp +vbp +tub axX bjY bjA @@ -57981,12 +59844,12 @@ bjA blq axX brw -bmi -bmg +btu +pRG brO bti -bpC -bmi +idM +ndw bor axX bjY @@ -58418,9 +60281,9 @@ bjx bjx bjw ayr -bmq -bmq -bmi +tdN +maH +slC bor ayr bjY @@ -58637,7 +60500,7 @@ blq ayr bmq bqo -bmi +nVq btJ ayr bjw @@ -58803,8 +60666,8 @@ aXL aPS aOM aof -wvK -wvK +aTa +aTa aof oWe aOM @@ -58852,10 +60715,10 @@ bjy bjy blq bsX -bmi -bmi -bmi -btK +nVq +nVq +nVq +uBi bua buo buo @@ -59069,10 +60932,10 @@ bjy bjy blq maD -bmi -bmi -bsu -bor +nVq +nVq +iQC +cla maD bjw bjw @@ -59285,12 +61148,12 @@ bkb bkb bkb bjw -awp +ayr btj -bkE -bkE -bpo -awp +nVq +nVq +bor +ayr bjw bjY bjy @@ -59502,12 +61365,12 @@ awp awp awp awp -awp +ayr btk -bkE -bkE -bpo -awp +nVq +nVq +bor +ayr bjw bjY bjy @@ -59705,7 +61568,7 @@ aMg awp bkD blx -qeK +aZV bmC bnb bnB @@ -59714,17 +61577,17 @@ bku bmF bmF bpP -bkE -gCx +fBo +nEP brx brU -brx -awp +aCO +ayr btk -bkE +nVq btA -bpo -awp +bor +ayr bjw bjY bjz @@ -59924,24 +61787,24 @@ bmF wtC blT bmD -bmJ +pPo bpp boe awp awp awp bpQ -blX +wvK bqT -blX -blX -blX +wvK +wvK +wvK bsY -bkE -bkE -bkE -bpo -awp +slC +nVq +nVq +bor +ayr bjw bjY bkq @@ -60141,12 +62004,12 @@ bkE bly bly bly -blX -bkE -bkE +wvK +fBo +boe ayF boW -bkE +lTi bpR bnF bnF @@ -60154,11 +62017,11 @@ bry bnF bof dvC -bmF -bmF +eSm +eSm btB btN -awp +ayr bjw bjY bjA @@ -60355,27 +62218,27 @@ erf aHF awp bkG -blX -blX -blX -bkE -bkE -bkE +wvK +wvK +tKr +vin +fBo +boe ayF orZ -bkE +lTi bpS -blX -blX +wvK +wvK brz brV -bkE -awp -awp -awp -awp -awp -awp +boe +ayr +ayr +ayr +ayr +ayr +ayr bjw bjY bjA @@ -60573,20 +62436,20 @@ bkf awp bkH blA -bkE -bkE +wtG +jRn bnd -bnf -boe +wtG +wVw ayF boW -bkE +lTi bpo -bkE +fBo bqV brA brW -gCx +urn awp bjw bjx @@ -61016,7 +62879,7 @@ awM boX bpn bpp -bkE +fBo bnb brB bkN @@ -61235,8 +63098,8 @@ bpo bpU bqv bpU -blX -blX +wvK +wvK bsC awp bjY @@ -61447,12 +63310,12 @@ awM awM awM awM -boX +uTO bpo bpV -bkE +bkU bqX -blX +wvK brY bsD awp @@ -61658,19 +63521,19 @@ aHF awp bkK blB -blX -bkE +tIv +nwB bnf bnf bnf bou -bkE +qHc bpo bpU -bkE +bkU bpU -blX -blX +wvK +wvK bsE awp bjY @@ -61874,19 +63737,19 @@ erf aHF awp bkK -blX -blX -blX -blX +bBg +wvK +wvK +wvK bnE -blX -blX +wvK +wvK boZ bpo bpV -bkE +bkU bqX -bkE +fBo brZ bsF azG @@ -62091,8 +63954,8 @@ auX aHF awp bkL -bkE -bkE +qHc +fBo bly bng bnF @@ -62104,7 +63967,7 @@ bpU bqw bpU brC -blX +nlJ bsG azG btn @@ -62308,20 +64171,20 @@ auX aHF awp bkM -bkE +fBo blV bmF bnh -blX -blX +wvK +wvK bly bpa bpq -blX -blX -bkE -blX -bly +wvK +wvK +fBo +wvK +qqw bsG azG bjY @@ -62530,15 +64393,15 @@ blW ccP bpo bnH -bkE +yar box -bkE +yar iyd iyd eKU -bkE -bkE -blX +yar +yar +aZJ bsG awp bjY @@ -62963,7 +64826,7 @@ blC awp bmG bpo -bkG +lYH awp bWk bWk @@ -63397,7 +65260,7 @@ blC awp bmG bpo -bkE +boe awp bWk bMf @@ -63831,7 +65694,7 @@ blD cGT bmH bnl -blX +pBv ayF vjc bpc @@ -64043,10 +65906,10 @@ asv beI bgx awp -blX -blX +bBg +wvK blY -blX +wvK bnm bnK ayF @@ -64477,11 +66340,11 @@ asv bjL bkg awp -blX +bBg bly bma -bmJ -bmJ +pPo +pPo bnM ayF bWk @@ -64697,7 +66560,7 @@ awp bkS bly bly -blX +wvK bno bnN ayF @@ -64911,8 +66774,8 @@ aZF bjM bgx awp -bkK -bly +dQZ +haT bmb gCx bnp diff --git a/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm b/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm index b1a2ababa604..8f6063172ff5 100644 --- a/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm +++ b/maps/map_files/BigRed/sprinkles/15.reactor_meltdown.dmm @@ -1,7 +1,9 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ai" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "ak" = ( /obj/effect/spawner/random/tool, @@ -10,25 +12,35 @@ "al" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "am" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "an" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ao" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aq" = ( /turf/closed/wall/solaris/reinforced, @@ -42,13 +54,17 @@ "aD" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aE" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aF" = ( /obj/structure/window/framed/solaris, @@ -56,34 +72,51 @@ /area/bigredv2/outside/engineering) "aT" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aU" = ( /obj/structure/surface/rack, /obj/item/device/camera_film, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aV" = ( /obj/structure/surface/rack, /obj/item/device/analyzer, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aW" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "aY" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "aZ" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ba" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -91,14 +124,20 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/device/lightreplacer, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bb" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bc" = ( /obj/structure/machinery/light{ @@ -107,41 +146,58 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bd" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/landmark/hunter_secondary, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "be" = ( /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bf" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, /obj/effect/decal/cleanable/liquid_fuel, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bg" = ( /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bi" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/mask/breath, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bj" = ( /obj/structure/pipes/standard/simple/hidden/green, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bk" = ( /obj/effect/decal/cleanable/dirt, @@ -149,7 +205,9 @@ dir = 1; pixel_y = -30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bl" = ( /obj/effect/decal/cleanable/liquid_fuel, @@ -158,7 +216,9 @@ name = "Storm Shutters"; pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bm" = ( /obj/structure/bed/chair{ @@ -166,26 +226,35 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bn" = ( /obj/structure/surface/table, /obj/effect/decal/cleanable/dirt, /obj/item/clothing/glasses/welding, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bo" = ( /obj/structure/bed/chair{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bp" = ( /obj/item/folder/yellow, /obj/structure/pipes/standard/manifold/hidden/green{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bq" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -194,14 +263,18 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engineering Workshop" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "br" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bs" = ( /obj/effect/decal/cleanable/dirt, @@ -217,41 +290,60 @@ dir = 1; name = "\improper Engine Reactor Control" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/telecomm/engi) "bv" = ( /obj/structure/bed/chair{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bw" = ( -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bx" = ( /obj/structure/machinery/computer/arcade, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "by" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bz" = ( /obj/effect/decal/cleanable/dirt, /obj/item/stack/sheet/metal, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bA" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bB" = ( /obj/item/stack/sheet/glass, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bC" = ( /obj/effect/decal/cleanable/dirt, @@ -269,19 +361,30 @@ dir = 8 }, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bF" = ( /obj/structure/machinery/camera/autoname, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bG" = ( -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bH" = ( /obj/structure/surface/table, /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bJ" = ( /obj/structure/bed/chair{ @@ -290,46 +393,70 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bK" = ( /obj/item/folder/yellow, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bL" = ( /obj/structure/machinery/vending/cigarette/colony, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bM" = ( /obj/structure/machinery/vending/snack, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bN" = ( /obj/structure/machinery/vending/cola, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bO" = ( /obj/structure/bed/chair/office/light{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bP" = ( /obj/structure/surface/table, /obj/effect/spawner/random/powercell, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bQ" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "bR" = ( /obj/structure/machinery/light{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "bS" = ( /obj/structure/bed/chair/office/light{ @@ -338,13 +465,18 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 6 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/telecomm/engi) "bT" = ( /obj/structure/pipes/vents/pump{ dir = 8 }, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "bU" = ( /obj/item/device/radio/intercom{ @@ -353,21 +485,27 @@ name = "General Listening Channel"; pixel_x = 30 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/telecomm/engi) "bV" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bX" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green{ dir = 9 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bY" = ( /obj/effect/decal/cleanable/dirt, @@ -375,19 +513,27 @@ amount = 30 }, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "bZ" = ( /obj/structure/surface/table, /obj/effect/decal/cleanable/dirt, /obj/item/tool/pen, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ca" = ( /obj/structure/sign/safety/hazard{ pixel_y = -32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "ce" = ( /obj/item/tool/lighter/random, @@ -395,7 +541,9 @@ dir = 4 }, /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "cf" = ( /obj/item/stack/sheet/metal, @@ -411,38 +559,55 @@ /area/bigredv2/outside/engineering) "ch" = ( /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "ck" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/suit/radiation, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, /area/bigredv2/outside/engineering) "cl" = ( /obj/effect/decal/cleanable/dirt, /obj/item/clothing/head/welding, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cm" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/oil, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cn" = ( /obj/structure/machinery/door/airlock/almayer/secure/colony{ dir = 1; name = "\improper Engine Reactor" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "co" = ( /obj/structure/closet/radiation, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "cp" = ( /obj/item/folder/yellow, /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cq" = ( /obj/effect/decal/cleanable/ash, @@ -453,7 +618,10 @@ /area/bigredv2/outside/telecomm/engi) "cr" = ( /obj/effect/decal/cleanable/molten_item, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "cs" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -462,7 +630,9 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engine Reactor Control" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/telecomm/engi) "ct" = ( /obj/structure/machinery/door_control{ @@ -480,7 +650,9 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Engine Reactor Control" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/telecomm/engi) "cw" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -494,18 +666,24 @@ /obj/structure/machinery/constructable_frame{ icon_state = "box_1" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cy" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/constructable_frame, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cz" = ( /obj/structure/surface/table, /obj/structure/machinery/light, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cA" = ( /obj/structure/surface/table, @@ -513,7 +691,10 @@ /obj/item/stack/sheet/metal{ amount = 30 }, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cB" = ( /obj/structure/machinery/light{ @@ -522,7 +703,9 @@ /obj/structure/sign/safety/high_rad{ pixel_x = 32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "cC" = ( /obj/structure/pipes/standard/simple/hidden/green{ @@ -534,7 +717,10 @@ /area/bigredv2/outside/engineering) "cD" = ( /obj/structure/machinery/computer/area_atmos, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cE" = ( /obj/structure/machinery/light{ @@ -543,12 +729,17 @@ /obj/structure/sign/safety/high_rad{ pixel_x = -32 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/engineering) "cF" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cG" = ( /obj/structure/window/framed/solaris/reinforced, @@ -564,7 +755,9 @@ /obj/effect/landmark/static_comms/net_two{ broken_on_spawn = 1 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/telecomm/engi) "cI" = ( /obj/structure/sign/safety/hazard{ @@ -572,12 +765,16 @@ }, /obj/effect/decal/cleanable/dirt, /obj/item/tool/extinguisher, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "cK" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/molten_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/telecomm/engi) "cM" = ( /turf/open/mars, @@ -615,7 +812,9 @@ dir = 1; name = "\improper Engineering Complex" }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "delivery" + }, /area/bigredv2/outside/engineering) "cY" = ( /turf/open/mars_cave{ @@ -655,7 +854,10 @@ dir = 8 }, /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/engineering) "dj" = ( /obj/effect/decal/cleanable/dirt/greenglow, @@ -991,7 +1193,10 @@ /area/bigredv2/outside/engineering) "eI" = ( /obj/effect/decal/cleanable/ash, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/telecomm/engi) "eJ" = ( /obj/effect/decal/cleanable/molten_item, @@ -1024,6 +1229,31 @@ "eO" = ( /turf/closed/wall/mineral/uranium/leaking, /area/bigredv2/outside/engineering) +"fI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"gT" = ( +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"im" = ( +/obj/structure/pipes/standard/manifold/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"iQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "jr" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -1034,6 +1264,14 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave, /area/bigredv2/outside/lz2_south_cas) +"ng" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) "oE" = ( /obj/structure/machinery/door/poddoor/almayer{ id = "rad_door"; @@ -1041,12 +1279,26 @@ }, /turf/open/floor/plating, /area/bigredv2/outside/telecomm/engi) +"oK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "sU" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ icon_state = "mars_dirt_6" }, /area/bigredv2/outside/lz2_south_cas) +"to" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "vs" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/telecomm/engi) @@ -1058,6 +1310,19 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"xl" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"xz" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/telecomm/engi) "yH" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 @@ -1072,7 +1337,9 @@ /area/bigredv2/outside/lz2_south_cas) "Bo" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/telecomm/engi) "CA" = ( /obj/effect/decal/cleanable/dirt, @@ -1083,6 +1350,26 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"Dh" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/engineering) +"Dq" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"ET" = ( +/obj/structure/pipes/standard/simple/hidden/green, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "IE" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ @@ -1093,12 +1380,31 @@ /obj/structure/window_frame/solaris/reinforced, /turf/open/floor/plating, /area/bigredv2/outside/telecomm/engi) +"Lf" = ( +/obj/structure/pipes/standard/simple/hidden/green{ + dir = 4 + }, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) "LE" = ( /obj/effect/decal/cleanable/ash, /turf/open/floor/plating{ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"Nv" = ( +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/engineering) +"NT" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/telecomm/engi) "NX" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars{ @@ -1116,10 +1422,35 @@ icon_state = "panelscorched" }, /area/bigredv2/outside/telecomm/engi) +"Sz" = ( +/obj/item/stack/sheet/glass, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) +"SC" = ( +/turf/open/floor{ + icon_state = "delivery" + }, +/area/bigredv2/outside/engineering) +"Tv" = ( +/turf/open/floor{ + icon_state = "podhatchfloor" + }, +/area/bigredv2/outside/telecomm/engi) "Uo" = ( /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "podhatchfloor" + }, /area/bigredv2/outside/telecomm/engi) +"WI" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/engineering) (1,1,1) = {" au @@ -1131,7 +1462,7 @@ bp by ai bX -bQ +fI cx cG Ah @@ -1161,9 +1492,9 @@ au au an bz -bw +Nv bY -bw +Nv cy cG NX @@ -1192,10 +1523,10 @@ au au au an -bw +Nv bO -bw -bw +Nv +Nv cz aq Ph @@ -1227,7 +1558,7 @@ an bA bP bZ -bQ +WI cA aq Ph @@ -1287,9 +1618,9 @@ au au au au -an +ng bw -bQ +oK ca aq co @@ -1321,8 +1652,8 @@ aU bw br bB -bw -bQ +Nv +fI cn cB cn @@ -1350,11 +1681,11 @@ au au au aV -bw -an -bw -bw -bw +Nv +ng +Nv +Nv +gT aq aq aq @@ -1384,9 +1715,9 @@ au aW ai bs -bw +Nv ew -bB +Sz co co dk @@ -1479,8 +1810,8 @@ au au aZ bQ -bQ -bQ +WI +WI bR ez cC @@ -1510,7 +1841,7 @@ au au au ba -bQ +iQ vs vs vs @@ -1542,7 +1873,7 @@ au au au an -bw +gT vs bE eI @@ -1574,7 +1905,7 @@ au au au aZ -bQ +iQ vs bF bS @@ -1606,12 +1937,12 @@ ak au au bb -bQ +fI bu bG bT -bG -Uo +NT +xz RN eE oE @@ -1670,9 +2001,9 @@ au au au bd -bQ +iQ vs -bG +Tv bU ct RN @@ -1701,7 +2032,7 @@ dR au au au -an +ng bl vs vs @@ -1733,13 +2064,13 @@ dT au au au -an +ng ck bw bw di bw -bQ +fI ew dr cS @@ -1769,8 +2100,8 @@ be bm bv bv -bQ -bw +fI +Nv ez ew dr @@ -1797,11 +2128,11 @@ dT au au au -an +ng bn aE bH -bQ +fI ch ew ew @@ -1829,11 +2160,11 @@ dT au au au -an +ng aD al ce -bw +Nv ew ew cD @@ -1865,8 +2196,8 @@ bf bo bo bJ -bQ -bQ +fI +iQ aq aq aq @@ -1894,11 +2225,11 @@ au au au bg -ai -ai -bg +to +Dh +im bV -bQ +fI cn cE cn @@ -1994,11 +2325,11 @@ au aq bM ao -ai -ai -ai -ai -ai +xl +ET +ET +ET +ET am aq as @@ -2025,13 +2356,13 @@ au au aq bN -bw +Dq cm bR cF aT -bw -an +Nv +Lf aq as as @@ -2062,7 +2393,7 @@ aq aq aq aq -bw +SC cX aq as diff --git a/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm b/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm index 47984a920749..adbdf51bd259 100644 --- a/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm +++ b/maps/map_files/BigRed/sprinkles/35.filtration_restored.dmm @@ -7,7 +7,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "ad" = ( /obj/effect/decal/cleanable/dirt, @@ -17,12 +19,16 @@ /obj/structure/pipes/vents/pump, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "af" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "ah" = ( /obj/structure/window/framed/solaris, @@ -36,13 +42,19 @@ /area/bigredv2/caves) "ak" = ( /obj/structure/closet/wardrobe/atmospherics_yellow, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "al" = ( /obj/structure/surface/table, /obj/item/tool/lighter/random, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "am" = ( /turf/open/floor{ @@ -53,43 +65,59 @@ "an" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "ap" = ( /obj/structure/reagent_dispensers/watertank, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "aq" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/machinery/camera/autoname{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "ar" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 5 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "as" = ( /obj/structure/pipes/standard/manifold/hidden/green, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "at" = ( /obj/structure/bed/chair{ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "au" = ( /obj/structure/machinery/computer/atmos_alert{ dir = 8 }, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "av" = ( /obj/item/tool/warning_cone, @@ -123,8 +151,8 @@ /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Atmospherics Condenser Storage" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aB" = ( @@ -132,8 +160,8 @@ dir = 1; name = "\improper Atmospherics Condenser" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aC" = ( @@ -141,7 +169,9 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aD" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -149,14 +179,16 @@ name = "\improper Atmospherics Condenser" }, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aE" = ( /obj/effect/decal/cleanable/dirt, /obj/item/device/radio/headset, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aF" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/chan, @@ -173,7 +205,9 @@ /obj/structure/pipes/standard/manifold/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aJ" = ( /turf/open/floor{ @@ -187,39 +221,49 @@ /area/bigredv2/outside/se) "aL" = ( /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aM" = ( /obj/structure/reagent_dispensers/watertank, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aN" = ( /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aO" = ( /obj/structure/pipes/vents/pump, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aP" = ( /obj/effect/landmark/crap_item, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aQ" = ( /obj/structure/surface/table, /obj/effect/landmark/good_item, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "aR" = ( /obj/structure/surface/table, /obj/effect/spawner/random/toolbox, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "aS" = ( /turf/open/floor{ @@ -229,9 +273,8 @@ /area/bigredv2/outside/filtration_plant) "aT" = ( /obj/structure/dispenser/oxygen, -/turf/open/floor{ - dir = 1; - icon_state = "bot" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "aV" = ( @@ -239,24 +282,34 @@ icon_state = "U-N" }, /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aW" = ( /obj/structure/pipes/standard/manifold/hidden/green, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 10 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "aY" = ( /turf/closed/wall/solaris/reinforced, /area/bigredv2/outside/filtration_plant) "aZ" = ( /obj/structure/machinery/computer/general_air_control, -/turf/open/floor, +/obj/structure/surface/table, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bb" = ( /obj/structure/surface/table, @@ -264,23 +317,34 @@ /obj/structure/machinery/light{ dir = 1 }, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bc" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/rack, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bd" = ( /obj/structure/surface/table, /obj/effect/spawner/random/tool, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "be" = ( /obj/structure/surface/table, /obj/item/circuitboard/solar_tracker, -/turf/open/floor, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bf" = ( /obj/structure/machinery/light{ @@ -293,34 +357,53 @@ /obj/effect/decal/warning_stripes{ icon_state = "U-S" }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bh" = ( /obj/effect/decal/warning_stripes{ icon_state = "U-S" }, /obj/structure/machinery/computer3/server/rack, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bj" = ( /obj/structure/surface/rack, /obj/item/tank/air, /obj/item/tool/pickaxe, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bk" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/tool, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bl" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; name = "\improper Filtration Facility" }, -/turf/open/floor{ - icon_state = "delivery" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bm" = ( @@ -329,34 +412,42 @@ name = "\improper Filtration Facility" }, /obj/structure/pipes/standard/simple/hidden/green, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bn" = ( -/obj/structure/closet/firecloset/full, /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 }, -/turf/open/floor, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bo" = ( /obj/item/tank/air, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bp" = ( /obj/structure/pipes/vents/pump{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bq" = ( /obj/effect/landmark/crap_item, /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "br" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ @@ -365,8 +456,8 @@ /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "bt" = ( @@ -378,7 +469,9 @@ dir = 4 }, /obj/item/frame/table, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bv" = ( /obj/structure/machinery/portable_atmospherics/powered/scrubber/huge/chan, @@ -393,7 +486,9 @@ dir = 9 }, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bz" = ( /obj/effect/decal/cleanable/dirt, @@ -413,7 +508,10 @@ /obj/structure/machinery/computer/atmos_alert{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bD" = ( /obj/structure/window/framed/solaris/reinforced/hull, @@ -435,11 +533,20 @@ /area/bigredv2/outside/filtration_plant) "bG" = ( /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bH" = ( -/obj/structure/machinery/computer/area_atmos/area, -/turf/open/floor, +/obj/structure/machinery/computer/area_atmos/area{ + dir = 8 + }, +/obj/structure/surface/table, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bI" = ( /obj/structure/window_frame/solaris/reinforced, @@ -450,7 +557,10 @@ /area/bigredv2/outside/filtration_plant) "bJ" = ( /obj/item/weapon/twohanded/fireaxe, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bK" = ( /turf/open/mars, @@ -458,7 +568,10 @@ "bN" = ( /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, -/turf/open/floor, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bO" = ( /turf/open/mars_cave{ @@ -475,29 +588,36 @@ /obj/structure/surface/table, /obj/effect/spawner/random/technology_scanner, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bS" = ( /obj/item/frame/table, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bT" = ( /obj/effect/decal/cleanable/dirt, /obj/item/frame/table, /obj/effect/decal/cleanable/dirt, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "bU" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/surface/table, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "bW" = ( -/obj/structure/largecrate/random, /turf/open/floor{ - dir = 1; - icon_state = "bot" + icon_state = "dark" }, /area/bigredv2/outside/filtration_plant) "bX" = ( @@ -519,7 +639,9 @@ pixel_x = -32 }, /obj/structure/machinery/light, -/turf/open/floor, +/turf/open/floor{ + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "ce" = ( /obj/structure/machinery/light, @@ -533,8 +655,8 @@ id = "FiltrationShutters"; name = "\improper Airlock Shutters" }, -/turf/open/floor{ - icon_state = "delivery" +/turf/open/floor/almayer{ + icon_state = "test_floor4" }, /area/bigredv2/outside/filtration_plant) "cg" = ( @@ -559,7 +681,10 @@ /area/bigredv2/outside/filtration_cave_cas) "cj" = ( /obj/item/tool/pickaxe, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, /area/bigredv2/outside/filtration_plant) "ck" = ( /obj/effect/decal/warning_stripes{ @@ -581,13 +706,61 @@ icon_state = "delivery" }, /area/bigredv2/outside/filtration_plant) +"cO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/filtration_plant) +"et" = ( +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/filtration_plant) +"eL" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 5; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"ff" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"gt" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"hk" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "jh" = ( /obj/structure/machinery/light, /turf/open/floor, /area/bigredv2/outside/filtration_plant) "ka" = ( /obj/structure/closet/firecloset/full, -/turf/open/floor, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"kE" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "nk" = ( /obj/structure/blocker/forcefield/multitile_vehicles, @@ -597,23 +770,152 @@ /obj/item/tank/air, /turf/open/floor, /area/bigredv2/outside/filtration_plant) +"oE" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"qi" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/firecloset/full, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/filtration_plant) +"ti" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/filtration_plant) +"tp" = ( +/obj/structure/largecrate/random, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"tz" = ( +/turf/open/floor{ + dir = 9; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "tB" = ( /obj/effect/landmark/crap_item, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"vK" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"xd" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"yi" = ( +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"yZ" = ( +/turf/open/floor{ + dir = 8; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) "zu" = ( /turf/open/mars_cave{ icon_state = "mars_cave_7" }, /area/bigredv2/outside/filtration_cave_cas) +"Ap" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor{ + dir = 4; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) +"AD" = ( +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"Ee" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"FI" = ( +/turf/open/floor{ + dir = 4; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"FK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + layer = 2.5 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor{ + icon_state = "dark" + }, +/area/bigredv2/outside/filtration_plant) +"Jy" = ( +/obj/structure/closet/firecloset/full, +/turf/open/floor{ + dir = 1; + icon_state = "bot" + }, +/area/bigredv2/outside/filtration_plant) +"Kp" = ( +/obj/structure/surface/table, +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "Ms" = ( /obj/structure/machinery/computer3/server/rack, /obj/effect/decal/warning_stripes{ icon_state = "U-N" }, -/turf/open/floor, +/turf/open/floor{ + dir = 8; + icon_state = "darkyellow2" + }, /area/bigredv2/outside/filtration_plant) "Qx" = ( /obj/effect/decal/cleanable/dirt, @@ -623,6 +925,12 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"QJ" = ( +/turf/open/floor{ + dir = 10; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "Rv" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/floor{ @@ -630,11 +938,36 @@ icon_state = "asteroidwarning" }, /area/bigredv2/outside/filtration_plant) +"Sj" = ( +/obj/structure/machinery/door/airlock/almayer/engineering/colony{ + dir = 1; + name = "\improper Filtration Facility" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/bigredv2/outside/filtration_plant) +"Sk" = ( +/obj/structure/machinery/light, +/obj/structure/largecrate/random, +/turf/open/floor{ + dir = 6; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) +"TC" = ( +/obj/structure/machinery/light, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "TX" = ( /obj/structure/pipes/standard/simple/hidden/green{ dir = 4 }, -/turf/open/floor, +/turf/open/floor{ + icon_state = "dark" + }, /area/bigredv2/outside/filtration_plant) "UH" = ( /obj/effect/decal/warning_stripes{ @@ -656,12 +989,34 @@ icon_state = "bot" }, /area/bigredv2/outside/filtration_plant) +"Wc" = ( +/turf/open/floor{ + dir = 1; + icon_state = "darkyellowcorners2" + }, +/area/bigredv2/outside/filtration_plant) +"Wz" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor{ + dir = 1; + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "WD" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/mars_cave{ icon_state = "mars_cave_2" }, /area/bigredv2/outside/filtration_cave_cas) +"Xx" = ( +/obj/structure/surface/table, +/obj/effect/spawner/random/technology_scanner, +/turf/open/floor{ + icon_state = "darkyellow2" + }, +/area/bigredv2/outside/filtration_plant) "XC" = ( /obj/structure/cargo_container/grant/right, /turf/open/floor{ @@ -710,12 +1065,12 @@ TX ap aa aL -aS +et aL aL aa -az -az +tz +vK bJ bw bw @@ -734,16 +1089,16 @@ bw (3,1,1) = {" ak TX -jh +TC aa -bf -az -az -az +oE +FK +FK +FK bl -az +bW bp -az +AD bw bw bw @@ -761,19 +1116,19 @@ aY (4,1,1) = {" ak TX -az +AD aa aT aM aT -aS +et aa -az +hk TX -az +yZ bU bB -bG +Kp aY cg az @@ -795,17 +1150,17 @@ aa aa aa aa -bf +Wz bq -az -az -az +bW +bW +bW cb aY bf ad -ad -ad +ti +ti az aS aS @@ -817,22 +1172,22 @@ al ac aq aa -az +tz bg Ms -az +QJ aa -az +hk TX -aS -aS -aS -az +bW +bW +bW +bW cf az ad -ad -az +ti +aS az aS VW @@ -840,21 +1195,21 @@ az bw "} (7,1,1) = {" -ad +ff aC ar aB -az -az -az -az -bl -az +bW +bW +bW +bW +Sj +bW TX -aL bW -aS -az +bW +bW +bW cf az az @@ -871,22 +1226,22 @@ an ae as ah -az +hk bh aV -ad +gt ah -ad +xd TX -aS -aS bW -az +bW +bW +bW cf az az -az -az +aS +aS az aS XC @@ -901,19 +1256,19 @@ aD aN aN ar -az +AD ah -az +hk TX -aS -aS -aS -az +bW +bW +bW +bW cf az az -az -az +aS +aS np bz aS @@ -921,25 +1276,25 @@ jh aY "} (10,1,1) = {" -ad +ff aE at aa -bf -az +Wz +bW ac bk aa -bf +eL TX -az -az -az -jh +FI +yi +tp +Sk aY bf az -az +aS cj az aS @@ -980,11 +1335,11 @@ ah ah aa ka -az +bW TX -az +AD aa -az +tz TX bN bw @@ -1013,7 +1368,7 @@ aN bm aN aW -bN +Xx bt bF bF @@ -1034,11 +1389,11 @@ ai ai aa bb -az -az -jh +bW +bW +TC ay -bf +Wz TX bQ bw @@ -1065,9 +1420,9 @@ aR aQ be aa -az +hk TX -bN +Xx bw bF bF @@ -1092,9 +1447,9 @@ aa ay aa aa -az +hk TX -az +AD bw bD bD @@ -1116,10 +1471,10 @@ am am am aY -bf +Ee bj bj -az +Wc TX bS aa @@ -1142,14 +1497,14 @@ am am am am -US -az -az -az -az +et +bW +bW +bW +bW bu -ad -cn +ff +cO WD bO bO @@ -1169,14 +1524,14 @@ am am am am -US -az -az +et +bW +bW aP aO by -az -US +bW +et WD bO bO @@ -1196,14 +1551,14 @@ am am am am -US -az -az -ad +et +FI +FI +Ap bo -az +bW bT -US +et WD bO bO @@ -1224,12 +1579,12 @@ am aG aG aY -bf -ka +qi +Jy bn -az -az -jh +FI +FI +kE bX WD bO From beb2196e4c5223b94b71fa20fe9f9a97395e4309 Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Fri, 17 Nov 2023 00:24:17 +0800 Subject: [PATCH 067/355] LV-624 Cave Aesthetic Change (#4843) # About the pull request Alters the caves of LV-624 to have far more jungle grass and other similar aesthetics. No layout changes are effected. I hope to do more changes in the future, but I'll keep things separated for now. # Explain why it's good for the game The caves of the map are quite bare in appearance, this is one small chance to help increase the style of the map. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: maptweak: LV-624's Caves have had an aesthetic change regarding jungle tiles and flora. /:cl: Co-authored-by: Steelpoint --- .../objects/effects/decals/warning_stripes.dm | 14 + maps/map_files/LV624/LV624.dmm | 5450 ++++++++++++----- maps/map_files/LV624/centralcaves/10.T.dmm | 224 +- maps/map_files/LV624/centralcaves/10.qc.dmm | 1681 ++--- 4 files changed, 5049 insertions(+), 2320 deletions(-) diff --git a/code/game/objects/effects/decals/warning_stripes.dm b/code/game/objects/effects/decals/warning_stripes.dm index ce0802d72d8e..20c96c2ac737 100644 --- a/code/game/objects/effects/decals/warning_stripes.dm +++ b/code/game/objects/effects/decals/warning_stripes.dm @@ -91,6 +91,20 @@ /obj/effect/decal/sand_overlay/sand2/corner2 icon_state = "sand2_c" +/obj/effect/decal/grass_overlay + name = "grass edge" + mouse_opacity = MOUSE_OPACITY_TRANSPARENT + unacidable = TRUE + icon = 'icons/turf/floors/auto_strata_grass.dmi' + layer = TURF_LAYER + +/obj/effect/decal/grass_overlay/grass1 + icon_state = "grass_outercorner" + +/obj/effect/decal/grass_overlay/grass1/inner + name = "grass edge" + icon_state = "grass_innercorner" + /obj/effect/decal/siding name = "siding" icon = 'icons/turf/floors/floors.dmi' diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index 3d97333ad161..ba11b0b8ee3d 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -283,6 +283,9 @@ /area/lv624/ground/caves/west_caves) "abH" = ( /obj/effect/landmark/good_item, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) "abI" = ( @@ -398,7 +401,7 @@ "aco" = ( /obj/effect/landmark/crap_item, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_east_caves) "acp" = ( /turf/closed/wall/cult, @@ -506,7 +509,7 @@ /obj/structure/tunnel{ id = "hole1" }, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/west_caves) "acL" = ( /obj/item/tool/shovel, @@ -581,6 +584,9 @@ /area/lv624/lazarus/crashed_ship_containers) "acY" = ( /obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) "acZ" = ( @@ -2581,6 +2587,13 @@ /obj/structure/flora/jungle/alienplant1, /turf/open/gm/river, /area/lv624/ground/river/west_river) +"amI" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "amK" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -2708,6 +2721,10 @@ icon_state = "whiteyellowcorner" }, /area/lv624/lazarus/corporate_dome) +"anM" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "anP" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, @@ -7923,6 +7940,12 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/west_jungle) +"aIA" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "aIB" = ( /obj/structure/closet, /turf/open/floor{ @@ -7930,6 +7953,17 @@ icon_state = "purple" }, /area/lv624/lazarus/sleep_female) +"aIE" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 11; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "aIH" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/clothing/mask/cigarette/cigar, @@ -9532,6 +9566,14 @@ icon_state = "chapel" }, /area/lv624/lazarus/chapel) +"aPM" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "aPN" = ( /obj/structure/window_frame/colony/reinforced, /turf/open/floor/plating, @@ -10445,6 +10487,12 @@ /obj/item/shard, /turf/open/floor/plating, /area/lv624/lazarus/captain) +"aTy" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "aTB" = ( /obj/structure/machinery/light/small, /turf/open/floor{ @@ -11911,6 +11959,11 @@ icon_state = "red" }, /area/lv624/lazarus/security) +"aYI" = ( +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/lv624/ground/caves/south_west_caves) "aYJ" = ( /obj/structure/surface/table/woodentable/fancy, /obj/item/trash/chips, @@ -12266,6 +12319,13 @@ /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"bak" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "bav" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/up, /turf/open/gm/dirt, @@ -12344,6 +12404,29 @@ /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/west_central_jungle) +"bcb" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"bcU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"bdu" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "bdL" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/stack/sheet/metal{ @@ -12414,9 +12497,21 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"bje" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "bkG" = ( /turf/open/gm/coast/beachcorner/north_west, /area/lv624/ground/river/central_river) +"bkK" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "bkP" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -12444,6 +12539,12 @@ /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"bnM" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "bnX" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/coast/beachcorner/south_west, @@ -12476,6 +12577,10 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"brC" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "bsR" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/south_west_jungle) @@ -12548,6 +12653,17 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/south_medbay_road) +"bvj" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"bvS" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"bvX" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "bwc" = ( /turf/open/gm/coast/beachcorner2/north_east, /area/lv624/ground/barrens/west_barrens) @@ -12558,6 +12674,12 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"bxb" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "byl" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -12601,6 +12723,14 @@ "bBu" = ( /turf/open/gm/coast/beachcorner2/south_west, /area/lv624/ground/jungle/west_jungle) +"bBT" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "bCe" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/south_east_jungle) @@ -12614,6 +12744,14 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"bEj" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "bEq" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/barrens/south_eastern_barrens) @@ -12667,6 +12805,12 @@ /obj/effect/landmark/corpsespawner/wygoon, /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) +"bJQ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "bLs" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, @@ -12703,6 +12847,15 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"bOm" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "bOy" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -12717,6 +12870,17 @@ }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_east_jungle) +"bPE" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"bQz" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "bQA" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -12828,6 +12992,10 @@ icon_state = "white" }, /area/lv624/lazarus/medbay) +"cdw" = ( +/obj/effect/landmark/objective_landmark/science, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "cdF" = ( /obj/effect/landmark/nightmare{ insert_tag = "lv-centralcaves" @@ -12843,6 +13011,11 @@ "cfD" = ( /turf/closed/wall/r_wall/unmeltable, /area/lv624/lazarus/quartstorage/outdoors) +"cfL" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/gm/grass/grass1/weedable, +/area/lv624/ground/caves/north_east_caves) "cfN" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/jungle/north_jungle) @@ -12885,6 +13058,16 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) +"chi" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "cij" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, @@ -12914,6 +13097,13 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"clO" = ( +/obj/effect/landmark/crap_item, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "cmf" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -12936,6 +13126,12 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"cop" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "cpQ" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/caves/sand_temple) @@ -12954,6 +13150,14 @@ /obj/structure/flora/jungle/vines/light_1, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/north_west_jungle) +"cqC" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "cqE" = ( /obj/structure/barricade/wooden, /obj/structure/flora/jungle/vines/light_2, @@ -12962,6 +13166,23 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"cqH" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"cqN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"crn" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "crF" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /obj/structure/flora/jungle/vines/heavy, @@ -12994,13 +13215,17 @@ icon_state = "desert_dug" }, /area/lv624/ground/barrens/west_barrens) +"cxi" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "cys" = ( /obj/structure/foamed_metal, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/east_central_jungle) "czq" = ( /obj/effect/landmark/objective_landmark/science, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "czu" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, @@ -13048,6 +13273,11 @@ "cCr" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/east_jungle) +"cCP" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/lv624/ground/caves/south_west_caves) "cDr" = ( /obj/structure/girder, /turf/open/gm/grass/grass1, @@ -13072,6 +13302,12 @@ /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"cEi" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "cEn" = ( /obj/effect/decal/remains/xeno, /turf/open/gm/dirt, @@ -13084,6 +13320,12 @@ /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"cHW" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "cIL" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, @@ -13096,6 +13338,9 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) "cJw" = ( @@ -13131,6 +13376,12 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/river/west_river) +"cMG" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "cNH" = ( /obj/structure/surface/rack, /obj/item/storage/box/beakers, @@ -13156,6 +13407,10 @@ "cPV" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"cQB" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "cQJ" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -13181,6 +13436,12 @@ /obj/item/tool/surgery/surgicaldrill/predatorsurgicaldrill, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"cSL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "cTi" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, @@ -13202,6 +13463,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_nexus_road) +"cWs" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "cXd" = ( /obj/effect/landmark/monkey_spawn, /obj/structure/flora/jungle/vines/heavy, @@ -13229,6 +13494,14 @@ /obj/structure/blocker/forcefield/multitile_vehicles, /turf/closed/wall/mineral/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"daY" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "dbA" = ( /obj/structure/xenoautopsy/tank, /turf/open/shuttle{ @@ -13265,7 +13538,7 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/corpsespawner/scientist, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/east_caves) "dhp" = ( /obj/structure/flora/bush/ausbushes/reedbush, @@ -13316,9 +13589,18 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"dmT" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "dmZ" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_east_jungle) +"doe" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "dop" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -13376,6 +13658,13 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"dtr" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "dvf" = ( /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass1, @@ -13438,6 +13727,31 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/caves/sand_temple) +"dzM" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) +"dAu" = ( +/obj/effect/landmark/crap_item, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"dBS" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"dCD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "dCL" = ( /obj/item/reagent_container/food/drinks/cans/waterbottle{ pixel_x = 2 @@ -13482,6 +13796,9 @@ "dFz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) "dGc" = ( @@ -13495,6 +13812,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"dHg" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "dHo" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, @@ -13505,6 +13826,18 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/medbay) +"dIj" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"dIu" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"dIv" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "dID" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor/strata{ @@ -13526,6 +13859,10 @@ "dKg" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"dKl" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "dLd" = ( /obj/structure/bookcase, /obj/item/book/manual/research_and_development, @@ -13537,6 +13874,13 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"dLm" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "dLn" = ( /obj/effect/acid_hole, /turf/closed/wall/r_wall, @@ -13547,6 +13891,12 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/east_jungle) +"dLW" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "dLY" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) @@ -13578,11 +13928,19 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"dOb" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "dOf" = ( /obj/effect/decal/cleanable/blood/drip, /obj/effect/landmark/crap_item, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"dOA" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "dOC" = ( /obj/structure/kitchenspike, /obj/effect/decal/cleanable/blood, @@ -13641,12 +13999,18 @@ /area/lv624/lazarus/crashed_ship_containers) "dWM" = ( /obj/effect/landmark/monkey_spawn, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_west_caves) "dXq" = ( /obj/structure/platform_decoration/mineral/sandstone/runed, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"dYx" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "dYE" = ( /obj/structure/fence, /turf/open/gm/dirt, @@ -13670,6 +14034,14 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) +"eaI" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "eaJ" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -13683,6 +14055,14 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/south_nexus_road) +"ecn" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "ecy" = ( /turf/closed/wall/sulaco, /area/lv624/lazarus/crashed_ship_containers) @@ -13709,9 +14089,27 @@ "efp" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"eft" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "efX" = ( /turf/open/gm/coast/east, /area/lv624/ground/river/east_river) +"egc" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"egU" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "ehy" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "Hydroponics" @@ -13743,6 +14141,14 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_jungle) +"ejp" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "ejx" = ( /obj/structure/disposalpipe/segment, /obj/structure/window/framed/colony, @@ -13774,6 +14180,22 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"elp" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) +"enn" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "eny" = ( /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, @@ -13788,6 +14210,10 @@ icon_state = "whitebluecorner" }, /area/lv624/lazarus/medbay) +"eoW" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "epG" = ( /obj/structure/showcase, /obj/structure/window/reinforced{ @@ -13817,6 +14243,10 @@ icon_state = "whitebluefull" }, /area/lv624/lazarus/medbay) +"eqS" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "erx" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/jungle/west_jungle) @@ -13831,6 +14261,10 @@ icon_state = "cult" }, /area/lv624/ground/caves/south_west_caves) +"etU" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "euh" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/gm/dirt, @@ -13989,6 +14423,12 @@ icon_state = "floor4" }, /area/lv624/lazarus/crashed_ship_containers) +"eMe" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "eNK" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/south_east_jungle) @@ -14026,6 +14466,9 @@ /obj/structure/largecrate/random, /turf/open/floor, /area/lv624/lazarus/landing_zones/lz1) +"eQL" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "eSg" = ( /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/strata_ice/jungle, @@ -14046,6 +14489,10 @@ icon_state = "cult" }, /area/lv624/ground/caves/south_west_caves) +"eYb" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "eYh" = ( /obj/structure/surface/rack, /obj/effect/landmark/objective_landmark/close, @@ -14059,6 +14506,10 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/river, /area/lv624/ground/river/east_river) +"eZg" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "eZC" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, @@ -14090,6 +14541,16 @@ /obj/structure/flora/jungle/planttop1, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/east_jungle) +"fcQ" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -5; + pixel_y = -5; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "fdl" = ( /turf/open/floor, /area/lv624/lazarus/hydroponics) @@ -14196,12 +14657,25 @@ icon_state = "asteroidfloor" }, /area/lv624/lazarus/corporate_dome) +"fmV" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"fmW" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "fpn" = ( /turf/open/gm/coast/beachcorner/north_east, /area/lv624/ground/barrens/east_barrens) "fqh" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/east_jungle) +"fqi" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "fqM" = ( /obj/structure/machinery/power/apc{ start_charge = 0 @@ -14211,6 +14685,12 @@ icon_state = "asteroidwarning" }, /area/lv624/ground/colony/telecomm/sw_lz2) +"frV" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "fsa" = ( /obj/structure/surface/table, /turf/open/floor{ @@ -14218,6 +14698,12 @@ icon_state = "barber" }, /area/lv624/lazarus/kitchen) +"fsc" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "fsu" = ( /obj/structure/machinery/light{ dir = 8 @@ -14313,10 +14799,18 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"fDE" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "fDO" = ( /obj/structure/flora/jungle/alienplant1, /turf/open/gm/river, /area/lv624/ground/barrens/west_barrens) +"fDT" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/lv624/ground/caves/south_west_caves) "fEn" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, @@ -14357,6 +14851,11 @@ icon_state = "asteroidfloor" }, /area/lv624/ground/colony/telecomm/cargo) +"fGn" = ( +/obj/effect/decal/grass_overlay/grass1, +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "fGO" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -14391,12 +14890,24 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor, /area/lv624/lazarus/medbay) +"fIW" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "fJQ" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 }, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"fKc" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"fLh" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "fMl" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ dir = 1; @@ -14422,6 +14933,14 @@ "fQL" = ( /turf/open/gm/coast/beachcorner2/south_east, /area/lv624/ground/river/west_river) +"fRD" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"fRU" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "fSX" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/east_jungle) @@ -14441,6 +14960,14 @@ "fTM" = ( /turf/open/gm/dirt, /area/lv624/ground/caves/south_east_caves) +"fTN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"fUj" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "fXr" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, @@ -14454,6 +14981,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"fYG" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "fZO" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/north_west_jungle) @@ -14487,6 +15018,16 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_central_jungle) +"gcB" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 6; + pixel_y = -8; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "gcI" = ( /obj/effect/landmark/crap_item, /turf/open/shuttle{ @@ -14572,6 +15113,16 @@ /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"gnt" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -5; + pixel_y = -5; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "gnx" = ( /turf/open/floor{ icon_state = "white" @@ -14581,6 +15132,10 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/north_nexus_road) +"gos" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "gpC" = ( /obj/structure/flora/jungle/vines/light_2, /obj/structure/flora/jungle/vines/heavy, @@ -14599,10 +15154,21 @@ /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"grW" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "grZ" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor/plating, /area/lv624/ground/barrens/central_barrens) +"gsq" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "gss" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/shuttle{ @@ -14642,6 +15208,17 @@ /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/mineral/sandstone/runed/decor, /area/lv624/ground/jungle/south_west_jungle/ceiling) +"gvm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"gvr" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "gwP" = ( /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) @@ -14660,6 +15237,12 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"gze" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "gzo" = ( /turf/open/gm/dirt{ icon_state = "desert3" @@ -14671,6 +15254,10 @@ icon_state = "dark" }, /area/lv624/lazarus/quartstorage) +"gzH" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "gzW" = ( /obj/effect/landmark/hunter_secondary, /turf/open/gm/dirt, @@ -14746,12 +15333,22 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"gPu" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "gPN" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/barrens/south_eastern_barrens) "gQr" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/caves/sand_temple) +"gRk" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "gRm" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/dirtgrassborder/north, @@ -14759,6 +15356,12 @@ "gRx" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/colony/south_medbay_road) +"gTj" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "gTu" = ( /obj/structure/filingcabinet{ density = 0; @@ -14791,6 +15394,18 @@ "gUq" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/south_east_jungle) +"gVw" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"gVR" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "gWf" = ( /obj/structure/surface/rack, /obj/item/stack/sandbags/large_stack{ @@ -14806,6 +15421,12 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"gWE" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/floor/sandstone/runed, +/area/lv624/ground/caves/south_east_caves) "gWI" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -14831,6 +15452,16 @@ /obj/structure/prop/brazier, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/caves/sand_temple) +"han" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"hav" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "haN" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, @@ -14882,6 +15513,16 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"hez" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "heC" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -14914,6 +15555,11 @@ }, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/west_jungle) +"hhs" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "hhv" = ( /turf/open/floor{ dir = 8; @@ -14929,6 +15575,12 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/west_tcomms_road) +"hjo" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "hke" = ( /obj/structure/platform/mineral/sandstone/runed, /obj/structure/stairs/perspective{ @@ -14938,6 +15590,25 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"hkT" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"hmq" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"hmJ" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "hmK" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -14953,6 +15624,16 @@ icon_state = "bot" }, /area/lv624/ground/caves/north_central_caves) +"hpK" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "hpN" = ( /obj/structure/surface/table, /obj/effect/landmark/good_item, @@ -14988,6 +15669,15 @@ "hsc" = ( /turf/closed/wall/r_wall, /area/lv624/ground/river/central_river) +"htV" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "huH" = ( /obj/structure/flora/jungle/planttop1, /obj/structure/flora/jungle/vines/light_3, @@ -15007,6 +15697,13 @@ /obj/effect/decal/remains/xeno, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"hyF" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "hyK" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, @@ -15042,6 +15739,10 @@ /obj/effect/decal/remains/xeno, /turf/open/gm/dirt, /area/lv624/ground/colony/west_tcomms_road) +"hEe" = ( +/obj/effect/landmark/crap_item, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "hEl" = ( /obj/structure/flora/jungle/vines/light_2, /turf/closed/wall/strata_ice/jungle, @@ -15106,6 +15807,10 @@ }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/east_jungle) +"hKP" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "hLu" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/south_central_jungle) @@ -15143,6 +15848,10 @@ /obj/item/clothing/under/colonist, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"hNT" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "hPV" = ( /obj/effect/decal/remains/xeno{ pixel_x = 31 @@ -15159,6 +15868,18 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"hRy" = ( +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/lv624/ground/caves/south_west_caves) +"hRB" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "hRI" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, @@ -15184,6 +15905,10 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/dirt, /area/lv624/ground/jungle/east_central_jungle) +"hTR" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "hUs" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) @@ -15261,6 +15986,10 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"icd" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "idz" = ( /obj/item/weapon/sword{ pixel_x = 6; @@ -15289,10 +16018,24 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) +"ieN" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "ifk" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"ifr" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "ifF" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/south_east_jungle) @@ -15303,6 +16046,11 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"igN" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "ihS" = ( /obj/structure/surface/table, /obj/item/reagent_container/food/drinks/cans/lemon_lime{ @@ -15319,6 +16067,10 @@ /obj/effect/landmark/queen_spawn, /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) +"ikA" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/chanterelle, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "ilf" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/flora/jungle/vines/heavy, @@ -15326,6 +16078,13 @@ /obj/structure/flora/jungle/planttop1, /turf/open/floor/plating, /area/lv624/lazarus/corporate_dome) +"ilF" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "ilO" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/device/flashlight/lantern{ @@ -15355,6 +16114,13 @@ }, /turf/open/gm/dirt, /area/lv624/ground/jungle/east_jungle) +"isL" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "isR" = ( /obj/effect/landmark/objective_landmark/medium, /obj/structure/largecrate/random, @@ -15369,6 +16135,13 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"iuf" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "iuO" = ( /turf/open/gm/dirtgrassborder{ icon_state = "desert3" @@ -15400,6 +16173,12 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"iye" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "iyr" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, @@ -15452,6 +16231,11 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/colony/west_nexus_road) +"iDX" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "iFp" = ( /obj/structure/flora/jungle/vines/light_1, /obj/structure/barricade/wooden{ @@ -15462,10 +16246,19 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"iGf" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "iGn" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"iGx" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "iHQ" = ( /obj/structure/xenoautopsy/tank/broken, /turf/open/gm/dirt, @@ -15514,6 +16307,10 @@ /obj/structure/ore_box, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_west_barrens) +"iNJ" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "iOz" = ( /obj/structure/barricade/handrail/strata{ dir = 4 @@ -15555,6 +16352,14 @@ /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"iTQ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "iUm" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, @@ -15581,6 +16386,10 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/west_nexus_road) +"iXX" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "iYJ" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/grass/grass1, @@ -15613,6 +16422,12 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"jcn" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "jdi" = ( /obj/structure/flora/jungle/vines/heavy, /obj/structure/flora/jungle/vines/light_3, @@ -15625,10 +16440,30 @@ "jga" = ( /turf/open/gm/river, /area/lv624/ground/jungle/west_jungle) +"jgj" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) +"jgy" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "jgJ" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/south_nexus_road) +"jhj" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "jhG" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -15652,6 +16487,12 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/dirt, /area/lv624/ground/colony/north_tcomms_road) +"jlt" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "jnG" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -15675,6 +16516,21 @@ icon_state = "whitebluecorner" }, /area/lv624/lazarus/corporate_dome) +"jpX" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"jqr" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "jrC" = ( /obj/structure/curtain/red, /turf/open/shuttle{ @@ -15699,6 +16555,12 @@ /obj/structure/cargo_container/lockmart/mid, /turf/open/floor, /area/lv624/ground/barrens/containers) +"jvQ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "jwW" = ( /turf/open/floor/plating{ dir = 6; @@ -15774,6 +16636,19 @@ icon_state = "floor6" }, /area/lv624/ground/caves/sand_temple) +"jBl" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) +"jCO" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "jDY" = ( /obj/effect/decal/cleanable/blood/gibs/xeno/limb, /turf/open/gm/dirt, @@ -15798,6 +16673,12 @@ /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/dirt, /area/lv624/ground/jungle/south_west_jungle/ceiling) +"jGU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "jGW" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/central_jungle) @@ -15821,6 +16702,16 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"jJg" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"jKc" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "jKu" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /obj/structure/flora/jungle/vines/heavy, @@ -15850,6 +16741,12 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/west_central_jungle) +"jLY" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "jMk" = ( /obj/structure/lattice{ layer = 2.9 @@ -15865,6 +16762,12 @@ icon_state = "warnplate" }, /area/lv624/lazarus/engineering) +"jMD" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "jMH" = ( /obj/structure/stairs/perspective{ color = "#6b675e"; @@ -15939,6 +16842,16 @@ /obj/effect/decal/cleanable/blood/xeno, /turf/open/gm/dirt, /area/lv624/ground/jungle/north_west_jungle) +"jRL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "jRM" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /obj/effect/landmark/lv624/fog_blocker, @@ -16001,6 +16914,20 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"jZX" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"kae" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "kbn" = ( /obj/structure/machinery/sensortower, /turf/open/floor{ @@ -16023,6 +16950,10 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/closed/wall/rock/brown, /area/lv624/ground/river/west_river) +"kdj" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "keS" = ( /turf/open/floor/plating, /area/lv624/ground/barrens/east_barrens/ceiling) @@ -16049,6 +16980,18 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/jungle/east_jungle) +"klD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"kmH" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "kmP" = ( /obj/item/stool, /turf/open/gm/dirt, @@ -16068,6 +17011,12 @@ /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"kpx" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "kqx" = ( /obj/structure/flora/jungle/plantbot1, /obj/structure/flora/jungle/vines/light_3, @@ -16077,6 +17026,18 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirt, /area/lv624/ground/caves/sand_temple) +"krs" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/lv624/ground/caves/south_west_caves) +"ksc" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush{ + icon_state = "fernybush_2"; + pixel_y = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "ksB" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, @@ -16103,6 +17064,12 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_barrens) +"ktr" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "kuP" = ( /obj/item/tool/hatchet{ pixel_x = 6; @@ -16133,12 +17100,25 @@ /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) +"kxv" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "kxI" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) "kyc" = ( /turf/open/gm/coast/beachcorner/north_east, /area/lv624/ground/river/central_river) +"kyt" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "kyN" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -16160,6 +17140,12 @@ icon_state = "green" }, /area/lv624/lazarus/hydroponics) +"kzn" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "kzu" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, @@ -16168,6 +17154,10 @@ /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"kzw" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "kzE" = ( /obj/structure/cargo_container/lockmart/right, /turf/open/floor, @@ -16199,6 +17189,10 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"kCD" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "kFx" = ( /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, @@ -16221,6 +17215,10 @@ "kHU" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/caves/sand_temple) +"kIM" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "kJm" = ( /turf/open/gm/coast/beachcorner2/north_east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) @@ -16232,11 +17230,31 @@ /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"kKa" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"kLl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "kLP" = ( /obj/structure/flora/jungle/plantbot1, /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"kML" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "kNm" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, @@ -16303,6 +17321,12 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/north_tcomms_road) +"kVG" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "kVP" = ( /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, @@ -16318,6 +17342,10 @@ }, /turf/open/floor/plating, /area/lv624/lazarus/landing_zones/lz2) +"kWV" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "kWX" = ( /turf/open/floor{ dir = 8; @@ -16361,6 +17389,11 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"lav" = ( +/turf/open/gm/dirt{ + icon_state = "desert_dug" + }, +/area/lv624/ground/caves/west_caves) "laY" = ( /obj/structure/flora/jungle/vines/light_1, /turf/closed/wall/strata_ice/jungle, @@ -16368,12 +17401,23 @@ "lbd" = ( /turf/open/gm/coast/beachcorner/north_west, /area/lv624/ground/barrens/west_barrens) +"lbt" = ( +/obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "lbX" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/east_jungle) +"ldi" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "ldB" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 4 @@ -16391,6 +17435,24 @@ /obj/structure/flora/bush/ausbushes/genericbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"lhE" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) +"lhH" = ( +/obj/structure/flora/bush/ausbushes/var3/stalkybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"liI" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "lju" = ( /turf/open/gm/coast/beachcorner2/south_east, /area/lv624/ground/river/central_river) @@ -16402,6 +17464,11 @@ /obj/structure/inflatable/popped/door, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"lkq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "lkF" = ( /obj/item/stack/sheet/wood{ amount = 2 @@ -16413,6 +17480,10 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz1) +"lnr" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "lnK" = ( /obj/structure/flora/bush/ausbushes/genericbush, /obj/effect/landmark/nightmare{ @@ -16428,6 +17499,16 @@ /obj/effect/landmark/hunter_primary, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/jungle/south_east_jungle) +"loP" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "lpV" = ( /turf/open/floor/plating{ icon_state = "platebotc" @@ -16491,6 +17572,19 @@ "lyS" = ( /turf/closed/wall/r_wall/unmeltable, /area/lv624/lazarus/quartstorage) +"lyZ" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) +"lzf" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "lzE" = ( /turf/open/gm/dirt{ icon_state = "desert0" @@ -16500,6 +17594,12 @@ /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"lBl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "lBq" = ( /obj/structure/barricade/handrail/strata, /obj/structure/barricade/handrail/strata{ @@ -16582,6 +17682,13 @@ icon_state = "dark" }, /area/lv624/lazarus/quartstorage) +"lIL" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "lIU" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/jungle/south_central_jungle) @@ -16621,6 +17728,16 @@ icon_state = "warning" }, /area/lv624/lazarus/landing_zones/lz2) +"lKl" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 6; + pixel_y = -8; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "lKF" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/barrens/containers) @@ -16628,12 +17745,23 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) +"lLK" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "lLO" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"lLU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "lNe" = ( /obj/effect/decal/cleanable/blood, /turf/open/floor{ @@ -16641,6 +17769,16 @@ icon_state = "whitebluecorner" }, /area/lv624/lazarus/corporate_dome) +"lNG" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "lPJ" = ( /turf/open/gm/dirtgrassborder{ icon_state = "desert" @@ -16678,6 +17816,23 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"lSA" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"lSN" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"lTv" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "lTZ" = ( /obj/item/tool/shovel, /turf/open/gm/dirt, @@ -16699,6 +17854,25 @@ /obj/structure/prop/brazier/torch, /turf/closed/wall/rock/brown, /area/lv624/ground/caves/sand_temple) +"lUQ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"lWh" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"lWl" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "lWw" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -16711,6 +17885,12 @@ "lWO" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/jungle/south_west_jungle) +"lYt" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "lYB" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, @@ -16758,6 +17938,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirt, /area/lv624/ground/jungle/east_jungle) +"mca" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "mdQ" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/west_caves) @@ -16765,6 +17955,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"mfn" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "mfu" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 8 @@ -16779,6 +17979,12 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"mgi" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "mgs" = ( /obj/structure/machinery/door/poddoor/almayer{ dir = 8; @@ -16890,6 +18096,11 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirt, /area/lv624/ground/river/east_river) +"mrg" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "mrQ" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 @@ -16982,6 +18193,12 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"mEo" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "mEw" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/dirtgrassborder/south, @@ -16990,10 +18207,22 @@ /obj/effect/landmark/crap_item, /turf/open/gm/dirt, /area/lv624/ground/colony/north_nexus_road) +"mFZ" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "mGG" = ( /obj/structure/window_frame/colony/reinforced, /turf/open/floor/plating, /area/lv624/lazarus/corporate_dome) +"mHk" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "mHM" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/colony/south_medbay_road) @@ -17008,6 +18237,10 @@ icon_state = "whiteyellowcorner" }, /area/lv624/lazarus/corporate_dome) +"mJF" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "mKf" = ( /turf/open/gm/dirt, /area/lv624/ground/colony/west_nexus_road) @@ -17017,6 +18250,10 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"mLv" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "mMq" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -17036,6 +18273,12 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"mNl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "mNz" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, @@ -17052,6 +18295,10 @@ /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_jungle_barrens) +"mOL" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "mPt" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/barrens/south_eastern_jungle_barrens) @@ -17128,6 +18375,10 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"mVr" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "mVK" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -17138,6 +18389,10 @@ "mWe" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/south_west_jungle) +"mWA" = ( +/obj/structure/flora/bush/ausbushes/var3/fernybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "mXR" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/colony/north_nexus_road) @@ -17168,10 +18423,22 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"ndk" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "ndK" = ( /obj/structure/flora/jungle/vines/light_1, /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"ner" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "nfD" = ( /obj/effect/landmark/survivor_spawner, /turf/open/gm/dirt, @@ -17186,6 +18453,14 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"nha" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "nhi" = ( /obj/structure/flora/bush/ausbushes/genericbush, /turf/open/gm/grass/grass1, @@ -17282,6 +18557,15 @@ }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"nrR" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "nsk" = ( /turf/open/gm/dirt, /area/lv624/ground/river/west_river) @@ -17379,6 +18663,12 @@ icon_state = "whiteyellowcorner" }, /area/lv624/lazarus/corporate_dome) +"nys" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "nzw" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -17535,6 +18825,12 @@ /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"nLF" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "nLH" = ( /obj/structure/prop/tower, /turf/open/floor{ @@ -17556,6 +18852,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"nNu" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 6; + pixel_y = -8; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "nNw" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, @@ -17587,6 +18893,16 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"nQH" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 6; + pixel_y = -8; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "nRb" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -17598,6 +18914,13 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/caves/sand_temple) +"nRA" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "nSg" = ( /obj/structure/window/framed/colony, /turf/open/floor{ @@ -17647,6 +18970,10 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"nUZ" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "nVC" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -17777,10 +19104,21 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"ofg" = ( +/turf/open/gm/dirt{ + icon_state = "desert1" + }, +/area/lv624/ground/caves/west_caves) "ofv" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/south_medbay_road) +"ogJ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "ogM" = ( /turf/open/gm/dirt, /area/lv624/ground/river/east_river) @@ -17794,6 +19132,21 @@ /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/gm/dirt, /area/lv624/ground/river/central_river) +"oha" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"ohf" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "ohE" = ( /obj/structure/surface/table/woodentable/poor, /obj/item/reagent_container/food/snacks/tomatomeat, @@ -17817,6 +19170,10 @@ "omK" = ( /turf/open/gm/coast/beachcorner/south_east, /area/lv624/ground/barrens/west_barrens) +"onP" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "onU" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/caves/west_caves) @@ -17853,6 +19210,20 @@ icon_state = "asteroidwarning" }, /area/lv624/ground/colony/telecomm/cargo) +"osf" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 11; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"otl" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "oua" = ( /obj/effect/landmark/crap_item, /turf/open/gm/dirt, @@ -17872,9 +19243,21 @@ /obj/item/stack/sheet/wood, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"owe" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "owQ" = ( /turf/open/gm/coast/east, /area/lv624/ground/barrens/east_barrens) +"owZ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "oxY" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -17936,6 +19319,10 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"oDE" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "oDY" = ( /obj/structure/platform_decoration/mineral/sandstone/runed{ dir = 4 @@ -17976,6 +19363,14 @@ "oFf" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/river/east_river) +"oFJ" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "oFO" = ( /obj/structure/platform_decoration/mineral/sandstone/runed{ dir = 1 @@ -18079,6 +19474,10 @@ icon_state = "loadingarea" }, /area/lv624/lazarus/landing_zones/lz1) +"oQm" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "oRH" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/north_east_jungle) @@ -18248,6 +19647,10 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_east, /area/lv624/ground/barrens/south_eastern_barrens) +"pgc" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "pgf" = ( /obj/structure/machinery/power/apc{ dir = 1; @@ -18281,6 +19684,15 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/central_jungle) +"pkU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "plf" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, @@ -18319,6 +19731,13 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"poX" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "ppR" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_east, /area/lv624/ground/colony/north_nexus_road) @@ -18366,6 +19785,11 @@ icon_state = "floor4" }, /area/lv624/lazarus/crashed_ship_containers) +"ptm" = ( +/turf/open/gm/dirt{ + icon_state = "desert0" + }, +/area/lv624/ground/caves/west_caves) "ptr" = ( /obj/structure/flora/bush/ausbushes/palebush, /turf/open/gm/grass/grass1, @@ -18415,10 +19839,18 @@ icon_state = "white" }, /area/lv624/lazarus/medbay) +"pAE" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "pBk" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"pBH" = ( +/obj/structure/flora/jungle/plantbot1, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "pDh" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -18457,6 +19889,12 @@ /obj/effect/landmark/hunter_primary, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) +"pET" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "pEV" = ( /turf/open/floor/strata{ color = "#5e5d5d"; @@ -18466,10 +19904,24 @@ "pFe" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/south_east_jungle) +"pFB" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "pGD" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"pGL" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "pHn" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/gm/dirt, @@ -18485,6 +19937,12 @@ icon_state = "whiteblue" }, /area/lv624/lazarus/corporate_dome) +"pIl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "pIy" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, @@ -18493,6 +19951,10 @@ /obj/structure/platform_decoration/mineral/sandstone/runed, /turf/open/floor/sandstone/runed, /area/lv624/ground/barrens/south_eastern_barrens) +"pIB" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "pIC" = ( /obj/effect/landmark/hunter_secondary, /turf/open/gm/grass/grass1, @@ -18526,6 +19988,15 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/colony/west_nexus_road) +"pLv" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "pMM" = ( /obj/structure/flora/bush/ausbushes/ppflowers, /turf/open/gm/dirtgrassborder/east, @@ -18572,6 +20043,10 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"pQV" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "pRe" = ( /obj/item/storage/firstaid/adv/empty, /obj/structure/machinery/door_control{ @@ -18618,9 +20093,21 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"pRD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "pRT" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/caves/sand_temple) +"pSe" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "pSt" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, @@ -18635,6 +20122,15 @@ "pUm" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/east_caves) +"pVZ" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "pXI" = ( /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, @@ -18675,6 +20171,12 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"qdx" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "qdQ" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, @@ -18707,9 +20209,25 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/floor, /area/lv624/lazarus/landing_zones/lz2) +"qfK" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "qgA" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/jungle/south_east_jungle) +"qhl" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"qiL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "qjf" = ( /turf/open/floor, /area/lv624/ground/barrens/containers) @@ -18739,6 +20257,14 @@ "qqJ" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/caves/sand_temple) +"qrH" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "qsM" = ( /obj/structure/platform/mineral/sandstone/runed{ dir = 1 @@ -18748,6 +20274,14 @@ "qtj" = ( /turf/open/gm/dirt, /area/lv624/ground/jungle/south_central_jungle) +"qtK" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "qtS" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/grass/grass1, @@ -18932,6 +20466,12 @@ /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"qJE" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "qKl" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/colony/north_nexus_road) @@ -18974,6 +20514,14 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/caves/sand_temple) +"qPY" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "qRj" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, @@ -18984,6 +20532,16 @@ }, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"qSG" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"qSS" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "qSZ" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -19006,9 +20564,32 @@ "qUM" = ( /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/jungle/west_central_jungle) +"qVh" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"qVi" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) +"qVN" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "qWf" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/colony/west_nexus_road) +"qWI" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "qXo" = ( /obj/structure/surface/rack, /obj/item/explosive/grenade/incendiary/molotov, @@ -19025,6 +20606,10 @@ /obj/structure/flora/bush/ausbushes/var3/sparsegrass, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) +"qYS" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "qZv" = ( /obj/structure/flora/grass/tallgrass/jungle, /turf/open/gm/grass/grass1, @@ -19047,6 +20632,16 @@ icon_state = "desert1" }, /area/lv624/ground/barrens/west_barrens) +"rbs" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"rby" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "rck" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 5 @@ -19103,10 +20698,26 @@ /obj/structure/flora/jungle/vines/heavy, /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"rgj" = ( +/obj/effect/decal/remains/xeno, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "rgQ" = ( /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"rhi" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "rit" = ( /turf/open/gm/coast/south, /area/lv624/ground/river/central_river) @@ -19127,10 +20738,37 @@ icon_state = "dark" }, /area/lv624/lazarus/engineering) +"rmt" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"rmW" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 11; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "rox" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"roQ" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"rpx" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "rpR" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/floor{ @@ -19186,6 +20824,9 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_nest, /obj/effect/landmark/structure_spawner/setup/distress/xeno_nest, /obj/effect/landmark/corpsespawner/wygoon, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/east_caves) "rwB" = ( @@ -19199,6 +20840,11 @@ icon_state = "desert_dug" }, /area/lv624/ground/barrens/south_eastern_barrens) +"ryp" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "ryJ" = ( /obj/structure/surface/table, /obj/effect/landmark/item_pool_spawner/survivor_ammo/buckshot, @@ -19213,6 +20859,12 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) +"rze" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "rzT" = ( /obj/structure/flora/jungle/vines/light_3, /obj/item/stack/sheet/wood{ @@ -19235,6 +20887,16 @@ icon_state = "asteroidfloor" }, /area/lv624/lazarus/corporate_dome) +"rAU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 6; + pixel_y = -8; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "rBF" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, @@ -19253,6 +20915,13 @@ "rCV" = ( /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_central_jungle) +"rER" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "rGd" = ( /obj/structure/girder/displaced, /obj/structure/shuttle/engine/propulsion, @@ -19271,6 +20940,16 @@ }, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"rGE" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 6; + pixel_y = -8; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "rGW" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/south, @@ -19284,11 +20963,34 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"rHV" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"rIc" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"rIm" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "rIq" = ( /obj/structure/flora/jungle/vines/light_1, /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"rID" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "rJd" = ( /obj/structure/bed/alien{ color = "#aba9a9" @@ -19381,6 +21083,13 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/colony/north_tcomms_road) +"rTT" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"rUX" = ( +/obj/structure/flora/bush/ausbushes/genericbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "rVH" = ( /obj/structure/transmitter/colony_net{ phone_category = "Lazarus Landing"; @@ -19393,6 +21102,12 @@ icon_state = "brown" }, /area/lv624/lazarus/comms) +"rWs" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "rWW" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/river, @@ -19402,6 +21117,11 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"rYe" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "rYA" = ( /obj/structure/platform/mineral/sandstone/runed{ dir = 1 @@ -19434,6 +21154,12 @@ icon_state = "white" }, /area/lv624/lazarus/corporate_dome) +"scs" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "sdh" = ( /obj/structure/barricade/sandbags/wired, /turf/open/floor/wood, @@ -19467,6 +21193,16 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner/north_west, /area/lv624/ground/colony/north_nexus_road) +"sgU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"shb" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "shq" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 10 @@ -19497,6 +21233,15 @@ }, /turf/open/floor/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"snc" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "sne" = ( /obj/item/ammo_casing/bullet{ icon_state = "cartridge_10_1" @@ -19518,10 +21263,26 @@ icon_state = "cult" }, /area/lv624/lazarus/armory) +"soz" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"soY" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "spm" = ( /obj/structure/flora/jungle/alienplant1, /turf/open/gm/river, /area/lv624/ground/barrens/east_barrens) +"spK" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "sqj" = ( /turf/open/gm/river, /area/lv624/ground/river/central_river) @@ -19551,6 +21312,12 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/caves/sand_temple) +"srn" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "ssc" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/jungle/east_central_jungle) @@ -19558,6 +21325,11 @@ /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/mineral/sandstone/runed, /area/lv624/ground/caves/sand_temple) +"stt" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "suv" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass2, @@ -19575,9 +21347,21 @@ /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_jungle) +"sxl" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "sxn" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/barrens/south_eastern_barrens) +"sxo" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "sxY" = ( /obj/structure/surface/rack, /obj/item/moneybag, @@ -19595,6 +21379,16 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, /area/lv624/ground/colony/south_medbay_road) +"sAh" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"sAI" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "sBg" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/machinery/light{ @@ -19613,6 +21407,9 @@ /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"sBY" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "sCg" = ( /obj/structure/stairs/perspective{ color = "#b29082"; @@ -19642,10 +21439,23 @@ /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"sET" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "sFc" = ( /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/gm/river, /area/lv624/ground/river/west_river) +"sFD" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "sFY" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ name = "\improper Workshop Storage"; @@ -19699,6 +21509,19 @@ /obj/effect/landmark/structure_spawner/xvx_hive/xeno_core, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"sLT" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"sLU" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "sLX" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 @@ -19716,6 +21539,12 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"sNq" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "sOp" = ( /obj/structure/flora/jungle/planttop1, /turf/open/gm/grass/grass1, @@ -19739,6 +21568,10 @@ /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"sPK" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/angel, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "sRH" = ( /obj/structure/flora/bush/ausbushes/palebush, /turf/open/gm/grass/grass1, @@ -19773,6 +21606,14 @@ /obj/structure/window/framed/colony/reinforced, /turf/open/floor, /area/lv624/lazarus/hydroponics) +"sVx" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "sWy" = ( /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, @@ -19804,6 +21645,16 @@ icon_state = "squareswood" }, /area/lv624/ground/caves/sand_temple) +"sXg" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "sXi" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 @@ -19833,6 +21684,16 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"tcF" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"tde" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "tdX" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -19885,6 +21746,16 @@ /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/coast/north, /area/lv624/ground/river/west_river) +"thk" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -5; + pixel_y = -5; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "thn" = ( /obj/item/weapon/sword{ pixel_x = -6; @@ -19913,6 +21784,13 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"thI" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "thS" = ( /obj/structure/barricade/handrail/strata{ dir = 8 @@ -19920,12 +21798,6 @@ /obj/structure/barricade/handrail/strata, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/barrens/south_eastern_barrens) -"tiw" = ( -/mob/living/simple_animal/bat, -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, -/turf/open/gm/dirt, -/area/lv624/ground/caves/north_west_caves) "tka" = ( /obj/item/ammo_casing/bullet{ icon_state = "casing_9_1" @@ -19938,6 +21810,10 @@ }, /turf/open/gm/dirt, /area/lv624/ground/jungle/north_west_jungle) +"tlk" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "tlD" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/river, @@ -19961,6 +21837,11 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"tnY" = ( +/turf/open/gm/dirt{ + icon_state = "desert3" + }, +/area/lv624/ground/caves/west_caves) "toz" = ( /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, @@ -19990,6 +21871,10 @@ /obj/structure/flora/jungle/plantbot1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"tqQ" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "trs" = ( /obj/item/tool/shovel, /turf/open/gm/dirt, @@ -20012,6 +21897,13 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/colony/north_nexus_road) +"tti" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "ttu" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, @@ -20027,6 +21919,16 @@ /obj/structure/barricade/handrail/strata, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/barrens/south_eastern_barrens) +"tuJ" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -5; + pixel_y = -5; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "tuX" = ( /obj/effect/landmark/crap_item, /turf/open/floor/wood{ @@ -20102,6 +22004,14 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"tEm" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "tEn" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/floor{ @@ -20201,10 +22111,38 @@ icon_state = "whiteyellowfull" }, /area/lv624/ground/barrens/south_eastern_barrens) +"tMQ" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "tOS" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, /area/lv624/ground/caves/west_caves) +"tOV" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) +"tPH" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"tQU" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "tRu" = ( /obj/effect/landmark/hunter_primary, /obj/structure/flora/jungle/vines/heavy, @@ -20214,9 +22152,20 @@ /obj/effect/decal/cleanable/blood/gibs/xeno, /turf/open/gm/dirt, /area/lv624/ground/jungle/north_west_jungle) +"tRM" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "tSd" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/lazarus/quartstorage/outdoors) +"tSi" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "tSN" = ( /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/gm/grass/grass1, @@ -20231,6 +22180,12 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"tVw" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "tWw" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor{ @@ -20254,8 +22209,17 @@ /area/lv624/lazarus/crashed_ship_containers) "tYx" = ( /obj/effect/landmark/objective_landmark/medium, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"tYW" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "tZa" = ( /obj/structure/flora/bush/ausbushes/var3/stalkybush, /turf/open/gm/coast/beachcorner/south_east, @@ -20267,6 +22231,10 @@ "tZD" = ( /turf/closed/wall/r_wall, /area/lv624/lazarus/landing_zones/lz2) +"uaL" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "uaP" = ( /obj/structure/flora/bush/ausbushes/var3/fernybush, /turf/open/gm/grass/grass1, @@ -20391,6 +22359,14 @@ icon_state = "desert1" }, /area/lv624/ground/barrens/south_eastern_barrens) +"ukY" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "ukZ" = ( /turf/open/floor{ dir = 1; @@ -20432,6 +22408,10 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/east_jungle) +"uop" = ( +/obj/structure/flora/bush/ausbushes/reedbush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "upM" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, @@ -20449,6 +22429,10 @@ }, /turf/open/gm/dirt, /area/lv624/ground/jungle/east_jungle) +"uqm" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "urR" = ( /turf/open/floor/corsat{ dir = 1; @@ -20479,6 +22463,12 @@ "uvh" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/barrens/south_eastern_barrens) +"uwG" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "uxh" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, @@ -20488,6 +22478,16 @@ /obj/effect/landmark/corpsespawner/security/liaison, /turf/open/floor/wood, /area/lv624/ground/caves/north_central_caves) +"uxL" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 11; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "uxT" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/coast/east, @@ -20498,6 +22498,12 @@ "uya" = ( /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"uyn" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "uzH" = ( /turf/open/floor/plating{ dir = 8; @@ -20507,6 +22513,11 @@ "uAp" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/barrens/south_eastern_barrens) +"uBR" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "uDd" = ( /obj/structure/showcase{ desc = "An ancient, dusty tomb with strange alien writing. It's best not to touch it."; @@ -20568,6 +22579,12 @@ icon_state = "whitebluecorner" }, /area/lv624/lazarus/corporate_dome) +"uHc" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "uHI" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/gm/grass/grass2, @@ -20590,11 +22607,17 @@ }, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/north_jungle) +"uMd" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "uMz" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "uMD" = ( /obj/structure/flora/jungle/vines/light_3, @@ -20605,6 +22628,20 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/caves/sand_temple) +"uOl" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"uOu" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/libertycap, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) +"uOD" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "uOK" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor{ @@ -20615,6 +22652,10 @@ /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/ground/colony/west_tcomms_road) +"uRe" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "uRE" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/lazarus/landing_zones/lz2) @@ -20693,6 +22734,9 @@ icon_state = "wood-broken" }, /area/lv624/ground/caves/north_central_caves) +"uYj" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "uYC" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 6 @@ -20739,10 +22783,22 @@ }, /turf/open/gm/dirt, /area/lv624/ground/jungle/east_jungle) +"vbK" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "vcY" = ( /obj/structure/machinery/colony_floodlight, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) +"vdt" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "vdy" = ( /obj/structure/machinery/door/airlock/almayer/engineering/colony{ dir = 1; @@ -20801,6 +22857,19 @@ /obj/structure/girder, /turf/open/gm/dirt, /area/lv624/lazarus/crashed_ship_containers) +"vih" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"viC" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "vjH" = ( /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, @@ -20828,6 +22897,25 @@ /obj/effect/landmark/objective_landmark/far, /turf/open/gm/dirt, /area/lv624/ground/jungle/south_central_jungle) +"vkS" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) +"vle" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "vly" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -20866,6 +22954,14 @@ /obj/structure/flora/bush/ausbushes/ausbush, /turf/open/gm/grass/grass1, /area/lv624/ground/barrens/south_eastern_barrens) +"vtk" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "vtt" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, @@ -20900,6 +22996,13 @@ }, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz2) +"vxj" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "vxU" = ( /obj/structure/flora/bush/ausbushes/lavendergrass, /turf/open/gm/grass/grass1, @@ -20911,6 +23014,25 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"vAg" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"vAB" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"vAT" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) +"vBd" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "vBe" = ( /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/east_central_jungle) @@ -20957,6 +23079,19 @@ }, /turf/open/gm/grass/grass1, /area/lv624/lazarus/landing_zones/lz1) +"vGj" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"vGy" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "vHe" = ( /obj/structure/surface/rack, /obj/item/stack/sheet/plasteel{ @@ -21006,10 +23141,23 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/south_west_caves) +"vNs" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) "vNP" = ( /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"vNT" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "vNW" = ( /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass1, @@ -21021,6 +23169,14 @@ "vOF" = ( /turf/open/gm/dirtgrassborder/west, /area/lv624/ground/jungle/south_central_jungle) +"vPo" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "vPu" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/floor, @@ -21028,6 +23184,10 @@ "vPV" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/east_jungle) +"vQR" = ( +/obj/structure/flora/bush/ausbushes/var3/sunnybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "vSG" = ( /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, @@ -21069,6 +23229,12 @@ /obj/structure/flora/jungle/vines/light_3, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/east_jungle) +"vXP" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "vXW" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/flora/jungle/vines/heavy, @@ -21078,6 +23244,18 @@ /obj/effect/landmark/objective_landmark/close, /turf/open/gm/dirt, /area/lv624/ground/caves/south_west_caves) +"waw" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"wbg" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "wbK" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, @@ -21133,6 +23311,16 @@ }, /turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, /area/lv624/ground/caves/sand_temple) +"whk" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_west_caves) "whr" = ( /obj/item/ammo_magazine/smg/mp5, /obj/item/ammo_magazine/smg/mp5, @@ -21149,6 +23337,10 @@ icon_state = "desert2" }, /area/lv624/ground/barrens/south_eastern_barrens) +"whx" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "whQ" = ( /obj/structure/flora/bush/ausbushes/var3/sunnybush{ desc = "The oranges aren't done yet... this sucks."; @@ -21243,9 +23435,19 @@ icon_state = "multi_tiles" }, /area/lv624/ground/caves/sand_temple) +"woT" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "wpw" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"wpY" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) "wqy" = ( /obj/structure/flora/bush/ausbushes/reedbush, /turf/open/gm/dirt, @@ -21267,6 +23469,10 @@ /obj/structure/flora/jungle/vines/light_2, /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/north_east_jungle) +"wty" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "wtK" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/storage/fancy/cigarettes/wypacket{ @@ -21300,6 +23506,10 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"wzI" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "wAe" = ( /obj/effect/decal/cleanable/blood/splatter, /obj/structure/machinery/door_control{ @@ -21312,6 +23522,12 @@ icon_state = "white" }, /area/lv624/lazarus/research) +"wAF" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "wAI" = ( /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/dirtgrassborder/south, @@ -21324,6 +23540,12 @@ /obj/item/clothing/suit/armor/yautja_flavor, /turf/open/floor/sandstone/runed, /area/lv624/ground/barrens/south_eastern_barrens) +"wCs" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "wEO" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, @@ -21349,12 +23571,28 @@ icon_state = "wood-broken3" }, /area/lv624/ground/caves/north_central_caves) +"wHh" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "wHp" = ( /turf/open/floor/plating{ dir = 1; icon_state = "asteroidfloor" }, /area/lv624/lazarus/landing_zones/lz2) +"wHE" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -1; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "wJA" = ( /obj/structure/flora/jungle/vines/light_3, /obj/structure/window/framed/colony/reinforced, @@ -21389,10 +23627,24 @@ icon_state = "asteroidwarning" }, /area/lv624/lazarus/landing_zones/lz2) +"wLT" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_east_caves) "wMk" = ( /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/west_central_jungle) +"wMr" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "wNp" = ( /obj/effect/landmark/objective_landmark/medium, /turf/open/gm/dirt, @@ -21435,6 +23687,18 @@ /obj/structure/flora/bush/ausbushes/grassybush, /turf/open/gm/grass/grass2, /area/lv624/ground/jungle/south_west_jungle) +"wQK" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) +"wRb" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "wSg" = ( /obj/structure/inflatable/popped, /turf/open/gm/dirt, @@ -21568,6 +23832,18 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"wYz" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) +"wYB" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_east_caves) "wZc" = ( /obj/structure/flora/bush/ausbushes/var3/brflowers, /turf/open/gm/grass/grass1, @@ -21585,6 +23861,10 @@ }, /turf/open/gm/dirt, /area/lv624/ground/barrens/south_eastern_barrens) +"xar" = ( +/obj/effect/decal/grass_overlay/grass1/inner, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "xbu" = ( /obj/item/shard, /turf/open/floor{ @@ -21599,6 +23879,10 @@ /obj/structure/flora/bush/ausbushes/pointybush, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_east_jungle) +"xdb" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "xdO" = ( /turf/open/gm/dirtgrassborder/south, /area/lv624/ground/jungle/south_west_jungle) @@ -21635,6 +23919,17 @@ "xgE" = ( /turf/closed/wall/r_wall, /area/lv624/lazarus/corporate_dome) +"xhc" = ( +/mob/living/simple_animal/bat, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/north_west_caves) +"xhv" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "xhC" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, /area/lv624/ground/barrens/south_eastern_barrens) @@ -21645,6 +23940,10 @@ icon_state = "whiteyellow" }, /area/lv624/lazarus/corporate_dome) +"xmK" = ( +/obj/structure/flora/bush/ausbushes/grassybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "xov" = ( /obj/effect/landmark/hunter_primary, /turf/open/gm/dirt, @@ -21713,6 +24012,10 @@ "xwr" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/west_barrens) +"xwN" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/east_caves) "xwQ" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/handcuffs/cable/white{ @@ -21732,6 +24035,14 @@ icon_state = "whiteyellow" }, /area/lv624/lazarus/corporate_dome) +"xyH" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "xyI" = ( /obj/item/ammo_magazine/rifle/nsg23{ current_rounds = 0 @@ -21755,6 +24066,10 @@ "xBm" = ( /turf/open/gm/river, /area/lv624/ground/barrens/west_barrens) +"xBO" = ( +/obj/structure/flora/bush/ausbushes/palebush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_west_caves) "xCF" = ( /obj/item/ammo_magazine/smg/mp5, /obj/item/weapon/gun/smg/mp5, @@ -21786,10 +24101,23 @@ /obj/structure/flora/jungle/vines/heavy, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"xGL" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 + }, +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/east_caves) "xHa" = ( /obj/effect/landmark/crap_item, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_west_jungle) +"xHW" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/west_caves) "xJA" = ( /obj/effect/landmark/lv624/fog_blocker, /turf/open/gm/river, @@ -21808,11 +24136,24 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/east, /area/lv624/ground/jungle/west_jungle) +"xKL" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/west_caves) "xLi" = ( /obj/structure/surface/rack, /obj/item/storage/box/lights/mixed, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"xNi" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) "xNK" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/containers) @@ -21844,12 +24185,22 @@ }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"xRe" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "xRo" = ( /obj/structure/flora/grass/tallgrass/jungle/corner{ dir = 1 }, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_central_jungle) +"xSk" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/north_east_caves) "xSA" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, @@ -21883,6 +24234,12 @@ "xVN" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/jungle/south_central_jungle) +"xWy" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "xXB" = ( /obj/structure/flora/bush/ausbushes/var3/sunnybush, /turf/open/gm/grass/grass1, @@ -21894,6 +24251,12 @@ /obj/structure/flora/jungle/vines/light_2, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_central_jungle) +"xYD" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_west_caves) "xZE" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, @@ -21922,8 +24285,14 @@ /area/lv624/ground/barrens/south_eastern_jungle_barrens) "ydz" = ( /obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) +"yfe" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_east_caves) "yfH" = ( /turf/open/shuttle{ icon_state = "floor4" @@ -21961,6 +24330,11 @@ icon_state = "purple" }, /area/lv624/lazarus/sleep_female) +"yhT" = ( +/turf/open/gm/dirt{ + icon_state = "desert2" + }, +/area/lv624/ground/caves/west_caves) "yhY" = ( /obj/structure/inflatable/door, /turf/open/gm/dirt, @@ -21993,6 +24367,10 @@ /obj/structure/fence, /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_east, /area/lv624/ground/colony/west_tcomms_road) +"yjs" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "yjN" = ( /obj/structure/flora/jungle/vines/heavy, /obj/structure/machinery/door/airlock/sandstone/runed/destroyable{ @@ -23264,7 +25642,7 @@ mdQ mdQ gwP gwP -gwP +yhT mdQ mdQ mdQ @@ -23716,10 +26094,10 @@ gwP gwP gwP tOS -gwP -gwP -gwP -tOS +vle +qdx +qdx +hyF gwP gwP gwP @@ -23942,18 +26320,18 @@ gwP gwP gwP gwP +vle +qdx +cHW +dOA +dmT +grW +xKL gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP +yhT tOS gwP -gwP +ptm gwP gwP gwP @@ -24165,19 +26543,19 @@ mdQ mdQ mdQ gwP +ptm gwP -gwP -gwP +tnY tOS gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP +wQK +cQB +dmT +dmT +rmW +ndk +grW +xKL gwP gwP gwP @@ -24213,7 +26591,7 @@ amy ane ane ane -ahF +krs ahF ane ane @@ -24398,14 +26776,14 @@ gwP gwP gwP gwP -gwP +wQK mdQ mdQ onU onU -gwP -gwP -gwP +owe +dmT +uRe gwP gwP gwP @@ -24433,7 +26811,7 @@ nBh afV ahF ahF -ahF +aYI ahF ahF ahF @@ -24623,23 +27001,23 @@ gwP gwP gwP gwP -gwP -gwP -gwP +vle +qdx +qdx mdQ mdQ mdQ onU onU mdQ -gwP -tOS +dmT +igN gwP gwP mdQ gwP gwP -gwP +yhT gwP gwP gwP @@ -24850,9 +27228,9 @@ mdQ gwP gwP tOS -gwP -gwP -gwP +vle +amI +dmT mdQ mdQ onU @@ -24860,8 +27238,8 @@ onU onU mdQ mdQ -gwP -gwP +bcb +wHh gwP gwP mdQ @@ -24898,7 +27276,7 @@ ahF ahF ahF ahF -ahF +cCP ahF ane ane @@ -25078,8 +27456,8 @@ gwP gwP gwP gwP -gwP -gwP +wQK +dmT mdQ mdQ onU @@ -25302,13 +27680,13 @@ mdQ mdQ mdQ mdQ +ofg gwP gwP gwP -gwP -gwP -gwP -gwP +wQK +dmT +fRU onU onU onU @@ -25317,7 +27695,7 @@ mdQ gwP gwP gwP -gwP +ptm gwP gwP mdQ @@ -25336,8 +27714,8 @@ afV afV afV afV -ahF -ahF +hRy +aYI ahF afV afV @@ -25530,18 +27908,18 @@ gwP mdQ mdQ gwP +ptm gwP gwP gwP -gwP -gwP -gwP -gwP -gwP -gwP +wQK +dmT +dmT +nRA +htV onU mdQ -gwP +uRe gwP gwP gwP @@ -25562,6 +27940,7 @@ ahF ahF ahF ahF +aYI ahF ahF ahF @@ -25572,8 +27951,7 @@ ahF ahF ahF ahF -ahF -ahF +krs ahF ane ane @@ -25757,19 +28135,19 @@ gwP gwP mdQ mdQ +lav gwP gwP +ofg gwP -gwP -gwP -gwP -tOS -gwP -gwP -gwP -gwP -gwP -gwP +hjo +gvm +qJE +dmT +dmT +dmT +fLh +uRe gwP tOS gwP @@ -25796,7 +28174,7 @@ ahF ahF ahF ahF -ahF +fDT ahF ahF ahF @@ -25992,12 +28370,12 @@ gwP gwP gwP gwP -gwP -gwP -gwP -tOS -gwP -gwP +hjo +qJE +tlk +gRk +owZ +wHh gwP gwP gwP @@ -26022,7 +28400,7 @@ ahF ahF ahF ahF -ahF +krs ahF ahF ahH @@ -26030,14 +28408,14 @@ ahF ahF ahF ahF -ahF +cCP ahF ane +fDT ahF ahF ahF -ahF -ahF +aYI ahF ahF ane @@ -26213,6 +28591,7 @@ gwP gwP gwP aca +ptm gwP gwP gwP @@ -26220,14 +28599,13 @@ gwP gwP gwP gwP +hjo +qhl +qhl +wHh gwP -gwP -gwP -gwP -gwP -gwP -gwP -gwP +ptm +yhT gwP mdQ mdQ @@ -26246,10 +28624,10 @@ ahF ahF ahV ahF -ahF -ahH -ahF -ahF +xYD +gTj +gTj +nys ahF ahF ahF @@ -26472,13 +28850,13 @@ ane ane ahF ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF +xYD +hmq +lYt +chi +fmW +rHV +nys ePu ahF ahF @@ -26493,9 +28871,9 @@ ane ahF ahF ahF -ahF -ahF -ahF +hRy +hRy +fDT afV ane ane @@ -26640,7 +29018,7 @@ mdQ mdQ mdQ mdQ -gwP +uRe gwP gwP gwP @@ -26699,19 +29077,19 @@ ane ane ane ane -ahF -ahF -ahF -ahF +xYD +lYt +fmW +fmW uWJ +ilF +fmW +rHV +nys ahF ahF ahF -ahF -ahF -ahF -ahF -ahF +aYI ahF ahH ahF @@ -26827,9 +29205,9 @@ abB abB abB abN -abN -abN -abN +pSe +kzn +tcF amk amk amk @@ -26838,7 +29216,7 @@ abM abM abM abM -abN +qVh abN abN abN @@ -26866,9 +29244,9 @@ amk onU onU mdQ -tOS -gwP -gwP +gRk +dmT +uRe gwP gwP gwP @@ -26927,16 +29305,16 @@ ane ane ane ahF -ahF -ahF -ahF +wAF +aIE +fmW uWJ uWJ uWJ -ahF -ahF -ahF -ahF +fmW +fmW +vGj +nys ahF ahF ahF @@ -27052,21 +29430,21 @@ abM abM abB abB -tiw -abN -abN -abN -abN +abB +tgL abN abN +lTv +pLv +sBY amk amk amk amk amk abM -abN -abN +qiL +qVh abQ abN abN @@ -27087,16 +29465,16 @@ abN abN abN abN -abN -abN -abN -abN +cMG +waw +cWs +sBY onU onU onU -gwP -gwP -gwP +lKl +tRM +uRe gwP gwP gwP @@ -27111,11 +29489,11 @@ gwP gwP gwP gwP -gwP -gwP -gwP -gwP -gwP +vle +jvQ +jvQ +jvQ +xKL gwP gwP gwP @@ -27155,20 +29533,20 @@ ane ane ahF ahF -ahF -ahF +wAF +fmW uWJ uWJ uWJ +eoW +fmW +fmW +fmW +rHV +vXP +nys ahF -ahF -ahH -ahF -ahF -ahF -ahF -ahF -ahF +aYI ahF ahF ahF @@ -27284,17 +29662,17 @@ abN abN abN abN -abN -abN -abN -abN -abN +pSe +kzn +sBY +sBY +sBY amk amk -abN -abN -abN -abN +gnt +qVN +sBY +qVh abN abN abN @@ -27314,17 +29692,17 @@ abN abN abN abQ -abN -abN -abN -abN -abN -aca -gwP -gwP -gwP -gwP -gwP +cMG +waw +sBY +sBY +sBY +iGf +dKl +dmT +dmT +owZ +wHh gwP gwP gwP @@ -27337,14 +29715,14 @@ gwP aYC gwP gwP -gwP -gwP -gwP -tOS -gwP -gwP -gwP -gwP +vle +jvQ +pkU +gRk +lLK +dmT +grW +xKL gwP gwP gwP @@ -27382,19 +29760,19 @@ ane ane ahF ahF -ahH -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF ahF +doe +pIl +eZg +fmW +fmW +fmW +fmW +fmW +fmW +fmW +fmW +rHV ahF ahF ane @@ -27513,16 +29891,16 @@ abN abN abN abN -abQ -abN -abN -abN -abN -abN -abN -abN -abN -abN +bak +kzn +iXX +sBY +sBY +iNJ +sBY +sBY +frV +klD abN abN abN @@ -27541,17 +29919,17 @@ abN abN abN abN -abN -abN -abN -abN -abQ -abN -aca -gwP -tOS -gwP -gwP +cMG +waw +sBY +sBY +fTN +sBY +iGf +dmT +gRk +owZ +wHh gwP gwP gwP @@ -27565,15 +29943,15 @@ gwP aca gwP gwP -gwP -xZE -xZE -xZE -gwP -gwP -gwP -gwP -gwP +jGU +hhs +hhs +hhs +htV +dOA +fRU +grW +xKL gwP gwP gwP @@ -27609,20 +29987,20 @@ ane ane ane ahF +aYI ahF ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF -ahF +doe +pIl +uqm +fmW +fmW +fmW +ikA +fmW +fmW +wty +chi ane ane ane @@ -27635,7 +30013,7 @@ ane ahF ahF ahH -ahF +cCP ahF ane ane @@ -27737,19 +30115,19 @@ abN abN abN abN -abQ -abN -abN -abN -abN -abN -abN -abN -abN -abN -abN -abQ -abN +vNs +bdu +bdu +bdu +jKc +pSe +jLY +jLY +jLY +jLY +jLY +kKa +klD abN abN abN @@ -27768,17 +30146,17 @@ abM abB abN abN -abN -abN -abN -abN -abN -abN -abN -aca -gwP -gwP -gwP +cMG +waw +gvr +uOu +sBY +iNJ +sBY +iGf +owZ +qhl +wHh gwP qaE gwP @@ -27798,11 +30176,11 @@ mdQ onU onU onU -xZE -xZE -xZE -gwP -gwP +hhs +hhs +hhs +grW +jvQ gwP gwP tOS @@ -27841,22 +30219,22 @@ ahF vZT ahF ahF -ahF -ahF -ahF +doe +qSS +pIl dWM -ahF -ahF -ahF -ahF -ahF -ahF +fmW +fmW +fmW +fmW +sAI +pBH ane ane afV afV -ahF -ahF +hRy +krs afV afV ane @@ -27962,16 +30340,16 @@ abN abN abN abN -abN -abN -abN -abN -abN -abN -abN -abN -abN -abN +cMG +bdu +bdu +waw +tcF +sBY +sBY +mgi +bdu +jKc abQ abN abN @@ -27995,11 +30373,11 @@ abN abN dhD abN -abQ -abN -abN -abN -abN +vNs +waw +sBY +sBY +sBY amk abM abM @@ -28028,11 +30406,11 @@ onU onU onU onU -xZE -xZE -xZE -gwP -gwP +hhs +hhs +hhs +grW +xKL gwP gwP gwP @@ -28069,13 +30447,13 @@ ane ane ane ahF +fDT ahF -ahF -ahF -ahF -ahF -ahF -ahF +wAF +fmW +fmW +snc +fmW uWJ uWJ uWJ @@ -28083,7 +30461,7 @@ ane ane afV ahF -ahF +aYI ahF ahF afV @@ -28189,17 +30567,17 @@ abM abN abN abN -abQ -abN -abN -abN -abN -abN -abN -abN -abN -abN -abN +vNs +waw +dIj +sBY +sBY +sBY +sBY +pLv +sBY +sBY +hKP abN abN abN @@ -28222,12 +30600,12 @@ abN abN abQ dhD -abN -abN -abN -abN -abN -abN +cMG +waw +sBY +sBY +sBY +sBY amk amk abM @@ -28258,9 +30636,9 @@ onU onU onU onU -xZE -xZE -gwP +hhs +hhs +uRe gwP gwP gwP @@ -28298,12 +30676,12 @@ afV afV afV ahF -ahF -ahH -ahF -ahF -ahF -ahF +cCP +wAF +fmW +fmW +jCO +uqm uWJ ane ane @@ -28417,17 +30795,17 @@ abM abN abN abN -abN -abN -abN -abN +vGy +sBY +whk +sBY amk amk amk amk -abN -abN -abN +sBY +sBY +hKP abN abN abN @@ -28450,11 +30828,11 @@ abN abN abN dhD -abN -abN -abN -abN -abN +vGy +sBY +sBY +gnt +sBY amk amk amk @@ -28522,14 +30900,14 @@ ahF ahF ahF ahF -ahF +cCP ahF afJ -ahF -ahF -ahF -ahF -ahF +xYD +vXP +lYt +dIu +fmW ane ane ane @@ -28542,7 +30920,7 @@ ahF ahF ahF ahF -ahF +cCP ahF ahF ahF @@ -28645,7 +31023,7 @@ abN abN abN abN -abN +vGy abM abM amk @@ -28678,10 +31056,10 @@ abN abN abN dhD -abN -abN -abN -abN +vGy +qVN +sBY +ksc amk amk amk @@ -28744,7 +31122,7 @@ acp ane ane ahF -ahF +fDT ahF ahF ahH @@ -28753,10 +31131,10 @@ ahF ahF ahF afJ -ahF -ahF -ahF -ahF +wAF +fmW +fmW +fmW ane ane ane @@ -28872,8 +31250,8 @@ abM abN abN abN -abN -abN +cMG +waw abM abM abM @@ -28976,13 +31354,13 @@ ahF ahF ahF ahF -ahF -ahF -ahF -ahF +gTj +gTj +gTj +nys afV -ahF -ahF +wAF +tQU uWJ uWJ ane @@ -28999,7 +31377,7 @@ ahF ahF ahF ahF -ahF +krs ahF ahF ahF @@ -29099,9 +31477,9 @@ abM abN abN abQ -abN -abN -abN +cMG +waw +tcF abM abM abM @@ -29203,11 +31581,11 @@ afV ahF isF ahF -ahF -ahF -ahF -ahF -ahF +lYt +fmW +gos +fmW +lWl afV afV uWJ @@ -29327,8 +31705,8 @@ abM abN abN abN -abN -abN +vGy +sBY abM abM abM @@ -29430,13 +31808,13 @@ ane vUx vMV vMV -vMV -vMV +lUQ +bJQ uWJ -ahF -ahF -ahF -ahF +nQH +fmW +lWl +krs afV ane ane @@ -29450,7 +31828,7 @@ ahF ahF ahF ahF -ahF +krs ahF ahV ahF @@ -29554,9 +31932,9 @@ abM abM abN abN -abN -abN -abN +cMG +waw +pLv abM abM abM @@ -29658,12 +32036,12 @@ ane afV ahF ahF -ahF -ahF +wAF +fmW uWJ -ahF -ahF -ahF +dIu +fmW +lWl ahF afV afV @@ -29674,7 +32052,7 @@ afV ahF ahF ahF -ahF +fDT ahF ahH ahF @@ -29684,7 +32062,7 @@ ahF ahF ahF ahF -ahF +aYI ahF ane ane @@ -29781,9 +32159,9 @@ abM abM abN abN -abN -abN -abN +cMG +waw +sBY amk abM abM @@ -29886,16 +32264,16 @@ ane ane ahF ahF -ahH -pmt +thI +cdw uWJ uWJ +dOb +lWl +aYI ahF ahF -ahF -ahF -ahF -ahF +krs ahF ahF ahF @@ -30009,9 +32387,9 @@ abM abM abN abN -abN -abQ -abN +vGy +fTN +sLT amk amk abM @@ -30112,20 +32490,20 @@ acp ane ane ane +krs ahF -ahF -ahF -ahF +wAF +fmW uWJ uWJ +kzw +kyt +nys ahF ahF ahF ahF -ahF -ahF -ahF -ahF +krs ahF ahF ahF @@ -30237,8 +32615,8 @@ abM abN abN abN -tgL -abN +xhc +sBY amk amk amk @@ -30342,15 +32720,14 @@ ane ane ahF ahF -ahF -ahF -ahF +wAF +tOV +fKc uWJ -ahF -ahF -ahF -ahF -ahH +jCO +fmW +rHV +nys ahF ahF ahF @@ -30358,6 +32735,7 @@ ahF ahF ahF ahF +krs ahF ahF ahF @@ -30465,8 +32843,8 @@ abM abN abN abN -abN -abN +vGy +sBY amk amk abM @@ -30570,17 +32948,17 @@ afV afV ahF ahF -ahF -ahF -ahF +doe +pIl +fmW uWJ ane uWJ +fmW +qSG ahF ahF -ahF -ahF -ahF +cCP ahF ahH ahF @@ -30693,9 +33071,9 @@ abM abN abN abN -abN -abN -abN +vGy +sBY +bPE amk abM abM @@ -30795,18 +33173,18 @@ acp ane ane ahF +cCP ahF ahF ahF -ahF -ahF -ahF +wYz +chi uWJ ane uWJ -ahF -ahF -ahF +fmW +rHV +nys ahF ahF ahF @@ -30921,11 +33299,11 @@ abM abN abN abN -abN -abN -abN -abN -abB +pSe +kzn +sBY +dBS +stt abM abM abM @@ -30996,8 +33374,8 @@ mdQ mdQ mdQ mdQ -gwP -gwP +qdx +xKL gwP gwP gwP @@ -31027,15 +33405,15 @@ ahF ane ane ahF -ahH ahF +pIl ane ane uWJ -ahF -ahF -ahF -ahF +tOV +fmW +rHV +nys ahF ahF ahF @@ -31150,12 +33528,12 @@ abM abN abN abN -abQ -abN -abN -abB -abB -abB +bak +kzn +qYS +stt +stt +stt abM abM abM @@ -31223,9 +33601,9 @@ mdQ mdQ mdQ mdQ -gwP -gwP -gwP +tlk +dmT +uRe gwP gwP acS @@ -31256,16 +33634,16 @@ ane ane ane ahF -ahF -ahF -ahF +doe +pIl +fmW uWJ uWJ ane -ahF -ahF -ahF -ahF +eZg +rHV +gTj +nys isF ahF ahF @@ -31379,12 +33757,12 @@ abM abN abN abN -abN -abN -abN -abN -abN -abB +pSe +jLY +jLY +jLY +jLY +qrH abM abM abM @@ -31452,8 +33830,8 @@ mdQ mdQ mdQ mdQ -gwP -tOS +dmT +igN gwP gwP gwP @@ -31485,20 +33863,20 @@ ane ane ahF ahF -ahF -ahF -ahF +doe +pIl +fcQ uWJ ane ane -ahF -ahH -ahF -ahF +fmW +fmW +lWl ahF ahF ahF ahF +krs ahF ahF ahF @@ -31679,9 +34057,9 @@ mdQ mdQ mdQ onU -gwP -gwP -gwP +dmT +dmT +uRe gwP gwP gwP @@ -31707,26 +34085,26 @@ mdQ ane afV ahF +aYI +krs ahF ahF ahF ahF ahF -ahF -ahF -ahF -ahF -ahF +wYz +fmW +fmW uWJ uWJ uWJ +fmW +lWl ahF -ahF -ahF -ahF -ahF -ahF -ahF +hRy +hRy +hRy +hRy ahF ahF ahF @@ -31907,9 +34285,9 @@ mdQ mdQ onU onU -gwP -gwP -sMx +dmT +dmT +kVG sMx gwP gwP @@ -31940,16 +34318,16 @@ ahF ahF ahF ahF +fDT ahF ahF -ahF -ahH -ahF +pIl +fmW uWJ uWJ -ahF -ahF -ahF +wHE +fmW +lWl ahF ahF ahF @@ -32135,9 +34513,9 @@ mdQ mdQ onU onU -gwP -gwP -sMx +dmT +xHW +kVG sMx gwP gwP @@ -32171,13 +34549,13 @@ ahF ahF ahF ahF -ahF -ahF +wYz +sgU uWJ ane -ahF -ahF -ahF +xBO +lWh +dYx ahF ahH ahF @@ -32362,10 +34740,10 @@ mdQ mdQ mdQ onU -gwP -gwP -gwP -gwP +lKl +dmT +dmT +uRe gwP gwP gwP @@ -32394,17 +34772,17 @@ ahF ane ane ane +hRy +hRy +hRy ahF ahF -ahF -ahF -ahF -ahF -ahF +doe +pIl ane ane -ahF -ahF +lWh +dYx ahH ahF ahF @@ -32585,15 +34963,15 @@ mdQ mdQ onU onU -gwP -gwP -xZE +ieN +kWV xZE -xZE -gwP -gwP -gwP -gwP +xyH +hhs +ndk +dmT +dmT +uRe tOS gwP sMx @@ -32622,7 +35000,7 @@ ahF ahF ane ane -ahF +krs afV afV afV @@ -32809,19 +35187,19 @@ mdQ mdQ mdQ mdQ -gwP -gwP +jGU +ndk onU +dmT +dmT +kWV gwP -gwP -gwP -gwP -gwP -aca -gwP -abO -gwP -gwP +hjo +qtK +qhl +clO +qhl +wHh gwP gwP sMx @@ -32850,20 +35228,20 @@ ahF ahF ane ane -ahF +cCP afV ahF ahF ahF ahF ane -ahF +aYI ahF ahF ane ahF -ahF -ahF +aYI +fDT ahF ane ane @@ -33037,20 +35415,20 @@ gwP mdQ gwP gwP -gwP -gwP -aca -gwP -gwP -gwP +jGU +dmT +iGf +dmT +owZ +wHh tOS gwP aca gwP gwP -gwP -gwP -gwP +vle +qdx +xKL gwP gwP gwP @@ -33265,22 +35643,22 @@ gwP gwP gwP gwP -gwP -tOS -aca -gwP -gwP +hjo +kML +ukY +soY +wHh gwP gwP gwP aca -gwP -gwP -gwP -gwP -gwP -gwP -gwP +vle +qdx +cHW +dmT +grW +qdx +xKL gwP gwP gwP @@ -33503,15 +35881,15 @@ gwP gwP mdQ mdQ -xZE -xZE -xZE -gwP -gwP -gwP +hhs +hhs +hhs +fLh +dmT +grW acp acp -gwP +xKL gwP gwP abO @@ -33733,14 +36111,14 @@ mdQ mdQ onU onU -xZE -xZE -xZE -gwP -gwP -xZE -xZE -gwP +hhs +hhs +hhs +dmT +dmT +hhs +eft +xKL gwP oMZ oMZ @@ -33963,13 +36341,13 @@ mdQ onU onU acK -gwP -gwP -gwP -gwP -xZE -aca -aca +dmT +dmT +kCD +dmT +hhs +soz +jqr dFz oMZ aca @@ -34191,15 +36569,15 @@ mdQ mdQ onU onU -gwP -gwP -gwP -gwP -aYC -eGD -eGD -eGD -eGD +htV +dmT +dmT +dmT +sNq +rTT +rTT +nLF +rbs eGD eGD eGD @@ -34423,11 +36801,11 @@ onU onU onU onU -xZE -eGD -eGD -eGD -acq +hhs +rTT +aIA +lhH +lkq eGD eGD eGD @@ -34653,10 +37031,10 @@ iIB iIB iIB iIB -eGD -eGD -eGD -ufG +rTT +rTT +nLF +liI eGD eGD ufG @@ -34881,10 +37259,10 @@ abS iIB iIB iIB -eGD -adc -eGD -ufG +rTT +dAu +hkT +shb eGD eGD gIe @@ -35072,8 +37450,8 @@ mdQ mdQ mdQ mdQ -aca -xZE +jqr +sxl xZE acp acu @@ -35109,10 +37487,10 @@ abS abS iIB iIB -eGD -eGD -eGD -ufG +rmt +rTT +tde +vtk eGD acq eGD @@ -35300,8 +37678,8 @@ mdQ mdQ mdQ mdQ -gwP -gwP +fLh +uRe acp acu acu @@ -35337,9 +37715,9 @@ abS abS abS iIB -eGD -eGD -eGD +rTT +rTT +onP ufG eGD eGD @@ -35528,8 +37906,8 @@ mdQ mdQ mdQ onU -tOS -gwP +gRk +uRe acu acu acu @@ -35565,9 +37943,9 @@ abS abS abS abS -eGD -eGD -eGD +wzI +tde +uwG eGD eGD eGD @@ -35756,8 +38134,8 @@ mdQ mdQ onU onU -gwP -gwP +dmT +uRe acp acu acy @@ -35793,8 +38171,8 @@ abS ady ady ady -eGD -eGD +tde +uwG ufG hzR eGD @@ -35984,8 +38362,8 @@ acf onU onU onU -gwP -gwP +dmT +grW xZE acp acu @@ -36020,8 +38398,8 @@ abS abS ady eGD -eGD -eGD +fqi +uwG eGD ufG hzR @@ -36212,8 +38590,8 @@ acf onU onU onU -gwP -gwP +dOA +dmT xZE xZE acp @@ -36440,10 +38818,10 @@ acf mdQ onU mdQ -gwP -gwP -gwP -gwP +htV +dmT +grW +xKL xZE xZE xZE @@ -36481,11 +38859,11 @@ adP eGD acq eGD -eGD -eGD -acq -eGD -eGD +bje +gVw +vih +gVw +rbs eGD eGD eGD @@ -36668,10 +39046,10 @@ acf mdQ mdQ mdQ -uSF -gwP -gwP -gwP +iGx +dmT +cQB +uRe gwP gwP gwP @@ -36707,14 +39085,14 @@ eGD adP adP adP -eGD -eGD -eGD -eGD -eGD -eGD -eGD -eGD +bje +gVw +tMQ +rTT +mJF +rTT +nLF +rbs eGD ady ady @@ -36896,14 +39274,14 @@ acf acf mdQ mdQ -xZE -xZE -gwP -tOS -gwP +hhs +hhs +uaL +iuf +jvQ abH -gwP -gwP +jvQ +xKL gwP gwP gwP @@ -36934,15 +39312,15 @@ eGD eGD eGD adP -adP -adP -eGD -eGD -eGD -eGD -eGD -eGD -eGD +daY +tPH +rTT +pIB +rTT +hpK +rTT +ohf +onP eGD ady abS @@ -37125,15 +39503,15 @@ acf acf mdQ mdQ -xZE -xZE -xZE -xZE -gwP -gwP -gwP -gwP -gwP +hhs +hhs +hhs +hhs +dmT +dmT +grW +jvQ +xKL gwP gwP gwP @@ -37162,15 +39540,15 @@ acq eGD eGD eGD -adP -adP -eGD -eGD +sVx +iDX +kdj +rTT iIB iIB iIB -eGD -eGD +uOD +onP abS abS abS @@ -37358,10 +39736,10 @@ mdQ onU onU onU -gwP -gwP -gwP -gwP +sXg +dmT +tlk +uRe gwP acf acf @@ -37389,10 +39767,10 @@ eGD eGD eGD eGD -eGD -eGD -eGD -eGD +bje +tMQ +rTT +rTT iIB iIB abS @@ -37588,8 +39966,8 @@ uxU uxU uxU uxU -dGQ -any +ryp +vbK dGQ acf acf @@ -37617,7 +39995,7 @@ eGD adc eGD eGD -eGD +fqi abS iIB iIB @@ -37812,12 +40190,12 @@ acf acf acf acf -abl -abl -abl -abl -abl -abl +fDE +pAE +fDE +vAB +fDE +nUZ abl acf acf @@ -38037,15 +40415,15 @@ acf acf acf acf -abl -abl -abl -abl -abl -abl -abl -abl -abl +pAE +fDE +fDE +sPK +ogJ +scs +scs +scs +jgy abl abl abl @@ -38264,12 +40642,12 @@ acf izh izh izh -izh -abl -abv -abl -abl -abl +ejp +scs +rIc +scs +scs +jgy abl abl abl @@ -38518,10 +40896,10 @@ abS abS eGD eGD -eGD -eGD -eGD -eGD +bje +gVw +gVw +rbs eGD acO eGD @@ -38744,13 +41122,13 @@ abl abl abl dGQ -eGD -eGD -acY -eGD -eGD -eGD -eGD +bje +gVw +lbt +rTT +rTT +nLF +rbs acO eGD acq @@ -38972,13 +41350,13 @@ abl abl abl dGQ -eGD -acq -eGD -eGD -eGD -eGD -eGD +wbg +xdb +rTT +mca +rTT +rTT +onP acO eGD eGD @@ -39200,13 +41578,13 @@ abl abl abl dGQ -eGD -eGD -eGD +wbg +rTT +rTT iIB iIB abS -eGD +onP acO eGD eGD @@ -40124,8 +42502,8 @@ abS abS abS abS -eGD -acq +gVw +jpX eGD abS abS @@ -40352,8 +42730,8 @@ abS abS abS abS -acO -acO +bBT +rze acO abS abS @@ -40580,9 +42958,9 @@ abS abS abS abS -eGD -eGD -eGD +rTT +nLF +rbs eGD xTa abS @@ -40807,10 +43185,10 @@ abS abS abS iIB -eGD -eGD -eGD -eGD +rTT +kdj +rTT +onP eGD eGD abS @@ -41035,10 +43413,10 @@ abS abS iIB iIB -eGD -eGD -eGD -eGD +rTT +rTT +rTT +onP eGD eGD abS @@ -41263,10 +43641,10 @@ abS iIB iIB iIB -eGD -eGD -eGD -eGD +mca +rTT +tde +uwG eGD eGD abS @@ -41489,11 +43867,11 @@ abS abS abS iIB -eGD -eGD -eGD -eGD -eGD +rTT +rTT +rTT +rTT +onP acq eGD eGD @@ -41718,11 +44096,11 @@ abS abS abS abS -eGD -acq -eGD +rTT +xdb +rTT acY -eGD +rbs eGD eGD abS @@ -41945,12 +44323,12 @@ abS abS abS abS -eGD -eGD -eGD -eGD -eGD -eGD +wzI +aIA +rTT +rTT +rTT +onP eGD eGD abS @@ -42175,10 +44553,10 @@ abS abS abS iIB -eGD -eGD -eGD -eGD +rTT +rTT +rTT +onP eGD eGD abS @@ -42404,9 +44782,9 @@ abS abS iIB iIB -eGD -eGD -eGD +rTT +uxL +onP eGD abS abS @@ -42632,9 +45010,9 @@ abS abS abS iIB -eGD -eGD -eGD +rTT +rTT +onP eGD abS abS @@ -42860,9 +45238,9 @@ abS abS abS iIB -eGD -eGD -eGD +rTT +cxi +onP eGD abS abS @@ -43088,10 +45466,10 @@ abS abS abS abS -eGD -eGD -eGD -eGD +rTT +rTT +nLF +rbs eGD abS abS @@ -43315,11 +45693,11 @@ abS abS abS abS -eGD -eGD -eGD -acq -eGD +rTT +rTT +hpK +xdb +onP eGD abS abS @@ -43542,12 +45920,12 @@ abS abS abS abS -xTa -eGD -eGD -eGD -eGD -eGD +brC +rTT +rTT +rTT +rTT +onP eGD abS abS @@ -43738,12 +46116,12 @@ abl abl abl abl -abl -abl -abl -abl -abl -abl +gPu +jcn +jcn +jcn +jcn +jcn acf acf acf @@ -43770,12 +46148,12 @@ abS abS abS abS -eGD -eGD -acq -eGD -eGD -eGD +rTT +rTT +xdb +rTT +lnr +onP eGD abS abS @@ -43966,12 +46344,12 @@ abv abl abl abl -abl -abl -abl -abl -abl -abl +xWy +cqH +fDE +bvX +fDE +fDE acf acf acf @@ -43999,11 +46377,11 @@ abS abS abS abS -eGD -eGD -eGD -eGD -eGD +rTT +mOL +rTT +tde +uwG eGD abS abS @@ -44197,9 +46575,9 @@ abl acf acf uxU -dGQ +ryp uMz -dGQ +ryp acf acf acf @@ -44227,10 +46605,10 @@ abS abS abS abS -eGD -eGD -eGD -eGD +ohf +rTT +rTT +onP eGD abS abS @@ -44426,9 +46804,9 @@ acf acf uxU uxU -abl -abl -abl +fDE +gcB +fDE acf acf acf @@ -44455,10 +46833,10 @@ abS abS abS iIB -eGD -eGD -acq -eGD +rTT +rTT +xdb +onP eGD abS abS @@ -44654,9 +47032,9 @@ acf acf acf uxU -abl -abl -abl +fDE +tti +fDE acf acf acf @@ -44683,10 +47061,10 @@ abS abS iIB iIB -eGD -eGD -eGD -eGD +rTT +rmt +rTT +onP abS abS abS @@ -44882,14 +47260,14 @@ acf acf acf uxU -abl -abv -abl -abl +fDE +otl +fDE +fDE acf acf uxU -abl +fDE acf acf acf @@ -44899,7 +47277,7 @@ abl abl abv abl -abl +gPu abS abS abS @@ -44911,10 +47289,10 @@ abS iIB iIB iIB -eGD -eGD -eGD -eGD +rTT +rTT +rTT +onP abS abS abS @@ -45110,16 +47488,16 @@ acf acf acf acf -abl -abl -abl -abl +fDE +fDE +fDE +fDE uxU uxU uxU -abl -abl -abl +hez +fDE +spK acf acf acf @@ -45127,7 +47505,7 @@ acf abl abl abl -abl +kxv abS abS abS @@ -45139,8 +47517,8 @@ abS abS iIB iIB -cIU -cIU +hav +hav cIU abS abS @@ -45339,15 +47717,15 @@ acf acf acf acf -abl -abl -abl +fDE +fDE +fDE czq uxU uxU -abl -abl -abl +rUX +fDE +spK abl acf acf @@ -45355,8 +47733,8 @@ acf abl abl abl -abl -abl +kxv +han abS abS abS @@ -45367,9 +47745,9 @@ abS abS abS abS -pDt -pDt -pDt +aTy +aTy +tYW abS pDt pDt @@ -45568,14 +47946,14 @@ acf acf acf acf -abl -abl -abl +fDE +fDE +fDE uxU -izh -abl -abv -abl +mrg +fDE +poX +jgy acf acf acf @@ -45583,8 +47961,8 @@ abl abl abl abl -abl -abl +uMd +bvX iIB abS abS @@ -45796,13 +48174,13 @@ acf acf acf acf -izh -abl -abl -abv -dGQ -abl -abl +mrg +fDE +fDE +otl +ryp +ogJ +jgy abl acf acf @@ -45810,8 +48188,8 @@ acf abl abl abl -abl -abl +kxv +fDE iIB iIB abS @@ -46024,12 +48402,12 @@ acf acf acf acf -izh -abl -abl -abl -izh -abl +mrg +sPK +fDE +fDE +mrg +spK abl abl abl @@ -46039,16 +48417,16 @@ abl abv abl abl -abl +uOl ydz -pDt -pDt -pDt -pDt +eQL +eQL +eQL +pgc iIB iIB -pDt -pDt +bOm +xhv abS pDt pDt @@ -46253,11 +48631,11 @@ acf acf acf acf -abl -abl -abl -izh -abl +fDE +fDE +fDE +mrg +spK abl abl abl @@ -46267,16 +48645,16 @@ abl abl abl abl -abl -ydz -pDt -qRj -pDt -pDt -pDt -pDt -pDt -pDt +bnM +lIL +aTy +xNi +aTy +bxb +eQL +eQL +eQL +xhv pDt pDt pDt @@ -46482,29 +48860,29 @@ acf acf acf uxU +tti +fDE +ryp +spK abl -abl -dGQ -abl -abl -abl -abl -dGQ -abl -abl -abl -abl -abl -abl -ydz -pDt -pDt -pDt -pDt -pDt -pDt +gPu +jcn +ner +jcn +jcn +jcn +jcn +jcn +jcn +dLm +kae pDt pDt +kpx +aTy +aTy +aTy +tYW pDt pDt pDt @@ -46710,29 +49088,29 @@ acf uxU uxU uxU -abl -abl -acf -abl -abl -abv -abl -dGQ -abl -abl -abl -abl -abl -abl +fDE +fDE +acf +xRe +kLl +cqN +fDE +ryp +fDE +fDE +fDE +fDE +osf +hNT ydz +xhv pDt pDt -pDt -pDt -pDt -pDt -pDt -qRj +dCD +hmJ +hmJ +hmJ +enn pDt pDt pDt @@ -46936,31 +49314,31 @@ acf acf uxU uxU -abl -abl -abl -abl +fDE +fDE +fDE +fDE acf acf -abl -abl -abl +fDE +icd +fDE uxU uxU -abl -abl -abl -abv -abl +fDE +fDE +han +otl +fDE acf +xhv pDt -pDt -pDt -pDt -pDt -pDt -pDt -pDt +dCD +cEi +wpY +eQL +eQL +xhv pDt oeN oeN @@ -47159,36 +49537,36 @@ abv abl abl acf -abl -abl +xWy +fDE acf uxU -abl -abl -abl -abl -abl +fDE +fDE +yjs +fDE +fDE acf acf -abl -abl -abl +fDE +cSL +fDE uxU acf acf -abl -abl +fDE +mVr uxU uxU acf +tYW pDt -pDt -pDt -pDt -pDt +crn +eQL +eQL ntr -iZG -pDt +hEe +xhv pDt oeN adC @@ -47387,36 +49765,36 @@ abl abl abl abl -abl -abl -dGQ -abl -abl -abl -abl -abl +xWy +cSL +ryp +fDE +fDE +pVZ +fDE +fDE acf acf uxU -abl -abl -abl -abl +fDE +fDE +fDE +fDE acf acf -abl -abl +fDE +fDE uxU acf acf nbw pDt -pDt +crn nbw ntr ntr -pDt -pDt +nNu +xhv pDt oeN adD @@ -47615,20 +49993,20 @@ abl abl abl abl -abl -abl -dGQ -abl -abl -abl -abl -abl -abl +bnM +uOl +ryp +fDE +fDE +fDE +fDE +ogJ +jgy acf uxU uxU -abl -abl +fDE +ogJ tYx acf acf @@ -47642,9 +50020,9 @@ nbw nbw nbw nbw -pDt -pDt -pDt +eQL +eQL +xhv pDt oeN adE @@ -47844,19 +50222,19 @@ abl abl abv abl -abl -dGQ -abl -abl -abl -abv -abl +bnM +oha +rWs +rWs +rWs +vBd +jgy abl acf uxU -abl -abl -abv +osf +fDE +qWI abl acf acf @@ -47869,10 +50247,10 @@ acf nbw nbw nbw -pDt -pDt -pDt -qRj +aTy +aTy +aTy +hRB pDt oeN abt @@ -48082,9 +50460,9 @@ abl abl acf acf -abl -abl -abl +fDE +ogJ +jgy abl acf acf @@ -48304,14 +50682,14 @@ acf acf acf acf -abl -abl -abl +kLl +kLl +kLl abl acf acf acf -abl +jgy abl abl acf @@ -48532,10 +50910,10 @@ acf acf acf uxU -abl -abl -abl -abl +fDE +roQ +fDE +spK abl acf abl @@ -48760,10 +51138,10 @@ acf acf uxU uxU -izh -abl -abl -abv +mrg +fDE +fDE +qWI abl abl abl @@ -48988,10 +51366,10 @@ acf acf uxU uxU -izh -abl -abl -abl +mrg +thk +ogJ +jgy abl abl abl @@ -49216,9 +51594,9 @@ acf acf uxU acf -izh -abl -abl +mrg +kIM +spK abl abl abv @@ -49444,9 +51822,9 @@ acf acf acf acf -izh -abl -abl +mrg +fDE +spK abl abl abl @@ -49671,10 +52049,10 @@ acf acf acf acf -izh -izh -abl -abl +mrg +mrg +ogJ +jgy abl abl abl @@ -49899,9 +52277,9 @@ acf acf acf acf -izh -abl -abl +iTQ +rWs +jgy abv abl abl @@ -50127,7 +52505,7 @@ acf acf acf acf -izh +jZX abl abl abl @@ -51268,8 +53646,8 @@ acf acf acf acf -dGQ -any +oFJ +sLU dGQ acf acf @@ -51496,9 +53874,9 @@ pUm pUm pUm vVC -acg -acg -acg +bvj +mHk +egU pUm whU whU @@ -51715,8 +54093,8 @@ acf vVC pUm pUm -acg -aaN +iye +dtr acg pUm pUm @@ -51724,9 +54102,9 @@ pUm pUm vVC vVC -acg -acg -acg +uop +bvj +xar pUm whU whU @@ -51942,19 +54320,19 @@ acf uxU vVC vVC -acg -acg -acg -acg +fYG +bvj +mHk +iye pUm pUm pUm pUm vVC vVC -acg -acg -acg +rhi +etU +xar pUm whU whU @@ -52170,29 +54548,29 @@ vVC vVC vVC vVC -acg -acg -acg -acg +bvj +jRL +bvj +bvj pUm pUm pUm pUm vVC -acg -acg -aaN -acg +bvj +bvj +jgj +dLW pUm whU whU whU whU fTM -fTM -fTM -fTM -fTM +lSA +yfe +yfe +uyn fTM fTM fTM @@ -52397,19 +54775,19 @@ pUm vVC vVC vVC -acg -acg -acg -acg +bvj +bvj +pQV +bvj pUm pUm pUm pUm pUm vVC -acg -acg -acg +xwN +wCs +dLW acg pUm whU @@ -52418,20 +54796,20 @@ whU whU whU whU -fTM -fTM -fTM -fTM -akL -fTM -fTM -fTM -fTM +vAT +wLT +lBl +yfe +bQz fTM fTM fTM fTM fTM +lSA +eMe +eMe +uyn vCG pDt pDt @@ -52625,9 +55003,9 @@ pUm vVC vVC vVC -acg -aaN -acg +bvj +oQm +bvj pUm pUm pUm @@ -52635,8 +55013,8 @@ pUm pUm pUm pUm -acg -acg +bvj +xar acg pUm pUm @@ -52647,19 +55025,19 @@ whU whU whU unp -fTM -fTM -fTM -fTM -fTM +vAT +lNG +vAT +lBl +uyn jMS jMS fTM -fTM -fTM -fTM -fTM -fTM +lSA +bkK +vAT +vAT +lBl vCG pDt pDt @@ -52852,10 +55230,10 @@ pUm pUm pUm vVC -acg -acg -acg -acg +bvj +mfn +bvj +bvj pUm pUm pUm @@ -52863,8 +55241,8 @@ pUm pUm pUm pUm -gkC -nzw +nha +tEm gkC pUm pUm @@ -52877,16 +55255,16 @@ whU unp unp unp -fTM -fTM -fTM -jMS -jMS -akL -fTM -fTM -fTM -fTM +wLT +vAT +lBl +vAg +pGL +tSi +bkK +vAT +jJg +nrR whU whU pDt @@ -53064,7 +55442,7 @@ aag pZb pZb pZb -aag +uYj xpR xpR xpR @@ -53080,10 +55458,10 @@ pUm pUm pUm pUm -acg -acg -acg -acg +bvj +bvj +bvj +ifr pUm nzw nzw @@ -53106,12 +55484,12 @@ whU whU unp unp -fTM -fTM -fTM -fTM -fTM -fTM +vAT +vAT +vAT +vAT +vAT +vAT whU unp unp @@ -53281,21 +55659,21 @@ aag aag aag aag -aag -aag -aag -aag -aag +tVw +srn +srn +srn +pRD aag aag aag pZb pZb pZb -aag -aag -aag -aag +uYj +eqS +uYj +tuJ xpR xpR xpR @@ -53307,12 +55685,12 @@ pZb pUm pUm pUm -acg -acg -acg -acg -acg -acg +rID +woT +woT +woT +woT +dLW acg acg acg @@ -53333,12 +55711,12 @@ whU whU whU whU -fTM -fTM -akL -fTM -fTM -fTM +vAT +sxo +rby +vAT +vAT +jMD whU whU unp @@ -53509,24 +55887,24 @@ aag aag aag aag -aag -aag -aag -aai -aag -aag +dzM +uYj +tuJ +gzH +qfK +pRD aag aag aag pZb pZb -aag -aag -aag -aag -aag -aag -aag +uYj +uYj +uYj +mWA +uYj +uYj +uYj pZb pZb pZb @@ -53560,13 +55938,13 @@ whU whU whU whU -fTM -fTM -fTM -fTM -fTM -fTM -fTM +jlt +jlt +jlt +jlt +jlt +jlt +pET whU whU whU @@ -53736,27 +56114,27 @@ aai aag aag aag -aag -aai -aag -aag -aag -aag -aag +tVw +vxj +uYj +uYj +dHg +uYj +rIm aag aai aag vly -aag -aag -aag -aag -aag -aag -aag -aag -aag -aag +wYB +pFB +pFB +fsc +uYj +uYj +uYj +dIv +uYj +uYj pZb pZb pZb @@ -53799,9 +56177,9 @@ whU whU whU whU -fTM -fTM -fTM +yfe +yfe +uyn fTM fTM fTM @@ -53963,14 +56341,14 @@ aag aag aag aag -aag -aag -aag -aag +tVw +uHc +uYj +uYj xpR -aag -aag -aag +uYj +uYj +rIm aag aag aag @@ -53978,15 +56356,15 @@ vly aag aai aag -aag -aag -aai -aag -aag -aag -aag -aag -aag +wYB +pFB +sET +pFB +pFB +pFB +pFB +pFB +mFZ vly acg acg @@ -54028,8 +56406,8 @@ whU whU whU whU -fTM -fTM +vAT +fIW fTM fTM fTM @@ -54190,15 +56568,15 @@ aag aag aag aag -aag -aag -aag -aag +tVw +uHc +uYj +eYb xpR xpR -aag -aag -aag +uYj +uYj +rIm aag aag aag @@ -54216,11 +56594,11 @@ aag aag aag vly -acg -acg -acg -acg -acg +cop +iye +iye +iye +egU acg acg acg @@ -54256,8 +56634,8 @@ whU whU whU whU -fTM -fTM +fUj +fIW aeT fTM fTM @@ -54418,15 +56796,15 @@ aag aag aag aag -aag -aag -aab +dzM +uYj +rYe xpR xpR xpR -aag -aag -aag +uYj +uYj +rIm aag aag aag @@ -54442,14 +56820,14 @@ aag aag aag aag -aag -vly -acg -acg -acg -acg -acg -acg +tVw +cqC +kmH +mLv +bvj +bvj +elp +egU acg acg acg @@ -54483,9 +56861,9 @@ whU whU whU unp -fTM -fTM -fTM +vAT +vAT +fIW fTM sIH fTM @@ -54646,15 +57024,15 @@ aag aag aag aai -aag -aab -aab +dzM +rYe +rYe xpR xpR -aab -aag -aag -aag +rYe +uYj +anM +rIm aag aag aag @@ -54670,15 +57048,15 @@ aag aag aai aag -aag -vly -acg -acg -aaN -acg -acg -acg -acg +jBl +vdt +bvj +bvj +oQm +bvj +mfn +mHk +egU acg acg acg @@ -54712,8 +57090,8 @@ whU whU unp unp -fTM -fTM +vAT +fIW fTM agd afE @@ -54874,15 +57252,15 @@ aag aag aag aag -aab -aab +eaI +rYe pZb xpR pZb -aab -aag -aag -aag +rYe +tuJ +uYj +rIm aag aag aag @@ -54898,15 +57276,15 @@ aag aag aag aag -aag -aci +jBl +xSk vVC vVC vVC vVC -acg -acg -acg +bvj +fmV +oDE acg acg pUm @@ -54940,8 +57318,8 @@ whU whU whU unp -fTM -fTM +rGE +fIW akL adZ fTM @@ -55102,15 +57480,15 @@ aag aag aag aag -aab +eaI pZb pZb pZb pZb -aab -aag -aag -aag +rYe +ktr +sFD +mFZ aag aag aag @@ -55126,15 +57504,15 @@ aag aag aag aag -aag +wYB pZb pUm vVC vVC vVC vVC -xSA -nzw +lyZ +lhE gkC pUm pUm @@ -55168,8 +57546,8 @@ whU whU whU unp -fTM -fTM +vAT +fIW fTM adH fTM @@ -55319,10 +57697,10 @@ pZb pZb pZb pZb -aab -aab -aag -aag +vPo +vPo +wRb +pRD aag aag aag @@ -55335,8 +57713,8 @@ pZb pZb pZb pZb -aag -aag +ktr +mFZ aag aag aai @@ -55361,8 +57739,8 @@ pUm vVC vVC pUm -acg -acg +fYG +oDE acg pUm pUm @@ -55395,9 +57773,9 @@ whU whU whU whU -fTM -fTM -fTM +vQR +vAT +fIW aeT aek agA @@ -55547,11 +57925,11 @@ pZb pZb pZb pZb -aab -aag -aag -aag -aag +rYe +fRD +uYj +lLU +pRD aag aag aag @@ -55563,7 +57941,7 @@ pZb pZb pZb pZb -aag +mFZ aag aag aag @@ -55589,8 +57967,8 @@ pUm pUm pUm pUm -acg -acg +wCs +dLW acg pUm pUm @@ -55623,9 +58001,9 @@ whU fTM whU whU -fTM -fTM -fTM +sAh +sAh +pET fTM adH fTM @@ -55775,11 +58153,11 @@ pZb pZb pZb xpR -aab -aag -aai -aag -aag +rYe +uYj +gzH +mEo +rpx aag aag aag @@ -55817,8 +58195,8 @@ pUm pUm pUm pUm -acg -acg +xGL +egU acg pUm pUm @@ -56004,10 +58382,10 @@ pZb pZb xpR xpR -aag -aag -aag -aag +uYj +wMr +uYj +rpx aag aag aag @@ -56046,8 +58424,8 @@ pUm pUm pUm pUm -acg -aaN +mHk +dtr pUm pUm pUm @@ -56232,10 +58610,10 @@ pZb pZb xpR xpR -aag -aag -aag -aag +uYj +uYj +uYj +rpx aag aai aag @@ -56274,9 +58652,9 @@ pUm pUm pUm vVC -acg -acg -acg +bvj +mHk +egU abj pUm acg @@ -56312,9 +58690,9 @@ vCG fTM akL fTM -fTM -aeT -agA +lSA +rgj +gWE ahv ahv slW @@ -56460,10 +58838,10 @@ pZb pZb pZb xpR -aag -aag -aag -aag +bvS +uYj +ktr +mFZ aag aag aag @@ -56502,10 +58880,10 @@ pUm pUm vVC vVC -acg -acg -acg -acg +xmK +bvj +mHk +egU abo acg acg @@ -56540,9 +58918,9 @@ vCG fTM fTM fTM -fTM -fTM -fTM +vNT +vAT +vkS ahv ahv slW @@ -56688,9 +59066,9 @@ pZb pZb pZb pZb -aag -aag -aag +uYj +ktr +mFZ aag aag aag @@ -56730,10 +59108,10 @@ pUm pUm vVC vVC -acg -acg -acg -acg +rhi +bvj +mNl +oDE acg acg acg @@ -56767,10 +59145,10 @@ fTM whU whU fTM -fTM -fTM -fTM -fTM +lSA +bkK +vAT +vAT ahv ahv aeg @@ -56916,8 +59294,8 @@ pZb pZb pZb pZb -aab -aag +aPM +mFZ aag aag aag @@ -56958,10 +59336,10 @@ pUm pUm vVC vVC -acg -acg -acg -acg +bvj +bvj +wCs +dLW acg vjL acg @@ -56985,10 +59363,10 @@ whU jMS jMS fTM -fTM -fTM -fTM -fTM +lSA +eMe +eMe +uyn jMS jMS fTM @@ -56996,8 +59374,8 @@ whU ajc vCG whU -fTM -fTM +vAT +hTR pRT ahv ahv @@ -57186,9 +59564,9 @@ pUm pUm pUm pUm -acg -acg -acg +bvj +rER +dLW iiK acg acg @@ -57212,13 +59590,13 @@ whU whU whU whU -fTM -fTM -fTM -fTM -fTM -fTM -akL +eMe +bkK +ldi +vAT +lBl +loP +bQz fTM wEO fTM @@ -57413,9 +59791,9 @@ pUm pUm pUm pUm -acg -acg -acg +woT +woT +dLW acg acg acg @@ -57441,13 +59819,13 @@ whU whU whU aco -fTM -fTM -fTM -fTM -fTM -fTM -fTM +vAT +vAT +bcU +vAT +whx +lBl +uyn wEO fTM fTM @@ -57672,10 +60050,10 @@ whU unp unp unp -fTM -fTM -fTM -fTM +vAT +vAT +vAT +tqQ eFS fTM fTM @@ -57902,8 +60280,8 @@ whU unp unp unp -wEO -wEO +gsq +viC wEO fTM fTM @@ -58129,9 +60507,9 @@ whU whU whU whU -jMS -fTM -fTM +vAg +vAT +lSN fTM akL fTM @@ -58287,12 +60665,12 @@ pZb pZb pZb pZb -aab -aab -aag -aag -aag -aag +vPo +vPo +lzf +wRb +wRb +pRD aag aag aai @@ -58357,9 +60735,9 @@ whU whU whU whU -jMS -fTM -fTM +ecn +jlt +pET fTM fTM diW @@ -58516,15 +60894,15 @@ pZb pZb pZb pZb -aab -aab -aag -aai -aag -aag -aag -aag -aag +rYe +rYe +uYj +gzH +qfK +wRb +wRb +wRb +pRD aag aag aag @@ -58745,15 +61123,15 @@ pZb pZb pZb pZb -aab -aab -aag -aag -aag -aag -aag -aag -aag +cfL +rYe +uYj +qVi +egc +uYj +mEo +isL +pRD aag aag aai @@ -58778,7 +61156,7 @@ pZb pZb vVC vVC -nzw +uBR aaQ aaR aaR @@ -58978,10 +61356,10 @@ xpR xpR xpR xpR -aab -aab -aag -aag +rYe +rYe +uYj +rpx aag aag aag @@ -59006,8 +61384,8 @@ pZb pZb vVC vVC -nzw -nzw +uBR +uBR aaQ aaQ aaQ @@ -59207,9 +61585,9 @@ xpR xpR xpR xpR -aab -aab -aab +rYe +rYe +gze aab aab aab @@ -59234,8 +61612,8 @@ pZb pZb vVC vVC -acg -nzw +bvj +uBR nzw nzw nzw @@ -59462,10 +61840,10 @@ pZb pZb vVC vVC -acg -acg -acg -acg +bvj +bvj +mHk +egU acg aaN acg @@ -59478,9 +61856,9 @@ acg acg acg acg -acg -acg -nzw +iye +iye +bEj acg aaN acg @@ -59691,10 +62069,10 @@ pZb vVC vVC vVC -acg -acg -acg -acg +bvj +bvj +mHk +egU acg nzw bfY @@ -59706,9 +62084,9 @@ nzw nzw nzw pUm -acg -acg -nzw +pQV +bvj +lhE acg acg acg @@ -59919,11 +62297,11 @@ pZb pUm vVC vVC -acg -acg -aaN -acg -acg +bvj +bvj +oQm +mHk +egU nzw nHq jAo @@ -59932,11 +62310,11 @@ acg umb iyr eZC -nzw +uBR pUm vVC -acg -nzw +rAU +lhE acg acg acg @@ -60148,11 +62526,11 @@ pUm vVC vVC vVC -acg -acg -acg -acg -nzw +bvj +bvj +bvj +mHk +bEj jAo acg gkC @@ -60160,12 +62538,12 @@ acg gkC acg jAo -nzw +uBR vVC vVC aaQ -nzw -acg +qPY +egU acg acg acg @@ -60378,9 +62756,9 @@ vVC vVC vVC pUm -acg -acg -nzw +bvj +bvj +gVR umb umb umb @@ -60388,12 +62766,12 @@ aaN umb umb umb -nzw +uBR vVC vVC vVC -nzw -acg +uBR +oDE acg acg acg @@ -60606,9 +62984,9 @@ pUm vVC vVC vVC -acg -acg -nzw +bvj +bvj +qPY rwx acg gkC @@ -60616,12 +62994,12 @@ acg gkC acg dfJ -nzw +uBR pUm vVC vVC -nzw -acg +uBR +oDE acg acg acg @@ -60836,21 +63214,21 @@ vVC vVC vVC pUm -nzw -rPK +uBR +jhj upQ umb acg umb fAD rPK -nzw +uBR pUm pUm vVC -nzw -acg -aaN +uBR +mHk +dtr acg acg acg @@ -61064,8 +63442,8 @@ pUm vVC pUm pUm -nzw -nzw +uBR +gVR nzw nzw nzw @@ -61076,9 +63454,9 @@ nzw pUm pUm pUm -nzw -acg -acg +uBR +bvj +fGn acg acg aaQ diff --git a/maps/map_files/LV624/centralcaves/10.T.dmm b/maps/map_files/LV624/centralcaves/10.T.dmm index 7433f2f6131d..56c54485e09e 100644 --- a/maps/map_files/LV624/centralcaves/10.T.dmm +++ b/maps/map_files/LV624/centralcaves/10.T.dmm @@ -1,4 +1,22 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"b" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"c" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "d" = ( /turf/closed/wall/rock/brown, /area/lv624/ground/caves/central_caves) @@ -16,7 +34,7 @@ /area/lv624/ground/caves/central_caves) "h" = ( /obj/structure/blocker/forcefield/multitile_vehicles, -/turf/open/gm/dirt, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) "i" = ( /obj/structure/blocker/forcefield/multitile_vehicles, @@ -24,6 +42,10 @@ /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"j" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) "k" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) @@ -53,48 +75,136 @@ icon_state = "warning" }, /area/lv624/ground/barrens/containers) +"s" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"t" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"u" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"v" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "w" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /turf/open/gm/dirt, /area/lv624/ground/barrens/west_barrens) -"z" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, -/turf/open/gm/dirt, -/area/lv624/ground/caves/central_caves) "A" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) +"B" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "C" = ( /obj/effect/landmark/objective_landmark/close, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"D" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"E" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/south_central_caves) +"F" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) "G" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"H" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"I" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"K" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"M" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"N" = ( +/obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"O" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) "Q" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"R" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"S" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"U" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) "V" = ( /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"Z" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) (1,1,1) = {" f -z -V -V -V -V -G -V -V +g +B +b +N +S +S +s +F Q V V @@ -111,13 +221,13 @@ l (2,1,1) = {" f g -V -V -V -V -V -V -V +R +U +S +K +S +S +v Q V V @@ -134,14 +244,14 @@ l (3,1,1) = {" f g -V -G -V -V +R +S +S +E +E l -l -n -n +v +Q V G V @@ -157,10 +267,10 @@ w (4,1,1) = {" f A -V -C l l +E +E l l l @@ -709,9 +819,9 @@ o (28,1,1) = {" f e -V -V -V +D +D +D l l l @@ -731,9 +841,9 @@ p "} (29,1,1) = {" f -f -V -V +O +S +S l l l @@ -754,8 +864,8 @@ p "} (30,1,1) = {" f -f -f +O +j l l l @@ -777,9 +887,9 @@ p "} (31,1,1) = {" f -f -f -l +c +Z +E l l l @@ -799,16 +909,16 @@ k p "} (32,1,1) = {" -f -f -l -l -l -l +O +u +E +E l l l l +E +E l l l @@ -823,16 +933,16 @@ p "} (33,1,1) = {" f -f +a h -k -k -k -k -l -l -k -k +H +H +H +M +E +E +t +I l k k diff --git a/maps/map_files/LV624/centralcaves/10.qc.dmm b/maps/map_files/LV624/centralcaves/10.qc.dmm index 1e84fde00653..5f63ae797e02 100644 --- a/maps/map_files/LV624/centralcaves/10.qc.dmm +++ b/maps/map_files/LV624/centralcaves/10.qc.dmm @@ -1,838 +1,1065 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"e" = ( -/obj/structure/blocker/forcefield/multitile_vehicles, +"aD" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"bV" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"dd" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 9 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"gU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) -"f" = ( +"hJ" = ( +/obj/effect/decal/grass_overlay/grass1, /turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"hP" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 11; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"hW" = ( +/obj/structure/fence, +/turf/open/floor{ + dir = 9; + icon_state = "warning" + }, +/area/lv624/ground/barrens/containers) +"iS" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"kc" = ( +/obj/structure/flora/bush/ausbushes/pointybush, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"ks" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 2; + pixel_y = 7; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"lp" = ( +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/central_caves) -"g" = ( +"lq" = ( +/turf/closed/wall/rock/brown, +/area/lv624/ground/barrens/west_barrens) +"mN" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"oB" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/amanita, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) -"h" = ( +"oJ" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /turf/open/gm/dirt, /area/lv624/ground/caves/central_caves) -"k" = ( -/turf/open/gm/dirt, +"pd" = ( +/obj/structure/flora/bush/ausbushes/var3/ywflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"pC" = ( +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/barrens/north_east_barrens) -"l" = ( -/turf/closed/wall/rock/brown, +"pR" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/plumphelmet{ + pixel_x = 8; + pixel_y = 13 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"qK" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"ry" = ( +/obj/structure/flora/bush/ausbushes/var3/leafybush, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) -"m" = ( +"sL" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"sO" = ( +/turf/closed/wall/strata_ice/jungle, +/area/lv624/ground/caves/south_central_caves) +"vC" = ( /obj/structure/blocker/forcefield/multitile_vehicles, /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 6 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"vR" = ( +/obj/structure/flora/bush/ausbushes/var3/fullgrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"wk" = ( +/turf/closed/wall/rock/brown, +/area/lv624/ground/caves/south_central_caves) +"wL" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"n" = ( +"yv" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, /obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"o" = ( -/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +"yD" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/north_east_barrens) -"q" = ( -/obj/structure/fence, -/turf/open/floor{ - dir = 9; - icon_state = "warning" +"yO" = ( +/obj/effect/decal/grass_overlay/grass1, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"zh" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 6 }, -/area/lv624/ground/barrens/containers) -"r" = ( +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"An" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"AL" = ( +/obj/effect/landmark/objective_landmark/close, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"DG" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"ER" = ( +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"GE" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/barrens/north_east_barrens) +"GR" = ( +/obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 10 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"Is" = ( +/obj/structure/blocker/forcefield/multitile_vehicles, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"Jf" = ( +/obj/structure/flora/bush/ausbushes/var3/brflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"JB" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"JX" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"JZ" = ( /obj/structure/fence, /turf/open/floor{ dir = 1; icon_state = "warning" }, /area/lv624/ground/barrens/containers) -"w" = ( +"KX" = ( +/turf/open/gm/dirt, +/area/lv624/ground/barrens/west_barrens) +"Od" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/south_central_caves) +"Oe" = ( +/obj/structure/flora/bush/ausbushes/ppflowers, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/central_caves) +"Pd" = ( /obj/effect/landmark/structure_spawner/xvx_hive/xeno_wall, /obj/effect/landmark/structure_spawner/setup/distress/xeno_wall, +/obj/effect/decal/grass_overlay/grass1{ + dir = 1 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"x" = ( -/obj/effect/landmark/objective_landmark/close, +"PB" = ( /turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"Rx" = ( +/obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) -"y" = ( -/turf/closed/wall/rock/brown, -/area/lv624/ground/barrens/west_barrens) -"C" = ( -/turf/open/gm/dirt, +"Tu" = ( +/obj/effect/landmark/structure_spawner/xvx_hive/xeno_door, +/obj/effect/landmark/structure_spawner/setup/distress/xeno_door, +/obj/effect/decal/grass_overlay/grass1{ + dir = 8 + }, +/turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) -"O" = ( +"Uu" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = 4; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"UB" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 1 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) +"Vd" = ( /obj/effect/landmark/hunter_primary, +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 9 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"P" = ( -/obj/effect/landmark/structure_spawner/xvx_hive/xeno_membrane, -/obj/effect/landmark/structure_spawner/setup/distress/xeno_membrane, +"VY" = ( +/obj/item/reagent_container/food/snacks/grown/mushroom/glowshroom{ + pixel_x = -10; + pixel_y = -2; + light_on = 1; + light_range = 1; + light_system = 1 + }, +/turf/open/auto_turf/strata_grass/layer1, +/area/lv624/ground/caves/south_central_caves) +"Xj" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 10 + }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) -"Y" = ( +"XV" = ( /turf/open/gm/dirt, -/area/lv624/ground/barrens/west_barrens) +/area/lv624/ground/caves/south_central_caves) +"ZM" = ( +/obj/effect/decal/grass_overlay/grass1{ + dir = 4 + }, +/turf/open/gm/dirt, +/area/lv624/ground/barrens/north_east_barrens) +"ZU" = ( +/obj/effect/decal/grass_overlay/grass1/inner{ + dir = 5 + }, +/turf/open/gm/dirt, +/area/lv624/ground/caves/central_caves) (1,1,1) = {" -f -n -C -C -O -C -C -C -C -n -C -g -C -C -l -l -l -l -l -l -l +PB +qK +dd +DG +Vd +ER +ER +wL +Xj +qK +XV +sL +XV +XV +wk +wk +wk +wk +wk +wk +wk "} (2,1,1) = {" -f -n -C -g -C -C -C -g -C -n -C -C -C -C -C -l -l -l -l -y -Y +PB +qK +JB +Rx +ER +ks +ER +ER +hJ +qK +XV +XV +XV +XV +XV +wk +wk +wk +wk +lq +KX "} (3,1,1) = {" -f -n -C -C -l -l -l -w -w -w -C -C -C -C -C -C -l -l -l -Y -Y +PB +qK +JB +ER +ER +sO +sO +wk +hJ +qK +XV +XV +XV +XV +XV +XV +wk +wk +wk +KX +KX "} (4,1,1) = {" -f -w -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -l -l -Y -Y +PB +aD +wk +wk +sO +sO +wk +wk +wk +wk +wk +XV +XV +XV +XV +XV +wk +wk +wk +KX +KX "} (5,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -C -l -l -y -Y +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +XV +XV +XV +XV +XV +XV +wk +wk +lq +KX "} (6,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -y -Y +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +XV +XV +XV +XV +XV +wk +lq +KX "} (7,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -l -C -g -C -C -l -l -y +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +Tu +yv +qK +qK +wk +wk +lq "} (8,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -l -n -n -n -n -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ER +wL +Xj +XV +AL +wk +wk "} (9,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ER +kc +ER +hJ +XV +XV +wk +wk "} (10,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -l -P -C -C -C -C -C -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +ER +hJ +XV +XV +wk +wk "} (11,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -P -P -C -C -C -C -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +ks +ER +bV +zh +XV +XV +wk +wk "} (12,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -P -P -C -C -C -C -l -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +sO +ER +ER +hJ +sL +XV +XV +wk +wk "} (13,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -P -C -C -C -C -g -l -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +Rx +ER +GR +Xj +XV +XV +wk +wk "} (14,1,1) = {" -l -l -l -l -l -l -l -l -l -l -l -l -C -C -C -O -C -l -l -l -l +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +ER +ER +hJ +XV +XV +wk +wk "} (15,1,1) = {" -l -l -l -l -l -l -C -C -l -l -l -l -l -C -C -C -C -C -l -l -l +wk +wk +wk +wk +wk +wk +XV +XV +wk +wk +wk +pd +iS +ER +ER +ER +hJ +XV +XV +wk +wk "} (16,1,1) = {" -l -l -l -l -l -C -C -C -C -l -l -l -l -l -C -C -C -C -C -l -l +wk +wk +wk +wk +wk +XV +XV +XV +XV +wk +wk +wk +sO +sO +ER +hP +hJ +XV +wk +wk +wk "} (17,1,1) = {" -l -l -l -C -C -C -C -C -C -C -l -l -l -C -C -g -C -x -l -l -l +wk +wk +wk +XV +XV +XV +XV +XV +XV +XV +wk +wk +wk +sO +ER +ER +hJ +XV +wk +wk +wk "} (18,1,1) = {" -l -l -l -C -C -g -C -C -C -g -C -C -l -C -C -C -C -P -l -l -l +wk +wk +wk +XV +XV +sL +XV +XV +XV +sL +XV +XV +wk +sO +ER +Jf +hJ +XV +wk +wk +wk "} (19,1,1) = {" -l -l -C -C -C -C -C -C -C -C -C -C -n -C -C -C -C -P -l -l -l +wk +wk +XV +XV +XV +XV +XV +XV +XV +XV +XV +XV +Od +ER +ER +ER +wL +Xj +XV +wk +wk "} (20,1,1) = {" -l -C -C -C -C -C -l -l -C -C -C -C -n -C -C -C -C -P -P -l -l +wk +XV +XV +XV +XV +XV +wk +wk +XV +XV +XV +XV +Od +ER +ER +VY +Rx +hJ +XV +wk +wk "} (21,1,1) = {" -f -C -C -C -C -C -l -l -C -C -C -g -w -C -C -C -g -C -P -l -l +PB +XV +XV +XV +XV +XV +wk +wk +XV +XV +XV +sL +Pd +ER +ER +ER +ER +hJ +XV +wk +wk "} (22,1,1) = {" -f -C -g -C -C -l -l -l -l -C -C -C -n -C -C -C -C -C -P -l -l +PB +XV +sL +XV +XV +wk +wk +wk +wk +XV +XV +XV +Od +ER +Rx +ER +JX +hJ +XV +wk +wk "} (23,1,1) = {" -f -f -C -C -l -l -l -l -l -l -C -C -n -C -C -C -C -C -P -l -l +PB +PB +XV +XV +wk +wk +wk +wk +wk +wk +XV +XV +Od +ER +ry +ER +bV +zh +XV +wk +wk "} (24,1,1) = {" -f -f -C -C -l -l -l -l -l -l -l -l -l -C -C -C -C -C -C -l -l +PB +PB +XV +XV +wk +wk +wk +wk +wk +wk +wk +wk +wk +pR +ER +ER +hJ +XV +wk +wk +wk "} (25,1,1) = {" -f -f -C -l -l -l -l -l -l -l -l -l -C -C -C -C -C -C -l -l -l +PB +PB +XV +wk +wk +wk +wk +wk +wk +wk +sO +sO +ER +ER +ER +Rx +hJ +XV +wk +wk +wk "} (26,1,1) = {" -f -f -C -l -l -l -l -l -l -l -l -x -C -C -C -g -C -C -l -l -l +PB +PB +XV +wk +wk +wk +wk +wk +wk +wk +sO +ER +ER +ER +Uu +ER +hJ +wk +wk +wk +wk "} (27,1,1) = {" -f -f -l -l -l -l -l -l -l -l -l -l -C -C -C -C -C -l -l -l -q +PB +PB +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +ER +ER +ER +ER +hJ +wk +wk +wk +hW "} (28,1,1) = {" -f -h -l -l -l -l -l -l -l -l -l -l -l -C -C -C -C -l -l -l -r +PB +oJ +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ER +ER +ER +wk +wk +wk +wk +JZ "} (29,1,1) = {" -f -f -l -l -l -l -l -l -l -l -l -l -l -m -m -m -l -l -l -l -r +PB +UB +wk +wk +wk +wk +wk +wk +wk +wk +wk +sO +sO +An +An +vC +wk +wk +wk +wk +JZ "} (30,1,1) = {" -f -f -l -l -l -l -l -l -l -l -l -l -l -k -k -k -l -l -k -k -r +PB +UB +oB +wk +wk +wk +wk +wk +wk +wk +wk +wk +wk +ZM +ZM +ZM +wk +wk +yD +yD +JZ "} (31,1,1) = {" -f -f -f -l -l -l -l -l -l -l -l -l -k -k -k -k -k -k -k -k -r +PB +gU +Oe +sO +wk +wk +wk +wk +wk +wk +wk +wk +yD +yD +yD +yD +yD +yD +yD +yD +JZ "} (32,1,1) = {" -h -f -l -l -l -l -l -l -l -l -l -l -l -k -k -k -k -k -o -k -r +UB +lp +sO +sO +wk +wk +wk +wk +sO +sO +wk +wk +wk +yD +yD +yD +yD +yD +mN +yD +JZ "} (33,1,1) = {" -f -e -e -k -k -k -l -l -l -k -k -l -k -k -k -k -k -k -k -k -r +PB +ZU +Is +pC +pC +pC +vR +sO +sO +GE +yO +wk +yD +yD +yD +yD +yD +yD +yD +yD +JZ "} From 91c941ffd9be45e48c1b5476095158e7ad2afdad Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 16:33:47 +0000 Subject: [PATCH 068/355] Automatic changelog for PR #4929 [ci skip] --- html/changelogs/AutoChangeLog-pr-4929.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4929.yml diff --git a/html/changelogs/AutoChangeLog-pr-4929.yml b/html/changelogs/AutoChangeLog-pr-4929.yml new file mode 100644 index 000000000000..104693c96407 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4929.yml @@ -0,0 +1,5 @@ +author: "SpartanBobby, GDS Pathe" +delete-after: True +changes: + - maptweak: "Updates bigred floortiles" + - maptweak: "Re-adds reactor to bigred" \ No newline at end of file From 0394e18c801b8e26b530a691db8310c865299f08 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 16:59:11 +0000 Subject: [PATCH 069/355] Automatic changelog for PR #4843 [ci skip] --- html/changelogs/AutoChangeLog-pr-4843.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4843.yml diff --git a/html/changelogs/AutoChangeLog-pr-4843.yml b/html/changelogs/AutoChangeLog-pr-4843.yml new file mode 100644 index 000000000000..0da9bb3b705d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4843.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - maptweak: "LV-624's Caves have had an aesthetic change regarding jungle tiles and flora." \ No newline at end of file From b4a7332138e2b2be19388f6d40d46955e5ac66d4 Mon Sep 17 00:00:00 2001 From: Fira Date: Thu, 16 Nov 2023 17:31:30 +0000 Subject: [PATCH 070/355] double trait --- code/__DEFINES/traits.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 0e30a2ed805c..375c87cd6571 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -143,8 +143,6 @@ // #define TRAIT_X "t_x" //-- mob traits -- -/// Prevents voluntary movement. -#define TRAIT_IMMOBILIZED "immobilized" /// Apply this to make a mob not dense, and remove it when you want it to no longer make them undense, other sorces of undesity will still apply. Always define a unique source when adding a new instance of this! #define TRAIT_UNDENSE "undense" /// Forces the user to stay unconscious. From f288459640fc7cbf59de97cd8e8b16f09a28b1a7 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Thu, 16 Nov 2023 19:17:20 +0000 Subject: [PATCH 071/355] Hotfixes #4890 bug adds mising newline (#4919) # About the pull request Adds missing newline after [View] so that flavour text displays below. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Adds missing newline when viewing sec records as observer. /:cl: --------- Co-authored-by: forest2001 <41653574+realforest2001@users.noreply.github.com> --- code/modules/mob/living/carbon/human/examine.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index 26c8fd867f72..228504195e52 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -463,7 +463,8 @@ msg += "Security records: \[View\]" if(!observer) msg += "
\[Add comment\]\n" - + else + msg += "\n" if(hasHUD(user,"medical")) var/cardcolor = holo_card_color if(!cardcolor) cardcolor = "none" From 9a99e322f32e90930cfa2a733edc36e954b532be Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:25:55 +0000 Subject: [PATCH 072/355] Automatic changelog for PR #4919 [ci skip] --- html/changelogs/AutoChangeLog-pr-4919.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4919.yml diff --git a/html/changelogs/AutoChangeLog-pr-4919.yml b/html/changelogs/AutoChangeLog-pr-4919.yml new file mode 100644 index 000000000000..c67a26dd109a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4919.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Adds missing newline when viewing sec records as observer." \ No newline at end of file From 8d86085febcd1eca41430e7ee58d95b794790763 Mon Sep 17 00:00:00 2001 From: fira Date: Thu, 16 Nov 2023 20:20:48 +0100 Subject: [PATCH 073/355] Fixes some Almayer Walls randomly changing icons when hit (#4936) # About the pull request Horizontal Almayer walls have "decoration" variants that are placed randomly. Because these are applied in update_icon randomly, if you shoot such a wall, it will cycle randomly through available icons. On top of that, because the replacement icon was applied as an overlay, it was drawn over everything else masking bullet and damage overlays. This fixes both issues by making it use the icon instead and rolling decorations ahead of time. # Explain why it's good for the game Consistency. Awfully distracting if you're in the firing range too # Changelog :cl: fix: Horizontal Almayer walls no longer change icon randomly, and now properly display damage overlays. /:cl: --- code/game/turfs/walls/wall_types.dm | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index 1b4091eb2aab..f976da220b29 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -28,15 +28,23 @@ /obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, ) + /// The type of wall decoration we use, to avoid the wall changing icon all the time + var/decoration_type + +/turf/closed/wall/almayer/Initialize(mapload, ...) + if(!special_icon && prob(20)) + decoration_type = rand(0,3) + return ..() + /turf/closed/wall/almayer/update_icon() - ..() - if(special_icon) - return + if(decoration_type == null) + return ..() if(neighbors_list in list(EAST|WEST)) - var/r1 = rand(0,10) //Make a random chance for this to happen - var/r2 = rand(0,3) // Which wall if we do choose it - if(r1 >= 9) - overlays += image(icon, icon_state = "almayer_deco_wall[r2]") + special_icon = TRUE + icon_state = "almayer_deco_wall[decoration_type]" + else // Wall connection was broken, return to normality + special_icon = FALSE + return ..() /turf/closed/wall/almayer/take_damage(dam, mob/M) var/damage_check = max(0, damage + dam) From edec5658414ef54ad997a37dc17ed7884499011a Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:39:33 +0000 Subject: [PATCH 074/355] Automatic changelog for PR #4936 [ci skip] --- html/changelogs/AutoChangeLog-pr-4936.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4936.yml diff --git a/html/changelogs/AutoChangeLog-pr-4936.yml b/html/changelogs/AutoChangeLog-pr-4936.yml new file mode 100644 index 000000000000..508ba310d41f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4936.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Horizontal Almayer walls no longer change icon randomly, and now properly display damage overlays." \ No newline at end of file From 35ce812479291689748d1fe28ec57722563c89fc Mon Sep 17 00:00:00 2001 From: forest2001 <41653574+realforest2001@users.noreply.github.com> Date: Thu, 16 Nov 2023 19:58:48 +0000 Subject: [PATCH 075/355] Moves sent faxes from highcom machines. (#4925) # About the pull request This PR makes it so that when using a fax machine that belongs to High Command, the faxes appear in the correct category rather than in "Other" category. # Explain why it's good for the game Makes it much easier to view faxes with consistency, and understand what is going on for admins who may be replying. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Faxes sent from HighCom fax machines now appear in their correct category. /:cl: --- code/game/machinery/fax_machine.dm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/fax_machine.dm b/code/game/machinery/fax_machine.dm index 7bbc86681eb1..ff21671ed758 100644 --- a/code/game/machinery/fax_machine.dm +++ b/code/game/machinery/fax_machine.dm @@ -6,6 +6,7 @@ var/list/alldepartments = list() #define DEPARTMENT_CMB "CMB Incident Command Center, Local Operations" #define DEPARTMENT_PROVOST "USCM Provost Office" #define DEPARTMENT_PRESS "Various Press Organizations" +#define HIGHCOM_DEPARTMENTS list(DEPARTMENT_WY, DEPARTMENT_HC, DEPARTMENT_CMB, DEPARTMENT_PROVOST, DEPARTMENT_PRESS) /obj/structure/machinery/faxmachine // why not fax_machine? name = "\improper General Purpose Fax Machine" @@ -319,10 +320,14 @@ var/list/alldepartments = list() GLOB.fax_contents += faxcontents + var/scan_department = target_department + if(department in HIGHCOM_DEPARTMENTS) + scan_department = department + var/msg_admin = SPAN_STAFF_IC("[target_department]: [key_name(user, 1)] ") msg_admin += "[CC_MARK(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_JMP_USER(user)] " - switch(target_department) + switch(scan_department) if(DEPARTMENT_HC) GLOB.USCMFaxes.Add("\['[original_fax.name]' from [key_name(usr)], [scan] at [time2text(world.timeofday, "hh:mm:ss")]\] REPLY") msg_admin += "(RPLY): " From 62e66db246e95e83b41dc5b0d3702f0c4efab52f Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 20:07:21 +0000 Subject: [PATCH 076/355] Automatic changelog for PR #4925 [ci skip] --- html/changelogs/AutoChangeLog-pr-4925.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4925.yml diff --git a/html/changelogs/AutoChangeLog-pr-4925.yml b/html/changelogs/AutoChangeLog-pr-4925.yml new file mode 100644 index 000000000000..6b2f6a49c480 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4925.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Faxes sent from HighCom fax machines now appear in their correct category." \ No newline at end of file From 75bdfdbae8410c243a1c2dcc3512afba27e05576 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Thu, 16 Nov 2023 19:59:39 +0000 Subject: [PATCH 077/355] Lurker: bug fix, var disambiguation and redundant type checks (#4922) - Fixes #4905 - Disambiguates some abbreviated vars & single letter - Removes some unnecessary type checks # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Lurker can no longer tail jab through doors/structures. code: Var disambiguation, cleanup and removal of redundant typechecks in lurker code. /:cl: --- .../abilities/lurker/lurker_abilities.dm | 18 +++++----- .../abilities/lurker/lurker_powers.dm | 3 ++ .../living/carbon/xenomorph/castes/Lurker.dm | 36 +++++++++---------- 3 files changed, 30 insertions(+), 27 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm index 0c9358119def..2facee1edc9d 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_abilities.dm @@ -30,20 +30,20 @@ if (istype(lurker_invis)) lurker_invis.invisibility_off() -/datum/action/xeno_action/activable/pounce/lurker/additional_effects(mob/living/L) - var/mob/living/carbon/xenomorph/X = owner - if (!istype(X)) +/datum/action/xeno_action/activable/pounce/lurker/additional_effects(mob/living/living_mob) + var/mob/living/carbon/xenomorph/xeno = owner + if (!istype(xeno)) return - if (X.mutation_type == LURKER_NORMAL) - RegisterSignal(X, COMSIG_XENO_SLASH_ADDITIONAL_EFFECTS_SELF, PROC_REF(remove_freeze), TRUE) // Suppresses runtime ever we pounce again before slashing + if (xeno.mutation_type == LURKER_NORMAL) + RegisterSignal(xeno, COMSIG_XENO_SLASH_ADDITIONAL_EFFECTS_SELF, PROC_REF(remove_freeze), TRUE) // Suppresses runtime ever we pounce again before slashing -/datum/action/xeno_action/activable/pounce/lurker/proc/remove_freeze(mob/living/carbon/xenomorph/X) +/datum/action/xeno_action/activable/pounce/lurker/proc/remove_freeze(mob/living/carbon/xenomorph/xeno) SIGNAL_HANDLER - var/datum/behavior_delegate/lurker_base/BD = X.behavior_delegate - if (istype(BD)) - UnregisterSignal(X, COMSIG_XENO_SLASH_ADDITIONAL_EFFECTS_SELF) + var/datum/behavior_delegate/lurker_base/behaviour_del = xeno.behavior_delegate + if (istype(behaviour_del)) + UnregisterSignal(xeno, COMSIG_XENO_SLASH_ADDITIONAL_EFFECTS_SELF) end_pounce_freeze() /datum/action/xeno_action/onclick/lurker_invisibility diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm index b58d94a6ed5b..13734a5b9cf4 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/lurker/lurker_powers.dm @@ -208,6 +208,9 @@ xeno.visible_message(SPAN_XENOWARNING("\The [xeno] strikes the window with their tail!"), SPAN_XENOWARNING("You strike the window with your tail!")) apply_cooldown(cooldown_modifier = 0.5) return + if(current_structure.density) + to_chat(xeno, SPAN_WARNING("There's something blocking you from striking!")) + return if(!isxeno_human(hit_target) || xeno.can_not_harm(hit_target) || hit_target.stat == DEAD) xeno.visible_message(SPAN_XENOWARNING("\The [xeno] swipes their tail through the air!"), SPAN_XENOWARNING("You swipe your tail through the air!")) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm b/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm index 315f8abf023a..1c7ba8503d4d 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Lurker.dm @@ -84,7 +84,7 @@ target_carbon.set_effect(get_xeno_stun_duration(target_carbon, 3), SUPERSLOW) next_slash_buffed = FALSE var/datum/action/xeno_action/onclick/lurker_assassinate/ability = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/lurker_assassinate) - if (ability && istype(ability)) + if (ability) ability.button.icon_state = "template" return original_damage @@ -110,22 +110,22 @@ /datum/behavior_delegate/lurker_base/melee_attack_additional_effects_self() ..() - var/datum/action/xeno_action/onclick/lurker_invisibility/LIA = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/lurker_invisibility) - if (LIA && istype(LIA)) - LIA.invisibility_off() + var/datum/action/xeno_action/onclick/lurker_invisibility/lurker_invis_action = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/lurker_invisibility) + if (lurker_invis_action) + lurker_invis_action.invisibility_off() /datum/behavior_delegate/lurker_base/proc/decloak_handler(mob/source) SIGNAL_HANDLER - var/datum/action/xeno_action/onclick/lurker_invisibility/LIA = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/lurker_invisibility) - if(istype(LIA)) - LIA.invisibility_off() + var/datum/action/xeno_action/onclick/lurker_invisibility/lurker_invis_action = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/lurker_invisibility) + if(istype(lurker_invis_action)) + lurker_invis_action.invisibility_off() // What to do when we go invisible /datum/behavior_delegate/lurker_base/proc/on_invisibility() - var/datum/action/xeno_action/activable/pounce/lurker/LPA = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/activable/pounce/lurker) - if (LPA && istype(LPA)) - LPA.knockdown = TRUE // pounce knocks down - LPA.freeze_self = TRUE + var/datum/action/xeno_action/activable/pounce/lurker/lurker_pounce_action = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/activable/pounce/lurker) + if (lurker_pounce_action) + lurker_pounce_action.knockdown = TRUE // pounce knocks down + lurker_pounce_action.freeze_self = TRUE ADD_TRAIT(bound_xeno, TRAIT_CLOAKED, TRAIT_SOURCE_ABILITY("cloak")) RegisterSignal(bound_xeno, COMSIG_MOB_EFFECT_CLOAK_CANCEL, PROC_REF(decloak_handler)) bound_xeno.stealth = TRUE @@ -133,10 +133,10 @@ invis_start_time = world.time /datum/behavior_delegate/lurker_base/proc/on_invisibility_off() - var/datum/action/xeno_action/activable/pounce/lurker/LPA = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/activable/pounce/lurker) - if (LPA && istype(LPA)) - LPA.knockdown = FALSE // pounce no longer knocks down - LPA.freeze_self = FALSE + var/datum/action/xeno_action/activable/pounce/lurker/lurker_pounce_action = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/activable/pounce/lurker) + if (lurker_pounce_action) + lurker_pounce_action.knockdown = FALSE // pounce no longer knocks down + lurker_pounce_action.freeze_self = FALSE bound_xeno.stealth = FALSE REMOVE_TRAIT(bound_xeno, TRAIT_CLOAKED, TRAIT_SOURCE_ABILITY("cloak")) UnregisterSignal(bound_xeno, COMSIG_MOB_EFFECT_CLOAK_CANCEL) @@ -153,9 +153,9 @@ can_go_invisible = TRUE if(bound_xeno) - var/datum/action/xeno_action/onclick/lurker_invisibility/LIA = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/lurker_invisibility) - if(LIA && istype(LIA)) - LIA.end_cooldown() + var/datum/action/xeno_action/onclick/lurker_invisibility/lurker_invisibility_action = get_xeno_action_by_type(bound_xeno, /datum/action/xeno_action/onclick/lurker_invisibility) + if(lurker_invisibility_action) + lurker_invisibility_action.end_cooldown() /datum/behavior_delegate/lurker_base/append_to_stat() . = list() From ad50d7b731ff430365c1b4c145990b0ca380d620 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 20:21:08 +0000 Subject: [PATCH 078/355] Automatic changelog for PR #4922 [ci skip] --- html/changelogs/AutoChangeLog-pr-4922.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4922.yml diff --git a/html/changelogs/AutoChangeLog-pr-4922.yml b/html/changelogs/AutoChangeLog-pr-4922.yml new file mode 100644 index 000000000000..46a9bb3654f5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4922.yml @@ -0,0 +1,5 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Lurker can no longer tail jab through doors/structures." + - code_imp: "Var disambiguation, cleanup and removal of redundant typechecks in lurker code." \ No newline at end of file From a83dcc959ca11ef09aa58968a3ceb58fddffc91d Mon Sep 17 00:00:00 2001 From: sleepynecrons <106241650+sleepynecrons@users.noreply.github.com> Date: Thu, 16 Nov 2023 14:00:33 -0600 Subject: [PATCH 079/355] Biosuit Toe Fix (#4920) # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/106241650/47a371d4-f66a-42dc-8b43-cd7c509e947a) Puts the exposed grippers back into the boots where they belong # Explain why it's good for the game Toes shouldn't be clipping out of sprites I think # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: imageadd: fixes biosuit body sprite not properly covering mobs /:cl: --- icons/mob/humans/onmob/suit_0.dmi | Bin 332134 -> 292000 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/humans/onmob/suit_0.dmi b/icons/mob/humans/onmob/suit_0.dmi index 52f2c7f0a9cbb563d1d9023f48e1d0eee62627d5..d0f816e2b7fa827cfa451eeb33b5d546e3615f4a 100644 GIT binary patch literal 292000 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�Aa7 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

%6Y96u9EE$*6|Z<82zNcSc=HJ?;n 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�Ue&$kF{MyAt@$xVj`9b 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

kw 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%0DuDeE>|j+9#CO$e1wNDE27 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 From 74b905381e52c43cc18a2608f848689fdfbbec12 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 20:34:29 +0000 Subject: [PATCH 080/355] Automatic changelog for PR #4920 [ci skip] --- html/changelogs/AutoChangeLog-pr-4920.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4920.yml diff --git a/html/changelogs/AutoChangeLog-pr-4920.yml b/html/changelogs/AutoChangeLog-pr-4920.yml new file mode 100644 index 000000000000..a7b3f592d88f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4920.yml @@ -0,0 +1,4 @@ +author: "sleepynecrons" +delete-after: True +changes: + - imageadd: "fixes biosuit body sprite not properly covering mobs" \ No newline at end of file From 5d8f695621e2ad60fb8d7dd7875d279d18e2e156 Mon Sep 17 00:00:00 2001 From: Doubleumc Date: Thu, 16 Nov 2023 16:02:37 -0500 Subject: [PATCH 081/355] Vehicles can be followed by ghosts (#4904) # About the pull request Loosens the type restrictions on what a ghost can orbit from `mob` to `atom/movable`, allowing vehicles to be orbited again. Doesn't effect ghosts viewing player UIs as that is still guarded by an `ishuman()` check. # Explain why it's good for the game Vehicles are listed in a ghost's "Follow" menu but clicking them does nothing. This PR allows the ghost to follow the vehicle, as expected. # Testing Photographs and Procedure

Screenshots & Videos ![image](https://github.com/PvE-CMSS13/PvE-CMSS13/assets/14267245/70d96097-f3cb-4c99-bb98-f99bbf3de40d) ![image](https://github.com/PvE-CMSS13/PvE-CMSS13/assets/14267245/77e37a1c-6215-49f1-bdbd-61748b8ced59) Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: vehicles can be followed by ghosts /:cl: --- code/modules/mob/dead/observer/observer.dm | 23 +++++++++++----------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 8d9513093349..da0560e151e9 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -248,7 +248,7 @@ RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE, PROC_REF(observe_target_screen_remove)) ///makes the ghost see the target hud and sets the eye at the target. -/mob/dead/observer/proc/do_observe(mob/target) +/mob/dead/observer/proc/do_observe(atom/movable/target) if(!client || !target || !istype(target)) return @@ -257,24 +257,23 @@ if(!ishuman(target) || !client.prefs?.auto_observe) return + var/mob/living/carbon/human/human_target = target - client.eye = target + client.eye = human_target - if(!target.hud_used) + if(!human_target.hud_used) return client.clear_screen() - LAZYINITLIST(target.observers) - target.observers |= src - target.hud_used.show_hud(target.hud_used.hud_version, src) - - var/mob/living/carbon/human/human_target = target + LAZYINITLIST(human_target.observers) + human_target.observers |= src + human_target.hud_used.show_hud(human_target.hud_used.hud_version, src) var/list/target_contents = human_target.get_contents() //Handles any currently open storage containers the target is looking in when we observe for(var/obj/item/storage/checked_storage in target_contents) - if(!(target in checked_storage.content_watchers)) + if(!(human_target in checked_storage.content_watchers)) continue client.add_to_screen(checked_storage.closer) @@ -289,7 +288,7 @@ break - observe_target_mob = target + observe_target_mob = human_target RegisterSignal(observe_target_mob, COMSIG_PARENT_QDELETING, PROC_REF(clean_observe_target)) RegisterSignal(observe_target_mob, COMSIG_MOB_GHOSTIZE, PROC_REF(observe_target_ghosting)) RegisterSignal(observe_target_mob, COMSIG_MOB_NEW_MIND, PROC_REF(observe_target_new_mind)) @@ -297,8 +296,8 @@ RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(observer_move_react)) - if(target.client) - observe_target_client = target.client + if(human_target.client) + observe_target_client = human_target.client RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_ADD, PROC_REF(observe_target_screen_add)) RegisterSignal(observe_target_client, COMSIG_CLIENT_SCREEN_REMOVE, PROC_REF(observe_target_screen_remove)) return From 472ffb3eec2553ffc4b0b36a1c726bb647d27098 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 21:12:11 +0000 Subject: [PATCH 082/355] Automatic changelog for PR #4904 [ci skip] --- html/changelogs/AutoChangeLog-pr-4904.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4904.yml diff --git a/html/changelogs/AutoChangeLog-pr-4904.yml b/html/changelogs/AutoChangeLog-pr-4904.yml new file mode 100644 index 000000000000..c0f461dfe9f8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4904.yml @@ -0,0 +1,4 @@ +author: "Doubleumc" +delete-after: True +changes: + - rscadd: "vehicles can be followed by ghosts" \ No newline at end of file From 44f6a754c79139891055149df6161bfa1f0cc61a Mon Sep 17 00:00:00 2001 From: fira Date: Thu, 16 Nov 2023 22:03:03 +0100 Subject: [PATCH 083/355] Adds Reflection to VV Modify Transform (#4907) # About the pull request As it says on the tin. Just gives the option to flip transform matrixes in VV Modify Transform. # Explain why it's good for the game More shenanigans # Testing Photographs and Procedure Tested on brief chairs # Changelog :cl: admin: VV 'Modify Transform' can now be used to flip objects. /:cl: --- code/game/atoms.dm | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 44494bea83a0..e0590265840c 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -723,7 +723,7 @@ Parameters are passed from New. usr.client.cmd_admin_emp(src) if(href_list[VV_HK_MODIFY_TRANSFORM] && check_rights(R_VAREDIT)) - var/result = tgui_input_list(usr, "Choose the transformation to apply","Transform Mod", list("Scale","Translate","Rotate")) + var/result = tgui_input_list(usr, "Choose the transformation to apply","Transform Mod", list("Scale","Translate","Rotate", "Reflect X Axis", "Reflect Y Axis")) if(!result) return if(!result) @@ -749,7 +749,22 @@ Parameters are passed from New. return var/matrix/base_matrix = matrix(base_transform) update_base_transform(base_matrix.Turn(angle)) - + if("Reflect X Axis") + var/matrix/current = matrix(base_transform) + var/matrix/reflector = matrix() + reflector.a = -1 + reflector.d = 0 + reflector.b = 0 + reflector.e = 1 + update_base_transform(current * reflector) + if("Reflect Y Axis") + var/matrix/current = matrix(base_transform) + var/matrix/reflector = matrix() + reflector.a = 1 + reflector.d = 0 + reflector.b = 0 + reflector.e = -1 + update_base_transform(current * reflector) SEND_SIGNAL(src, COMSIG_ATOM_VV_MODIFY_TRANSFORM) if(href_list[VV_HK_AUTO_RENAME] && check_rights(R_VAREDIT)) From 92ce2487fccebeffbb2da614b2bfe3a62fb46533 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 21:27:03 +0000 Subject: [PATCH 084/355] Automatic changelog for PR #4907 [ci skip] --- html/changelogs/AutoChangeLog-pr-4907.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4907.yml diff --git a/html/changelogs/AutoChangeLog-pr-4907.yml b/html/changelogs/AutoChangeLog-pr-4907.yml new file mode 100644 index 000000000000..b4247778ae43 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4907.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - admin: "VV 'Modify Transform' can now be used to flip objects." \ No newline at end of file From b04af9a1ebe031fdd17d821a73c50bbec0a65b2f Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Thu, 16 Nov 2023 21:04:58 +0000 Subject: [PATCH 085/355] Ravager: replaces single letter vars (#4928) # About the pull request - Replaces single letter vars in rav code # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Replaces single letter vars in ravager code /:cl: --- .../abilities/ravager/ravager_powers.dm | 232 +++++++++--------- .../living/carbon/xenomorph/castes/Ravager.dm | 14 +- 2 files changed, 123 insertions(+), 123 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm index ae28cd63fef9..a6c8067660dc 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/ravager/ravager_powers.dm @@ -118,30 +118,30 @@ return FALSE // Supplemental behavior for our charge -/datum/action/xeno_action/activable/pounce/charge/additional_effects(mob/living/L) +/datum/action/xeno_action/activable/pounce/charge/additional_effects(mob/living/living) - var/mob/living/carbon/human/H = L - var/mob/living/carbon/xenomorph/X = owner - if(X.mutation_type != RAVAGER_NORMAL) + var/mob/living/carbon/human/human = living + var/mob/living/carbon/xenomorph/xeno = owner + if(xeno.mutation_type != RAVAGER_NORMAL) return - var/datum/behavior_delegate/ravager_base/BD = X.behavior_delegate - if(BD.empower_targets < BD.super_empower_threshold) + var/datum/behavior_delegate/ravager_base/behavior = xeno.behavior_delegate + if(behavior.empower_targets < behavior.super_empower_threshold) return - X.visible_message(SPAN_XENODANGER("The [X] uses its shield to bash [H] as it charges at them!"), SPAN_XENODANGER("You use your shield to bash [H] as you charge at them!")) - H.apply_effect(BD.knockdown_amount, WEAKEN) - H.attack_alien(X, rand(X.melee_damage_lower, X.melee_damage_upper)) + xeno.visible_message(SPAN_XENODANGER("The [xeno] uses its shield to bash [human] as it charges at them!"), SPAN_XENODANGER("You use your shield to bash [human] as you charge at them!")) + human.apply_effect(behavior.knockdown_amount, WEAKEN) + human.attack_alien(xeno, rand(xeno.melee_damage_lower, xeno.melee_damage_upper)) - var/facing = get_dir(X, H) - var/turf/T = X.loc - var/turf/temp = X.loc + var/facing = get_dir(xeno, human) + var/turf/turf = xeno.loc + var/turf/temp = xeno.loc - for(var/x in 0 to BD.fling_distance-1) - temp = get_step(T, facing) + for(var/step in 0 to behavior.fling_distance-1) + temp = get_step(turf, facing) if (!temp) break - T = temp + turf = temp - H.throw_atom(T, BD.fling_distance, SPEED_VERY_FAST, X, TRUE) + human.throw_atom(turf, behavior.fling_distance, SPEED_VERY_FAST, xeno, TRUE) /datum/action/xeno_action/activable/scissor_cut/use_ability(atom/target_atom) var/mob/living/carbon/xenomorph/ravager_user = owner @@ -164,12 +164,12 @@ var/list/turf/target_turfs = list() var/facing = Get_Compass_Dir(ravager_user, target_atom) - var/turf/T = ravager_user.loc + var/turf/turf = ravager_user.loc var/turf/temp = ravager_user.loc var/list/telegraph_atom_list = list() - for (var/x in 0 to 3) - temp = get_step(T, facing) + for (var/step in 0 to 3) + temp = get_step(turf, facing) if(facing in diagonals) // check if it goes through corners var/reverse_face = reverse_dir[facing] var/turf/back_left = get_step(temp, turn(reverse_face, 45)) @@ -182,9 +182,9 @@ var/blocked = FALSE for(var/obj/structure/structure_blocker in temp) if(istype(structure_blocker, /obj/structure/window/framed)) - var/obj/structure/window/framed/W = structure_blocker - if(!W.unslashable) - W.deconstruct(disassembled = FALSE) + var/obj/structure/window/framed/framed_window = structure_blocker + if(!framed_window.unslashable) + framed_window.deconstruct(disassembled = FALSE) if(structure_blocker.opacity) blocked = TRUE @@ -192,13 +192,13 @@ if(blocked) break - T = temp - target_turfs += T - telegraph_atom_list += new /obj/effect/xenomorph/xeno_telegraph/red(T, 0.25 SECONDS) + turf = temp + target_turfs += turf + telegraph_atom_list += new /obj/effect/xenomorph/xeno_telegraph/red(turf, 0.25 SECONDS) // Extract our 'optimal' turf, if it exists - if (target_turfs.len >= 2) - ravager_user.animation_attack_on(target_turfs[target_turfs.len], 15) + if (length(target_turfs) >= 2) + ravager_user.animation_attack_on(target_turfs[length(target_turfs)], 15) // Hmm today I will kill a marine while looking away from them ravager_user.face_atom(target_atom) @@ -218,7 +218,7 @@ playsound(get_turf(carbon_target), "alien_claw_flesh", 30, TRUE) if(should_sslow) - new /datum/effects/xeno_slow/superslow/(carbon_target, ravager_user, ttl = superslow_duration) + new /datum/effects/xeno_slow/superslow(carbon_target, ravager_user, ttl = superslow_duration) apply_cooldown() return ..() @@ -226,133 +226,133 @@ ///////////// BERSERKER POWERS -/datum/action/xeno_action/onclick/apprehend/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/onclick/apprehend/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner - if (!istype(X)) + if (!istype(xeno)) return if (!action_cooldown_check()) return - if (!X.check_state()) + if (!xeno.check_state()) return if (!check_and_use_plasma_owner()) return - var/datum/behavior_delegate/ravager_berserker/BD = X.behavior_delegate - if (istype(BD)) - BD.next_slash_buffed = TRUE + var/datum/behavior_delegate/ravager_berserker/behavior = xeno.behavior_delegate + if (istype(behavior)) + behavior.next_slash_buffed = TRUE - to_chat(X, SPAN_XENODANGER("Your next slash will slow!")) + to_chat(xeno, SPAN_XENODANGER("Your next slash will slow!")) addtimer(CALLBACK(src, PROC_REF(unbuff_slash)), buff_duration) - X.speed_modifier -= speed_buff - X.recalculate_speed() + xeno.speed_modifier -= speed_buff + xeno.recalculate_speed() addtimer(CALLBACK(src, PROC_REF(apprehend_off)), buff_duration, TIMER_UNIQUE) - X.add_filter("apprehend_on", 1, list("type" = "outline", "color" = "#522020ff", "size" = 1)) // Dark red because the berserker is scary in this state + xeno.add_filter("apprehend_on", 1, list("type" = "outline", "color" = "#522020ff", "size" = 1)) // Dark red because the berserker is scary in this state apply_cooldown() return ..() /datum/action/xeno_action/onclick/apprehend/proc/apprehend_off() - var/mob/living/carbon/xenomorph/X = owner - X.remove_filter("apprehend_on") - if (istype(X)) - X.speed_modifier += speed_buff - X.recalculate_speed() - to_chat(X, SPAN_XENOHIGHDANGER("You feel your speed wane!")) + var/mob/living/carbon/xenomorph/xeno = owner + xeno.remove_filter("apprehend_on") + if (istype(xeno)) + xeno.speed_modifier += speed_buff + xeno.recalculate_speed() + to_chat(xeno, SPAN_XENOHIGHDANGER("You feel your speed wane!")) /datum/action/xeno_action/onclick/apprehend/proc/unbuff_slash() - var/mob/living/carbon/xenomorph/X = owner - if (!istype(X)) + var/mob/living/carbon/xenomorph/xeno = owner + if (!istype(xeno)) return - var/datum/behavior_delegate/ravager_berserker/BD = X.behavior_delegate - if (istype(BD)) + var/datum/behavior_delegate/ravager_berserker/behavior = xeno.behavior_delegate + if (istype(behavior)) // In case slash has already landed - if (!BD.next_slash_buffed) + if (!behavior.next_slash_buffed) return - BD.next_slash_buffed = FALSE + behavior.next_slash_buffed = FALSE - to_chat(X, SPAN_XENODANGER("You have waited too long, your slash will no longer slow enemies!")) + to_chat(xeno, SPAN_XENODANGER("You have waited too long, your slash will no longer slow enemies!")) -/datum/action/xeno_action/activable/clothesline/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/activable/clothesline/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner if (!action_cooldown_check()) return - if (!X.check_state()) + if (!xeno.check_state()) return - if (!isxeno_human(A) || X.can_not_harm(A)) - to_chat(X, SPAN_XENOWARNING("You must target a hostile!")) + if (!isxeno_human(affected_atom) || xeno.can_not_harm(affected_atom)) + to_chat(xeno, SPAN_XENOWARNING("You must target a hostile!")) return - if (!X.Adjacent(A)) - to_chat(X, SPAN_XENOWARNING("You must be adjacent to your target!")) + if (!xeno.Adjacent(affected_atom)) + to_chat(xeno, SPAN_XENOWARNING("You must be adjacent to your target!")) return - var/mob/living/carbon/H = A + var/mob/living/carbon/carbon = affected_atom var/heal_amount = base_heal var/fling_distance = fling_dist_base var/debilitate = TRUE // Do we apply neg. status effects to the target? - if (H.mob_size >= MOB_SIZE_BIG) - to_chat(X, SPAN_XENOWARNING("This creature is too massive to target")) + if (carbon.mob_size >= MOB_SIZE_BIG) + to_chat(xeno, SPAN_XENOWARNING("This creature is too massive to target")) return - if (H.stat == DEAD) + if (carbon.stat == DEAD) return // All strain-specific behavior - if (X.mutation_type == RAVAGER_BERSERKER) - var/datum/behavior_delegate/ravager_berserker/BD = X.behavior_delegate + if (xeno.mutation_type == RAVAGER_BERSERKER) + var/datum/behavior_delegate/ravager_berserker/behavior = xeno.behavior_delegate - if (BD.rage >= 2) - BD.decrement_rage() + if (behavior.rage >= 2) + behavior.decrement_rage() heal_amount += additional_healing_enraged else - to_chat(X, SPAN_XENOWARNING("Your rejuvenation was weaker without rage!")) + to_chat(xeno, SPAN_XENOWARNING("Your rejuvenation was weaker without rage!")) debilitate = FALSE fling_distance-- // Damage - var/obj/limb/head/head = H.get_limb("head") - if(ishuman(H) && head) - H.apply_armoured_damage(damage, ARMOR_MELEE, BRUTE, "head") + var/obj/limb/head/head = carbon.get_limb("head") + if(ishuman(carbon) && head) + carbon.apply_armoured_damage(damage, ARMOR_MELEE, BRUTE, "head") else - H.apply_armoured_damage(get_xeno_damage_slash(H, damage), ARMOR_MELEE, BRUTE) // just for consistency + carbon.apply_armoured_damage(get_xeno_damage_slash(carbon, damage), ARMOR_MELEE, BRUTE) // just for consistency // Heal - if(!X.on_fire) - X.gain_health(heal_amount) + if(!xeno.on_fire) + xeno.gain_health(heal_amount) // Fling - var/facing = get_dir(X, H) - var/turf/T = X.loc - var/turf/temp = X.loc + var/facing = get_dir(xeno, carbon) + var/turf/turf = xeno.loc + var/turf/temp = xeno.loc - for (var/x in 0 to fling_distance-1) - temp = get_step(T, facing) + for (var/step in 0 to fling_distance-1) + temp = get_step(turf, facing) if (!temp) break - T = temp + turf = temp - H.throw_atom(T, fling_distance, SPEED_VERY_FAST, X, TRUE) + carbon.throw_atom(turf, fling_distance, SPEED_VERY_FAST, xeno, TRUE) // Negative stat effects if (debilitate) - H.dazed += daze_amount + carbon.dazed += daze_amount apply_cooldown() return ..() -/datum/action/xeno_action/activable/eviscerate/use_ability(atom/A) +/datum/action/xeno_action/activable/eviscerate/use_ability(atom/affected_atom) var/mob/living/carbon/xenomorph/xeno = owner if(!action_cooldown_check() || xeno.action_busy) @@ -502,33 +502,33 @@ xeno.overlay_shields() return -/datum/action/xeno_action/activable/rav_spikes/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/activable/rav_spikes/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner if (!action_cooldown_check()) return - if(!A || A.layer >= FLY_LAYER || !isturf(X.loc) || !X.check_state()) + if(!affected_atom || affected_atom.layer >= FLY_LAYER || !isturf(xeno.loc) || !xeno.check_state()) return - if (X.mutation_type == RAVAGER_HEDGEHOG) - var/datum/behavior_delegate/ravager_hedgehog/BD = X.behavior_delegate - if (!BD.check_shards(shard_cost)) - to_chat(X, SPAN_DANGER("Not enough shards! You need [shard_cost - BD.shards] more!")) + if (xeno.mutation_type == RAVAGER_HEDGEHOG) + var/datum/behavior_delegate/ravager_hedgehog/behavior = xeno.behavior_delegate + if (!behavior.check_shards(shard_cost)) + to_chat(xeno, SPAN_DANGER("Not enough shards! You need [shard_cost - behavior.shards] more!")) return - BD.use_shards(shard_cost) + behavior.use_shards(shard_cost) - X.visible_message(SPAN_XENOWARNING("The [X] fires their spikes at [A]!"), SPAN_XENOWARNING("You fire your spikes at [A]!")) + xeno.visible_message(SPAN_XENOWARNING("The [xeno] fires their spikes at [affected_atom]!"), SPAN_XENOWARNING("You fire your spikes at [affected_atom]!")) - var/turf/target = locate(A.x, A.y, A.z) - var/obj/projectile/P = new /obj/projectile(X.loc, create_cause_data(initial(X.caste_type), X)) + var/turf/target = locate(affected_atom.x, affected_atom.y, affected_atom.z) + var/obj/projectile/projectile = new /obj/projectile(xeno.loc, create_cause_data(initial(xeno.caste_type), xeno)) - var/datum/ammo/ammoDatum = GLOB.ammo_list[ammo_type] + var/datum/ammo/ammo_datum = GLOB.ammo_list[ammo_type] - P.generate_bullet(ammoDatum) + projectile.generate_bullet(ammo_datum) - P.fire_at(target, X, X, ammoDatum.max_range, ammoDatum.shell_speed) - playsound(X, 'sound/effects/spike_spray.ogg', 25, 1) + projectile.fire_at(target, xeno, xeno, ammo_datum.max_range, ammo_datum.shell_speed) + playsound(xeno, 'sound/effects/spike_spray.ogg', 25, 1) apply_cooldown() return ..() @@ -537,38 +537,38 @@ if(!owner) return FALSE if (cooldown_timer_id == TIMER_ID_NULL) - var/mob/living/carbon/xenomorph/X = owner - if(!istype(X)) + var/mob/living/carbon/xenomorph/xeno = owner + if(!istype(xeno)) return FALSE - if (X.mutation_type == RAVAGER_HEDGEHOG) - var/datum/behavior_delegate/ravager_hedgehog/BD = X.behavior_delegate - return BD.check_shards(shard_cost) + if (xeno.mutation_type == RAVAGER_HEDGEHOG) + var/datum/behavior_delegate/ravager_hedgehog/behavior = xeno.behavior_delegate + return behavior.check_shards(shard_cost) return TRUE else return FALSE -/datum/action/xeno_action/onclick/spike_shed/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/onclick/spike_shed/use_ability(atom/affected_atom) + var/mob/living/carbon/xenomorph/xeno = owner if (!action_cooldown_check()) return - if (!X.check_state()) + if (!xeno.check_state()) return - if (X.mutation_type == RAVAGER_HEDGEHOG) - var/datum/behavior_delegate/ravager_hedgehog/BD = X.behavior_delegate - if (!BD.check_shards(shard_cost)) - to_chat(X, SPAN_DANGER("Not enough shards! You need [shard_cost - BD.shards] more!")) + if (xeno.mutation_type == RAVAGER_HEDGEHOG) + var/datum/behavior_delegate/ravager_hedgehog/behavior = xeno.behavior_delegate + if (!behavior.check_shards(shard_cost)) + to_chat(xeno, SPAN_DANGER("Not enough shards! You need [shard_cost - behavior.shards] more!")) return - BD.use_shards(shard_cost) - BD.lock_shards() + behavior.use_shards(shard_cost) + behavior.lock_shards() - X.visible_message(SPAN_XENOWARNING("The [X] sheds their spikes, firing them in all directions!"), SPAN_XENOWARNING("You shed your spikes, firing them in all directions!!")) - X.spin_circle() - create_shrapnel(get_turf(X), shrapnel_amount, null, null, ammo_type, create_cause_data(initial(X.caste_type), owner), TRUE) - playsound(X, 'sound/effects/spike_spray.ogg', 25, 1) + xeno.visible_message(SPAN_XENOWARNING("The [xeno] sheds their spikes, firing them in all directions!"), SPAN_XENOWARNING("You shed your spikes, firing them in all directions!!")) + xeno.spin_circle() + create_shrapnel(get_turf(xeno), shrapnel_amount, null, null, ammo_type, create_cause_data(initial(xeno.caste_type), owner), TRUE) + playsound(xeno, 'sound/effects/spike_spray.ogg', 25, 1) apply_cooldown() return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm b/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm index 35938ff7f808..7853934da2dd 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/Ravager.dm @@ -73,7 +73,7 @@ var/super_empower_threshold = 3 var/dmg_buff_per_target = 2 -/datum/behavior_delegate/ravager_base/melee_attack_modify_damage(original_damage, mob/living/carbon/A) +/datum/behavior_delegate/ravager_base/melee_attack_modify_damage(original_damage, mob/living/carbon/carbon) var/damage_plus if(empower_targets) damage_plus = dmg_buff_per_target * empower_targets @@ -90,18 +90,18 @@ /datum/behavior_delegate/ravager_base/append_to_stat() . = list() var/shield_total = 0 - for (var/datum/xeno_shield/XS in bound_xeno.xeno_shields) - if (XS.shield_source == XENO_SHIELD_SOURCE_RAVAGER) - shield_total += XS.amount + for (var/datum/xeno_shield/xeno_shield in bound_xeno.xeno_shields) + if (xeno_shield.shield_source == XENO_SHIELD_SOURCE_RAVAGER) + shield_total += xeno_shield.amount . += "Empower Shield: [shield_total]" . += "Bonus Slash Damage: [dmg_buff_per_target * empower_targets]" /datum/behavior_delegate/ravager_base/on_life() var/datum/xeno_shield/rav_shield - for (var/datum/xeno_shield/XS in bound_xeno.xeno_shields) - if (XS.shield_source == XENO_SHIELD_SOURCE_RAVAGER) - rav_shield = XS + for (var/datum/xeno_shield/xeno_shield in bound_xeno.xeno_shields) + if (xeno_shield.shield_source == XENO_SHIELD_SOURCE_RAVAGER) + rav_shield = xeno_shield break if (rav_shield && ((rav_shield.last_damage_taken + shield_decay_time) < world.time)) From 674a093d200edbce2e3759d355690576e43aec1d Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 21:43:09 +0000 Subject: [PATCH 086/355] Automatic changelog for PR #4928 [ci skip] --- html/changelogs/AutoChangeLog-pr-4928.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4928.yml diff --git a/html/changelogs/AutoChangeLog-pr-4928.yml b/html/changelogs/AutoChangeLog-pr-4928.yml new file mode 100644 index 000000000000..743d3640706a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4928.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Replaces single letter vars in ravager code" \ No newline at end of file From b7dbcf9eb243d145b4aa4195794bd120ed1ef40b Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Thu, 16 Nov 2023 22:19:49 +0000 Subject: [PATCH 087/355] Refactors vendor global scope procs (#4918) # About the pull request Refactors awful vendor global scope procs. Really this entire file needs looking at why do vending machines need 1300 lines. This is a start at least. Also removed a bunch of commented out code at the bottom. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Refactors vending machine global scope procs /:cl: --- code/game/machinery/vending/cm_vending.dm | 206 ++++++++-------------- 1 file changed, 70 insertions(+), 136 deletions(-) diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index 70ef402ae4e0..f2eff1c23e56 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -443,7 +443,44 @@ GLOBAL_LIST_EMPTY(vending_products) //------------TGUI PROCS--------------- /obj/structure/machinery/cm_vending/ui_data(mob/user) - return vendor_user_ui_data(src, user) + if(vend_flags & VEND_LIMITED_INVENTORY) + return vendor_inventory_ui_data(user) + + . = list() + var/list/ui_listed_products = get_listed_products(user) + // list format + // ( + // name: str + // cost + // item reference + // allowed to buy flag + // item priority (mandatory/recommended/regular) + // ) + + var/list/stock_values = list() + + var/mob/living/carbon/human/marine = user + var/points = 0 + + if(instanced_vendor_points) + points = available_points_to_display + else + if(use_snowflake_points) + points = marine.marine_snowflake_points + else if(use_points) + points = marine.marine_points + + for (var/i in 1 to length(ui_listed_products)) + var/list/myprod = ui_listed_products[i] //we take one list from listed_products + var/prod_available = FALSE + var/p_cost = myprod[2] + var/category = myprod[4] + if(points >= p_cost && (!category || ((category in marine.marine_buyable_categories) && (marine.marine_buyable_categories[category])))) + prod_available = TRUE + stock_values += list(prod_available) + + .["stock_listing"] = stock_values + .["current_m_points"] = points /obj/structure/machinery/cm_vending/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) . = ..() @@ -530,7 +567,7 @@ GLOBAL_LIST_EMPTY(vending_products) vend_fail() return FALSE - if(!handle_vend(src, itemspec, user)) + if(!handle_vend(itemspec, user)) to_chat(user, SPAN_WARNING("You can't buy things from this category anymore.")) vend_fail() return FALSE @@ -548,7 +585,7 @@ GLOBAL_LIST_EMPTY(vending_products) vend_fail() return TRUE // one left and the player spam click during a lagspike. - vendor_successful_vend(src, itemspec, user) + vendor_successful_vend(itemspec, user) return TRUE add_fingerprint(user) @@ -779,7 +816,7 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/gear/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "gear" - .["displayed_categories"] = vendor_user_inventory_list(src, user) + .["displayed_categories"] = vendor_user_inventory_list(user) //------------CLOTHING VENDORS--------------- //clothing vendors automatically put item on user. QoL at it's finest. @@ -796,7 +833,7 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/clothing/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "clothing" - .["displayed_categories"] = vendor_user_inventory_list(src, user) + .["displayed_categories"] = vendor_user_inventory_list(user) //------------SORTED VENDORS--------------- //22.06.2019 Modified ex-"marine_selector" system that doesn't use points by Jeser. In theory, should replace all vendors. @@ -855,7 +892,7 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/sorted/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "sorted" - .["displayed_categories"] = vendor_user_inventory_list(src, user, null, 4) + .["displayed_categories"] = vendor_user_inventory_list(user, null, 4) /obj/structure/machinery/cm_vending/sorted/MouseDrop_T(atom/movable/A, mob/user) @@ -934,7 +971,7 @@ GLOBAL_LIST_EMPTY(vending_products) /obj/structure/machinery/cm_vending/own_points/ui_static_data(mob/user) . = ..(user) .["vendor_type"] = "gear" - .["displayed_categories"] = vendor_user_inventory_list(src, user) + .["displayed_categories"] = vendor_user_inventory_list(user) //------------ESSENTIALS SETS AND RANDOM GEAR SPAWNER--------------- @@ -1060,7 +1097,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( //---helper procs -/proc/vendor_user_inventory_list(vendor, mob/user, cost_index=2, priority_index=5) +/obj/structure/machinery/cm_vending/proc/vendor_user_inventory_list(mob/user, cost_index=2, priority_index=5) . = list() // default list format // ( @@ -1070,8 +1107,7 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( // allowed to buy flag // item priority (mandatory/recommended/regular) // ) - var/obj/structure/machinery/cm_vending/vending_machine = vendor - var/list/ui_listed_products = vending_machine.get_listed_products(user) + var/list/ui_listed_products = get_listed_products(user) for (var/i in 1 to length(ui_listed_products)) var/list/myprod = ui_listed_products[i] //we take one list from listed_products @@ -1113,10 +1149,9 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( var/last_category = .[last_index] last_category["items"] += list(display_item) -/proc/vendor_inventory_ui_data(vendor, mob/user) +/obj/structure/machinery/cm_vending/proc/vendor_inventory_ui_data(mob/user) . = list() - var/obj/structure/machinery/cm_vending/vending_machine = vendor - var/list/ui_listed_products = vending_machine.get_listed_products(user) + var/list/ui_listed_products = get_listed_products(user) var/list/ui_categories = list() for (var/i in 1 to length(ui_listed_products)) @@ -1125,92 +1160,50 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( ui_categories += list(p_amount) .["stock_listing"] = ui_categories -/proc/vendor_user_ui_data(obj/structure/machinery/cm_vending/vending_machine, mob/user) - if(vending_machine.vend_flags & VEND_LIMITED_INVENTORY) - return vendor_inventory_ui_data(vending_machine, user) - - . = list() - var/list/ui_listed_products = vending_machine.get_listed_products(user) - // list format - // ( - // name: str - // cost - // item reference - // allowed to buy flag - // item priority (mandatory/recommended/regular) - // ) - - var/list/stock_values = list() - - var/mob/living/carbon/human/marine = user - var/points = 0 - - if(vending_machine.instanced_vendor_points) - points = vending_machine.available_points_to_display - else - if(vending_machine.use_snowflake_points) - points = marine.marine_snowflake_points - else if(vending_machine.use_points) - points = marine.marine_points - - for (var/i in 1 to length(ui_listed_products)) - var/list/myprod = ui_listed_products[i] //we take one list from listed_products - var/prod_available = FALSE - var/p_cost = myprod[2] - var/category = myprod[4] - if(points >= p_cost && (!category || ((category in marine.marine_buyable_categories) && (marine.marine_buyable_categories[category])))) - prod_available = TRUE - stock_values += list(prod_available) - - .["stock_listing"] = stock_values - .["current_m_points"] = points - -/proc/vendor_successful_vend(obj/structure/machinery/cm_vending/vendor, list/itemspec, mob/living/carbon/human/user) - if(vendor.stat & IN_USE) +/obj/structure/machinery/cm_vending/proc/vendor_successful_vend(list/itemspec, mob/living/carbon/human/user) + if(stat & IN_USE) return - vendor.stat |= IN_USE + stat |= IN_USE - var/vend_flags = vendor.vend_flags - var/turf/target_turf = vendor.get_appropriate_vend_turf(user) + var/turf/target_turf = get_appropriate_vend_turf(user) if(LAZYLEN(itemspec)) //making sure it's not empty - if(vendor.vend_delay) - vendor.overlays.Cut() - vendor.icon_state = "[initial(vendor.icon_state)]_vend" - if(vendor.vend_sound) - playsound(vendor.loc, vendor.vend_sound, 25, 1, 2) //heard only near vendor - sleep(vendor.vend_delay) + if(vend_delay) + overlays.Cut() + icon_state = "[initial(icon_state)]_vend" + if(vend_sound) + playsound(loc, vend_sound, 25, 1, 2) //heard only near vendor + sleep(vend_delay) var/prod_type = itemspec[3] if(islist(prod_type)) for(var/each_type in prod_type) - vendor_successful_vend_one(vendor, each_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + vendor_successful_vend_one(each_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) else - vendor_successful_vend_one(vendor, prod_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) + vendor_successful_vend_one(prod_type, user, target_turf, itemspec[4] == MARINE_CAN_BUY_UNIFORM) if(vend_flags & VEND_LIMITED_INVENTORY) itemspec[2]-- if(vend_flags & VEND_LOAD_AMMO_BOXES) - vendor.update_derived_ammo_and_boxes(itemspec) + update_derived_ammo_and_boxes(itemspec) else to_chat(user, SPAN_WARNING("ERROR: itemspec is missing. Please report this to admins.")) sleep(15) - vendor.stat &= ~IN_USE - vendor.icon_state = initial(vendor.icon_state) - vendor.update_icon() + stat &= ~IN_USE + icon_state = initial(icon_state) + update_icon() -/proc/vendor_successful_vend_one(obj/structure/machinery/cm_vending/vendor, prod_type, mob/living/carbon/human/user, turf/target_turf, insignas_override) +/obj/structure/machinery/cm_vending/proc/vendor_successful_vend_one(prod_type, mob/living/carbon/human/user, turf/target_turf, insignas_override) var/obj/item/new_item - var/vend_flags = vendor.vend_flags if(ispath(prod_type, /obj/item)) if(ispath(prod_type, /obj/item/weapon/gun)) new_item = new prod_type(target_turf, TRUE) else if(prod_type == /obj/item/device/radio/headset/almayer/marine) - prod_type = vendor.headset_type + prod_type = headset_type else if(prod_type == /obj/item/clothing/gloves/marine) - prod_type = vendor.gloves_type + prod_type = gloves_type new_item = new prod_type(target_turf) new_item.add_fingerprint(user) else @@ -1239,13 +1232,13 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( if(vend_flags & VEND_TO_HAND) if(user.client?.prefs && (user.client?.prefs?.toggle_prefs & TOGGLE_VEND_ITEM_TO_HAND)) - if(vendor.Adjacent(user)) + if(Adjacent(user)) user.put_in_any_hand_if_possible(new_item, disable_warning = TRUE) new_item.post_vendor_spawn_hook(user) -/proc/handle_vend(obj/structure/machinery/cm_vending/vendor, list/listed_products, mob/living/carbon/human/vending_human) - if(vendor.vend_flags & VEND_USE_VENDOR_FLAGS) +/obj/structure/machinery/cm_vending/proc/handle_vend(list/listed_products, mob/living/carbon/human/vending_human) + if(vend_flags & VEND_USE_VENDOR_FLAGS) return TRUE var/buying_category = listed_products[4] if(buying_category) @@ -1281,62 +1274,3 @@ GLOBAL_LIST_INIT(cm_vending_gear_corresponding_types_list, list( stat &= ~IN_USE if(destroy) qdel(src) - -//------------HACKING--------------- - -//Hacking code from old vendors, in case someone will actually would like to add complex hacking in future. For now, simple access hacking I believe sufficient. -/* -/obj/structure/machinery/vending/proc/get_wire_descriptions() - return list( - VENDING_WIRE_EXTEND = "Inventory control computer", - VENDING_WIRE_IDSCAN = "ID scanner", - VENDING_WIRE_SHOCK = "Ground safety", - VENDING_WIRE_SHOOT_INV = "Dispenser motor control" - ) - -/obj/structure/machinery/vending/proc/isWireCut(wire) - return !(wires & getWireFlag(wire)) - -/obj/structure/machinery/vending/proc/cut(wire) - wires ^= getWireFlag(wire) - - switch(wire) - if(VENDING_WIRE_EXTEND) - src.extended_inventory = 0 - visible_message(SPAN_NOTICE("A weak yellow light turns off underneath \the [src].")) - if(VENDING_WIRE_SHOCK) - src.seconds_electrified = -1 - visible_message(SPAN_DANGER("Electric arcs shoot off from \the [src]!")) - if (VENDING_WIRE_SHOOT_INV) - if(!src.shoot_inventory) - src.shoot_inventory = TRUE - visible_message(SPAN_WARNING("\The [src] begins whirring noisily.")) - -/obj/structure/machinery/vending/proc/mend(wire) - wires |= getWireFlag(wire) - - switch(wire) - if(VENDING_WIRE_EXTEND) - src.extended_inventory = 1 - visible_message(SPAN_NOTICE("A weak yellow light turns on underneath \the [src].")) - if(VENDING_WIRE_SHOCK) - src.seconds_electrified = 0 - if (VENDING_WIRE_SHOOT_INV) - src.shoot_inventory = FALSE - visible_message(SPAN_NOTICE("\The [src] stops whirring.")) - -/obj/structure/machinery/vending/proc/pulse(wire) - switch(wire) - if(VENDING_WIRE_EXTEND) - src.extended_inventory = !src.extended_inventory - visible_message(SPAN_NOTICE("A weak yellow light turns [extended_inventory ? "on" : "off"] underneath \the [src].")) - if (VENDING_WIRE_SHOCK) - src.seconds_electrified = 30 - visible_message(SPAN_DANGER("Electric arcs shoot off from \the [src]!")) - if (VENDING_WIRE_SHOOT_INV) - src.shoot_inventory = !src.shoot_inventory - if(shoot_inventory) - visible_message(SPAN_WARNING("\The [src] begins whirring noisily.")) - else - visible_message(SPAN_NOTICE("\The [src] stops whirring.")) -*/ From 123994d58c6301f691bdc05409033831a506666b Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Thu, 16 Nov 2023 22:27:43 +0000 Subject: [PATCH 088/355] Automatic changelog for PR #4918 [ci skip] --- html/changelogs/AutoChangeLog-pr-4918.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4918.yml diff --git a/html/changelogs/AutoChangeLog-pr-4918.yml b/html/changelogs/AutoChangeLog-pr-4918.yml new file mode 100644 index 000000000000..a56efefb33fb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4918.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Refactors vending machine global scope procs" \ No newline at end of file From a6ecfcdfde9402153b8fd6ab2c31a2c3df29f372 Mon Sep 17 00:00:00 2001 From: Fira Date: Fri, 17 Nov 2023 00:01:16 +0000 Subject: [PATCH 089/355] review fixes --- code/game/machinery/medical_pod/bodyscanner.dm | 4 ++-- code/game/machinery/medical_pod/sleeper.dm | 4 ++-- code/modules/mob/living/carbon/carbon.dm | 6 +----- code/modules/mob/living/carbon/human/species/species.dm | 9 +-------- .../reagents/chemistry_properties/prop_neutral.dm | 5 ++--- 5 files changed, 8 insertions(+), 20 deletions(-) diff --git a/code/game/machinery/medical_pod/bodyscanner.dm b/code/game/machinery/medical_pod/bodyscanner.dm index 16584605a8c5..bbc3be7d5aae 100644 --- a/code/game/machinery/medical_pod/bodyscanner.dm +++ b/code/game/machinery/medical_pod/bodyscanner.dm @@ -204,7 +204,7 @@ "toxloss" = H.getToxLoss(), "cloneloss" = H.getCloneLoss(), "brainloss" = H.getBrainLoss(), -// "knocked_out" = H.knocked_out, + "knocked_out" = H.GetKnockOutValueNotADurationDoNotUse(), "bodytemp" = H.bodytemperature, "inaprovaline_amount" = H.reagents.get_reagent_amount("inaprovaline"), "dexalin_amount" = H.reagents.get_reagent_amount("dexalin"), @@ -263,7 +263,7 @@ s_class = occ["brainloss"] < 1 ? INTERFACE_GOOD : INTERFACE_BAD dat += "[SET_CLASS("  Approx. Brain Damage:", INTERFACE_PINK)] [SET_CLASS("[occ["brainloss"]]%", s_class)]

" - //dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% ([round(occ["knocked_out"] / 4)] seconds left!)
" + dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% (approximately [round(occ["knocked_out"] / 5)] seconds left!)
" dat += "[SET_CLASS("Body Temperature:", "#40628a")] [occ["bodytemp"]-T0C]°C ([occ["bodytemp"]*1.8-459.67]°F)

" s_class = occ["blood_amount"] > 448 ? INTERFACE_OKAY : INTERFACE_BAD diff --git a/code/game/machinery/medical_pod/sleeper.dm b/code/game/machinery/medical_pod/sleeper.dm index 5f4aa1c3aac6..0694783e2081 100644 --- a/code/game/machinery/medical_pod/sleeper.dm +++ b/code/game/machinery/medical_pod/sleeper.dm @@ -390,8 +390,8 @@ to_chat(user, "[]\t -Respiratory Damage %: []", (occupant.getOxyLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getOxyLoss()) to_chat(user, "[]\t -Toxin Content %: []", (occupant.getToxLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getToxLoss()) to_chat(user, "[]\t -Burn Severity %: []", (occupant.getFireLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getFireLoss()) - to_chat(user, SPAN_NOTICE(" Expected time till occupant can safely awake: (note: If health is below 20% these times are inaccurate)")) -// to_chat(user, SPAN_NOTICE(" \t [occupant.knocked_out / 5] second\s (if around 1 or 2 the sleeper is keeping them asleep.)")) + to_chat(user, SPAN_NOTICE(" Expected time till occupant can safely awake: (note: These times are always inaccurate)")) + to_chat(user, SPAN_NOTICE(" \t [occupant.GetKnockOutValueNotADurationDoNotUse() / 5] second\s (if around 1 or 2 the sleeper is keeping them asleep.)")) else to_chat(user, SPAN_NOTICE(" There is no one inside!")) return diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index ca06bfece88f..b63ce0174a22 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -260,11 +260,7 @@ /mob/living/carbon/proc/help_shake_act(mob/living/carbon/M) if(src == M) return - var/t_him = "them" - if(gender == MALE) - t_him = "him" - else if(gender == FEMALE) - t_him = "her" + var/t_him = p_them() var/shake_action if(stat == DEAD || HAS_TRAIT(src, TRAIT_INCAPACITATED) || sleeping) // incap implies also unconscious or knockedout diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 7942a796c316..2813c01df88c 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -179,14 +179,7 @@ /datum/species/proc/hug(mob/living/carbon/human/H, mob/living/carbon/target, target_zone = "chest") if(H.flags_emote) return - var/t_him = "them" - switch(target.gender) - if(MALE) - t_him = "him" - if(FEMALE) - t_him = "her" - else - t_him = "them" + var/t_him = target.p_them() if(target_zone == "head") attempt_rock_paper_scissors(H, target) diff --git a/code/modules/reagents/chemistry_properties/prop_neutral.dm b/code/modules/reagents/chemistry_properties/prop_neutral.dm index b3ec6620fb04..d17f12c16010 100644 --- a/code/modules/reagents/chemistry_properties/prop_neutral.dm +++ b/code/modules/reagents/chemistry_properties/prop_neutral.dm @@ -199,9 +199,8 @@ M.druggy = min(M.druggy + 0.5 * potency * delta_time, potency * 10) /datum/chem_property/neutral/hallucinogenic/process_overdose(mob/living/M, potency = 1, delta_time) - // Disabled automove because it's antiquated and won't work properly. Use Move() for this probably - //if(isturf(M.loc) && !istype(M.loc, /turf/open/space) && M.canmove && !M.is_mob_restrained()) - // step(M, pick(cardinal)) + if(isturf(M.loc) && !istype(M.loc, /turf/open/space) && (M.mobility_flags & MOBILITY_MOVE) && !M.is_mob_restrained()) + step(M, pick(cardinal)) M.hallucination += 10 M.make_jittery(5) From 935d77d82f6cddcf56fb8ba02c5a749bf3e11753 Mon Sep 17 00:00:00 2001 From: Fira Date: Fri, 17 Nov 2023 00:01:55 +0000 Subject: [PATCH 090/355] comment removal --- code/modules/mob/living/carbon/human/species/zombie.dm | 3 --- 1 file changed, 3 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/zombie.dm b/code/modules/mob/living/carbon/human/species/zombie.dm index ef2d7ef415ff..35b6d4e43edb 100644 --- a/code/modules/mob/living/carbon/human/species/zombie.dm +++ b/code/modules/mob/living/carbon/human/species/zombie.dm @@ -53,9 +53,6 @@ if(zombie.glasses) zombie.drop_inv_item_on_ground(zombie.glasses, FALSE, TRUE) if(zombie.wear_mask) zombie.drop_inv_item_on_ground(zombie.wear_mask, FALSE, TRUE) -// if(zombie.lying) -// zombie.lying = FALSE - var/obj/item/weapon/zombie_claws/ZC = new(zombie) ZC.icon_state = "claw_r" zombie.equip_to_slot_or_del(ZC, WEAR_R_HAND, TRUE) From 8af510aeb7ca143144fcd6c43c36c2fb0fdc9771 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Fri, 17 Nov 2023 01:12:40 +0000 Subject: [PATCH 091/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4843.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4904.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4907.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4918.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4919.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4920.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4922.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4925.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4928.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4929.yml | 5 ---- html/changelogs/AutoChangeLog-pr-4930.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4932.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4933.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4936.yml | 4 ---- html/changelogs/archive/2023-11.yml | 28 +++++++++++++++++++++++ 15 files changed, 28 insertions(+), 58 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4843.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4904.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4907.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4918.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4919.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4920.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4922.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4925.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4928.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4929.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4930.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4932.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4933.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4936.yml diff --git a/html/changelogs/AutoChangeLog-pr-4843.yml b/html/changelogs/AutoChangeLog-pr-4843.yml deleted file mode 100644 index 0da9bb3b705d..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4843.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - maptweak: "LV-624's Caves have had an aesthetic change regarding jungle tiles and flora." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4904.yml b/html/changelogs/AutoChangeLog-pr-4904.yml deleted file mode 100644 index c0f461dfe9f8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4904.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Doubleumc" -delete-after: True -changes: - - rscadd: "vehicles can be followed by ghosts" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4907.yml b/html/changelogs/AutoChangeLog-pr-4907.yml deleted file mode 100644 index b4247778ae43..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4907.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - admin: "VV 'Modify Transform' can now be used to flip objects." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4918.yml b/html/changelogs/AutoChangeLog-pr-4918.yml deleted file mode 100644 index a56efefb33fb..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4918.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - code_imp: "Refactors vending machine global scope procs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4919.yml b/html/changelogs/AutoChangeLog-pr-4919.yml deleted file mode 100644 index c67a26dd109a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4919.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Adds missing newline when viewing sec records as observer." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4920.yml b/html/changelogs/AutoChangeLog-pr-4920.yml deleted file mode 100644 index a7b3f592d88f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4920.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "sleepynecrons" -delete-after: True -changes: - - imageadd: "fixes biosuit body sprite not properly covering mobs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4922.yml b/html/changelogs/AutoChangeLog-pr-4922.yml deleted file mode 100644 index 46a9bb3654f5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4922.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Lurker can no longer tail jab through doors/structures." - - code_imp: "Var disambiguation, cleanup and removal of redundant typechecks in lurker code." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4925.yml b/html/changelogs/AutoChangeLog-pr-4925.yml deleted file mode 100644 index 6b2f6a49c480..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4925.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "realforest2001" -delete-after: True -changes: - - rscadd: "Faxes sent from HighCom fax machines now appear in their correct category." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4928.yml b/html/changelogs/AutoChangeLog-pr-4928.yml deleted file mode 100644 index 743d3640706a..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4928.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - code_imp: "Replaces single letter vars in ravager code" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4929.yml b/html/changelogs/AutoChangeLog-pr-4929.yml deleted file mode 100644 index 104693c96407..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4929.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SpartanBobby, GDS Pathe" -delete-after: True -changes: - - maptweak: "Updates bigred floortiles" - - maptweak: "Re-adds reactor to bigred" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4930.yml b/html/changelogs/AutoChangeLog-pr-4930.yml deleted file mode 100644 index 649f486d9393..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4930.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Fixes posters in CL office displaying IO description." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4932.yml b/html/changelogs/AutoChangeLog-pr-4932.yml deleted file mode 100644 index ddcca4066db7..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4932.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - code_imp: "Replaces single letter var in hivelord code" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4933.yml b/html/changelogs/AutoChangeLog-pr-4933.yml deleted file mode 100644 index 0530d1ccc95e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4933.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "casperr04" -delete-after: True -changes: - - bugfix: "Removes the ability to fulton bodies that can still be revived" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4936.yml b/html/changelogs/AutoChangeLog-pr-4936.yml deleted file mode 100644 index 508ba310d41f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4936.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Horizontal Almayer walls no longer change icon randomly, and now properly display damage overlays." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index fbec760f1e80..acb5a065d7b8 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -214,3 +214,31 @@ 2023-11-16: fira: - bugfix: Rooting effects should now properly update when stacked and unstacked. +2023-11-17: + Birdtalon: + - bugfix: Lurker can no longer tail jab through doors/structures. + - code_imp: Var disambiguation, cleanup and removal of redundant typechecks in lurker + code. + - bugfix: Adds missing newline when viewing sec records as observer. + - bugfix: Fixes posters in CL office displaying IO description. + - code_imp: Replaces single letter var in hivelord code + - code_imp: Replaces single letter vars in ravager code + - code_imp: Refactors vending machine global scope procs + Doubleumc: + - rscadd: vehicles can be followed by ghosts + SpartanBobby, GDS Pathe: + - maptweak: Updates bigred floortiles + - maptweak: Re-adds reactor to bigred + Steelpoint: + - maptweak: LV-624's Caves have had an aesthetic change regarding jungle tiles and + flora. + casperr04: + - bugfix: Removes the ability to fulton bodies that can still be revived + fira: + - admin: VV 'Modify Transform' can now be used to flip objects. + - bugfix: Horizontal Almayer walls no longer change icon randomly, and now properly + display damage overlays. + realforest2001: + - rscadd: Faxes sent from HighCom fax machines now appear in their correct category. + sleepynecrons: + - imageadd: fixes biosuit body sprite not properly covering mobs From 5722f70d4cfdcadb1b23892b57277a14527e3cdc Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 17 Nov 2023 10:30:26 +0300 Subject: [PATCH 092/355] Cloaked lurker devouring now shows a message to target again (#4937) # About the pull request Cloaked trait removed all visible messages from cloaked lurkers/scouts, so you currently can just approach someone while cloaked and devour them with little to no warning (only warning is the grab itself, but it's easy to miss/disregard as friendly). # Explain why it's good for the game Was way too cheesy and likely not intended. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: ihatethisengine add: Cloaked lurker devouring now shows a message to target again. /:cl: --- code/modules/mob/mob_grab.dm | 46 +++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm index 39cc5b25e519..a234c5962f72 100644 --- a/code/modules/mob/mob_grab.dm +++ b/code/modules/mob/mob_grab.dm @@ -60,8 +60,8 @@ if(!ishuman(user)) //only humans can reinforce a grab. if (isxeno(user)) - var/mob/living/carbon/xenomorph/X = user - X.pull_power(grabbed_thing) + var/mob/living/carbon/xenomorph/xeno = user + xeno.pull_power(grabbed_thing) return @@ -102,21 +102,21 @@ if(M == grabbed_thing) attack_self(user) else if(M == user && user.pulling && isxeno(user)) - var/mob/living/carbon/xenomorph/X = user - var/mob/living/carbon/pulled = X.pulling + var/mob/living/carbon/xenomorph/xeno = user + var/mob/living/carbon/pulled = xeno.pulling if(!istype(pulled)) return if(isxeno(pulled) || issynth(pulled)) - to_chat(X, SPAN_WARNING("That wouldn't taste very good.")) + to_chat(xeno, SPAN_WARNING("That wouldn't taste very good.")) return 0 if(pulled.buckled) - to_chat(X, SPAN_WARNING("[pulled] is buckled to something.")) + to_chat(xeno, SPAN_WARNING("[pulled] is buckled to something.")) return 0 if(pulled.stat == DEAD && !pulled.chestburst) - to_chat(X, SPAN_WARNING("Ew, [pulled] is already starting to rot.")) + to_chat(xeno, SPAN_WARNING("Ew, [pulled] is already starting to rot.")) return 0 - if(X.stomach_contents.len) //Only one thing in the stomach at a time, please - to_chat(X, SPAN_WARNING("You already have something in your belly, there's no way that will fit.")) + if(xeno.stomach_contents.len) //Only one thing in the stomach at a time, please + to_chat(xeno, SPAN_WARNING("You already have something in your belly, there's no way that will fit.")) return 0 /* Saving this in case we want to allow devouring of dead bodies UNLESS their client is still online somewhere if(pulled.client) //The client is still inside the body @@ -126,19 +126,21 @@ to_chat(src, "You start to devour [pulled] but realize \he is already dead.") return */ if(user.action_busy) - to_chat(X, SPAN_WARNING("You are already busy with something.")) + to_chat(xeno, SPAN_WARNING("You are already busy with something.")) return - X.visible_message(SPAN_DANGER("[X] starts to devour [pulled]!"), \ + xeno.visible_message(SPAN_DANGER("[xeno] starts to devour [pulled]!"), \ SPAN_DANGER("You start to devour [pulled]!"), null, 5) - if(do_after(X, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) - if(isxeno(pulled.loc) && !X.stomach_contents.len) - to_chat(X, SPAN_WARNING("Someone already ate \the [pulled].")) + if(HAS_TRAIT(xeno, TRAIT_CLOAKED)) //cloaked don't show the visible message, so we gotta work around + to_chat(pulled, FONT_SIZE_HUGE(SPAN_DANGER("[xeno] is trying to devour you!"))) + if(do_after(xeno, 50, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE)) + if(isxeno(pulled.loc) && !xeno.stomach_contents.len) + to_chat(xeno, SPAN_WARNING("Someone already ate \the [pulled].")) return 0 - if(X.pulling == pulled && !pulled.buckled && (pulled.stat != DEAD || pulled.chestburst) && !X.stomach_contents.len) //make sure you've still got them in your claws, and alive - if(SEND_SIGNAL(pulled, COMSIG_MOB_DEVOURED, X) & COMPONENT_CANCEL_DEVOUR) + if(xeno.pulling == pulled && !pulled.buckled && (pulled.stat != DEAD || pulled.chestburst) && !xeno.stomach_contents.len) //make sure you've still got them in your claws, and alive + if(SEND_SIGNAL(pulled, COMSIG_MOB_DEVOURED, xeno) & COMPONENT_CANCEL_DEVOUR) return FALSE - X.visible_message(SPAN_WARNING("[X] devours [pulled]!"), \ + xeno.visible_message(SPAN_WARNING("[xeno] devours [pulled]!"), \ SPAN_WARNING("You devour [pulled]!"), null, 5) if(ishuman(pulled)) @@ -146,10 +148,10 @@ pulled_human.disable_lights() //Then, we place the mob where it ought to be - X.stomach_contents.Add(pulled) - X.devour_timer = world.time + 500 + rand(0,200) // 50-70 seconds - pulled.forceMove(X) + xeno.stomach_contents.Add(pulled) + xeno.devour_timer = world.time + 500 + rand(0,200) // 50-70 seconds + pulled.forceMove(xeno) return TRUE - if(!(pulled in X.stomach_contents)) - to_chat(X, SPAN_WARNING("You stop devouring \the [pulled]. \He probably tasted gross anyways.")) + if(!(pulled in xeno.stomach_contents)) + to_chat(xeno, SPAN_WARNING("You stop devouring \the [pulled]. \He probably tasted gross anyways.")) return 0 From d7b9ee7a3c3f400b872ee02731cb168b0c69cf52 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 17 Nov 2023 07:38:27 +0000 Subject: [PATCH 093/355] Automatic changelog for PR #4937 [ci skip] --- html/changelogs/AutoChangeLog-pr-4937.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4937.yml diff --git a/html/changelogs/AutoChangeLog-pr-4937.yml b/html/changelogs/AutoChangeLog-pr-4937.yml new file mode 100644 index 000000000000..4c7bb250ae61 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4937.yml @@ -0,0 +1,4 @@ +author: "ihatethisengine" +delete-after: True +changes: + - rscadd: "Cloaked lurker devouring now shows a message to target again." \ No newline at end of file From 1b3f85ba5667148d4a2c7b88c47ead2dd23f8f31 Mon Sep 17 00:00:00 2001 From: fira Date: Fri, 17 Nov 2023 08:30:42 +0100 Subject: [PATCH 094/355] Add inactivity protection for mods (#4938) # About the pull request As said in CL :cl: admin: Moderators are now immune to inactivity kick, much like Admins. /:cl: --- code/controllers/subsystem/inactivity.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/controllers/subsystem/inactivity.dm b/code/controllers/subsystem/inactivity.dm index 5edd4e8c5294..6b8542444040 100644 --- a/code/controllers/subsystem/inactivity.dm +++ b/code/controllers/subsystem/inactivity.dm @@ -17,7 +17,7 @@ SUBSYSTEM_DEF(inactivity) return for(var/client/current as anything in GLOB.clients) - if(current.admin_holder && current.admin_holder.rights & R_ADMIN) //Skip admins. + if(current.admin_holder && current.admin_holder.rights & R_MOD) //Skip admins. continue if(current.is_afk(INACTIVITY_KICK)) if(!istype(current.mob, /mob/dead)) From 3bf18e6a68c7e761d492b74fe36b200605890725 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 17 Nov 2023 07:51:35 +0000 Subject: [PATCH 095/355] Automatic changelog for PR #4938 [ci skip] --- html/changelogs/AutoChangeLog-pr-4938.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4938.yml diff --git a/html/changelogs/AutoChangeLog-pr-4938.yml b/html/changelogs/AutoChangeLog-pr-4938.yml new file mode 100644 index 000000000000..8c843723269f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4938.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - admin: "Moderators are now immune to inactivity kick, much like Admins." \ No newline at end of file From 97b9dd215c8e371717ab927bc81c5a5788ec7cf0 Mon Sep 17 00:00:00 2001 From: fira Date: Fri, 17 Nov 2023 09:15:42 +0100 Subject: [PATCH 096/355] Admin Vehicles Fixes (#4912) # About the pull request Fixes a bunch of things with vehicles in general and for admin usage. * Tank couldn't collide with vehicle blockers for past 2 years due to an apparent oversight, letting it get eg. into caves. This is fixed * Fixed an issue with some hardpoints covering the turret of the tank and its hardpoints * Made the admin spawned 'tank coupon' tank properly broken for repair * Added an 'APC coupon' in the same vein as Tank's * Because Tank Coupon is a Techwebs relic and now an admin tool, it doesn't spawn VC pamphlets in ASRS anymore. Spawn them yourself! * Fixed a bug where bringing up a Tank via coupon as first vehicle would only give you access to APC gear in vendor. * Added bitfield definition for vehicle_flags # Explain why it's good for the game I don't know if it is, but it's at least good for the admins using these # Changelog :cl: fix: Fixed the tank driving through vehicle blockers and accessing "deep" parts of the map it wasn't intended to push. fix: Tentatively fixed some visual bugs with turret based vehicles. fix: Fixed using the tank coupon as first vehicle spawn causing Gear Vendor to still give out APC gear. admin: Added an APC coupon in same vein as Tank Coupon for Admins to use. admin: Tank/APC Coupons now spawn broken down versions of the vehicles, for the full VC experience. You want a ready to use one, just spawn it. admin: Tank/APC coupons do not spawn VC pamphlets in ASRS anymore. admin: Added a vehicle_flag for tanks to bypass blockers (in a legit fashion this time). Abuse at your discretion. /:cl: --------- Co-authored-by: Doubleumc --- code/__DEFINES/vehicle.dm | 5 +- code/_globalvars/bitfields.dm | 8 +++ .../vending/vendor_types/crew/vehicle_crew.dm | 6 ++- code/game/objects/structures/blocker.dm | 12 +++++ code/game/supplyshuttle.dm | 22 ++++++--- code/modules/cm_tech/implements/tank.dm | 49 +++++++------------ code/modules/vehicles/apc/apc.dm | 7 +++ code/modules/vehicles/multitile/multitile.dm | 29 ++++------- code/modules/vehicles/tank/tank.dm | 8 +++ 9 files changed, 84 insertions(+), 62 deletions(-) diff --git a/code/__DEFINES/vehicle.dm b/code/__DEFINES/vehicle.dm index 9c6685085788..8a1617229926 100644 --- a/code/__DEFINES/vehicle.dm +++ b/code/__DEFINES/vehicle.dm @@ -53,5 +53,6 @@ #define VEHICLE_CLASS_LIGHT (1<<2) //light class armor (APC, tank) #define VEHICLE_CLASS_MEDIUM (1<<3) //medium class armor (tank) #define VEHICLE_CLASS_HEAVY (1<<4) //heavy class armor (tank) - -#define TANK_POPLOCK 90 +// Other vehicle flags +/// Vehicle can bypass vehicle blockers, typically going further into maps than intended +#define VEHICLE_BYPASS_BLOCKERS (1<<5) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 540c8f085601..b85aa18fdb6b 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -461,3 +461,11 @@ DEFINE_BITFIELD(vend_flags, list( "VEND_FACTION_THEMES" = VEND_FACTION_THEMES, "VEND_USE_VENDOR_FLAGS" = VEND_USE_VENDOR_FLAGS, )) + +DEFINE_BITFIELD(vehicle_flags, list( + "VEHICLE_CLASS_WEAK" = VEHICLE_CLASS_WEAK, + "VEHICLE_CLASS_LIGHT" = VEHICLE_CLASS_LIGHT, + "VEHICLE_CLASS_MEDIUM" = VEHICLE_CLASS_MEDIUM, + "VEHICLE_CLASS_HEAVY" = VEHICLE_CLASS_HEAVY, + "VEHICLE_BYPASS_BLOCKERS" = VEHICLE_BYPASS_BLOCKERS, +)) diff --git a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm index 891a2a907b39..d352936b5434 100644 --- a/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm +++ b/code/game/machinery/vending/vendor_types/crew/vehicle_crew.dm @@ -55,8 +55,10 @@ SIGNAL_HANDLER UnregisterSignal(SSdcs, COMSIG_GLOB_VEHICLE_ORDERED) - selected_vehicle = "APC" - available_categories &= ~(VEHICLE_ARMOR_AVAILABLE|VEHICLE_INTEGRAL_AVAILABLE) //APC lacks these, so we need to remove these flags to be able to access spare parts section + if(!selected_vehicle) + selected_vehicle = "APC" // The whole thing seems to be based upon the assumption you unlock tank as an override, defaulting to APC + if(selected_vehicle == "APC") + available_categories &= ~(VEHICLE_ARMOR_AVAILABLE|VEHICLE_INTEGRAL_AVAILABLE) //APC lacks these, so we need to remove these flags to be able to access spare parts section /obj/structure/machinery/cm_vending/gear/vehicle_crew/get_listed_products(mob/user) var/list/display_list = list() diff --git a/code/game/objects/structures/blocker.dm b/code/game/objects/structures/blocker.dm index 284daf0028aa..f85b1e65fff5 100644 --- a/code/game/objects/structures/blocker.dm +++ b/code/game/objects/structures/blocker.dm @@ -105,9 +105,21 @@ /obj/structure/blocker/forcefield/vehicles types = list(/obj/vehicle/) + +/obj/structure/blocker/forcefield/vehicles/handle_vehicle_bump(obj/vehicle/multitile/multitile_vehicle) + if(multitile_vehicle.vehicle_flags & VEHICLE_BYPASS_BLOCKERS) + return TRUE + return FALSE + /obj/structure/blocker/forcefield/multitile_vehicles types = list(/obj/vehicle/multitile/) + +/obj/structure/blocker/forcefield/multitile_vehicles/handle_vehicle_bump(obj/vehicle/multitile/multitile_vehicle) + if(multitile_vehicle.vehicle_flags & VEHICLE_BYPASS_BLOCKERS) + return TRUE + return FALSE + /obj/structure/blocker/forcefield/human types = list(/mob/living/carbon/human) icon_state = "purple_line" diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index cf7f81b2204f..422a42c66541 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -1315,6 +1315,14 @@ var/datum/controller/supply/supply_controller = new() /datum/vehicle_order/tank/has_vehicle_lock() return +/datum/vehicle_order/tank/broken + name = "Smashed M34A2 Longstreet Light Tank" + ordered_vehicle = /obj/effect/vehicle_spawner/tank/hull/broken + +/datum/vehicle_order/tank/plain + name = "M34A2 Longstreet Light Tank" + ordered_vehicle = /obj/effect/vehicle_spawner/tank + /datum/vehicle_order/apc name = "M577 Armored Personnel Carrier" ordered_vehicle = /obj/effect/vehicle_spawner/apc/decrepit @@ -1327,18 +1335,19 @@ var/datum/controller/supply/supply_controller = new() name = "M577-CMD Armored Personnel Carrier" ordered_vehicle = /obj/effect/vehicle_spawner/apc_cmd/decrepit +/datum/vehicle_order/apc/empty + name = "Barebones M577 Armored Personal Carrier" + ordered_vehicle = /obj/effect/vehicle_spawner/apc/unarmed/broken + /obj/structure/machinery/computer/supplycomp/vehicle/Initialize() . = ..() vehicles = list( - /datum/vehicle_order/apc, - /datum/vehicle_order/apc/med, - /datum/vehicle_order/apc/cmd, + new /datum/vehicle_order/apc(), + new /datum/vehicle_order/apc/med(), + new /datum/vehicle_order/apc/cmd(), ) - for(var/order as anything in vehicles) - new order - if(!VehicleElevatorConsole) VehicleElevatorConsole = src @@ -1408,6 +1417,7 @@ var/datum/controller/supply/supply_controller = new() return if(!is_admin_level(SSshuttle.vehicle_elevator.z)) + to_chat(usr, SPAN_WARNING("The elevator needs to be in the cargo bay dock to call a vehicle up. Ask someone to send it away.")) return if(ismaintdrone(usr)) diff --git a/code/modules/cm_tech/implements/tank.dm b/code/modules/cm_tech/implements/tank.dm index 1ce83c37eae3..ae7dfc580e38 100644 --- a/code/modules/cm_tech/implements/tank.dm +++ b/code/modules/cm_tech/implements/tank.dm @@ -1,16 +1,3 @@ -/datum/supply_packs/vc_kit - name = "Vehicle Crewman Kits" - contains = list( - /obj/item/pamphlet/skill/vc, - /obj/item/pamphlet/skill/vc, - ) - cost = 0 - containertype = /obj/structure/closet/crate/supply - containername = "vehicle crewman kits crate" - buyable = 0 - group = "Operations" - iteration_needed = null - /obj/item/pamphlet/skill/vc name = "vehicle training manual" desc = "A manual used to quickly impart vital knowledge on driving vehicles." @@ -18,22 +5,30 @@ trait = /datum/character_trait/skills/vc bypass_pamphlet_limit = TRUE -/obj/item/tank_coupon - name = "tank coupon" - desc = "A coupon to be used for ASRS Vehicle Consoles to grant the wearer a TANK! One use only." +/obj/item/vehicle_coupon + name = "vehicle coupon" + desc = "A coupon to be used for ASRS Vehicle Consoles to grant the wearer an actual APC! Yeah baby, we're done walking! One use only. The ASRS elevator must be manually sent to lower level. Special restrictions may apply. No warranty." icon = 'icons/obj/items/pamphlets.dmi' icon_state = "pamphlet_written" item_state = "pamphlet_written" + var/vehicle_type = /datum/vehicle_order/apc/empty + var/vehicle_category = "APC" -/obj/item/tank_coupon/attack_self(mob/user) +/obj/item/vehicle_coupon/tank + name = "tank coupon" + desc = "We're done playing! This coupon allows the ship crew to retrieve a complete Longstreet tank from Vehicle ASRS. Make sure to send the ASRS lift down so it can be retrieved. One use only. LTB not included. Comes with free friendly fire." + vehicle_type = /datum/vehicle_order/tank/broken + vehicle_category = "TANK" + +/obj/item/vehicle_coupon/attack_self(mob/user) if(QDELETED(src)) return - if(redeem_tank()) - to_chat(user, SPAN_WARNING("\The [src] catches fire as it is read, resetting the ASRS Vehicle system!")) + if(redeem_vehicle()) + to_chat(user, SPAN_WARNING("\The [src] catches fire as it is read and resets the ASRS Vehicle system! Send the lift down and haul your prize up.")) qdel(src) return ..() -/obj/item/tank_coupon/proc/redeem_tank(mob/user) +/obj/item/vehicle_coupon/proc/redeem_vehicle(mob/user) SHOULD_NOT_SLEEP(TRUE) . = FALSE var/obj/structure/machinery/computer/supplycomp/vehicle/comp = VehicleElevatorConsole @@ -46,7 +41,7 @@ comp.spent = FALSE QDEL_NULL_LIST(comp.vehicles) comp.vehicles = list( - new /datum/vehicle_order/tank() + new vehicle_type(), ) comp.allowed_roles = null comp.req_access = list() @@ -56,17 +51,7 @@ gearcomp.req_access = list() gearcomp.req_one_access = list() gearcomp.vendor_role = list() - gearcomp.selected_vehicle = "TANK" + gearcomp.selected_vehicle = vehicle_category gearcomp.available_categories = VEHICLE_ALL_AVAILABLE - var/datum/supply_packs/VK = /datum/supply_packs/vc_kit - var/pack = initial(VK.name) - var/datum/supply_order/O = new /datum/supply_order() - O.ordernum = supply_controller.ordernum - supply_controller.ordernum++ - O.object = supply_controller.supply_packs[pack] - O.orderedby = MAIN_AI_SYSTEM - O.approvedby = MAIN_AI_SYSTEM - supply_controller.shoppinglist += O - return TRUE diff --git a/code/modules/vehicles/apc/apc.dm b/code/modules/vehicles/apc/apc.dm index d71db37074f1..24b137a6804a 100644 --- a/code/modules/vehicles/apc/apc.dm +++ b/code/modules/vehicles/apc/apc.dm @@ -256,9 +256,16 @@ GLOBAL_LIST_EMPTY(command_apc_list) handle_direction(APC) APC.update_icon() + return APC + /obj/effect/vehicle_spawner/apc/unarmed/load_hardpoints(obj/vehicle/multitile/apc/V) return +/obj/effect/vehicle_spawner/apc/unarmed/broken/spawn_vehicle() + var/obj/vehicle/multitile/apc/apc = ..() + load_damage(apc) + apc.update_icon() + //PRESET: default hardpoints, destroyed /obj/effect/vehicle_spawner/apc/unarmed/decrepit/spawn_vehicle() var/obj/vehicle/multitile/apc/unarmed/APC = new (loc) diff --git a/code/modules/vehicles/multitile/multitile.dm b/code/modules/vehicles/multitile/multitile.dm index 9e4d2c9d297b..c8138c5b8f86 100644 --- a/code/modules/vehicles/multitile/multitile.dm +++ b/code/modules/vehicles/multitile/multitile.dm @@ -240,26 +240,15 @@ var/amt_hardpoints = LAZYLEN(hardpoints) if(amt_hardpoints) - var/list/hardpoint_images[amt_hardpoints] - var/list/C[HDPT_LAYER_MAX] - - // Counting sort the images into a list so we get the hardpoint images sorted by layer - for(var/obj/item/hardpoint/H in hardpoints) - C[H.hdpt_layer] += 1 - - for(var/i = 2 to HDPT_LAYER_MAX) - C[i] += C[i-1] - - for(var/obj/item/hardpoint/H in hardpoints) - hardpoint_images[C[H.hdpt_layer]] = H.get_hardpoint_image() - C[H.hdpt_layer] -= 1 - - for(var/i = 1 to amt_hardpoints) - var/image/I = hardpoint_images[i] - // get_hardpoint_image() can return a list of images - if(istype(I)) - I.layer = layer + (i*0.1) - overlays += I + for(var/obj/item/hardpoint/hardpoint in hardpoints) + var/image/hardpoint_image = hardpoint.get_hardpoint_image() + if(istype(hardpoint_image)) + hardpoint_image.layer = layer + hardpoint.hdpt_layer * 0.1 + else if(islist(hardpoint_image)) + var/list/image/hardpoint_image_list = hardpoint_image // Linter will complain about iterating on "an image" otherwise + for(var/image/subimage in hardpoint_image_list) + subimage.layer = layer + hardpoint.hdpt_layer * 0.1 + overlays += hardpoint_image if(clamped) var/image/J = image(icon, icon_state = "vehicle_clamp", layer = layer+0.1) diff --git a/code/modules/vehicles/tank/tank.dm b/code/modules/vehicles/tank/tank.dm index ad69f80cdfb6..fd953b04100a 100644 --- a/code/modules/vehicles/tank/tank.dm +++ b/code/modules/vehicles/tank/tank.dm @@ -189,6 +189,8 @@ handle_direction(TANK) TANK.update_icon() + return TANK + /obj/effect/vehicle_spawner/tank/load_hardpoints(obj/vehicle/multitile/tank/V) V.add_hardpoint(new /obj/item/hardpoint/holder/tank_turret) @@ -201,6 +203,12 @@ /obj/effect/vehicle_spawner/tank/hull/load_hardpoints(obj/vehicle/multitile/tank/V) return +//Just the hull and it's broken TOO, you get the full experience +/obj/effect/vehicle_spawner/tank/hull/broken/spawn_vehicle() + var/obj/vehicle/multitile/tank/tonk = ..() + load_damage(tonk) + tonk.update_icon() + //PRESET: default hardpoints, destroyed /obj/effect/vehicle_spawner/tank/decrepit/spawn_vehicle() var/obj/vehicle/multitile/tank/TANK = new (loc) From 145da65e508a460ccd6f593afdfaebc4a4cc93a2 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 17 Nov 2023 08:23:56 +0000 Subject: [PATCH 097/355] Automatic changelog for PR #4912 [ci skip] --- html/changelogs/AutoChangeLog-pr-4912.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4912.yml diff --git a/html/changelogs/AutoChangeLog-pr-4912.yml b/html/changelogs/AutoChangeLog-pr-4912.yml new file mode 100644 index 000000000000..29dd976c4068 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4912.yml @@ -0,0 +1,10 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "Fixed the tank driving through vehicle blockers and accessing \"deep\" parts of the map it wasn't intended to push." + - bugfix: "Tentatively fixed some visual bugs with turret based vehicles." + - bugfix: "Fixed using the tank coupon as first vehicle spawn causing Gear Vendor to still give out APC gear." + - admin: "Added an APC coupon in same vein as Tank Coupon for Admins to use." + - admin: "Tank/APC Coupons now spawn broken down versions of the vehicles, for the full VC experience. You want a ready to use one, just spawn it." + - admin: "Tank/APC coupons do not spawn VC pamphlets in ASRS anymore." + - admin: "Added a vehicle_flag for tanks to bypass blockers (in a legit fashion this time). Abuse at your discretion." \ No newline at end of file From 86f2489ffffa2cda5ae26227ca8d1ae552c42f30 Mon Sep 17 00:00:00 2001 From: Cthulhu80 <122310258+Cthulhu80@users.noreply.github.com> Date: Fri, 17 Nov 2023 17:57:39 -0500 Subject: [PATCH 098/355] Adds drawing to tacmaps (#4475) # About the pull request Features - Gives cic (sos, xo, co) and the queen the ability to draw on the tactical map and then announce it to their respective factions - All marine faction members now are able to access the tactical map announcement through the stat panel, which can be viewed at any time. - Xenos in addition to having the normal tactical map will also have access to their own canvas map that can be viewed when Queen is on ovi. - Ghosts can view the tactical maps for both factions in the Ghost tab as well as from ghost alert popups. - Admins can view all the round's drawings and optionally delete them. # Explain why it's good for the game Hopefully this will spice things up for cic, queen and players alike. The idea is command and the queen would now be able to better convey what they want from their faction, which should help with general cohesion and likely expand strategic plays on both sides. (don't abuse it or harry will take it away, or make it more exclusive to the queen and co) # Testing photographs and procedure Screen Shot 2023-09-23 at 6 38 25 PM Screen Shot 2023-09-23 at 6 39 08 PM Screen Shot 2023-09-23 at 6 40 22 PM Screen Shot 2023-09-23 at 6 42 54 PM # Changelog :cl: Cthulhu80, Drathek add: Adds drawing to tactical maps, viewable via stat panel for marines and xeno tacmap for xenos. fix: Corrupted (and other hives) now have separate tactical maps. /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> Co-authored-by: Drulikar --- code/__DEFINES/hud.dm | 2 + code/__DEFINES/minimap.dm | 18 +- code/__HELPERS/icons.dm | 7 +- code/_globalvars/global_lists.dm | 8 + code/_globalvars/misc.dm | 16 + code/controllers/subsystem/minimap.dm | 491 +++++++++++++++++- code/game/gamemodes/cm_initialize.dm | 26 +- .../game/machinery/computer/communications.dm | 2 +- .../computer/groundside_operations.dm | 6 +- code/game/objects/items/devices/cictablet.dm | 5 +- code/modules/admin/admin_verbs.dm | 1 + .../admin/tacmap_panel/tacmap_admin_panel.dm | 9 + .../tacmap_panel/tacmap_admin_panel_tgui.dm | 152 ++++++ code/modules/almayer/machinery.dm | 13 +- code/modules/client/client_procs.dm | 9 +- .../structures/special/pylon_core.dm | 4 +- code/modules/cm_aliens/structures/tunnel.dm | 2 +- code/modules/cm_marines/overwatch.dm | 5 +- code/modules/cm_preds/yaut_machines.dm | 1 + .../desert_dam/motion_sensor/sensortower.dm | 2 +- code/modules/escape_menu/admin_buttons.dm | 26 +- code/modules/maptext_alerts/screen_alerts.dm | 5 + code/modules/mob/dead/observer/observer.dm | 21 + code/modules/mob/living/carbon/human/human.dm | 4 +- .../mob/living/carbon/xenomorph/Xenomorph.dm | 6 +- .../xenomorph/abilities/queen/queen_powers.dm | 2 +- .../living/carbon/xenomorph/xeno_defines.dm | 3 +- code/modules/mob/new_player/new_player.dm | 10 +- code/modules/vehicles/apc/apc_command.dm | 2 +- colonialmarines.dme | 2 + html/statbrowser.js | 9 + tgui/packages/tgui/interfaces/CanvasLayer.js | 311 +++++++++++ tgui/packages/tgui/interfaces/DrawnMap.js | 110 ++++ .../tgui/interfaces/OverwatchConsole.js | 1 - .../tgui/interfaces/TacmapAdminPanel.js | 164 ++++++ tgui/packages/tgui/interfaces/TacticalMap.tsx | 326 +++++++++++- .../tgui/styles/interfaces/TacticalMap.scss | 4 + 37 files changed, 1720 insertions(+), 65 deletions(-) create mode 100644 code/modules/admin/tacmap_panel/tacmap_admin_panel.dm create mode 100644 code/modules/admin/tacmap_panel/tacmap_admin_panel_tgui.dm create mode 100644 tgui/packages/tgui/interfaces/CanvasLayer.js create mode 100644 tgui/packages/tgui/interfaces/DrawnMap.js create mode 100644 tgui/packages/tgui/interfaces/TacmapAdminPanel.js diff --git a/code/__DEFINES/hud.dm b/code/__DEFINES/hud.dm index 38e5693dcbe5..deee80c7a91d 100644 --- a/code/__DEFINES/hud.dm +++ b/code/__DEFINES/hud.dm @@ -23,3 +23,5 @@ #define NOTIFY_ATTACK "attack" #define NOTIFY_ORBIT "orbit" #define NOTIFY_JOIN_XENO "join_xeno" +#define NOTIFY_XENO_TACMAP "xeno_tacmap" +#define NOTIFY_USCM_TACMAP "uscm_tacmap" diff --git a/code/__DEFINES/minimap.dm b/code/__DEFINES/minimap.dm index 71d0ed8e7445..003d723600c4 100644 --- a/code/__DEFINES/minimap.dm +++ b/code/__DEFINES/minimap.dm @@ -5,7 +5,17 @@ #define MINIMAP_FLAG_UPP (1<<3) #define MINIMAP_FLAG_CLF (1<<4) #define MINIMAP_FLAG_YAUTJA (1<<5) -#define MINIMAP_FLAG_ALL (1<<6) - 1 +#define MINIMAP_FLAG_XENO_CORRUPTED (1<<6) +#define MINIMAP_FLAG_XENO_ALPHA (1<<7) +#define MINIMAP_FLAG_XENO_BRAVO (1<<8) +#define MINIMAP_FLAG_XENO_CHARLIE (1<<9) +#define MINIMAP_FLAG_XENO_DELTA (1<<10) +#define MINIMAP_FLAG_XENO_FERAL (1<<11) +#define MINIMAP_FLAG_XENO_TAMED (1<<12) +#define MINIMAP_FLAG_XENO_MUTATED (1<<13) +#define MINIMAP_FLAG_XENO_FORSAKEN (1<<14) +#define MINIMAP_FLAG_XENO_RENEGADE (1<<15) +#define MINIMAP_FLAG_ALL (1<<16) - 1 ///Converts the overworld x and y to minimap x and y values #define MINIMAP_SCALE 2 @@ -77,9 +87,3 @@ GLOBAL_LIST_INIT(all_minimap_flags, bitfield2list(MINIMAP_FLAG_ALL)) #define TACMAP_BASE_OCCLUDED "Occluded" #define TACMAP_BASE_OPEN "Open" - -#define TACMAP_DEFAULT "Default" -#define TACMAP_XENO "Xeno" -#define TACMAP_YAUTJA "Yautja" -#define TACMAP_FACTION "Faction" - diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index 1116f1acb2a8..24e39ff16c89 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -682,8 +682,9 @@ world * * moving - whether or not to use a moving state for the given icon * * sourceonly - if TRUE, only generate the asset and send back the asset url, instead of tags that display the icon to players * * extra_clases - string of extra css classes to use when returning the icon string + * * keyonly - if TRUE, only returns the asset key to use get_asset_url manually. Overrides sourceonly. */ -/proc/icon2html(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null) +/proc/icon2html(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null, keyonly = FALSE) if (!thing) return @@ -714,6 +715,8 @@ world SSassets.transport.register_asset(name, thing) for (var/thing2 in targets) SSassets.transport.send_assets(thing2, name) + if(keyonly) + return name if(sourceonly) return SSassets.transport.get_asset_url(name) return "" @@ -756,6 +759,8 @@ world SSassets.transport.register_asset(key, rsc_ref, file_hash, icon_path) for (var/client_target in targets) SSassets.transport.send_assets(client_target, key) + if(keyonly) + return key if(sourceonly) return SSassets.transport.get_asset_url(key) return "" diff --git a/code/_globalvars/global_lists.dm b/code/_globalvars/global_lists.dm index 1e1e9cefd5db..3ba92a7c4d0c 100644 --- a/code/_globalvars/global_lists.dm +++ b/code/_globalvars/global_lists.dm @@ -6,6 +6,14 @@ GLOBAL_LIST_EMPTY(CMBFaxes) GLOBAL_LIST_EMPTY(GeneralFaxes) //Inter-machine faxes GLOBAL_LIST_EMPTY(fax_contents) //List of fax contents to maintain it even if source paper is deleted +//datum containing a reference to the flattend map png url, the actual png is stored in the user's cache. +GLOBAL_LIST_EMPTY(uscm_flat_tacmap_data) +GLOBAL_LIST_EMPTY(xeno_flat_tacmap_data) + +//datum containing the svg overlay coords in array format. +GLOBAL_LIST_EMPTY(uscm_svg_tacmap_data) +GLOBAL_LIST_EMPTY(xeno_svg_tacmap_data) + GLOBAL_LIST_EMPTY(failed_fultons) //A list of fultoned items which weren't collected and fell back down GLOBAL_LIST_EMPTY(larva_burst_by_hive) diff --git a/code/_globalvars/misc.dm b/code/_globalvars/misc.dm index 44f4b2c4010f..cd6708198eae 100644 --- a/code/_globalvars/misc.dm +++ b/code/_globalvars/misc.dm @@ -14,6 +14,22 @@ GLOBAL_LIST_INIT(pill_icon_mappings, map_pill_icons()) /// In-round override to default OOC color GLOBAL_VAR(ooc_color_override) +// tacmap cooldown for xenos and marines +GLOBAL_VAR_INIT(uscm_canvas_cooldown, 0) +GLOBAL_VAR_INIT(xeno_canvas_cooldown, 0) + +// getFlatIcon cooldown for xenos and marines +GLOBAL_VAR_INIT(uscm_flatten_map_icon_cooldown, 0) +GLOBAL_VAR_INIT(xeno_flatten_map_icon_cooldown, 0) + +// latest unannounced flat tacmap for xenos and marines +GLOBAL_VAR(uscm_unannounced_map) +GLOBAL_VAR(xeno_unannounced_map) + +//global tacmaps for action button access +GLOBAL_DATUM_INIT(uscm_tacmap_status, /datum/tacmap/drawing/status_tab_view, new) +GLOBAL_DATUM_INIT(xeno_tacmap_status, /datum/tacmap/drawing/status_tab_view/xeno, new) + /// List of roles that can be setup for each gamemode GLOBAL_LIST_INIT(gamemode_roles, list()) diff --git a/code/controllers/subsystem/minimap.dm b/code/controllers/subsystem/minimap.dm index 6f5b9303a91f..d28fe916291a 100644 --- a/code/controllers/subsystem/minimap.dm +++ b/code/controllers/subsystem/minimap.dm @@ -256,8 +256,6 @@ SUBSYSTEM_DEF(minimaps) removal_cbs[target] = CALLBACK(src, PROC_REF(removeimage), blip, target) RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(remove_marker)) - - /** * removes an image from raw tracked lists, invoked by callback */ @@ -322,7 +320,7 @@ SUBSYSTEM_DEF(minimaps) minimaps_by_z["[z_level]"].images_assoc["[flag]"] -= source /** - * Fetches a /atom/movable/screen/minimap instance or creates on if none exists + * Fetches a /atom/movable/screen/minimap instance or creates one if none exists * Note this does not destroy them when the map is unused, might be a potential thing to do? * Arguments: * * zlevel: zlevel to fetch map for @@ -338,6 +336,170 @@ SUBSYSTEM_DEF(minimaps) hashed_minimaps[hash] = map return map +/** + * Fetches the datum containing an announced flattend map png reference. + * + * Arguments: + * * faction: FACTION_MARINE or XENO_HIVE_NORMAL + */ +/proc/get_tacmap_data_png(faction) + var/list/map_list + + if(faction == FACTION_MARINE) + map_list = GLOB.uscm_flat_tacmap_data + else if(faction == XENO_HIVE_NORMAL) + map_list = GLOB.xeno_flat_tacmap_data + else + return null + + var/map_length = length(map_list) + + if(map_length == 0) + return null + + return map_list[map_length] + +/** + * Fetches the datum containing the latest unannounced flattend map png reference. + * + * Arguments: + * * faction: FACTION_MARINE or XENO_HIVE_NORMAL + */ +/proc/get_unannounced_tacmap_data_png(faction) + if(faction == FACTION_MARINE) + return GLOB.uscm_unannounced_map + else if(faction == XENO_HIVE_NORMAL) + return GLOB.xeno_unannounced_map + + return null + +/** + * Fetches the last set of svg coordinates for the tacmap drawing. + * + * Arguments: + * * faction: which faction get the map for: FACTION_MARINE or XENO_HIVE_NORMAL + */ +/proc/get_tacmap_data_svg(faction) + var/list/map_list + + if(faction == FACTION_MARINE) + map_list = GLOB.uscm_svg_tacmap_data + else if(faction == XENO_HIVE_NORMAL) + map_list = GLOB.xeno_svg_tacmap_data + else + return null + + var/map_length = length(map_list) + + if(map_length == 0) + return null + + return map_list[map_length] + +/** + * Re-sends relevant flattened tacmaps to a single client. + * + * Arguments: + * * user: The mob that is either an observer, marine, or xeno + */ +/proc/resend_current_map_png(mob/user) + if(!user.client) + return + + var/is_observer = user.faction == FACTION_NEUTRAL && isobserver(user) + if(is_observer || user.faction == FACTION_MARINE) + // Send marine maps + var/datum/flattened_tacmap/latest = get_tacmap_data_png(FACTION_MARINE) + if(latest) + SSassets.transport.send_assets(user.client, latest.asset_key) + var/datum/flattened_tacmap/unannounced = get_unannounced_tacmap_data_png(FACTION_MARINE) + if(unannounced && (!latest || latest.asset_key != unannounced.asset_key)) + SSassets.transport.send_assets(user.client, unannounced.asset_key) + + var/mob/living/carbon/xenomorph/xeno = user + if(is_observer || istype(xeno) && xeno.hivenumber == XENO_HIVE_NORMAL) + // Send xeno maps + var/datum/flattened_tacmap/latest = get_tacmap_data_png(XENO_HIVE_NORMAL) + if(latest) + SSassets.transport.send_assets(user.client, latest.asset_key) + var/datum/flattened_tacmap/unannounced = get_unannounced_tacmap_data_png(XENO_HIVE_NORMAL) + if(unannounced && (!latest || latest.asset_key != unannounced.asset_key)) + SSassets.transport.send_assets(user.client, unannounced.asset_key) + +/** + * Flattens the current map and then distributes it for the specified faction as an unannounced map. + * + * Arguments: + * * faction: Which faction to distribute the map to: FACTION_MARINE or XENO_HIVE_NORMAL + * Return: + * * Returns a boolean value, TRUE if the operation was successful, FALSE if it was not (on cooldown generally). + */ +/datum/tacmap/drawing/proc/distribute_current_map_png(faction) + if(faction == FACTION_MARINE) + if(!COOLDOWN_FINISHED(GLOB, uscm_flatten_map_icon_cooldown)) + return FALSE + COOLDOWN_START(GLOB, uscm_flatten_map_icon_cooldown, flatten_map_cooldown_time) + else if(faction == XENO_HIVE_NORMAL) + if(!COOLDOWN_FINISHED(GLOB, xeno_flatten_map_icon_cooldown)) + return FALSE + COOLDOWN_START(GLOB, xeno_flatten_map_icon_cooldown, flatten_map_cooldown_time) + else + return FALSE + + var/icon/flat_map = getFlatIcon(map_holder.map, appearance_flags = TRUE) + if(!flat_map) + to_chat(usr, SPAN_WARNING("A critical error has occurred! Contact a coder.")) // tf2heavy: "Oh, this is bad!" + return FALSE + + // Send to only relevant clients + var/list/faction_clients = list() + for(var/client/client as anything in GLOB.clients) + if(!client || !client.mob) + continue + var/mob/client_mob = client.mob + if(client_mob.faction == faction) + faction_clients += client + else if(client_mob.faction == FACTION_NEUTRAL && isobserver(client_mob)) + faction_clients += client + else if(isxeno(client_mob)) + var/mob/living/carbon/xenomorph/xeno = client_mob + if(xeno.hivenumber == faction) + faction_clients += client + + // This may be unnecessary to do this way if the asset url is always the same as the lookup key + var/flat_tacmap_key = icon2html(flat_map, faction_clients, keyonly = TRUE) + if(!flat_tacmap_key) + to_chat(usr, SPAN_WARNING("A critical error has occurred! Contact a coder.")) + return FALSE + var/flat_tacmap_png = SSassets.transport.get_asset_url(flat_tacmap_key) + var/datum/flattened_tacmap/new_flat = new(flat_tacmap_png, flat_tacmap_key) + + if(faction == FACTION_MARINE) + GLOB.uscm_unannounced_map = new_flat + else //if(faction == XENO_HIVE_NORMAL) + GLOB.xeno_unannounced_map = new_flat + + return TRUE + +/** + * Globally stores svg coords for a given faction. + * + * Arguments: + * * faction: which faction to save the data for: FACTION_MARINE or XENO_HIVE_NORMAL + * * svg_coords: an array of coordinates corresponding to an svg. + * * ckey: the ckey of the user who submitted this + */ +/datum/tacmap/drawing/proc/store_current_svg_coords(faction, svg_coords, ckey) + var/datum/svg_overlay/svg_store_overlay = new(svg_coords, ckey) + + if(faction == FACTION_MARINE) + GLOB.uscm_svg_tacmap_data += svg_store_overlay + else if(faction == XENO_HIVE_NORMAL) + GLOB.xeno_svg_tacmap_data += svg_store_overlay + else + qdel(svg_store_overlay) + debug_log("SVG coordinates for [faction] are not implemented!") + /datum/controller/subsystem/minimaps/proc/fetch_tacmap_datum(zlevel, flags) var/hash = "[zlevel]-[flags]" if(hashed_tacmaps[hash]) @@ -442,7 +604,7 @@ SUBSYSTEM_DEF(minimaps) marker_flags = MINIMAP_FLAG_USCM /datum/action/minimap/observer - minimap_flags = MINIMAP_FLAG_XENO|MINIMAP_FLAG_USCM|MINIMAP_FLAG_UPP|MINIMAP_FLAG_CLF|MINIMAP_FLAG_UPP + minimap_flags = MINIMAP_FLAG_ALL marker_flags = NONE hidden = TRUE @@ -452,17 +614,61 @@ SUBSYSTEM_DEF(minimaps) var/targeted_ztrait = ZTRAIT_GROUND var/atom/owner + /// tacmap holder for holding the minimap var/datum/tacmap_holder/map_holder +/datum/tacmap/drawing + /// A url that will point to the wiki map for the current map as a fall back image + var/static/wiki_map_fallback + + /// color selection for the tactical map canvas, defaults to black. + var/toolbar_color_selection = "black" + var/toolbar_updated_selection = "black" + + var/canvas_cooldown_time = 4 MINUTES + var/flatten_map_cooldown_time = 3 MINUTES + + /// boolean value to keep track if the canvas has been updated or not, the value is used in tgui state. + var/updated_canvas = FALSE + /// current flattend map + var/datum/flattened_tacmap/new_current_map + /// previous flattened map + var/datum/flattened_tacmap/old_map + /// current svg + var/datum/svg_overlay/current_svg + + var/action_queue_change = 0 + + /// The last time the map has been flattened - used as a key to trick react into updating the canvas + var/last_update_time = 0 + /// A temporary lock out time before we can open the new canvas tab to allow the tacmap time to fire + var/tacmap_ready_time = 0 + /datum/tacmap/New(atom/source, minimap_type) allowed_flags = minimap_type owner = source +/datum/tacmap/drawing/status_tab_view/New() + var/datum/tacmap/drawing/status_tab_view/uscm_tacmap + allowed_flags = MINIMAP_FLAG_USCM + owner = uscm_tacmap + +/datum/tacmap/drawing/status_tab_view/xeno/New() + var/datum/tacmap/drawing/status_tab_view/xeno/xeno_tacmap + allowed_flags = MINIMAP_FLAG_XENO + owner = xeno_tacmap + /datum/tacmap/Destroy() map_holder = null owner = null return ..() +/datum/tacmap/drawing/Destroy() + new_current_map = null + old_map = null + current_svg = null + return ..() + /datum/tacmap/tgui_interact(mob/user, datum/tgui/ui) if(!map_holder) var/level = SSmapping.levels_by_trait(targeted_ztrait) @@ -476,11 +682,216 @@ SUBSYSTEM_DEF(minimaps) ui = new(user, src, "TacticalMap") ui.open() +/datum/tacmap/drawing/tgui_interact(mob/user, datum/tgui/ui) + var/mob/living/carbon/xenomorph/xeno = user + var/is_xeno = istype(xeno) + var/faction = is_xeno ? xeno.hivenumber : user.faction + if(faction == FACTION_NEUTRAL && isobserver(user)) + faction = allowed_flags == MINIMAP_FLAG_XENO ? XENO_HIVE_NORMAL : FACTION_MARINE + + new_current_map = get_unannounced_tacmap_data_png(faction) + old_map = get_tacmap_data_png(faction) + current_svg = get_tacmap_data_svg(faction) + + var/use_live_map = faction == FACTION_MARINE && skillcheck(user, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT) || is_xeno + + if(use_live_map && !map_holder) + var/level = SSmapping.levels_by_trait(targeted_ztrait) + if(!level[1]) + return + map_holder = SSminimaps.fetch_tacmap_datum(level[1], allowed_flags) + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + if(!wiki_map_fallback) + var/wiki_url = CONFIG_GET(string/wikiurl) + var/obj/item/map/current_map/new_map = new + if(wiki_url && new_map.html_link) + wiki_map_fallback ="[wiki_url]/[new_map.html_link]" + else + debug_log("Failed to determine fallback wiki map! Attempted '[wiki_url]/[new_map.html_link]'") + qdel(new_map) + + // Ensure we actually have the map image sent + resend_current_map_png(user) + + if(use_live_map) + tacmap_ready_time = SSminimaps.next_fire + 2 SECONDS + addtimer(CALLBACK(src, PROC_REF(on_tacmap_fire), faction), SSminimaps.next_fire - world.time + 1 SECONDS) + user.client.register_map_obj(map_holder.map) + + ui = new(user, src, "TacticalMap") + ui.open() + +/datum/tacmap/drawing/ui_data(mob/user) + var/list/data = list() + + data["newCanvasFlatImage"] = new_current_map?.flat_tacmap + data["oldCanvasFlatImage"] = old_map?.flat_tacmap + data["svgData"] = current_svg?.svg_data + + data["actionQueueChange"] = action_queue_change + + data["toolbarColorSelection"] = toolbar_color_selection + data["toolbarUpdatedSelection"] = toolbar_updated_selection + + if(isxeno(user)) + data["canvasCooldown"] = max(GLOB.xeno_canvas_cooldown - world.time, 0) + else + data["canvasCooldown"] = max(GLOB.uscm_canvas_cooldown - world.time, 0) + + data["nextCanvasTime"] = canvas_cooldown_time + data["updatedCanvas"] = updated_canvas + + data["lastUpdateTime"] = last_update_time + data["tacmapReady"] = world.time > tacmap_ready_time + + return data + /datum/tacmap/ui_static_data(mob/user) var/list/data = list() - data["mapRef"] = map_holder.map_ref + data["mapRef"] = map_holder?.map_ref + data["canDraw"] = FALSE + data["canViewTacmap"] = TRUE + data["canViewCanvas"] = FALSE + data["isXeno"] = FALSE + return data +/datum/tacmap/drawing/ui_static_data(mob/user) + var/list/data = list() + + data["mapRef"] = map_holder?.map_ref + data["canDraw"] = FALSE + data["mapFallback"] = wiki_map_fallback + + var/mob/living/carbon/xenomorph/xeno = user + var/is_xeno = istype(xeno) + var/faction = is_xeno ? xeno.hivenumber : user.faction + + data["isXeno"] = is_xeno + data["canViewTacmap"] = is_xeno + data["canViewCanvas"] = faction == FACTION_MARINE || faction == XENO_HIVE_NORMAL + + if(faction == FACTION_MARINE && skillcheck(user, SKILL_LEADERSHIP, SKILL_LEAD_EXPERT) || faction == XENO_HIVE_NORMAL && isqueen(user)) + data["canDraw"] = TRUE + data["canViewTacmap"] = TRUE + + return data + +/datum/tacmap/drawing/status_tab_view/ui_static_data(mob/user) + var/list/data = list() + data["mapFallback"] = wiki_map_fallback + data["canDraw"] = FALSE + data["canViewTacmap"] = FALSE + data["canViewCanvas"] = TRUE + data["isXeno"] = FALSE + + return data + +/datum/tacmap/drawing/status_tab_view/xeno/ui_static_data(mob/user) + var/list/data = list() + data["mapFallback"] = wiki_map_fallback + data["canDraw"] = FALSE + data["canViewTacmap"] = FALSE + data["canViewCanvas"] = TRUE + data["isXeno"] = TRUE + + return data + +/datum/tacmap/drawing/ui_close(mob/user) + . = ..() + action_queue_change = 0 + updated_canvas = FALSE + toolbar_color_selection = "black" + toolbar_updated_selection = "black" + +/datum/tacmap/drawing/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/mob/user = ui.user + var/mob/living/carbon/xenomorph/xeno = user + var/faction = istype(xeno) ? xeno.hivenumber : user.faction + if(faction == FACTION_NEUTRAL && isobserver(user)) + faction = allowed_flags == MINIMAP_FLAG_XENO ? XENO_HIVE_NORMAL : FACTION_MARINE + + switch (action) + if ("menuSelect") + if(params["selection"] != "new canvas") + if(updated_canvas) + updated_canvas = FALSE + toolbar_updated_selection = toolbar_color_selection // doing this if it == canvas can cause a latency issue with the stroke. + else + distribute_current_map_png(faction) + last_update_time = world.time + // An attempt to get the image to load on first try in the interface, but doesn't seem always reliable + + new_current_map = get_unannounced_tacmap_data_png(faction) + old_map = get_tacmap_data_png(faction) + current_svg = get_tacmap_data_svg(faction) + + if ("updateCanvas") + // forces state change, this will export the svg. + toolbar_updated_selection = "export" + updated_canvas = TRUE + action_queue_change += 1 + + if ("clearCanvas") + toolbar_updated_selection = "clear" + updated_canvas = FALSE + action_queue_change += 1 + + if ("undoChange") + toolbar_updated_selection = "undo" + updated_canvas = FALSE + action_queue_change += 1 + + if ("selectColor") + var/newColor = params["color"] + if(newColor) + toolbar_color_selection = newColor + toolbar_updated_selection = newColor + action_queue_change += 1 + + if ("onDraw") + updated_canvas = FALSE + + if ("selectAnnouncement") + if(!istype(params["image"], /list)) // potentially very serious? + return FALSE + + if(faction == FACTION_MARINE) + GLOB.uscm_flat_tacmap_data += new_current_map + else if(faction == XENO_HIVE_NORMAL) + GLOB.xeno_flat_tacmap_data += new_current_map + + store_current_svg_coords(faction, params["image"], user) + current_svg = get_tacmap_data_svg(faction) + old_map = get_tacmap_data_png(faction) + + if(faction == FACTION_MARINE) + COOLDOWN_START(GLOB, uscm_canvas_cooldown, canvas_cooldown_time) + var/mob/living/carbon/human/human_leader = user + for(var/datum/squad/current_squad in RoleAuthority.squads) + current_squad.send_maptext("Tactical map update in progress...", "Tactical Map:") + human_leader.visible_message(SPAN_BOLDNOTICE("Tactical map update in progress...")) + playsound_client(human_leader.client, "sound/effects/sos-morse-code.ogg") + notify_ghosts(header = "Tactical Map", message = "The USCM tactical map has been updated.", ghost_sound = "sound/effects/sos-morse-code.ogg", notify_volume = 80, action = NOTIFY_USCM_TACMAP, enter_link = "uscm_tacmap=1", enter_text = "View", source = owner) + + else if(faction == XENO_HIVE_NORMAL) + var/mutable_appearance/appearance = mutable_appearance(icon('icons/mob/hud/actions_xeno.dmi'), "toggle_queen_zoom") + COOLDOWN_START(GLOB, xeno_canvas_cooldown, canvas_cooldown_time) + xeno_maptext("The Queen has updated your hive mind map", "You sense something unusual...", faction) + notify_ghosts(header = "Tactical Map", message = "The Xenomorph tactical map has been updated.", ghost_sound = "sound/voice/alien_distantroar_3.ogg", notify_volume = 50, action = NOTIFY_XENO_TACMAP, enter_link = "xeno_tacmap=1", enter_text = "View", source = user, alert_overlay = appearance) + + toolbar_updated_selection = toolbar_color_selection + message_admins("[key_name(user)] has updated the
tactical map for [faction].") + updated_canvas = FALSE + + return TRUE + /datum/tacmap/ui_status(mob/user) if(!(isatom(owner))) return UI_INTERACTIVE @@ -493,7 +904,7 @@ SUBSYSTEM_DEF(minimaps) else return UI_CLOSE -/datum/tacmap/xeno/ui_status(mob/user) +/datum/tacmap/drawing/xeno/ui_status(mob/user) if(!isxeno(user)) return UI_CLOSE @@ -516,3 +927,71 @@ SUBSYSTEM_DEF(minimaps) /datum/tacmap_holder/Destroy() map = null return ..() + +/datum/flattened_tacmap + var/flat_tacmap + var/asset_key + var/time + +/datum/flattened_tacmap/New(flat_tacmap, asset_key) + src.flat_tacmap = flat_tacmap + src.asset_key = asset_key + src.time = time_stamp() + +/datum/svg_overlay + var/svg_data + var/ckey + var/name + var/time + +/datum/svg_overlay/New(svg_data, mob/user) + src.svg_data = svg_data + src.ckey = user?.persistent_ckey + src.name = user?.real_name + src.time = time_stamp() + +/// Callback when timer indicates the tacmap is flattenable now +/datum/tacmap/drawing/proc/on_tacmap_fire(faction) + distribute_current_map_png(faction) + last_update_time = world.time + +/// Gets the MINIMAP_FLAG for the provided faction or hivenumber if one exists +/proc/get_minimap_flag_for_faction(faction) + switch(faction) + if(XENO_HIVE_NORMAL) + return MINIMAP_FLAG_XENO + if(FACTION_MARINE) + return MINIMAP_FLAG_USCM + if(FACTION_UPP) + return MINIMAP_FLAG_UPP + if(FACTION_WY) + return MINIMAP_FLAG_USCM + if(FACTION_CLF) + return MINIMAP_FLAG_CLF + if(FACTION_PMC) + return MINIMAP_FLAG_PMC + if(FACTION_YAUTJA) + return MINIMAP_FLAG_YAUTJA + if(XENO_HIVE_CORRUPTED) + return MINIMAP_FLAG_XENO_CORRUPTED + if(XENO_HIVE_ALPHA) + return MINIMAP_FLAG_XENO_ALPHA + if(XENO_HIVE_BRAVO) + return MINIMAP_FLAG_XENO_BRAVO + if(XENO_HIVE_CHARLIE) + return MINIMAP_FLAG_XENO_CHARLIE + if(XENO_HIVE_DELTA) + return MINIMAP_FLAG_XENO_DELTA + if(XENO_HIVE_FERAL) + return MINIMAP_FLAG_XENO_FERAL + if(XENO_HIVE_TAMED) + return MINIMAP_FLAG_XENO_TAMED + if(XENO_HIVE_MUTATED) + return MINIMAP_FLAG_XENO_MUTATED + if(XENO_HIVE_FORSAKEN) + return MINIMAP_FLAG_XENO_FORSAKEN + if(XENO_HIVE_YAUTJA) + return MINIMAP_FLAG_YAUTJA + if(XENO_HIVE_RENEGADE) + return MINIMAP_FLAG_XENO_RENEGADE + return 0 diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index effd3325f887..17a255009089 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -423,7 +423,7 @@ Additional game mode variables. for(var/mob_name in picked_hive.banished_ckeys) if(picked_hive.banished_ckeys[mob_name] == xeno_candidate.ckey) to_chat(xeno_candidate, SPAN_WARNING("You are banished from the [picked_hive], you may not rejoin unless the Queen re-admits you or dies.")) - return + return FALSE if(isnewplayer(xeno_candidate)) var/mob/new_player/noob = xeno_candidate noob.close_spawn_windows() @@ -443,9 +443,6 @@ Additional game mode variables. return FALSE new_xeno = userInput - if(!xeno_candidate) - return FALSE - if(!(new_xeno in GLOB.living_xeno_list) || new_xeno.stat == DEAD) to_chat(xeno_candidate, SPAN_WARNING("You cannot join if the xenomorph is dead.")) return FALSE @@ -479,14 +476,14 @@ Additional game mode variables. else new_xeno = pick(available_xenos_non_ssd) //Just picks something at random. if(istype(new_xeno) && xeno_candidate && xeno_candidate.client) if(isnewplayer(xeno_candidate)) - var/mob/new_player/N = xeno_candidate - N.close_spawn_windows() + var/mob/new_player/noob = xeno_candidate + noob.close_spawn_windows() for(var/mob_name in new_xeno.hive.banished_ckeys) if(new_xeno.hive.banished_ckeys[mob_name] == xeno_candidate.ckey) to_chat(xeno_candidate, SPAN_WARNING("You are banished from this hive, You may not rejoin unless the Queen re-admits you or dies.")) - return + return FALSE if(transfer_xeno(xeno_candidate, new_xeno)) - return 1 + return TRUE to_chat(xeno_candidate, "JAS01: Something went wrong, tell a coder.") /datum/game_mode/proc/attempt_to_join_as_facehugger(mob/xeno_candidate) @@ -614,20 +611,21 @@ Additional game mode variables. /datum/game_mode/proc/transfer_xeno(xeno_candidate, mob/living/new_xeno) if(!xeno_candidate || !isxeno(new_xeno) || QDELETED(new_xeno)) return FALSE + var/datum/mind/xeno_candidate_mind if(ismind(xeno_candidate)) xeno_candidate_mind = xeno_candidate else if(ismob(xeno_candidate)) - var/mob/M = xeno_candidate - if(M.mind) - xeno_candidate_mind = M.mind + var/mob/xeno_candidate_mob = xeno_candidate + if(xeno_candidate_mob.mind) + xeno_candidate_mind = xeno_candidate_mob.mind else - xeno_candidate_mind = new /datum/mind(M.key, M.ckey) + xeno_candidate_mind = new /datum/mind(xeno_candidate_mob.key, xeno_candidate_mob.ckey) xeno_candidate_mind.active = TRUE xeno_candidate_mind.current = new_xeno else if(isclient(xeno_candidate)) - var/client/C = xeno_candidate - xeno_candidate_mind = new /datum/mind(C.key, C.ckey) + var/client/xeno_candidate_client = xeno_candidate + xeno_candidate_mind = new /datum/mind(xeno_candidate_client.key, xeno_candidate_client.ckey) xeno_candidate_mind.active = TRUE xeno_candidate_mind.current = new_xeno else diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 3332577683fe..b39f59530adc 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -43,7 +43,7 @@ var/stat_msg1 var/stat_msg2 - var/datum/tacmap/tacmap + var/datum/tacmap/drawing/tacmap var/minimap_type = MINIMAP_FLAG_USCM processing = TRUE diff --git a/code/game/machinery/computer/groundside_operations.dm b/code/game/machinery/computer/groundside_operations.dm index 9856ae8f970e..f2b36276c8eb 100644 --- a/code/game/machinery/computer/groundside_operations.dm +++ b/code/game/machinery/computer/groundside_operations.dm @@ -25,7 +25,11 @@ add_pmcs = FALSE else if(SSticker.current_state < GAME_STATE_PLAYING) RegisterSignal(SSdcs, COMSIG_GLOB_MODE_PRESETUP, PROC_REF(disable_pmc)) - tacmap = new(src, minimap_type) + if(announcement_faction == FACTION_MARINE) + tacmap = new /datum/tacmap/drawing(src, minimap_type) + else + tacmap = new(src, minimap_type) // Non-drawing version + return ..() /obj/structure/machinery/computer/groundside_operations/Destroy() diff --git a/code/game/objects/items/devices/cictablet.dm b/code/game/objects/items/devices/cictablet.dm index 6abd70980136..69e745da0803 100644 --- a/code/game/objects/items/devices/cictablet.dm +++ b/code/game/objects/items/devices/cictablet.dm @@ -24,7 +24,10 @@ COOLDOWN_DECLARE(distress_cooldown) /obj/item/device/cotablet/Initialize() - tacmap = new(src, minimap_type) + if(announcement_faction == FACTION_MARINE) + tacmap = new /datum/tacmap/drawing(src, minimap_type) + else + tacmap = new(src, minimap_type) // Non-drawing version if(SSticker.mode && MODE_HAS_FLAG(MODE_FACTION_CLASH)) add_pmcs = FALSE else if(SSticker.current_state < GAME_STATE_PLAYING) diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 7d9127313094..5d02917f70ee 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -69,6 +69,7 @@ var/list/admin_verbs_default = list( /client/proc/toggle_ares_ping, /client/proc/cmd_admin_say, /*staff-only ooc chat*/ /client/proc/cmd_mod_say, /* alternate way of typing asay, no different than cmd_admin_say */ + /client/proc/cmd_admin_tacmaps_panel, ) var/list/admin_verbs_admin = list( diff --git a/code/modules/admin/tacmap_panel/tacmap_admin_panel.dm b/code/modules/admin/tacmap_panel/tacmap_admin_panel.dm new file mode 100644 index 000000000000..dcc8c7d5b664 --- /dev/null +++ b/code/modules/admin/tacmap_panel/tacmap_admin_panel.dm @@ -0,0 +1,9 @@ +/client/proc/cmd_admin_tacmaps_panel() + set name = "Tacmaps Panel" + set category = "Admin.Panels" + + if(!check_rights(R_ADMIN|R_MOD)) + to_chat(src, "Only administrators may use this command.") + return + + GLOB.tacmap_admin_panel.tgui_interact(mob) diff --git a/code/modules/admin/tacmap_panel/tacmap_admin_panel_tgui.dm b/code/modules/admin/tacmap_panel/tacmap_admin_panel_tgui.dm new file mode 100644 index 000000000000..e4b6f6846031 --- /dev/null +++ b/code/modules/admin/tacmap_panel/tacmap_admin_panel_tgui.dm @@ -0,0 +1,152 @@ +GLOBAL_DATUM_INIT(tacmap_admin_panel, /datum/tacmap_admin_panel, new) + +#define LATEST_SELECTION -1 + +/datum/tacmap_admin_panel + var/name = "Tacmap Panel" + /// The index picked last for USCM (zero indexed), -1 will try to select latest if it exists + var/uscm_selection = LATEST_SELECTION + /// The index picked last for Xenos (zero indexed), -1 will try to select latest if it exists + var/xeno_selection = LATEST_SELECTION + /// A url that will point to the wiki map for the current map as a fall back image + var/static/wiki_map_fallback + /// The last time the map selection was changed - used as a key to trick react into updating the map + var/last_update_time = 0 + +/datum/tacmap_admin_panel/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + if(!wiki_map_fallback) + var/wiki_url = CONFIG_GET(string/wikiurl) + var/obj/item/map/current_map/new_map = new + if(wiki_url && new_map.html_link) + wiki_map_fallback ="[wiki_url]/[new_map.html_link]" + else + debug_log("Failed to determine fallback wiki map! Attempted '[wiki_url]/[new_map.html_link]'") + qdel(new_map) + + // Ensure we actually have the latest map images sent (recache can handle older/different faction maps) + resend_current_map_png(user) + + ui = new(user, src, "TacmapAdminPanel", "Tacmap Panel") + ui.open() + +/datum/tacmap_admin_panel/ui_state(mob/user) + return GLOB.admin_state + +/datum/tacmap_admin_panel/ui_data(mob/user) + var/list/data = list() + var/list/uscm_ckeys = list() + var/list/xeno_ckeys = list() + var/list/uscm_names = list() + var/list/xeno_names = list() + var/list/uscm_times = list() + var/list/xeno_times = list() + + // Assumption: Length of flat_tacmap_data is the same as svg_tacmap_data + var/uscm_length = length(GLOB.uscm_svg_tacmap_data) + if(uscm_selection < 0 || uscm_selection >= uscm_length) + uscm_selection = uscm_length - 1 + for(var/i = 1, i <= uscm_length, i++) + var/datum/svg_overlay/current_svg = GLOB.uscm_svg_tacmap_data[i] + uscm_ckeys += current_svg.ckey + uscm_names += current_svg.name + uscm_times += current_svg.time + data["uscm_ckeys"] = uscm_ckeys + data["uscm_names"] = uscm_names + data["uscm_times"] = uscm_times + + var/xeno_length = length(GLOB.xeno_svg_tacmap_data) + if(xeno_selection < 0 || xeno_selection >= xeno_length) + xeno_selection = xeno_length - 1 + for(var/i = 1, i <= xeno_length, i++) + var/datum/svg_overlay/current_svg = GLOB.xeno_svg_tacmap_data[i] + xeno_ckeys += current_svg.ckey + xeno_names += current_svg.name + xeno_times += current_svg.time + data["xeno_ckeys"] = xeno_ckeys + data["xeno_names"] = xeno_names + data["xeno_times"] = xeno_times + + if(uscm_selection == LATEST_SELECTION) + data["uscm_map"] = null + data["uscm_svg"] = null + else + var/datum/flattened_tacmap/selected_flat = GLOB.uscm_flat_tacmap_data[uscm_selection + 1] + var/datum/svg_overlay/selected_svg = GLOB.uscm_svg_tacmap_data[uscm_selection + 1] + data["uscm_map"] = selected_flat.flat_tacmap + data["uscm_svg"] = selected_svg.svg_data + + if(xeno_selection == LATEST_SELECTION) + data["xeno_map"] = null + data["xeno_svg"] = null + else + var/datum/flattened_tacmap/selected_flat = GLOB.xeno_flat_tacmap_data[xeno_selection + 1] + var/datum/svg_overlay/selected_svg = GLOB.xeno_svg_tacmap_data[xeno_selection + 1] + data["xeno_map"] = selected_flat.flat_tacmap + data["xeno_svg"] = selected_svg.svg_data + + data["uscm_selection"] = uscm_selection + data["xeno_selection"] = xeno_selection + data["map_fallback"] = wiki_map_fallback + data["last_update_time"] = last_update_time + + return data + +/datum/tacmap_admin_panel/ui_act(action, list/params, datum/tgui/ui, datum/ui_state/state) + . = ..() + if(.) + return + + var/mob/user = ui.user + var/client/client_user = user.client + if(!client_user) + return // Is this even possible? + + switch(action) + if("recache") + var/is_uscm = params["uscm"] + var/datum/flattened_tacmap/selected_flat + if(is_uscm) + if(uscm_selection == LATEST_SELECTION) + return TRUE + selected_flat = GLOB.uscm_flat_tacmap_data[uscm_selection + 1] + else + if(xeno_selection == LATEST_SELECTION) + return TRUE + selected_flat = GLOB.xeno_flat_tacmap_data[xeno_selection + 1] + SSassets.transport.send_assets(client_user, selected_flat.asset_key) + last_update_time = world.time + return TRUE + + if("change_selection") + var/is_uscm = params["uscm"] + if(is_uscm) + uscm_selection = params["index"] + else + xeno_selection = params["index"] + last_update_time = world.time + return TRUE + + if("delete") + var/is_uscm = params["uscm"] + var/datum/svg_overlay/selected_svg + if(is_uscm) + if(uscm_selection == LATEST_SELECTION) + return TRUE + selected_svg = GLOB.uscm_svg_tacmap_data[uscm_selection + 1] + else + if(xeno_selection == LATEST_SELECTION) + return TRUE + selected_svg = GLOB.xeno_svg_tacmap_data[xeno_selection + 1] + selected_svg.svg_data = null + last_update_time = world.time + message_admins("[key_name_admin(usr)] deleted the tactical map drawing by [selected_svg.ckey].") + return TRUE + +/datum/tacmap_admin_panel/ui_close(mob/user) + . = ..() + uscm_selection = LATEST_SELECTION + xeno_selection = LATEST_SELECTION + +#undef LATEST_SELECTION diff --git a/code/modules/almayer/machinery.dm b/code/modules/almayer/machinery.dm index cb90db9e8535..e72f4e7f9f52 100644 --- a/code/modules/almayer/machinery.dm +++ b/code/modules/almayer/machinery.dm @@ -80,13 +80,19 @@ use_power = USE_POWER_IDLE density = TRUE idle_power_usage = 2 - ///flags that we want to be shown when you interact with this table var/datum/tacmap/map + ///flags that we want to be shown when you interact with this table var/minimap_type = MINIMAP_FLAG_USCM + ///The faction that is intended to use this structure (determines type of tacmap used) + var/faction = FACTION_MARINE /obj/structure/machinery/prop/almayer/CICmap/Initialize() . = ..() - map = new(src, minimap_type) + + if (faction == FACTION_MARINE) + map = new /datum/tacmap/drawing(src, minimap_type) + else + map = new(src, minimap_type) // Non-drawing version /obj/structure/machinery/prop/almayer/CICmap/Destroy() QDEL_NULL(map) @@ -99,12 +105,15 @@ /obj/structure/machinery/prop/almayer/CICmap/upp minimap_type = MINIMAP_FLAG_UPP + faction = FACTION_UPP /obj/structure/machinery/prop/almayer/CICmap/clf minimap_type = MINIMAP_FLAG_CLF + faction = FACTION_CLF /obj/structure/machinery/prop/almayer/CICmap/pmc minimap_type = MINIMAP_FLAG_PMC + faction = FACTION_PMC //Nonpower using props diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 9268cd3aadba..7811a6c9cb5a 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -147,7 +147,6 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( return cmd_admin_pm(receiver_client, null) return - else if(href_list["FaxView"]) var/datum/fax/info = locate(href_list["FaxView"]) @@ -164,6 +163,14 @@ GLOBAL_LIST_INIT(whitelisted_client_procs, list( else if(href_list["medals_panel"]) GLOB.medals_panel.tgui_interact(mob) + else if(href_list["tacmaps_panel"]) + GLOB.tacmap_admin_panel.tgui_interact(mob) + + else if(href_list["MapView"]) + if(isxeno(mob)) + return + GLOB.uscm_tacmap_status.tgui_interact(mob) + //NOTES OVERHAUL if(href_list["add_merit_info"]) var/key = href_list["add_merit_info"] diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm index 88964d76c3eb..62a7417c57f8 100644 --- a/code/modules/cm_aliens/structures/special/pylon_core.dm +++ b/code/modules/cm_aliens/structures/special/pylon_core.dm @@ -248,7 +248,7 @@ /obj/effect/alien/resin/special/pylon/core/proc/update_minimap_icon() SSminimaps.remove_marker(src) - SSminimaps.add_marker(src, z, MINIMAP_FLAG_XENO, "core") + SSminimaps.add_marker(src, z, get_minimap_flag_for_faction(linked_hive?.hivenumber), "core") /obj/effect/alien/resin/special/pylon/core/process() . = ..() @@ -318,7 +318,7 @@ to_chat(new_xeno, SPAN_XENOANNOUNCE("You are a xenomorph larva awakened from slumber!")) playsound(new_xeno, 'sound/effects/xeno_newlarva.ogg', 50, 1) if(new_xeno.client) - if(new_xeno.client?.prefs.toggles_flashing & FLASH_POOLSPAWN) + if(new_xeno.client.prefs.toggles_flashing & FLASH_POOLSPAWN) window_flash(new_xeno.client) linked_hive.stored_larva-- diff --git a/code/modules/cm_aliens/structures/tunnel.dm b/code/modules/cm_aliens/structures/tunnel.dm index f716d69b5b7e..185bee06c513 100644 --- a/code/modules/cm_aliens/structures/tunnel.dm +++ b/code/modules/cm_aliens/structures/tunnel.dm @@ -48,7 +48,7 @@ if(resin_trap) qdel(resin_trap) - SSminimaps.add_marker(src, z, MINIMAP_FLAG_XENO, "xenotunnel") + SSminimaps.add_marker(src, z, get_minimap_flag_for_faction(hivenumber), "xenotunnel") /obj/structure/tunnel/Destroy() if(hive) diff --git a/code/modules/cm_marines/overwatch.dm b/code/modules/cm_marines/overwatch.dm index 6db426a348c3..3cf33ebd391e 100644 --- a/code/modules/cm_marines/overwatch.dm +++ b/code/modules/cm_marines/overwatch.dm @@ -39,8 +39,11 @@ /obj/structure/machinery/computer/overwatch/Initialize() . = ..() - tacmap = new(src, minimap_type) + if (faction == FACTION_MARINE) + tacmap = new /datum/tacmap/drawing(src, minimap_type) + else + tacmap = new(src, minimap_type) // Non-drawing version /obj/structure/machinery/computer/overwatch/Destroy() QDEL_NULL(tacmap) diff --git a/code/modules/cm_preds/yaut_machines.dm b/code/modules/cm_preds/yaut_machines.dm index a1782ca22b85..f076c6782d9a 100644 --- a/code/modules/cm_preds/yaut_machines.dm +++ b/code/modules/cm_preds/yaut_machines.dm @@ -6,6 +6,7 @@ breakable = FALSE minimap_type = MINIMAP_FLAG_ALL + faction = FACTION_YAUTJA /obj/structure/machinery/autolathe/yautja name = "yautja autolathe" diff --git a/code/modules/desert_dam/motion_sensor/sensortower.dm b/code/modules/desert_dam/motion_sensor/sensortower.dm index 5783d0ce9f20..4ef11c32245d 100644 --- a/code/modules/desert_dam/motion_sensor/sensortower.dm +++ b/code/modules/desert_dam/motion_sensor/sensortower.dm @@ -68,7 +68,7 @@ return SSminimaps.remove_marker(current_xeno) - current_xeno.add_minimap_marker(MINIMAP_FLAG_USCM|MINIMAP_FLAG_XENO) + current_xeno.add_minimap_marker(MINIMAP_FLAG_USCM|get_minimap_flag_for_faction(current_xeno.hivenumber)) minimap_added += WEAKREF(current_xeno) /obj/structure/machinery/sensortower/proc/checkfailure() diff --git a/code/modules/escape_menu/admin_buttons.dm b/code/modules/escape_menu/admin_buttons.dm index e6771d05bf68..661901c1b77a 100644 --- a/code/modules/escape_menu/admin_buttons.dm +++ b/code/modules/escape_menu/admin_buttons.dm @@ -46,7 +46,7 @@ new /atom/movable/screen/escape_menu/home_button( null, src, - "Medal Panel", + "Medals Panel", /* offset = */ 5, CALLBACK(src, PROC_REF(home_medal)), ) @@ -56,8 +56,18 @@ new /atom/movable/screen/escape_menu/home_button( null, src, - "Teleport Panel", + "Tacmaps Panel", /* offset = */ 6, + CALLBACK(src, PROC_REF(home_tacmaps)), + ) + ) + + page_holder.give_screen_object( + new /atom/movable/screen/escape_menu/home_button( + null, + src, + "Teleport Panel", + /* offset = */ 7, CALLBACK(src, PROC_REF(home_teleport)), ) ) @@ -67,7 +77,7 @@ null, src, "Inview Panel", - /* offset = */ 7, + /* offset = */ 8, CALLBACK(src, PROC_REF(home_inview)), ) ) @@ -77,7 +87,7 @@ null, src, "Unban Panel", - /* offset = */ 8, + /* offset = */ 9, CALLBACK(src, PROC_REF(home_unban)), ) ) @@ -87,7 +97,7 @@ null, src, "Shuttle Manipulator", - /* offset = */ 9, + /* offset = */ 10, CALLBACK(src, PROC_REF(home_shuttle)), ) ) @@ -117,6 +127,12 @@ GLOB.medals_panel.tgui_interact(client?.mob) +/datum/escape_menu/proc/home_tacmaps() + if(!client?.admin_holder.check_for_rights(R_ADMIN|R_MOD)) + return + + GLOB.tacmap_admin_panel.tgui_interact(client?.mob) + /datum/escape_menu/proc/home_teleport() if(!client?.admin_holder.check_for_rights(R_MOD)) return diff --git a/code/modules/maptext_alerts/screen_alerts.dm b/code/modules/maptext_alerts/screen_alerts.dm index 820c64301bc2..0b923f7dc753 100644 --- a/code/modules/maptext_alerts/screen_alerts.dm +++ b/code/modules/maptext_alerts/screen_alerts.dm @@ -246,3 +246,8 @@ ghost_user.do_observe(target) if(NOTIFY_JOIN_XENO) ghost_user.join_as_alien() + if(NOTIFY_USCM_TACMAP) + GLOB.uscm_tacmap_status.tgui_interact(ghost_user) + if(NOTIFY_XENO_TACMAP) + GLOB.xeno_tacmap_status.tgui_interact(ghost_user) + diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index da0560e151e9..a68a67cfdf53 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -377,6 +377,10 @@ handle_joining_as_freed_mob(locate(href_list["claim_freed"])) if(href_list["join_xeno"]) join_as_alien() + if(href_list[NOTIFY_USCM_TACMAP]) + GLOB.uscm_tacmap_status.tgui_interact(src) + if(href_list[NOTIFY_XENO_TACMAP]) + GLOB.xeno_tacmap_status.tgui_interact(src) /mob/dead/observer/proc/set_huds_from_prefs() if(!client || !client.prefs) @@ -898,6 +902,23 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp GLOB.hive_datum[hives[faction]].hive_ui.open_hive_status(src) +/mob/dead/observer/verb/view_uscm_tacmap() + set name = "View USCM Tacmap" + set category = "Ghost.View" + + GLOB.uscm_tacmap_status.tgui_interact(src) + +/mob/dead/observer/verb/view_xeno_tacmap() + set name = "View Xeno Tacmap" + set category = "Ghost.View" + + var/datum/hive_status/hive = GLOB.hive_datum[XENO_HIVE_NORMAL] + if(!hive || !length(hive.totalXenos)) + to_chat(src, SPAN_ALERT("There seems to be no living normal hive at the moment")) + return + + GLOB.xeno_tacmap_status.tgui_interact(src) + /mob/dead/verb/join_as_alien() set category = "Ghost.Join" set name = "Join as Xeno" diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 2ec8ccf2531d..3bc8e97623da 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -115,7 +115,9 @@ . += "Primary Objective: [html_decode(assigned_squad.primary_objective)]" if(assigned_squad.secondary_objective) . += "Secondary Objective: [html_decode(assigned_squad.secondary_objective)]" - + if(faction == FACTION_MARINE) + . += "" + . += "View Tactical Map" if(mobility_aura) . += "Active Order: MOVE" if(protection_aura) diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 51cab73e80e6..7beaaab8a04e 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -508,7 +508,11 @@ if(queen.can_not_harm(src)) return COMPONENT_SCREECH_ACT_CANCEL -/mob/living/carbon/xenomorph/proc/add_minimap_marker(flags = MINIMAP_FLAG_XENO) +/// Adds a minimap marker for this xeno using the provided flags. +/// If flags is 0, it will use get_minimap_flag_for_faction for this xeno +/mob/living/carbon/xenomorph/proc/add_minimap_marker(flags) + if(!flags) + flags = get_minimap_flag_for_faction(hivenumber) if(IS_XENO_LEADER(src)) SSminimaps.add_marker(src, z, hud_flags = flags, given_image = caste.get_minimap_icon(), overlay_iconstates = list(caste.minimap_leadered_overlay)) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm index 65ea443c133c..23da1ce65903 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/queen/queen_powers.dm @@ -698,5 +698,5 @@ set name = "View Xeno Tacmap" set desc = "This opens a tactical map, where you can see where every xenomorph is." set category = "Alien" - hive.tacmap.tgui_interact(src) + diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm index f1fff4fb765e..79f73631c7b1 100644 --- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm +++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm @@ -362,7 +362,7 @@ /// This number divides the total xenos counted for slots to give the max number of lesser drones var/playable_lesser_drones_max_divisor = 3 - var/datum/tacmap/xeno/tacmap + var/datum/tacmap/drawing/xeno/tacmap var/minimap_type = MINIMAP_FLAG_XENO /datum/hive_status/New() @@ -370,6 +370,7 @@ hive_ui = new(src) mark_ui = new(src) faction_ui = new(src) + minimap_type = get_minimap_flag_for_faction(hivenumber) tacmap = new(src, minimap_type) if(!internal_faction) internal_faction = name diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index a6b654ba2da1..cebe265a673c 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -150,7 +150,7 @@ observer.set_huds_from_prefs() qdel(src) - return 1 + return TRUE if("late_join") @@ -276,11 +276,11 @@ if(player.get_playtime(STATISTIC_HUMAN) == 0 && player.get_playtime(STATISTIC_XENO) == 0) msg_admin_niche("NEW JOIN: [key_name(character, 1, 1, 0)]. IP: [character.lastKnownIP], CID: [character.computer_id]") if(character.client) - var/client/C = character.client - if(C.player_data && C.player_data.playtime_loaded && length(C.player_data.playtimes) == 0) + var/client/client = character.client + if(client.player_data && client.player_data.playtime_loaded && length(client.player_data.playtimes) == 0) msg_admin_niche("NEW PLAYER: [key_name(character, 1, 1, 0)]. IP: [character.lastKnownIP], CID: [character.computer_id]") - if(C.player_data && C.player_data.playtime_loaded && ((round(C.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1)) <= 5)) - msg_sea("NEW PLAYER: [key_name(character, 0, 1, 0)] only has [(round(C.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1))] hours as a human. Current role: [get_actual_job_name(character)] - Current location: [get_area(character)]") + if(client.player_data && client.player_data.playtime_loaded && ((round(client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1)) <= 5)) + msg_sea("NEW PLAYER: [key_name(character, 0, 1, 0)] only has [(round(client.get_total_human_playtime() DECISECONDS_TO_HOURS, 0.1))] hours as a human. Current role: [get_actual_job_name(character)] - Current location: [get_area(character)]") character.client.init_verbs() qdel(src) diff --git a/code/modules/vehicles/apc/apc_command.dm b/code/modules/vehicles/apc/apc_command.dm index c5bd55928362..ace9df2b2a25 100644 --- a/code/modules/vehicles/apc/apc_command.dm +++ b/code/modules/vehicles/apc/apc_command.dm @@ -59,7 +59,7 @@ continue SSminimaps.remove_marker(current_xeno) - current_xeno.add_minimap_marker(MINIMAP_FLAG_USCM|MINIMAP_FLAG_XENO) + current_xeno.add_minimap_marker(MINIMAP_FLAG_USCM|get_minimap_flag_for_faction(current_xeno.hivenumber)) minimap_added += WEAKREF(current_xeno) else if(WEAKREF(current_xeno) in minimap_added) diff --git a/colonialmarines.dme b/colonialmarines.dme index 9ef2ad37c605..293b69c60d1c 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1377,6 +1377,8 @@ #include "code\modules\admin\tabs\event_tab.dm" #include "code\modules\admin\tabs\round_tab.dm" #include "code\modules\admin\tabs\server_tab.dm" +#include "code\modules\admin\tacmap_panel\tacmap_admin_panel.dm" +#include "code\modules\admin\tacmap_panel\tacmap_admin_panel_tgui.dm" #include "code\modules\admin\topic\topic.dm" #include "code\modules\admin\topic\topic_chems.dm" #include "code\modules\admin\topic\topic_events.dm" diff --git a/html/statbrowser.js b/html/statbrowser.js index 105270ad298e..289536d37da1 100644 --- a/html/statbrowser.js +++ b/html/statbrowser.js @@ -374,6 +374,8 @@ function draw_debug() { document.getElementById("statcontent").appendChild(table3); } function draw_status() { + var status_tab_map_href_exception = + "View Tactical Map"; if (!document.getElementById("Status")) { createStatusTab("Status"); current_tab = "Status"; @@ -384,6 +386,13 @@ function draw_status() { document .getElementById("statcontent") .appendChild(document.createElement("br")); + } else if ( + // hardcoded because merely using .includes() to test for a href seems unreliable for some reason. + status_tab_parts[i] == status_tab_map_href_exception + ) { + var maplink = document.createElement("a"); + maplink.innerHTML = status_tab_parts[i]; + document.getElementById("statcontent").appendChild(maplink); } else { var div = document.createElement("div"); div.textContent = status_tab_parts[i]; diff --git a/tgui/packages/tgui/interfaces/CanvasLayer.js b/tgui/packages/tgui/interfaces/CanvasLayer.js new file mode 100644 index 000000000000..e647ae765b1c --- /dev/null +++ b/tgui/packages/tgui/interfaces/CanvasLayer.js @@ -0,0 +1,311 @@ +import { Box, Icon, Tooltip } from '../components'; +import { Component, createRef } from 'inferno'; + +// this file should probably not be in interfaces, should move it later. +export class CanvasLayer extends Component { + constructor(props) { + super(props); + this.canvasRef = createRef(); + + // color selection + // using this.state prevents unpredictable behavior + this.state = { + selection: this.props.selection, + mapLoad: true, + }; + + // needs to be of type png of jpg + this.img = null; + this.imageSrc = this.props.imageSrc; + + // stores the stacked lines + this.lineStack = []; + + // stores the individual line drawn + this.currentLine = []; + + this.ctx = null; + this.isPainting = false; + this.lastX = null; + this.lastY = null; + + this.complexity = 0; + } + + componentDidMount() { + this.ctx = this.canvasRef.current.getContext('2d'); + this.ctx.lineWidth = 4; + this.ctx.lineCap = 'round'; + + this.img = new Image(); + + this.img.src = this.imageSrc; + + this.img.onload = () => { + this.setState({ mapLoad: true }); + }; + + this.img.onerror = () => { + this.setState({ mapLoad: false }); + }; + + this.drawCanvas(); + } + + handleMouseDown = (e) => { + this.isPainting = true; + + const rect = this.canvasRef.current.getBoundingClientRect(); + const x = e.clientX - rect.left; + const y = e.clientY - rect.top; + + this.ctx.beginPath(); + this.ctx.moveTo(this.lastX, this.lastY); + this.lastX = x; + this.lastY = y; + }; + + handleMouseMove = (e) => { + if (!this.isPainting || !this.state.selection) { + return; + } + if (e.buttons === 0) { + // We probably dragged off the window - lets not get stuck drawing + this.handleMouseUp(e); + return; + } + + this.ctx.strokeStyle = this.state.selection; + + const rect = this.canvasRef.current.getBoundingClientRect(); + const x = e.clientX - rect.left; + const y = e.clientY - rect.top; + + if (this.lastX !== null && this.lastY !== null) { + // this controls how often we make new strokes + if (Math.abs(this.lastX - x) + Math.abs(this.lastY - y) < 20) { + return; + } + + this.ctx.moveTo(this.lastX, this.lastY); + this.ctx.lineTo(x, y); + this.ctx.stroke(); + this.currentLine.push([ + this.lastX, + this.lastY, + x, + y, + this.ctx.strokeStyle, + ]); + } + + this.lastX = x; + this.lastY = y; + }; + + handleMouseUp = (e) => { + if ( + this.isPainting && + this.state.selection && + this.lastX !== null && + this.lastY !== null + ) { + const rect = this.canvasRef.current.getBoundingClientRect(); + const x = e.clientX - rect.left; + const y = e.clientY - rect.top; + + this.ctx.moveTo(this.lastX, this.lastY); + this.ctx.lineTo(x, y); + this.ctx.stroke(); + this.currentLine.push([ + this.lastX, + this.lastY, + x, + y, + this.ctx.strokeStyle, + ]); + } + + this.isPainting = false; + this.lastX = null; + this.lastY = null; + + if (this.currentLine.length === 0) { + return; + } + + this.lineStack.push([...this.currentLine]); + this.currentLine = []; + this.complexity = this.getComplexity(); + this.props.onDraw(); + }; + + handleSelectionChange = () => { + const { selection } = this.props; + + if (selection === 'clear') { + this.ctx.clearRect( + 0, + 0, + this.canvasRef.current.width, + this.canvasRef.current.height + ); + this.ctx.drawImage( + this.img, + 0, + 0, + this.canvasRef.current.width, + this.canvasRef.current.height + ); + + this.lineStack = []; + this.complexity = 0; + return; + } + + if (selection === 'undo') { + if (this.lineStack.length === 0) { + return; + } + + const line = this.lineStack.pop(); + if (line.length === 0) { + return; + } + + const prevColor = line[0][4]; + + this.ctx.clearRect( + 0, + 0, + this.canvasRef.current.width, + this.canvasRef.current.height + ); + this.ctx.drawImage( + this.img, + 0, + 0, + this.canvasRef.current.width, + this.canvasRef.current.height + ); + this.ctx.globalCompositeOperation = 'source-over'; + + this.lineStack.forEach((currentLine) => { + currentLine.forEach(([lastX, lastY, x, y, colorSelection]) => { + this.ctx.strokeStyle = colorSelection; + this.ctx.beginPath(); + this.ctx.moveTo(lastX, lastY); + this.ctx.lineTo(x, y); + this.ctx.stroke(); + }); + }); + + this.complexity = this.getComplexity(); + this.setState({ selection: prevColor }); + this.props.onUndo(prevColor); + return; + } + + if (selection === 'export') { + const svgData = this.convertToSVG(); + this.props.onImageExport(svgData); + return; + } + + this.setState({ selection: selection }); + }; + + componentDidUpdate(prevProps) { + if (prevProps.actionQueueChange !== this.props.actionQueueChange) { + this.handleSelectionChange(); + } + } + + drawCanvas() { + this.img.onload = () => { + // this onload may or may not be causing problems. + this.ctx.drawImage( + this.img, + 0, + 0, + this.canvasRef.current?.width, + this.canvasRef.current?.height + ); + }; + } + + convertToSVG() { + const lines = this.lineStack.flat(); + const combinedArray = lines.flatMap( + ([lastX, lastY, x, y, colorSelection]) => [ + lastX, + lastY, + x, + y, + colorSelection, + ] + ); + return combinedArray; + } + + getComplexity() { + let count = 0; + this.lineStack.forEach((item) => { + count += item.length; + }); + return count; + } + + displayCanvas() { + return ( +
+ {this.complexity > 500 && ( + + + + )} + this.handleMouseDown(e)} + onMouseUp={(e) => this.handleMouseUp(e)} + onMouseMove={(e) => this.handleMouseMove(e)} + /> +
+ ); + } + + displayLoading() { + return ( +
+ +

+ Please wait a few minutes before attempting to access the canvas. +

+
+
+ ); + } + + render() { + if (this.state.mapLoad) { + return this.displayCanvas(); + } else { + // edge case where a new user joins and tries to draw on the canvas before they cached the png + return this.displayLoading(); + } + } +} diff --git a/tgui/packages/tgui/interfaces/DrawnMap.js b/tgui/packages/tgui/interfaces/DrawnMap.js new file mode 100644 index 000000000000..cd5a9539f847 --- /dev/null +++ b/tgui/packages/tgui/interfaces/DrawnMap.js @@ -0,0 +1,110 @@ +import { Box } from '../components'; +import { Component, createRef } from 'inferno'; + +export class DrawnMap extends Component { + constructor(props) { + super(props); + this.containerRef = createRef(); + this.flatImgSrc = this.props.flatImage; + this.backupImgSrc = this.props.backupImage; + this.state = { + mapLoad: true, + loadingBackup: true, + }; + this.img = null; + this.svg = this.props.svgData; + } + + componentDidMount() { + this.img = new Image(); + this.img.src = this.flatImgSrc; + this.img.onload = () => { + this.setState({ mapLoad: true }); + }; + + this.img.onerror = () => { + this.img.src = this.backupImgSrc; + this.setState({ mapLoad: false }); + }; + + const backupImg = new Image(); + backupImg.src = this.backupImgSrc; + backupImg.onload = () => { + this.setState({ loadingBackup: false }); + }; + } + + parseSvgData(svgDataArray) { + if (!svgDataArray) return null; + let lines = []; + for (let i = 0; i < svgDataArray.length; i += 5) { + const x1 = svgDataArray[i]; + const y1 = svgDataArray[i + 1]; + const x2 = svgDataArray[i + 2]; + const y2 = svgDataArray[i + 3]; + const stroke = svgDataArray[i + 4]; + lines.push({ x1, y1, x2, y2, stroke }); + } + return lines; + } + + getSize() { + const ratio = Math.min( + (self.innerWidth - 50) / 650, + (self.innerHeight - 150) / 600 + ); + return { width: 650 * ratio, height: 600 * ratio }; + } + + render() { + const parsedSvgData = this.parseSvgData(this.svg); + const size = this.getSize(); + + return ( +
+ {this.state.loadingBackup && !this.state.mapLoad && ( + +

Loading map...

+
+ )} + {this.img && this.state.mapLoad && ( + + )} + {parsedSvgData && this.state.mapLoad && ( + + {parsedSvgData.map((line, index) => ( + + ))} + + )} +
+ ); + } +} diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.js b/tgui/packages/tgui/interfaces/OverwatchConsole.js index 1a6f67ac7ccd..1805f231fb16 100644 --- a/tgui/packages/tgui/interfaces/OverwatchConsole.js +++ b/tgui/packages/tgui/interfaces/OverwatchConsole.js @@ -61,7 +61,6 @@ const SquadPanel = (props, context) => { const { act, data } = useBackend(context); const [category, setCategory] = useLocalState(context, 'selected', 'monitor'); - let hello = 2; return ( <> diff --git a/tgui/packages/tgui/interfaces/TacmapAdminPanel.js b/tgui/packages/tgui/interfaces/TacmapAdminPanel.js new file mode 100644 index 000000000000..a5d00c688a2f --- /dev/null +++ b/tgui/packages/tgui/interfaces/TacmapAdminPanel.js @@ -0,0 +1,164 @@ +import { useBackend, useLocalState } from '../backend'; +import { Tabs, Section, Button, Stack, Flex } from '../components'; +import { DrawnMap } from './DrawnMap'; +import { Window } from '../layouts'; + +const PAGES = [ + { + title: 'USCM', + component: () => FactionPage, + color: 'blue', + icon: 'medal', + }, + { + title: 'Hive', + component: () => FactionPage, + color: 'purple', + icon: 'star', + }, +]; + +export const TacmapAdminPanel = (props, context) => { + const { data } = useBackend(context); + const { + uscm_map, + xeno_map, + uscm_svg, + xeno_svg, + uscm_ckeys, + xeno_ckeys, + uscm_names, + xeno_names, + uscm_times, + xeno_times, + uscm_selection, + xeno_selection, + map_fallback, + last_update_time, + } = data; + + const [pageIndex, setPageIndex] = useLocalState(context, 'pageIndex', 0); + + const PageComponent = PAGES[pageIndex].component(); + + return ( + + + + + + {PAGES.map((page, i) => { + if (page.canAccess && !page.canAccess(data)) { + return; + } + + return ( + setPageIndex(i)}> + {page.title} + + ); + })} + + + + + + +
+ +
+
+
+
+
+ ); +}; + +const FactionPage = (props, context) => { + const { act } = useBackend(context); + const { svg, ckeys, names, times, selected_map, is_uscm } = props; + + return ( +
+ act('recache', { + uscm: is_uscm, + }) + } + /> + }> + {Object(ckeys).map((ckey, ckey_index) => ( + + + + act('change_selection', { + uscm: is_uscm, + index: ckey_index, + }) + } + /> + + + {names[ckey_index]} ({ckey}) - {times[ckey_index]} + + + + act('delete', { + uscm: is_uscm, + index: ckey_index, + }) + } + /> + + + ))} +
+ ); +}; diff --git a/tgui/packages/tgui/interfaces/TacticalMap.tsx b/tgui/packages/tgui/interfaces/TacticalMap.tsx index 01ba483acf27..92996038719f 100644 --- a/tgui/packages/tgui/interfaces/TacticalMap.tsx +++ b/tgui/packages/tgui/interfaces/TacticalMap.tsx @@ -1,24 +1,330 @@ -import { useBackend } from '../backend'; -import { ByondUi } from '../components'; +import { useBackend, useLocalState } from '../backend'; +import { Button, Dropdown, Section, Stack, ProgressBar, Box, Tabs } from '../components'; import { Window } from '../layouts'; +import { CanvasLayer } from './CanvasLayer'; +import { DrawnMap } from './DrawnMap'; +import { ByondUi } from '../components'; interface TacMapProps { + toolbarColorSelection: string; + toolbarUpdatedSelection: string; + updatedCanvas: boolean; + themeId: number; + svgData: any; + canViewTacmap: number; + canDraw: number; + isXeno: boolean; + canViewCanvas: number; + newCanvasFlatImage: string; + oldCanvasFlatImage: string; + actionQueueChange: number; + exportedColor: string; + mapFallback: string; mapRef: string; + currentMenu: string; + lastUpdateTime: any; + nextCanvasTime: any; + canvasCooldown: any; + exportedTacMapImage: any; + tacmapReady: number; } +const PAGES = [ + { + title: 'tacmap', + canOpen: (data) => { + return 1; + }, + component: () => ViewMapPanel, + icon: 'map', + canAccess: (data) => { + return data.canViewTacmap; + }, + }, + { + title: 'old canvas', + canOpen: (data) => { + return 1; + }, + component: () => OldMapPanel, + icon: 'eye', + canAccess: (data) => { + return data.canViewCanvas; + }, + }, + { + title: 'new canvas', + canOpen: (data) => { + return data.tacmapReady; + }, + component: () => DrawMapPanel, + icon: 'paintbrush', + canAccess: (data) => { + return data.canDraw; + }, + }, +]; + +const colorOptions = [ + 'black', + 'red', + 'orange', + 'blue', + 'purple', + 'green', + 'brown', +]; + +const colors: Record = { + 'black': '#000000', + 'red': '#fc0000', + 'orange': '#f59a07', + 'blue': '#0561f5', + 'purple': '#c002fa', + 'green': '#02c245', + 'brown': '#5c351e', +}; + export const TacticalMap = (props, context) => { const { data, act } = useBackend(context); + const [pageIndex, setPageIndex] = useLocalState( + context, + 'pageIndex', + data.canViewTacmap ? 0 : 1 + ); + const PageComponent = PAGES[pageIndex].component(); + + const handleTacmapOnClick = (i, pageTitle) => { + setPageIndex(i); + act('menuSelect', { + selection: pageTitle, + }); + }; + return ( - + - +
+ + + + {PAGES.map((page, i) => { + if (page.canAccess(data) === 0) { + return; + } + return ( + handleTacmapOnClick(i, page.title)}> + {page.canOpen(data) === 0 ? 'loading' : page.title} + + ); + })} + + + +
+
); }; + +const ViewMapPanel = (props, context) => { + const { data } = useBackend(context); + + // byond ui can't resist trying to render + if (data.canViewTacmap === 0 || data.mapRef === null) { + return ; + } + + return ( +
+ +
+ ); +}; + +const OldMapPanel = (props, context) => { + const { data } = useBackend(context); + return ( +
+ {data.canViewCanvas ? ( + + ) : ( + +

Unauthorized.

+
+ )} +
+ ); +}; + +const DrawMapPanel = (props, context) => { + const { data, act } = useBackend(context); + + const timeLeftPct = data.canvasCooldown / data.nextCanvasTime; + const canUpdate = data.canvasCooldown <= 0 && !data.updatedCanvas; + + const handleTacMapExport = (image: any) => { + data.exportedTacMapImage = image; + }; + + const handleColorSelection = (dataSelection) => { + if (colors[dataSelection] !== null && colors[dataSelection] !== undefined) { + return colors[dataSelection]; + } else { + return dataSelection; + } + }; + const findColorValue = (oldValue: string) => { + return (Object.keys(colors) as Array).find( + (key) => colors[key] === (oldValue as string) + ); + }; + + return ( + <> +
+ + + {(!data.updatedCanvas && ( +
+
+ + act('selectColor', { color: findColorValue(value) }) + } + onDraw={() => act('onDraw')} + /> +
+ + ); +}; diff --git a/tgui/packages/tgui/styles/interfaces/TacticalMap.scss b/tgui/packages/tgui/styles/interfaces/TacticalMap.scss index 312c9ce262ff..a4ab13451772 100644 --- a/tgui/packages/tgui/styles/interfaces/TacticalMap.scss +++ b/tgui/packages/tgui/styles/interfaces/TacticalMap.scss @@ -9,3 +9,7 @@ margin: 0.5em; text-align: center; } + +.progress-stack { + margin-top: 15px; +} From a4284b4153c9e4c120ac0b4678151a1cb401d56d Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 17 Nov 2023 23:06:32 +0000 Subject: [PATCH 099/355] Automatic changelog for PR #4475 [ci skip] --- html/changelogs/AutoChangeLog-pr-4475.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4475.yml diff --git a/html/changelogs/AutoChangeLog-pr-4475.yml b/html/changelogs/AutoChangeLog-pr-4475.yml new file mode 100644 index 000000000000..27d43d1e7aca --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4475.yml @@ -0,0 +1,5 @@ +author: "Cthulhu80, Drathek" +delete-after: True +changes: + - rscadd: "Adds drawing to tactical maps, viewable via stat panel for marines and xeno tacmap for xenos." + - bugfix: "Corrupted (and other hives) now have separate tactical maps." \ No newline at end of file From ef2b7f17d87890afd812c23674e6e5e77dbcd1db Mon Sep 17 00:00:00 2001 From: Changelogs Date: Sat, 18 Nov 2023 01:10:42 +0000 Subject: [PATCH 100/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4475.yml | 5 ----- html/changelogs/AutoChangeLog-pr-4912.yml | 10 ---------- html/changelogs/AutoChangeLog-pr-4937.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4938.yml | 4 ---- html/changelogs/archive/2023-11.yml | 20 ++++++++++++++++++++ 5 files changed, 20 insertions(+), 23 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4475.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4912.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4937.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4938.yml diff --git a/html/changelogs/AutoChangeLog-pr-4475.yml b/html/changelogs/AutoChangeLog-pr-4475.yml deleted file mode 100644 index 27d43d1e7aca..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4475.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Cthulhu80, Drathek" -delete-after: True -changes: - - rscadd: "Adds drawing to tactical maps, viewable via stat panel for marines and xeno tacmap for xenos." - - bugfix: "Corrupted (and other hives) now have separate tactical maps." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4912.yml b/html/changelogs/AutoChangeLog-pr-4912.yml deleted file mode 100644 index 29dd976c4068..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4912.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed the tank driving through vehicle blockers and accessing \"deep\" parts of the map it wasn't intended to push." - - bugfix: "Tentatively fixed some visual bugs with turret based vehicles." - - bugfix: "Fixed using the tank coupon as first vehicle spawn causing Gear Vendor to still give out APC gear." - - admin: "Added an APC coupon in same vein as Tank Coupon for Admins to use." - - admin: "Tank/APC Coupons now spawn broken down versions of the vehicles, for the full VC experience. You want a ready to use one, just spawn it." - - admin: "Tank/APC coupons do not spawn VC pamphlets in ASRS anymore." - - admin: "Added a vehicle_flag for tanks to bypass blockers (in a legit fashion this time). Abuse at your discretion." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4937.yml b/html/changelogs/AutoChangeLog-pr-4937.yml deleted file mode 100644 index 4c7bb250ae61..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4937.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ihatethisengine" -delete-after: True -changes: - - rscadd: "Cloaked lurker devouring now shows a message to target again." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4938.yml b/html/changelogs/AutoChangeLog-pr-4938.yml deleted file mode 100644 index 8c843723269f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4938.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - admin: "Moderators are now immune to inactivity kick, much like Admins." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index acb5a065d7b8..2498cfca4286 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -242,3 +242,23 @@ - rscadd: Faxes sent from HighCom fax machines now appear in their correct category. sleepynecrons: - imageadd: fixes biosuit body sprite not properly covering mobs +2023-11-18: + Cthulhu80, Drathek: + - rscadd: Adds drawing to tactical maps, viewable via stat panel for marines and + xeno tacmap for xenos. + - bugfix: Corrupted (and other hives) now have separate tactical maps. + fira: + - admin: Moderators are now immune to inactivity kick, much like Admins. + - bugfix: Fixed the tank driving through vehicle blockers and accessing "deep" parts + of the map it wasn't intended to push. + - bugfix: Tentatively fixed some visual bugs with turret based vehicles. + - bugfix: Fixed using the tank coupon as first vehicle spawn causing Gear Vendor + to still give out APC gear. + - admin: Added an APC coupon in same vein as Tank Coupon for Admins to use. + - admin: Tank/APC Coupons now spawn broken down versions of the vehicles, for the + full VC experience. You want a ready to use one, just spawn it. + - admin: Tank/APC coupons do not spawn VC pamphlets in ASRS anymore. + - admin: Added a vehicle_flag for tanks to bypass blockers (in a legit fashion this + time). Abuse at your discretion. + ihatethisengine: + - rscadd: Cloaked lurker devouring now shows a message to target again. From 2fe0665edaafd14fe2230647ea7e37792eb6e22e Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 19 Nov 2023 10:51:17 +0000 Subject: [PATCH 101/355] Automatic TGS DMAPI Update (#4954) This pull request updates the TGS DMAPI to the latest version. Please note any breaking or unimplemented changes before merging. Co-authored-by: tgstation-server --- code/__DEFINES/tgs.dm | 2 +- code/modules/tgs/v5/__interop_version.dm | 2 +- code/modules/tgs/v5/_defines.dm | 2 ++ code/modules/tgs/v5/topic.dm | 20 ++++++++++++++++---- code/modules/tgs/v5/undefs.dm | 4 ++++ 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 0cc106ec9cf2..b0e97e05e9b2 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.6.2" +#define TGS_DMAPI_VERSION "6.7.0" // All functions and datums outside this document are subject to change with any version and should not be relied on. diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index 1b52b31d6a73..83420d130a74 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.6.2" +"5.7.0" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index bdcd4e4dd58e..48969c0c7d56 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -80,6 +80,7 @@ #define DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH 8 #define DMAPI5_TOPIC_COMMAND_SEND_CHUNK 9 #define DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK 10 +#define DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST 11 #define DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE "commandType" #define DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND "chatCommand" @@ -89,6 +90,7 @@ #define DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME "newInstanceName" #define DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE "chatUpdate" #define DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION "newServerVersion" +#define DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE "broadcastMessage" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE "commandResponse" #define DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE "commandResponseMessage" diff --git a/code/modules/tgs/v5/topic.dm b/code/modules/tgs/v5/topic.dm index d7d471213813..2ef0c70a97fa 100644 --- a/code/modules/tgs/v5/topic.dm +++ b/code/modules/tgs/v5/topic.dm @@ -94,7 +94,7 @@ if(DMAPI5_TOPIC_COMMAND_CHANGE_PORT) var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] if (!isnum(new_port) || !(new_port > 0)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]") + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]") if(event_handler != null) event_handler.HandleEvent(TGS_EVENT_PORT_SWAP, new_port) @@ -141,7 +141,7 @@ if(DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE) var/new_port = topic_parameters[DMAPI5_TOPIC_PARAMETER_NEW_PORT] if (!isnum(new_port) || !(new_port > 0)) - return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]") + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_PORT]") server_port = new_port return TopicResponse() @@ -157,7 +157,7 @@ var/error_message = null if (new_port != null) if (!isnum(new_port) || !(new_port > 0)) - error_message = "Invalid [DMAPI5_TOPIC_PARAMETER_NEW_PORT]]" + error_message = "Invalid [DMAPI5_TOPIC_PARAMETER_NEW_PORT]" else server_port = new_port @@ -165,7 +165,7 @@ if (!istext(new_version_string)) if(error_message != null) error_message += ", " - error_message += "Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION]]" + error_message += "Invalid or missing [DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION]" else var/datum/tgs_version/new_version = new(new_version_string) if (event_handler) @@ -267,4 +267,16 @@ return chunk_to_send + if(DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST) + var/message = topic_parameters[DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE] + if (!istext(message)) + return TopicResponse("Invalid or missing [DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE]") + + TGS_WORLD_ANNOUNCE(message) + return TopicResponse() + return TopicResponse("Unknown command: [command]") + +/datum/tgs_api/v5/proc/WorldBroadcast(message) + set waitfor = FALSE + TGS_WORLD_ANNOUNCE(message) diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index f163adaaafe3..fd1ed7e4cf54 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -78,6 +78,9 @@ #undef DMAPI5_TOPIC_COMMAND_SERVER_PORT_UPDATE #undef DMAPI5_TOPIC_COMMAND_HEALTHCHECK #undef DMAPI5_TOPIC_COMMAND_WATCHDOG_REATTACH +#undef DMAPI5_TOPIC_COMMAND_SEND_CHUNK +#undef DMAPI5_TOPIC_COMMAND_RECEIVE_CHUNK +#undef DMAPI5_TOPIC_COMMAND_RECEIVE_BROADCAST #undef DMAPI5_TOPIC_PARAMETER_COMMAND_TYPE #undef DMAPI5_TOPIC_PARAMETER_CHAT_COMMAND @@ -87,6 +90,7 @@ #undef DMAPI5_TOPIC_PARAMETER_NEW_INSTANCE_NAME #undef DMAPI5_TOPIC_PARAMETER_CHAT_UPDATE #undef DMAPI5_TOPIC_PARAMETER_NEW_SERVER_VERSION +#undef DMAPI5_TOPIC_PARAMETER_BROADCAST_MESSAGE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE #undef DMAPI5_TOPIC_RESPONSE_COMMAND_RESPONSE_MESSAGE From 5eb033520a99e1d73ca541182d9bb346c8304ec0 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 19 Nov 2023 03:01:49 -0800 Subject: [PATCH 102/355] Fix jump-to-area runtime (#4946) # About the pull request Title. # Changelog :cl: fix: Jump-to-area verb will now warn you if there aren't any turfs in the given area. /:cl: --- code/modules/admin/verbs/adminjump.dm | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/code/modules/admin/verbs/adminjump.dm b/code/modules/admin/verbs/adminjump.dm index cef0625c0adf..2806b8c3bad2 100644 --- a/code/modules/admin/verbs/adminjump.dm +++ b/code/modules/admin/verbs/adminjump.dm @@ -15,11 +15,17 @@ if(!src.mob) return + var/list/area_turfs = get_area_turfs(A) + + if(!length(area_turfs)) + to_chat(src, "There aren't any turfs in this area!") + return + if(!isobserver(mob)) src.admin_ghost() src.mob.on_mob_jump() - src.mob.forceMove(pick(get_area_turfs(A))) + src.mob.forceMove(pick(area_turfs)) message_admins(WRAP_STAFF_LOG(usr, "jumped to area [get_area(usr)] ([usr.loc.x],[usr.loc.y],[usr.loc.z])."), usr.loc.x, usr.loc.y, usr.loc.z) From e1bb9496a57e54da1b29deb739bdb0f55f274b77 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Sun, 19 Nov 2023 11:10:04 +0000 Subject: [PATCH 103/355] Automatic changelog for PR #4946 [ci skip] --- html/changelogs/AutoChangeLog-pr-4946.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4946.yml diff --git a/html/changelogs/AutoChangeLog-pr-4946.yml b/html/changelogs/AutoChangeLog-pr-4946.yml new file mode 100644 index 000000000000..411c1b12c8bb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4946.yml @@ -0,0 +1,4 @@ +author: "Zonespace27" +delete-after: True +changes: + - bugfix: "Jump-to-area verb will now warn you if there aren't any turfs in the given area." \ No newline at end of file From f544b827b85ee7104891c72844b92bbe8b493ac8 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 19 Nov 2023 03:01:52 -0800 Subject: [PATCH 104/355] Fix c4 deletion runtime (#4947) # About the pull request Nullchecks a forceMove --- code/game/objects/items/explosives/plastic.dm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/explosives/plastic.dm b/code/game/objects/items/explosives/plastic.dm index 830df9659070..ac0a2263cd5c 100644 --- a/code/game/objects/items/explosives/plastic.dm +++ b/code/game/objects/items/explosives/plastic.dm @@ -26,7 +26,7 @@ /obj/item/explosive/plastic/Destroy() disarm() - . = ..() + return ..() /obj/item/explosive/plastic/explosion_throw(severity, direction, scatter_multiplier) if(active) @@ -156,7 +156,9 @@ plant_target.overlays -= overlay qdel(overlay) plant_target.contents -= src - forceMove(get_turf(plant_target)) + var/turf/plant_turf = get_turf(plant_target) + if(plant_turf) + forceMove(plant_turf) plant_target = null if(customizable) if(active) //deactivate From 5ac1975131cf309627af58f3a4d838554d3daef5 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 19 Nov 2023 03:02:07 -0800 Subject: [PATCH 105/355] Fix issue with null hud_used in stop_tracking_resin_mark (#4948) # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/f061830e-975f-49fb-b17e-a139fc5bff09) Fixes above runtime. Unsure if `hud_used` being null is because this is being called during the destroy process of the xeno, or if it's a deeper issue. I've put in a crash to test. --- code/modules/mob/living/carbon/xenomorph/XenoProcs.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index 780299547a51..0645d5fcba90 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -695,6 +695,12 @@ to_chat(src, SPAN_INFO("shift click the compass to watch the mark, alt click to stop tracking")) /mob/living/carbon/xenomorph/proc/stop_tracking_resin_mark(destroyed, silent = FALSE) //tracked_marker shouldnt be nulled outside this PROC!! >:C + if(QDELETED(src)) + return + + if(!hud_used) + CRASH("hud_used is null in stop_tracking_resin_mark") + var/atom/movable/screen/mark_locator/ML = hud_used.locate_marker ML.overlays.Cut() From 5f3331f6914b5b2726c5a001944a39ad65a6b896 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 19 Nov 2023 03:02:18 -0800 Subject: [PATCH 106/355] Fix null parent crash in radial slice clicked() (#4949) function # About the pull request Same method as https://github.com/cmss13-devs/cmss13/pull/4948 ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/c11029df-2442-4698-8002-da8625c0c7a0) --- code/_onclick/hud/radial.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/_onclick/hud/radial.dm b/code/_onclick/hud/radial.dm index cfc6c4d034fb..4a23ebd882d3 100644 --- a/code/_onclick/hud/radial.dm +++ b/code/_onclick/hud/radial.dm @@ -34,6 +34,12 @@ GLOBAL_LIST_EMPTY(radial_menus) /atom/movable/screen/radial/slice/clicked(mob/user) + if(QDELETED(src)) + return + + if(!parent) + CRASH("clicked() called on a radial slice with a null parent while not deleted/deleting") + if(user.client == parent.current_user) if(next_page) parent.next_page() From e398d9319e133dce4761adcd20e1958b076f468e Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 19 Nov 2023 03:02:28 -0800 Subject: [PATCH 107/355] Experimental sniper runtime fix (#4950) # About the pull request Fixes(?) below ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/21a757b2-05e1-44b9-be0d-5c1044cbe296) There are multiple possible causes, will look into further if this runtime pops up again --- code/modules/projectiles/guns/specialist/sniper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/projectiles/guns/specialist/sniper.dm b/code/modules/projectiles/guns/specialist/sniper.dm index 17a2c0f26887..1e72a425387b 100644 --- a/code/modules/projectiles/guns/specialist/sniper.dm +++ b/code/modules/projectiles/guns/specialist/sniper.dm @@ -154,7 +154,7 @@ target.overlays -= lockon_direction_icon qdel(laser_beam) - if(!check_can_use(target, TRUE)) + if(!check_can_use(target, TRUE) || target.is_dead()) return var/obj/projectile/aimed_proj = sniper_rifle.in_chamber From 9e45fbcb6433fe450d9e1a4ba9cb59f1870e375e Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Sun, 19 Nov 2023 03:02:39 -0800 Subject: [PATCH 108/355] Fix med_hud_set_health runtime for xenomorphs (#4951) # About the pull request Fixes below ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/ef8b8ae6-9e23-420e-acbe-24ddf035b7e5) Same rationale as https://github.com/cmss13-devs/cmss13/pull/4948 --- code/datums/mob_hud.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/code/datums/mob_hud.dm b/code/datums/mob_hud.dm index b0df9bca7745..ff1263510761 100644 --- a/code/datums/mob_hud.dm +++ b/code/datums/mob_hud.dm @@ -283,6 +283,12 @@ var/list/datum/mob_hud/huds = list( return /mob/living/carbon/xenomorph/med_hud_set_health() + if(QDELETED(src)) + return + + if(!(HEALTH_HUD_XENO in hud_list)) + CRASH("hud_list lacks HEALTH_HUD_XENO despite not being deleted in med_hud_set_health()") + var/image/holder = hud_list[HEALTH_HUD_XENO] var/health_hud_type = "xenohealth" From f5390a34f2e6b4c82c9a1cc27073885e6ff3447b Mon Sep 17 00:00:00 2001 From: Fira Date: Sun, 19 Nov 2023 11:26:32 +0000 Subject: [PATCH 109/355] fix incorrect logic for welding goggles --- code/modules/clothing/glasses/glasses.dm | 60 ++++++++++++------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/code/modules/clothing/glasses/glasses.dm b/code/modules/clothing/glasses/glasses.dm index 5a36112dfb4b..0fbca14801cf 100644 --- a/code/modules/clothing/glasses/glasses.dm +++ b/code/modules/clothing/glasses/glasses.dm @@ -508,37 +508,39 @@ set src in usr if(usr.is_mob_incapacitated()) - if(active) - active = 0 - vision_impair = vision_impair_off - flags_inventory &= ~COVEREYES - flags_inv_hide &= ~HIDEEYES - flags_armor_protection &= ~BODY_FLAG_EYES - update_icon() - eye_protection = EYE_PROTECTION_NONE - to_chat(usr, "You push [src] up out of your face.") - else - active = 1 - vision_impair = vision_impair_on - flags_inventory |= COVEREYES - flags_inv_hide |= HIDEEYES - flags_armor_protection |= BODY_FLAG_EYES - update_icon() - eye_protection = initial(eye_protection) - to_chat(usr, "You flip [src] down to protect your eyes.") - - - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - if(H.glasses == src) - H.update_tint() + return + + if(active) + active = 0 + vision_impair = vision_impair_off + flags_inventory &= ~COVEREYES + flags_inv_hide &= ~HIDEEYES + flags_armor_protection &= ~BODY_FLAG_EYES + update_icon() + eye_protection = EYE_PROTECTION_NONE + to_chat(usr, "You push [src] up out of your face.") + else + active = 1 + vision_impair = vision_impair_on + flags_inventory |= COVEREYES + flags_inv_hide |= HIDEEYES + flags_armor_protection |= BODY_FLAG_EYES + update_icon() + eye_protection = initial(eye_protection) + to_chat(usr, "You flip [src] down to protect your eyes.") + + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(H.glasses == src) + H.update_tint() - update_clothing_icon() + update_clothing_icon() - for(var/X in actions) - var/datum/action/A = X - if(istype(A, /datum/action/item_action/toggle)) - A.update_button_icon() + for(var/X in actions) + var/datum/action/A = X + if(istype(A, /datum/action/item_action/toggle)) + A.update_button_icon() /obj/item/clothing/glasses/welding/superior name = "superior welding goggles" From 7890da1288ab5ca1b6b7194c0172e92e80ff9f80 Mon Sep 17 00:00:00 2001 From: Fira Date: Sun, 19 Nov 2023 11:51:46 +0000 Subject: [PATCH 110/355] fix double seats, probably --- code/modules/vehicles/interior/interactable/seats.dm | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/code/modules/vehicles/interior/interactable/seats.dm b/code/modules/vehicles/interior/interactable/seats.dm index ebd002ba0c76..2984adda918e 100644 --- a/code/modules/vehicles/interior/interactable/seats.dm +++ b/code/modules/vehicles/interior/interactable/seats.dm @@ -388,16 +388,6 @@ handle_rotation() -/obj/structure/bed/chair/vehicle/unbuckle() - if(buckled_mob && buckled_mob.buckled == src) - buckled_mob.buckled = null - buckled_mob.anchored = initial(buckled_mob.anchored) - - var/M = buckled_mob - buckled_mob = null - - afterbuckle(M) - //attack handling /obj/structure/bed/chair/vehicle/attack_alien(mob/living/user) From 39af3a7b1643ee54dd24ac761ca77d1edfa080a7 Mon Sep 17 00:00:00 2001 From: Fira Date: Sun, 19 Nov 2023 11:52:27 +0000 Subject: [PATCH 111/355] fix buckled movement probably --- code/modules/mob/mob_movement.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index d041db13bfc5..eb6f1da8b256 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -142,6 +142,12 @@ if(mob.is_mob_incapacitated(TRUE)) return + + if(mob.buckled) + // Handle buckled relay before mobility because buckling inherently immobilizes + // This means you can (try to) move with a cargo tug or powerloader while immobilized, which i think makes sense + return mob.buckled.relaymove(mob, direct) + if(!(living_mob.mobility_flags & MOBILITY_MOVE)) return if(living_mob.body_position == LYING_DOWN && !living_mob.can_crawl) @@ -160,9 +166,6 @@ next_movement = world.time + MINIMAL_MOVEMENT_INTERVAL return - if(mob.buckled) - return mob.buckled.relaymove(mob, direct) - if(!mob.z)//Inside an object, tell it we moved var/atom/O = mob.loc if(!O) From 47bac6076f8f4ab9817e31f712f27f890a83a6d1 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 20 Nov 2023 01:12:24 +0000 Subject: [PATCH 112/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4946.yml | 4 ---- html/changelogs/archive/2023-11.yml | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4946.yml diff --git a/html/changelogs/AutoChangeLog-pr-4946.yml b/html/changelogs/AutoChangeLog-pr-4946.yml deleted file mode 100644 index 411c1b12c8bb..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4946.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Zonespace27" -delete-after: True -changes: - - bugfix: "Jump-to-area verb will now warn you if there aren't any turfs in the given area." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 2498cfca4286..6ffb285f9689 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -262,3 +262,7 @@ time). Abuse at your discretion. ihatethisengine: - rscadd: Cloaked lurker devouring now shows a message to target again. +2023-11-20: + Zonespace27: + - bugfix: Jump-to-area verb will now warn you if there aren't any turfs in the given + area. From 986d66f1c4d3eeda1f6d721df8dd65afbf5e5416 Mon Sep 17 00:00:00 2001 From: hislittlecuzingames <142365554+hislittlecuzingames@users.noreply.github.com> Date: Mon, 20 Nov 2023 07:28:39 -0500 Subject: [PATCH 113/355] Added Ability for Looping Sounds to be heard from further away. (#4857) # Allows Looping Sounds to be heard from further away. # Explain why it's good for the game allows for looping alarms to be proximity based and heard from more than 1 room away should one desire. side note... I was eating pizza and there was hella black ash on the bottom. I think they burned garlic bread. It was nasty. # Testing Photographs and Procedure screenshot a sound? okay uhh... I uhh... adjusted settings and played a looping sound and walked away from it. :cl: code: Added ability to have looping sounds from further away /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/datums/looping_sounds/_looping_sound.dm | 34 ++++++++++++-------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm index c6fc23c68eba..11ba15146430 100644 --- a/code/datums/looping_sounds/_looping_sound.dm +++ b/code/datums/looping_sounds/_looping_sound.dm @@ -37,6 +37,15 @@ /// Has the looping started yet? var/loop_started = FALSE + /** + * Let's you make a "loud" sound that "projects." IE you can hear this sound from a further distance away. + * Think of like an air raid siren. They're loud if you're close yeah... but you can hear them from mad far away, bruv + * with a longer "falloff distance." Fixes the extra_range stuff + */ + var/is_sound_projecting = FALSE + ///only applicable to is_sound_projecting: max range till sound volume starts dropping as distance increases + var/falloff_distance = 50 + /* // as of yet unused varen \\ /// How much the sound will be affected by falloff per tile. @@ -130,19 +139,18 @@ sound_to_play.channel = get_free_channel() sound_to_play.volume = volume_override || volume //Use volume as fallback if theres no override SEND_SOUND(parent, sound_to_play) - else - playsound( - parent, - sound_to_play, - volume, - vary, - extra_range//, - // falloff_exponent = falloff_exponent, - // pressure_affected = pressure_affected, - // ignore_walls = ignore_walls, - // falloff_distance = falloff_distance, - // use_reverb = use_reverb - ) + return + if (is_sound_projecting) + playsound(parent, sound_to_play, volume, vary, extra_range, VOLUME_SFX, 0, 0, falloff_distance) + return + + playsound( + parent, + sound_to_play, + volume, + vary, + extra_range + ) /// Returns the sound we should now be playing. /datum/looping_sound/proc/get_sound(_mid_sounds) From 068b9f724b4ec429e5b1dbdb84ccca356b41be2a Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Mon, 20 Nov 2023 12:38:34 +0000 Subject: [PATCH 114/355] Automatic changelog for PR #4857 [ci skip] --- html/changelogs/AutoChangeLog-pr-4857.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4857.yml diff --git a/html/changelogs/AutoChangeLog-pr-4857.yml b/html/changelogs/AutoChangeLog-pr-4857.yml new file mode 100644 index 000000000000..775c87aff5e5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4857.yml @@ -0,0 +1,4 @@ +author: "hislittlecuzingames" +delete-after: True +changes: + - code_imp: "Added ability to have looping sounds from further away" \ No newline at end of file From 617580ac3ceaa8ad97081e9625bfa4cf8c8ff69d Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 13:45:30 +0000 Subject: [PATCH 115/355] rest cd --- code/modules/mob/living/carbon/human/powers/human_powers.dm | 4 ++++ code/modules/mob/living/living_defines.dm | 3 +++ 2 files changed, 7 insertions(+) diff --git a/code/modules/mob/living/carbon/human/powers/human_powers.dm b/code/modules/mob/living/carbon/human/powers/human_powers.dm index 9cab659980a6..219212d1e122 100644 --- a/code/modules/mob/living/carbon/human/powers/human_powers.dm +++ b/code/modules/mob/living/carbon/human/powers/human_powers.dm @@ -201,6 +201,10 @@ return if(new_resting == resting) return + if(!COOLDOWN_FINISHED(src, rest_cooldown)) + to_chat(src, SPAN_WARNING("You can't 'rest' that fast. Take a breather!")) + return + COOLDOWN_START(src, rest_cooldown, 1 SECONDS) . = resting resting = new_resting diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index f966d7828383..ce4634a102fc 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -23,6 +23,9 @@ var/superslowed = 0 // X_SUPERSLOW_AMOUNT var/sleeping = 0 + /// Cooldown for manually toggling resting to avoid spamming + COOLDOWN_DECLARE(rest_cooldown) + var/hallucination = 0 //Directly affects how long a mob will hallucinate for var/list/atom/hallucinations = list() //A list of hallucinated people that try to attack the mob. See /obj/effect/fake_attacker in hallucinations.dm From 7d4a9fad623508aa05c2a969896e0b3bc90afb87 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 14:25:25 +0000 Subject: [PATCH 116/355] fix welding mask logic --- code/modules/clothing/head/misc_special.dm | 54 +++++++++++----------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index edbd831d9909..afc8e0a7cbba 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -46,32 +46,34 @@ set src in usr if(usr.is_mob_incapacitated()) - if(up) - vision_impair = VISION_IMPAIR_MAX - flags_inventory |= COVEREYES|COVERMOUTH|BLOCKSHARPOBJ - flags_inv_hide |= HIDEEARS|HIDEEYES|HIDEFACE - icon_state = initial(icon_state) - eye_protection = initial(eye_protection) - to_chat(usr, "You flip the [src] down to protect your eyes.") - else - vision_impair = VISION_IMPAIR_NONE - flags_inventory &= ~(COVEREYES|COVERMOUTH|BLOCKSHARPOBJ) - flags_inv_hide &= ~(HIDEEARS|HIDEEYES|HIDEFACE) - icon_state = "[initial(icon_state)]up" - eye_protection = EYE_PROTECTION_NONE - to_chat(usr, "You push the [src] up out of your face.") - up = !up - - if(ishuman(loc)) - var/mob/living/carbon/human/H = loc - if(H.head == src) - H.update_tint() - - update_clothing_icon() //so our mob-overlays update - - for(var/X in actions) - var/datum/action/A = X - A.update_button_icon() + return + + if(up) + vision_impair = VISION_IMPAIR_MAX + flags_inventory |= COVEREYES|COVERMOUTH|BLOCKSHARPOBJ + flags_inv_hide |= HIDEEARS|HIDEEYES|HIDEFACE + icon_state = initial(icon_state) + eye_protection = initial(eye_protection) + to_chat(usr, "You flip the [src] down to protect your eyes.") + else + vision_impair = VISION_IMPAIR_NONE + flags_inventory &= ~(COVEREYES|COVERMOUTH|BLOCKSHARPOBJ) + flags_inv_hide &= ~(HIDEEARS|HIDEEYES|HIDEFACE) + icon_state = "[initial(icon_state)]up" + eye_protection = EYE_PROTECTION_NONE + to_chat(usr, "You push the [src] up out of your face.") + up = !up + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + if(H.head == src) + H.update_tint() + + update_clothing_icon() //so our mob-overlays update + + for(var/X in actions) + var/datum/action/A = X + A.update_button_icon() /* * Cakehat From 863589c3b322b4a4deb0e179b84c4a1dd8922d44 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 15:31:19 +0000 Subject: [PATCH 117/355] bugfixes --- code/modules/mob/living/living_health_procs.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index 0cd59ded16fd..e4c9659db827 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -94,11 +94,14 @@ stun_timer = TIMER_ID_NULL /mob/living/proc/stun_callback_check() - if(knocked_out) + if(stunned) ADD_TRAIT(src, TRAIT_INCAPACITATED, STUNNED_TRAIT) if(stunned && stunned < recovery_constant) stun_timer = addtimer(CALLBACK(src, PROC_REF(stun_callback)), (stunned/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) return + if(!stunned) // Force reset since the timer wasn't called + stun_callback() + return if(stun_timer != TIMER_ID_NULL) deltimer(stun_timer) @@ -188,6 +191,10 @@ knocked_down_timer = addtimer(CALLBACK(src, PROC_REF(knocked_down_callback)), (knocked_down/recovery_constant) * 2 SECONDS, TIMER_OVERRIDE|TIMER_UNIQUE|TIMER_STOPPABLE) // times whatever amount we have per tick return + if(!knocked_down) // Force reset since the timer wasn't called + knocked_down_callback() + return + if(knocked_down_timer) deltimer(knocked_down_timer) knocked_down_timer = null From f63732cb06aeefa8c3e8ba38fdb3a6b8400a4174 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 15:38:02 +0000 Subject: [PATCH 118/355] stasis bag safety check --- code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm b/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm index 024235b78156..16d9955395b0 100644 --- a/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm +++ b/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm @@ -6,5 +6,7 @@ if(STASIS_IN_BAG) // I hate whoever wrote this and statuses with a passion knocked_down = knocked_down? --knocked_down : knocked_down + 10 //knocked_down set. + if(knocked_down <= 0) + knocked_down_callback() if(STASIS_IN_CRYO_CELL) if(sleeping < 10) sleeping += 10 //Puts the mob to sleep indefinitely. From cef8d44a4d5f0885033ff5a4f6735f08e76e5614 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 19:06:40 +0000 Subject: [PATCH 119/355] fix roundstart nesting angle --- code/game/jobs/job/antag/xeno/xenomorph.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/jobs/job/antag/xeno/xenomorph.dm b/code/game/jobs/job/antag/xeno/xenomorph.dm index d807cd3be38b..78b6ab7e3ab2 100644 --- a/code/game/jobs/job/antag/xeno/xenomorph.dm +++ b/code/game/jobs/job/antag/xeno/xenomorph.dm @@ -88,7 +88,7 @@ break human_to_transform.statistic_exempt = TRUE - human_to_transform.buckled = start_nest + human_to_transform.set_buckled(start_nest) human_to_transform.setDir(start_nest.dir) start_nest.buckled_mob = human_to_transform start_nest.afterbuckle(human_to_transform) From 442a4fffb46e6ad32b5235e8c8207f43c0e26e0b Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 19:26:14 +0000 Subject: [PATCH 120/355] resting doesnt prevent opening xeno tacmap anymore --- .../carbon/xenomorph/abilities/general_abilities.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm index 29172fd9b1d3..00a7ceaba97e 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/general_abilities.dm @@ -541,6 +541,14 @@ hide_from(owner) +/datum/action/xeno_action/onclick/tacmap/can_use_action() + if(!owner) + return FALSE + var/mob/living/carbon/xenomorph/xeno = owner + if(xeno.is_mob_incapacitated() || xeno.dazed) + return FALSE + return TRUE + /datum/action/xeno_action/onclick/tacmap/use_ability(atom/target) var/mob/living/carbon/xenomorph/xeno = owner xeno.xeno_tacmap() From 62d5b98b44d9e82792bb73fe4d86cc39ce305ce8 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 20:31:06 +0000 Subject: [PATCH 121/355] fix freeze overlay on nested --- code/datums/mob_hud.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/datums/mob_hud.dm b/code/datums/mob_hud.dm index d401a4e7f91d..74e0c750ecad 100644 --- a/code/datums/mob_hud.dm +++ b/code/datums/mob_hud.dm @@ -797,6 +797,6 @@ var/global/image/hud_icon_hudfocus if (tag_found) tag_holder.overlays += image('icons/mob/hud/hud.dmi', src, "prae_tag") - var/freeze_found = HAS_TRAIT(src, TRAIT_IMMOBILIZED) && body_position == STANDING_UP // Don't display roots on targets down due to eg. Knockdowns, Knockouts, SSD, resting, and so on + var/freeze_found = HAS_TRAIT(src, TRAIT_IMMOBILIZED) && body_position == STANDING_UP && !buckled // Eligible targets are unable to move but can stand and aren't buckled (eg nested) - This is to convey that they are temporarily unable to move if (freeze_found) freeze_holder.overlays += image('icons/mob/hud/hud.dmi', src, "xeno_freeze") From 7525607522fa3aeef044d970683c40d673d39e52 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 21:07:11 +0000 Subject: [PATCH 122/355] doc --- code/__DEFINES/mobs.dm | 4 ++-- code/modules/mob/living/living_health_procs.dm | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 39de54568530..011d5d03e58c 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -1,5 +1,5 @@ -/// Multiplier for Stun/KD/KO/etc durations in new backend, due to old being based on life ticks -#define GLOBAL_STATUS_MULTIPLIER 20 // 2 Seconds life tick to ds +/// Multiplier for Stun/KD/KO/etc durations in new backend, due to old system being based on life ticks +#define GLOBAL_STATUS_MULTIPLIER 20 // each in-code unit is worth 20ds of duration #define HEALTH_THRESHOLD_DEAD -100 #define HEALTH_THRESHOLD_CRIT -50 diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index acf32fae5405..8f10aa1f7f2a 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -87,7 +87,7 @@ return amount * GLOBAL_STATUS_MULTIPLIER /mob/living/proc/IsStun() //If we're stunned return has_status_effect(/datum/status_effect/incapacitating/stun) -/mob/living/proc/AmountStun() //How many deciseconds remain in our stun +/mob/living/proc/AmountStun() //How much time remain in our stun - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds) var/datum/status_effect/incapacitating/stun/S = IsStun() if(S) return S.get_duration_left() / GLOBAL_STATUS_MULTIPLIER @@ -176,7 +176,7 @@ return amount * GLOBAL_STATUS_MULTIPLIER /mob/living/proc/IsKnockDown() return has_status_effect(/datum/status_effect/incapacitating/knockdown) -/mob/living/proc/AmountKnockDown() //How many deciseconds remains +/mob/living/proc/AmountKnockDown() //How much time remains - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds) var/datum/status_effect/incapacitating/knockdown/S = IsKnockDown() if(S) return S.get_duration_left() / GLOBAL_STATUS_MULTIPLIER @@ -222,7 +222,7 @@ return amount * GLOBAL_STATUS_MULTIPLIER /mob/living/proc/IsKnockOut() return has_status_effect(/datum/status_effect/incapacitating/unconscious) -/mob/living/proc/AmountKnockOut() //How many deciseconds remains +/mob/living/proc/AmountKnockOut() //How much time remains - scaled by GLOBAL_STATUS_MULTIPLIER (normally in multiples of legacy 2 seconds) var/datum/status_effect/incapacitating/unconscious/S = IsKnockOut() if(S) return S.get_duration_left() / GLOBAL_STATUS_MULTIPLIER From 465f7c3e6f8759baa9d60008268f75ef818482f0 Mon Sep 17 00:00:00 2001 From: Fira Date: Mon, 20 Nov 2023 21:45:38 +0000 Subject: [PATCH 123/355] compile fixes, knockdown now immobilizess, as CM Dev intended --- code/datums/ammo/xeno.dm | 6 +++--- code/datums/status_effects/debuffs/debuffs.dm | 4 ++-- code/game/machinery/medical_pod/bodyscanner.dm | 4 ++-- code/game/machinery/medical_pod/sleeper.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 4 ++-- code/modules/mob/living/carbon/human/human_attackhand.dm | 4 ++-- .../mob/living/carbon/human/life/handle_stasis_bag.dm | 8 ++++---- code/modules/mob/living/living_defines.dm | 5 +---- code/modules/mob/living/living_health_procs.dm | 8 -------- code/modules/mob/living/silicon/ai/life.dm | 3 --- code/modules/mob/living/silicon/robot/life.dm | 2 +- code/modules/mob/mob.dm | 5 ----- 12 files changed, 18 insertions(+), 37 deletions(-) diff --git a/code/datums/ammo/xeno.dm b/code/datums/ammo/xeno.dm index 9ecc9ebf9321..a2dbe16b1fa4 100644 --- a/code/datums/ammo/xeno.dm +++ b/code/datums/ammo/xeno.dm @@ -49,7 +49,7 @@ if(!isxeno(M)) if(insta_neuro) - if(M.GetKnockDownValueNotADurationDoNotUse() < 3) // If they have less than somewhere random between 4 and 6 seconds KD left and assuming it doesnt get refreshed itnernally + if(M.GetKnockDownDuration() < 3) // Why are you not using KnockDown(3) ? Do you even know 3 is SIX seconds ? So many questions left unanswered. M.adjust_effect(1 * power, WEAKEN) return @@ -65,7 +65,7 @@ no_clothes_neuro = TRUE if(no_clothes_neuro) - if(M.GetKnockDownValueNotADurationDoNotUse() < 5) // If they have less than somewhere random between 8 and 10 seconds KD left and assuming it doesnt get refreshed itnernally + if(M.GetKnockDownDuration() < 5) // Nobody actually knows what this means. Supposedly it means less than 10 seconds. Frankly if you get locked into 10s of knockdown to begin with there are bigger issues. M.adjust_effect(1 * power, WEAKEN) // KD them a bit more M.visible_message(SPAN_DANGER("[M] falls prone.")) @@ -79,7 +79,7 @@ H.visible_message(SPAN_DANGER("[M] shrugs off the neurotoxin!")) return - if(M.GetKnockDownValueNotADurationDoNotUse() < 0.7) // basically (knocked_down && prob(90)) + if(M.GetKnockDownDuration() < 0.7) // Worth noting that the value has 0.25~0.5 resolution so this is completely stupid. Stop microdosing balance and get real M.apply_effect(0.7, WEAKEN) M.visible_message(SPAN_DANGER("[M] falls prone.")) diff --git a/code/datums/status_effects/debuffs/debuffs.dm b/code/datums/status_effects/debuffs/debuffs.dm index f74c6d0ebd29..afc556c1d788 100644 --- a/code/datums/status_effects/debuffs/debuffs.dm +++ b/code/datums/status_effects/debuffs/debuffs.dm @@ -51,10 +51,10 @@ . = ..() if(!.) return - ADD_TRAIT(owner, TRAIT_FLOORED, TRAIT_STATUS_EFFECT(id)) + owner.add_traits(list(TRAIT_FLOORED, TRAIT_IMMOBILIZED), TRAIT_STATUS_EFFECT(id)) /datum/status_effect/incapacitating/knockdown/on_remove() - REMOVE_TRAIT(owner, TRAIT_FLOORED, TRAIT_STATUS_EFFECT(id)) + owner.remove_traits(list(TRAIT_FLOORED, TRAIT_IMMOBILIZED), TRAIT_STATUS_EFFECT(id)) return ..() /atom/movable/screen/alert/status_effect/knockdown diff --git a/code/game/machinery/medical_pod/bodyscanner.dm b/code/game/machinery/medical_pod/bodyscanner.dm index bbc3be7d5aae..732ff1ba97b9 100644 --- a/code/game/machinery/medical_pod/bodyscanner.dm +++ b/code/game/machinery/medical_pod/bodyscanner.dm @@ -204,7 +204,7 @@ "toxloss" = H.getToxLoss(), "cloneloss" = H.getCloneLoss(), "brainloss" = H.getBrainLoss(), - "knocked_out" = H.GetKnockOutValueNotADurationDoNotUse(), + "knocked_out" = H.GetKnockOutDuration(), "bodytemp" = H.bodytemperature, "inaprovaline_amount" = H.reagents.get_reagent_amount("inaprovaline"), "dexalin_amount" = H.reagents.get_reagent_amount("dexalin"), @@ -263,7 +263,7 @@ s_class = occ["brainloss"] < 1 ? INTERFACE_GOOD : INTERFACE_BAD dat += "[SET_CLASS("  Approx. Brain Damage:", INTERFACE_PINK)] [SET_CLASS("[occ["brainloss"]]%", s_class)]

" - dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% (approximately [round(occ["knocked_out"] / 5)] seconds left!)
" + dat += "[SET_CLASS("Knocked Out Summary:", "#40628a")] [occ["knocked_out"]]% (approximately [round(occ["knocked_out"] * GLOBAL_STATUS_MULTIPLIER / (1 SECONDS))] seconds left!)
" dat += "[SET_CLASS("Body Temperature:", "#40628a")] [occ["bodytemp"]-T0C]°C ([occ["bodytemp"]*1.8-459.67]°F)

" s_class = occ["blood_amount"] > 448 ? INTERFACE_OKAY : INTERFACE_BAD diff --git a/code/game/machinery/medical_pod/sleeper.dm b/code/game/machinery/medical_pod/sleeper.dm index 0694783e2081..6e7064855166 100644 --- a/code/game/machinery/medical_pod/sleeper.dm +++ b/code/game/machinery/medical_pod/sleeper.dm @@ -391,7 +391,7 @@ to_chat(user, "[]\t -Toxin Content %: []", (occupant.getToxLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getToxLoss()) to_chat(user, "[]\t -Burn Severity %: []", (occupant.getFireLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getFireLoss()) to_chat(user, SPAN_NOTICE(" Expected time till occupant can safely awake: (note: These times are always inaccurate)")) - to_chat(user, SPAN_NOTICE(" \t [occupant.GetKnockOutValueNotADurationDoNotUse() / 5] second\s (if around 1 or 2 the sleeper is keeping them asleep.)")) + to_chat(user, SPAN_NOTICE(" \t [occupant.GetKnockOutDuration() * GLOBAL_STATUS_MULTIPLIER / (1 SECONDS)] second\s (if around 1 or 2 the sleeper is keeping them asleep.)")) else to_chat(user, SPAN_NOTICE(" There is no one inside!")) return diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6da5f042529a..44ffc1153fb4 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1098,9 +1098,9 @@ for(var/datum/effects/bleeding/internal/internal_bleed in effects_list) msg += "They have bloating and discoloration on their [internal_bleed.limb.display_name]\n" - if(knocked_out && stat != DEAD) + if(stat == UNCONSCIOUS) msg += "They seem to be unconscious\n" - if(stat == DEAD) + else if(stat == DEAD) if(src.check_tod() && is_revivable()) msg += "They're not breathing" else diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 2bb113d67739..94dd4264f11f 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -206,14 +206,14 @@ w_uniform.add_fingerprint(M) - if(body_position == LYING_DOWN || sleeping) + if(HAS_TRAIT(src, TRAIT_FLOORED) || HAS_TRAIT(src, TRAIT_KNOCKEDOUT) || body_position == LYING_DOWN || sleeping) if(client) sleeping = max(0,src.sleeping-5) if(!sleeping) set_resting(FALSE) M.visible_message(SPAN_NOTICE("[M] shakes [src] trying to wake [t_him] up!"), \ SPAN_NOTICE("You shake [src] trying to wake [t_him] up!"), null, 4) - else if(stunned) + else if(HAS_TRAIT(src, TRAIT_INCAPACITATED)) M.visible_message(SPAN_NOTICE("[M] shakes [src], trying to shake [t_him] out of his stupor!"), \ SPAN_NOTICE("You shake [src], trying to shake [t_him] out of his stupor!"), null, 4) else diff --git a/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm b/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm index 16d9955395b0..43c757fabb3e 100644 --- a/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm +++ b/code/modules/mob/living/carbon/human/life/handle_stasis_bag.dm @@ -4,9 +4,9 @@ //Handle side effects from stasis switch(in_stasis) if(STASIS_IN_BAG) - // I hate whoever wrote this and statuses with a passion - knocked_down = knocked_down? --knocked_down : knocked_down + 10 //knocked_down set. - if(knocked_down <= 0) - knocked_down_callback() + // At least 6 seconds, but reduce by 2s every time - IN ADDITION to normal recovery + // Don't ask me why and feel free to change it + KnockDown(3) + AdjustKnockDown(-1) if(STASIS_IN_CRYO_CELL) if(sleeping < 10) sleeping += 10 //Puts the mob to sleep indefinitely. diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 5518680d7492..fb2bd2af0cf9 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -14,10 +14,7 @@ var/brainloss = 0 //'Retardation' damage caused by someone hitting you in the head with a bible or being infected with brainrot. var/halloss = 0 //Hallucination damage. 'Fake' damage obtained through hallucinating or the holodeck. Sleeping should cause it to wear off. - // please don't use these - VAR_PROTECTED/knocked_out = 0 - VAR_PROTECTED/knocked_down = 0 - VAR_PROTECTED/stunned = 0 + // please don't use these directly, use the procs var/dazed = 0 var/slowed = 0 // X_SLOW_AMOUNT var/superslowed = 0 // X_SUPERSLOW_AMOUNT diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm index 8f10aa1f7f2a..c4a16edd630d 100644 --- a/code/modules/mob/living/living_health_procs.dm +++ b/code/modules/mob/living/living_health_procs.dm @@ -493,11 +493,3 @@ return face_dir(direction) return ..() - -// Transition handlers. do NOT use this. I mean seriously don't. It's broken. Players love their broken behaviors. -/mob/living/proc/GetStunValueNotADurationDoNotUse() - return stunned -/mob/living/proc/GetKnockDownValueNotADurationDoNotUse() - return knocked_down -/mob/living/proc/GetKnockOutValueNotADurationDoNotUse() - return knocked_out diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 5b190143f5bc..7b0ee6869e80 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -34,9 +34,6 @@ // Gain Power apply_damage(-1, OXY) - // Handle EMP-stun - handle_stunned() - //stage = 1 //if (isRemoteControlling(src)) // Are we not sure what we are? var/blind = 0 diff --git a/code/modules/mob/living/silicon/robot/life.dm b/code/modules/mob/living/silicon/robot/life.dm index b4a6e59e52e2..ac031e74e11f 100644 --- a/code/modules/mob/living/silicon/robot/life.dm +++ b/code/modules/mob/living/silicon/robot/life.dm @@ -22,7 +22,7 @@ /mob/living/silicon/robot/proc/clamp_values() // set_effect(min(stunned, 30), STUN) - set_effect(min(knocked_out, 30), PARALYZE) +// set_effect(min(knocked_out, 30), PARALYZE) // set_effect(min(knocked_down, 20), WEAKEN) sleeping = 0 apply_damage(0, BRUTE) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index b59adc94b5de..cd98fa3da34f 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -853,11 +853,6 @@ note dizziness decrements automatically in the mob's Life() proc. handle_slowed() handle_superslowed() -/mob/living/proc/handle_stunned() - if(stunned) - adjust_effect(-1, STUN) - return stunned - /mob/living/proc/handle_dazed() if(dazed) adjust_effect(-1, DAZE) From 56a0b3e033f8886f48602489cc46f32d15ace438 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Tue, 21 Nov 2023 01:14:19 +0000 Subject: [PATCH 124/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4857.yml | 4 ---- html/changelogs/archive/2023-11.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4857.yml diff --git a/html/changelogs/AutoChangeLog-pr-4857.yml b/html/changelogs/AutoChangeLog-pr-4857.yml deleted file mode 100644 index 775c87aff5e5..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4857.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "hislittlecuzingames" -delete-after: True -changes: - - code_imp: "Added ability to have looping sounds from further away" \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 6ffb285f9689..d7d533486f25 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -266,3 +266,6 @@ Zonespace27: - bugfix: Jump-to-area verb will now warn you if there aren't any turfs in the given area. +2023-11-21: + hislittlecuzingames: + - code_imp: Added ability to have looping sounds from further away From 9c274b68e10cf775073a7dd3a931149f12dd3cc0 Mon Sep 17 00:00:00 2001 From: hislittlecuzingames <142365554+hislittlecuzingames@users.noreply.github.com> Date: Tue, 21 Nov 2023 05:57:20 -0500 Subject: [PATCH 125/355] =?UTF-8?q?Added=20Ability=20to=20turn=20on=20and?= =?UTF-8?q?=20turn=20off=20a=20dropship=20alarm.=20(Requires=20pro?= =?UTF-8?q?=E2=80=A6=20(#4858)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …jecting-looping-sounds branch made 5 November 2023 to work) #ATTENTION!!!!! Requires this PR to be approved first to work: https://github.com/cmss13-devs/cmss13/pull/4857 # About the pull request Makes an alarm the pilots can use on alamo or normandy to tell ground forces "Hey I plan on taking off soon." # Explain why it's good for the game The ship takeoff sound to taking off is like 7 seconds. Ground combat is mad intense & people can miss people talking. So having that alarm may make it so people hear that they're leaving before the ship leaves. # Testing Photographs and Procedure
Screenshots & Videos oh...
# Changelog :cl: add: Launch Announcement Alarm for dropships to notify ground forces of departure. /:cl: --------- Co-authored-by: Drathek <76988376+Drulikar@users.noreply.github.com> --- code/datums/looping_sounds/misc_sounds.dm | 3 + .../shuttle/computers/dropship_computer.dm | 22 +++++++ code/modules/shuttle/shuttle.dm | 12 ++++ colonialmarines.dme | 1 + .../Dropships/single_alarm_brr_dropship_1.ogg | Bin 0 -> 22433 bytes .../tgui/interfaces/DropshipFlightControl.tsx | 55 +++++++++++++++++- 6 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 code/datums/looping_sounds/misc_sounds.dm create mode 100644 sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg diff --git a/code/datums/looping_sounds/misc_sounds.dm b/code/datums/looping_sounds/misc_sounds.dm new file mode 100644 index 000000000000..6411b3f51f4a --- /dev/null +++ b/code/datums/looping_sounds/misc_sounds.dm @@ -0,0 +1,3 @@ +/datum/looping_sound/looping_launch_announcement_alarm + mid_sounds = list('sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg' = 1) + start_sound = list('sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg' = 1) diff --git a/code/modules/shuttle/computers/dropship_computer.dm b/code/modules/shuttle/computers/dropship_computer.dm index 4fe102270537..d72e0871af72 100644 --- a/code/modules/shuttle/computers/dropship_computer.dm +++ b/code/modules/shuttle/computers/dropship_computer.dm @@ -319,6 +319,9 @@ .["door_status"] = is_remote ? list() : shuttle.get_door_data() .["has_flyby_skill"] = skillcheck(user, SKILL_PILOT, SKILL_PILOT_EXPERT) + // Launch Alarm Variables + .["playing_launch_announcement_alarm"] = shuttle.playing_launch_announcement_alarm + .["destinations"] = list() // add flight .["destinations"] += list( @@ -381,6 +384,7 @@ msg_admin_niche(log) log_interact(user, msg = "[log]") shuttle.send_for_flyby() + stop_playing_launch_announcement_alarm() return TRUE update_equipment(is_optimised, FALSE) @@ -410,6 +414,7 @@ var/log = "[key_name(user)] launched the dropship [src.shuttleId] on transport." msg_admin_niche(log) log_interact(user, msg = "[log]") + stop_playing_launch_announcement_alarm() return TRUE if("button-push") playsound(loc, get_sfx("terminal_button"), KEYBOARD_SOUND_VOLUME, 1) @@ -469,6 +474,23 @@ if("cancel-flyby") if(shuttle.in_flyby && shuttle.timer && shuttle.timeLeft(1) >= DROPSHIP_WARMUP_TIME) shuttle.setTimer(DROPSHIP_WARMUP_TIME) + if("play_launch_announcement_alarm") + if (shuttle.mode != SHUTTLE_IDLE && shuttle.mode != SHUTTLE_RECHARGING) + to_chat(usr, SPAN_WARNING("The Launch Announcement Alarm is designed to tell people that you're going to take off soon.")) + return + shuttle.alarm_sound_loop.start() + shuttle.playing_launch_announcement_alarm = TRUE + return + if ("stop_playing_launch_announcement_alarm") + stop_playing_launch_announcement_alarm() + return + +/obj/structure/machinery/computer/shuttle/dropship/flight/proc/stop_playing_launch_announcement_alarm() + var/obj/docking_port/mobile/marine_dropship/shuttle = SSshuttle.getShuttle(shuttleId) + + shuttle.alarm_sound_loop.stop() + shuttle.playing_launch_announcement_alarm = FALSE + return /obj/structure/machinery/computer/shuttle/dropship/flight/lz1 icon = 'icons/obj/structures/machinery/computer.dmi' diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 7bbdb214d34b..85fc38bf5f1b 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -343,6 +343,9 @@ var/rechargeTime = 0 //time spent after arrival before being able to launch again var/prearrivalTime = 0 //delay after call time finishes for sound effects, explosions, etc. + var/playing_launch_announcement_alarm = FALSE // FALSE = off ; TRUE = on + var/datum/looping_sound/looping_launch_announcement_alarm/alarm_sound_loop + var/landing_sound = 'sound/effects/engine_landing.ogg' var/ignition_sound = 'sound/effects/engine_startup.ogg' /// Default shuttle audio ambience while flying @@ -383,6 +386,7 @@ /obj/docking_port/mobile/Destroy(force) if(force) + QDEL_NULL(alarm_sound_loop) SSshuttle.mobile -= src destination = null previous = null @@ -410,6 +414,14 @@ initial_engines = count_engines() current_engines = initial_engines + //Launch Announcement Alarm variables setup + alarm_sound_loop = new(src) + alarm_sound_loop.mid_length = 20 + alarm_sound_loop.extra_range = 30 + alarm_sound_loop.volume = 100 + alarm_sound_loop.is_sound_projecting = TRUE + alarm_sound_loop.falloff_distance = 7 + #ifdef DOCKING_PORT_HIGHLIGHT highlight("#0f0") #endif diff --git a/colonialmarines.dme b/colonialmarines.dme index 293b69c60d1c..a4ff7cf7c9ab 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -553,6 +553,7 @@ #include "code\datums\langchat\langchat.dm" #include "code\datums\looping_sounds\_looping_sound.dm" #include "code\datums\looping_sounds\item_sounds.dm" +#include "code\datums\looping_sounds\misc_sounds.dm" #include "code\datums\origin\civilian.dm" #include "code\datums\origin\origin.dm" #include "code\datums\origin\upp.dm" diff --git a/sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg b/sound/vehicles/Dropships/single_alarm_brr_dropship_1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..9fe0b4c11da16009e15c30e998f35e6f479d37e8 GIT binary patch literal 22433 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 R9cJ@J!mrSPqN*?O{{mNrQ#b$s literal 0 HcmV?d00001 diff --git a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx index 65a67524f5b4..bbb7fea96d2c 100644 --- a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx +++ b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx @@ -23,6 +23,8 @@ interface DropshipNavigationProps extends NavigationProps { primary_lz?: string; automated_control: AutomatedControl; has_flyby_skill: 0 | 1; + + playing_launch_announcement_alarm: boolean; } const DropshipDoorControl = (_, context) => { @@ -42,7 +44,10 @@ const DropshipDoorControl = (_, context) => { + ); +}; + +const PlayLaunchAnnouncementAlarm = (_, context) => { + const { act } = useBackend(context); + return ( + + ); +}; + +const LaunchAnnouncementAlarm = (_, context) => { + const { data, act } = useBackend(context); + const [siteselection, setSiteSelection] = useSharedState( + context, + 'target_site', + undefined + ); + return ( +
+ ) : ( + + ) + } + /> + ); +}; + const RenderScreen = (props, context) => { const { data } = useBackend(context); return ( @@ -292,6 +344,7 @@ const RenderScreen = (props, context) => { )} {data.door_status.length > 0 && } + {} ); }; From ef6587e938058c360d4a685015a4f0ba3aa5473a Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 21 Nov 2023 11:13:50 +0000 Subject: [PATCH 126/355] Automatic changelog for PR #4858 [ci skip] --- html/changelogs/AutoChangeLog-pr-4858.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4858.yml diff --git a/html/changelogs/AutoChangeLog-pr-4858.yml b/html/changelogs/AutoChangeLog-pr-4858.yml new file mode 100644 index 000000000000..22a86b1c3f54 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4858.yml @@ -0,0 +1,4 @@ +author: "hislittlecuzingames" +delete-after: True +changes: + - rscadd: "Launch Announcement Alarm for dropships to notify ground forces of departure." \ No newline at end of file From 3016d51b5d366c90ed83a7c71d8a76919bd36607 Mon Sep 17 00:00:00 2001 From: Fira Date: Tue, 21 Nov 2023 13:48:26 +0000 Subject: [PATCH 127/355] remove random offset on buckled --- code/modules/mob/living/living.dm | 2 -- 1 file changed, 2 deletions(-) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 79ce8d87dfa9..6205c4f919a4 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -644,8 +644,6 @@ var/matrix/base = matrix() if(pulledby && pulledby.grab_level >= GRAB_CARRY) visual_angle = 90 // CM code - for fireman carry - else if(lying_angle) - base.Translate(rand(-10,10), rand(-10,10)) if(instant_update) apply_transform(base.Turn(visual_angle)) else From 0091b025d7352dbee411dbbde29a7fdffcc5d209 Mon Sep 17 00:00:00 2001 From: Fira Date: Tue, 21 Nov 2023 20:53:10 +0000 Subject: [PATCH 128/355] fix missing animation parallel causing knock to cancel some others --- code/game/atoms.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index e0590265840c..6bb15dd7f24f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -166,7 +166,7 @@ directive is properly returned. if(!time) transform = complete return - animate(src, transform = complete, time = time, easing = easing) + animate(src, transform = complete, time = time, easing = easing, flags = ANIMATION_PARALLEL) /// Upates the base_transform which will be compounded with other transforms /atom/proc/update_base_transform(matrix/new_transform, time = 0) From c0caa87164bbd53c00837259656380b5f48ca231 Mon Sep 17 00:00:00 2001 From: morrowwolf Date: Tue, 21 Nov 2023 15:59:04 -0500 Subject: [PATCH 129/355] Mess tech scaling (#4983) # About the pull request This PR adds scaling to allow for an extra mess tech slot once there are 70 marines playing. This is a paid code request from a player. # Explain why it's good for the game Mess tech can be a lonely job and it can spice things up to have a partner in the culinary arts. # Testing Photographs and Procedure I spawned in as a mess tech. I then created 50 marines and checked if I could spawn in as a mess tech. As expected the answer was no. I then creates 20 more marines and checked if I could spawn in as a mess tech and could. # Changelog :cl: Morrow add: Mess tech positions now scale from 1 to 2 after 70 marines are in the game /:cl: --------- Co-authored-by: BeagleGaming1 <56142455+BeagleGaming1@users.noreply.github.com> --- .../jobs/job/civilians/other/mess_seargent.dm | 20 ++++++++++++++++++- code/game/jobs/slot_scaling.dm | 3 +++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/code/game/jobs/job/civilians/other/mess_seargent.dm b/code/game/jobs/job/civilians/other/mess_seargent.dm index 97578eb1159d..fb4f5ee14d7c 100644 --- a/code/game/jobs/job/civilians/other/mess_seargent.dm +++ b/code/game/jobs/job/civilians/other/mess_seargent.dm @@ -1,13 +1,31 @@ /datum/job/civilian/chef title = JOB_MESS_SERGEANT - total_positions = 1 + total_positions = 2 spawn_positions = 1 + allow_additional = TRUE + scaled = TRUE selection_class = "job_ot" flags_startup_parameters = ROLE_ADD_TO_DEFAULT supervisors = "the auxiliary support officer" gear_preset = /datum/equipment_preset/uscm_ship/chef entry_message_body = "Your job is to service the marines with excellent food, drinks and entertaining the shipside crew when needed. You have a lot of freedom and it is up to you, to decide what to do with it. Good luck!" +/datum/job/civilian/chef/set_spawn_positions(count) + spawn_positions = mess_sergeant_slot_formula(count) + +/datum/job/civilian/chef/get_total_positions(latejoin = FALSE) + var/positions = spawn_positions + if(latejoin) + positions = mess_sergeant_slot_formula(get_total_marines()) + if(positions <= total_positions_so_far) + positions = total_positions_so_far + else + total_positions_so_far = positions + else + total_positions_so_far = positions + + return positions + /obj/effect/landmark/start/chef name = JOB_MESS_SERGEANT icon_state = "chef_spawn" diff --git a/code/game/jobs/slot_scaling.dm b/code/game/jobs/slot_scaling.dm index 7230f57eb745..2d444d06e5ab 100644 --- a/code/game/jobs/slot_scaling.dm +++ b/code/game/jobs/slot_scaling.dm @@ -50,3 +50,6 @@ /proc/working_joe_slot_formula(playercount) return job_slot_formula(playercount,30,1,3,6) + +/proc/mess_sergeant_slot_formula(playercount) + return job_slot_formula(playercount, 70, 1, 1, 2) From eb6da90c5812469eb7dcdd76fc5f8f9050aed8b8 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 21 Nov 2023 21:15:01 +0000 Subject: [PATCH 130/355] Automatic changelog for PR #4983 [ci skip] --- html/changelogs/AutoChangeLog-pr-4983.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4983.yml diff --git a/html/changelogs/AutoChangeLog-pr-4983.yml b/html/changelogs/AutoChangeLog-pr-4983.yml new file mode 100644 index 000000000000..72dfdd9d84c2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4983.yml @@ -0,0 +1,4 @@ +author: "Morrow" +delete-after: True +changes: + - rscadd: "Mess tech positions now scale from 1 to 2 after 70 marines are in the game" \ No newline at end of file From 5ba86a038f8988c3446ea05b06af3358924d7679 Mon Sep 17 00:00:00 2001 From: harryob Date: Tue, 21 Nov 2023 21:31:39 +0000 Subject: [PATCH 131/355] ports the tg profiler subsystem (#4793) i neeeeed more statistics yummy. added by anturk in https://github.com/tgstation/tgstation/pull/48672 :cl: AnturK server: the server now supports auto-profiling /:cl: --- code/__DEFINES/subsystems.dm | 1 + .../configuration/entries/general.dm | 2 + code/controllers/subsystem/profiler.dm | 74 +++++++++++++++++++ colonialmarines.dme | 1 + 4 files changed, 78 insertions(+) create mode 100644 code/controllers/subsystem/profiler.dm diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 301ca0409655..6af4a3585e29 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -109,6 +109,7 @@ // Subsystems shutdown in the reverse of the order they initialize in // The numbers just define the ordering, they are meaningless otherwise. +#define SS_INIT_PROFILER 86 #define SS_INIT_INPUT 85 #define SS_INIT_TOPIC 83 #define SS_INIT_LOBBYART 82 diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index cc3d00fd951b..385cbcb8d446 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -627,3 +627,5 @@ This maintains a list of ip addresses that are able to bypass topic filtering. protection = CONFIG_ENTRY_HIDDEN|CONFIG_ENTRY_LOCKED /datum/config_entry/flag/guest_ban + +/datum/config_entry/flag/auto_profile diff --git a/code/controllers/subsystem/profiler.dm b/code/controllers/subsystem/profiler.dm new file mode 100644 index 000000000000..f9ba79046c2c --- /dev/null +++ b/code/controllers/subsystem/profiler.dm @@ -0,0 +1,74 @@ +#define PROFILER_FILENAME "profiler.json" +#define SENDMAPS_FILENAME "sendmaps.json" + +SUBSYSTEM_DEF(profiler) + name = "Profiler" + init_order = SS_INIT_PROFILER + runlevels = RUNLEVELS_DEFAULT | RUNLEVEL_LOBBY + wait = 300 SECONDS + var/fetch_cost = 0 + var/write_cost = 0 + +/datum/controller/subsystem/profiler/stat_entry(msg) + msg += "F:[round(fetch_cost,1)]ms" + msg += "|W:[round(write_cost,1)]ms" + return msg + +/datum/controller/subsystem/profiler/Initialize() + if(CONFIG_GET(flag/auto_profile)) + StartProfiling() + else + StopProfiling() //Stop the early start profiler + return SS_INIT_SUCCESS + +/datum/controller/subsystem/profiler/OnConfigLoad() + if(CONFIG_GET(flag/auto_profile)) + StartProfiling() + can_fire = TRUE + else + StopProfiling() + can_fire = FALSE + +/datum/controller/subsystem/profiler/fire() + DumpFile() + +/datum/controller/subsystem/profiler/Shutdown() + if(CONFIG_GET(flag/auto_profile)) + DumpFile(allow_yield = FALSE) + world.Profile(PROFILE_CLEAR, type = "sendmaps") + return ..() + +/datum/controller/subsystem/profiler/proc/StartProfiling() + world.Profile(PROFILE_START) + world.Profile(PROFILE_START, type = "sendmaps") + +/datum/controller/subsystem/profiler/proc/StopProfiling() + world.Profile(PROFILE_STOP) + world.Profile(PROFILE_STOP, type = "sendmaps") + +/datum/controller/subsystem/profiler/proc/DumpFile(allow_yield = TRUE) + var/timer = TICK_USAGE_REAL + var/current_profile_data = world.Profile(PROFILE_REFRESH, format = "json") + var/current_sendmaps_data = world.Profile(PROFILE_REFRESH, type = "sendmaps", format="json") + fetch_cost = MC_AVERAGE(fetch_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) + if(allow_yield) + CHECK_TICK + + if(!length(current_profile_data)) //Would be nice to have explicit proc to check this + stack_trace("Warning, profiling stopped manually before dump.") + var/prof_file = file("[GLOB.log_directory]/[PROFILER_FILENAME]") + if(fexists(prof_file)) + fdel(prof_file) + if(!length(current_sendmaps_data)) //Would be nice to have explicit proc to check this + stack_trace("Warning, sendmaps profiling stopped manually before dump.") + var/sendmaps_file = file("[GLOB.log_directory]/[SENDMAPS_FILENAME]") + if(fexists(sendmaps_file)) + fdel(sendmaps_file) + + timer = TICK_USAGE_REAL + WRITE_FILE(prof_file, current_profile_data) + WRITE_FILE(sendmaps_file, current_sendmaps_data) + write_cost = MC_AVERAGE(write_cost, TICK_DELTA_TO_MS(TICK_USAGE_REAL - timer)) + +#undef PROFILER_FILENAME +#undef SENDMAPS_FILENAME diff --git a/colonialmarines.dme b/colonialmarines.dme index a4ff7cf7c9ab..101a80f0e262 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -268,6 +268,7 @@ #include "code\controllers\subsystem\police_clues.dm" #include "code\controllers\subsystem\power.dm" #include "code\controllers\subsystem\predships.dm" +#include "code\controllers\subsystem\profiler.dm" #include "code\controllers\subsystem\projectiles.dm" #include "code\controllers\subsystem\quadtrees.dm" #include "code\controllers\subsystem\reagents.dm" From 75f1901ad273cd4db954b319a213c2db882032b0 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Tue, 21 Nov 2023 21:39:58 +0000 Subject: [PATCH 132/355] Automatic changelog for PR #4793 [ci skip] --- html/changelogs/AutoChangeLog-pr-4793.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4793.yml diff --git a/html/changelogs/AutoChangeLog-pr-4793.yml b/html/changelogs/AutoChangeLog-pr-4793.yml new file mode 100644 index 000000000000..67830aa5fcbf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4793.yml @@ -0,0 +1,4 @@ +author: "AnturK" +delete-after: True +changes: + - server: "the server now supports auto-profiling" \ No newline at end of file From d6b0de8fcf074d6e137cbeb538e2f7918951a8ed Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:46:46 -0800 Subject: [PATCH 133/355] Nullchecks client in tooltips (#4969) # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/195d2500-7a60-4214-9719-35091874cb48) --- code/modules/tooltip/tooltip.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm index b3dc005c0887..e668196d383a 100644 --- a/code/modules/tooltip/tooltip.dm +++ b/code/modules/tooltip/tooltip.dm @@ -98,10 +98,12 @@ Notes: last_target = null /datum/tooltip/proc/do_hide() - winshow(owner, control, FALSE) + if(owner) + winshow(owner, control, FALSE) /datum/tooltip/Destroy(force, ...) last_target = null + owner = null return ..() //Open a tooltip for user, at a location based on params From 5aadceee8e1e03b23befec0e495083297f01f010 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:46:52 -0800 Subject: [PATCH 134/355] Fix crate unpacking runtime (#4968) # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/d78d9b1e-718b-470b-af35-557784c4a143) --- code/game/objects/structures/crates_lockers/largecrate.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm index 2f2877ba7539..f1b58e6f657b 100644 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ b/code/game/objects/structures/crates_lockers/largecrate.dm @@ -28,9 +28,8 @@ material_sheet = new parts_type(current_turf, 2) // Move the objects back to the turf, above the crate material - for(var/atom/movable/moving_atom in contents) - var/atom/movable/current_atom = contents[1] - current_atom.forceMove(current_turf) + for(var/atom/movable/moving_atom as anything in contents) + moving_atom.forceMove(current_turf) deconstruct(TRUE) From ba6cb19301f741d7e212a5cfcb69d574eb56669a Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:46:58 -0800 Subject: [PATCH 135/355] Fix handswap runtime (#4967) # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/7d39f774-5eaa-4a09-a90f-9cbfb0190050) --- code/_onclick/other_mobs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 9c9784286d09..0bfa0a759287 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -13,7 +13,7 @@ var/obj/structure/S = A S.do_climb(src, mods) return TRUE - else if(!(isitem(A) && get_dist(src, A) <= 1) && client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_SWAP_HANDS) + else if(!(isitem(A) && get_dist(src, A) <= 1) && (client && (client.prefs.toggle_prefs & TOGGLE_MIDDLE_MOUSE_SWAP_HANDS))) swap_hand() return TRUE From 3eb97862995bc96f423a7731455c955baedaaeff Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 21 Nov 2023 13:47:26 -0800 Subject: [PATCH 136/355] Fix stack split & flamer fire runtime (#4965) than or equal to 1 # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/5ecfe1d7-cc9d-4363-853a-e5dcc9147708) ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/5efdc0ed-15d9-4b0a-8d8b-d6614d77b211) --- code/game/objects/items/stacks/stack.dm | 2 ++ code/modules/projectiles/guns/flamer/flamer.dm | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 3912e2d64165..82e091be9008 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -313,6 +313,8 @@ Also change the icon to reflect the amount of sheets, if possible.*/ if(mods["alt"]) if(!CAN_PICKUP(user, src)) return + if(amount <= 1) + return var/desired = tgui_input_number(user, "How much would you like to split off from this stack?", "How much?", 1, amount-1, 1) if(!desired) return diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 44fe816c0e6a..0089df506d2d 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -461,7 +461,8 @@ GLOBAL_LIST_EMPTY(flamer_particles) tied_reagent = new R.type() // Can't get deleted this way tied_reagent.make_alike(R) - tied_reagents = obj_reagents + if(obj_reagents) + tied_reagents = obj_reagents target_clicked = target From b49be8b6d0266fd0c1cc7df81dfc6fb6f1d137b0 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 21 Nov 2023 14:21:40 -0800 Subject: [PATCH 137/355] Fix plushie/fountain pen/family photo pickup runtime (#4970) # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/12e1f453-b26c-4c7e-aaed-cd5079a0ce4b) I'm not 100% on why this happens. My best guess is it's the usual "clients don't follow the rules" stuff that lets them attempt to take the plushie out of their satchel before they're fully spawned in and started. --- code/game/objects/items/props/helmetgarb.dm | 2 +- code/game/objects/items/tools/misc_tools.dm | 2 +- code/game/objects/items/toys/toys.dm | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/objects/items/props/helmetgarb.dm b/code/game/objects/items/props/helmetgarb.dm index b20c5671503e..35558bf01925 100644 --- a/code/game/objects/items/props/helmetgarb.dm +++ b/code/game/objects/items/props/helmetgarb.dm @@ -529,7 +529,7 @@ /obj/item/prop/helmetgarb/family_photo/pickup(mob/user, silent) . = ..() if(!owner) - RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner)) + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner), override = TRUE) ///Sets the owner of the family photo to the human it spawns with, needs var/source for signals diff --git a/code/game/objects/items/tools/misc_tools.dm b/code/game/objects/items/tools/misc_tools.dm index 0b4a7cc98775..f70f93497021 100644 --- a/code/game/objects/items/tools/misc_tools.dm +++ b/code/game/objects/items/tools/misc_tools.dm @@ -289,7 +289,7 @@ /obj/item/tool/pen/fountain/pickup(mob/user, silent) . = ..() if(!owner_name) - RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner)) + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(set_owner), override = TRUE) ///Sets the owner of the pen to who it spawns with, requires var/source for signals /obj/item/tool/pen/fountain/proc/set_owner(datum/source) diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm index 851f203c52c1..88946f5fa446 100644 --- a/code/game/objects/items/toys/toys.dm +++ b/code/game/objects/items/toys/toys.dm @@ -591,7 +591,7 @@ /obj/item/toy/plush/random_plushie/pickup(mob/user, silent) . = ..() - RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(create_plushie)) + RegisterSignal(user, COMSIG_POST_SPAWN_UPDATE, PROC_REF(create_plushie), override = TRUE) ///The randomizer picking and spawning a plushie on either the ground or in the humans backpack. Needs var/source due to signals /obj/item/toy/plush/random_plushie/proc/create_plushie(datum/source) From d644b6fd7ddbe244b6e45d0ce476c467f94e6f43 Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 21 Nov 2023 14:22:06 -0800 Subject: [PATCH 138/355] Greps for missing arg in to_chat & fixes several cases (#4971) # About the pull request Greps for this issue ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/853f9c80-95bf-45a4-a155-5f4a1bbac893) --- .../objects/items/reagent_containers/food/fortunecookie.dm | 4 ++-- code/game/objects/structures/props.dm | 4 ++-- code/modules/clothing/under/marine_uniform.dm | 2 +- code/modules/droppod/droppod_ui.dm | 6 ++++-- tools/ci/check_grep.sh | 7 +++++++ 5 files changed, 16 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/reagent_containers/food/fortunecookie.dm b/code/game/objects/items/reagent_containers/food/fortunecookie.dm index a878ff589dc8..270bd4d7c44a 100644 --- a/code/game/objects/items/reagent_containers/food/fortunecookie.dm +++ b/code/game/objects/items/reagent_containers/food/fortunecookie.dm @@ -93,7 +93,7 @@ user.put_in_hands(cookiefortune) cookiefortune = null else - to_chat(SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) + to_chat(user, SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) else . = ..() @@ -109,7 +109,7 @@ user.put_in_hands(cookiefortune) cookiefortune = null else - to_chat(SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) + to_chat(user, SPAN_WARNING("You break open the fortune cookie, but there's no fortune inside! Oh no!")) else . = ..() diff --git a/code/game/objects/structures/props.dm b/code/game/objects/structures/props.dm index bd5610487ea0..f465e1535d68 100644 --- a/code/game/objects/structures/props.dm +++ b/code/game/objects/structures/props.dm @@ -805,14 +805,14 @@ /obj/structure/prop/brazier/campfire/attackby(obj/item/attacking_item, mob/user) if(!istype(attacking_item, /obj/item/stack/sheet/wood)) - to_chat(SPAN_NOTICE("You cannot fuel [src] with [attacking_item].")) + to_chat(user, SPAN_NOTICE("You cannot fuel [src] with [attacking_item].")) return var/obj/item/stack/sheet/wood/fuel = attacking_item if(remaining_fuel >= initial(remaining_fuel)) to_chat(user, SPAN_NOTICE("You cannot fuel [src] further.")) return if(!fuel.use(1)) - to_chat(SPAN_NOTICE("You do not have enough [attacking_item] to fuel [src].")) + to_chat(user, SPAN_NOTICE("You do not have enough [attacking_item] to fuel [src].")) return visible_message(SPAN_NOTICE("[user] fuels [src] with [fuel].")) remaining_fuel++ diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm index dbbfdb059fc2..a950b4de3d94 100644 --- a/code/modules/clothing/under/marine_uniform.dm +++ b/code/modules/clothing/under/marine_uniform.dm @@ -1004,7 +1004,7 @@ return if(!linked_hood) - to_chat(SPAN_BOLDWARNING("You are missing a linked_hood! This should not be possible.")) + to_chat(user, SPAN_BOLDWARNING("You are missing a linked_hood! This should not be possible.")) CRASH("[user] attempted to toggle hood on [src] that was missing a linked_hood.") playsound(user.loc, "armorequip", 25, 1) diff --git a/code/modules/droppod/droppod_ui.dm b/code/modules/droppod/droppod_ui.dm index 33202e38a0a7..b0c6683a4f7c 100644 --- a/code/modules/droppod/droppod_ui.dm +++ b/code/modules/droppod/droppod_ui.dm @@ -76,7 +76,8 @@ GLOBAL_LIST_INIT(droppod_target_mode, list( /datum/admin_podlauncher/proc/refresh_bay() bay = locate(/area/admin/droppod/loading) in GLOB.sorted_areas if(!bay) - to_chat(SPAN_WARNING("There's no /area/admin/droppod/loading. You can make one yourself, but yell at the mappers to fix this.")) + if(holder) + to_chat(holder, SPAN_WARNING("There's no /area/admin/droppod/loading. You can make one yourself, but yell at the mappers to fix this.")) CRASH("No /area/admin/droppod/loading has been mapped into the admin z-level!") ordered_area = list() for(var/turf/T in bay) @@ -221,7 +222,8 @@ GLOBAL_LIST_INIT(droppod_target_mode, list( custom_dropoff = TRUE temp_pod.dropoff_point = get_turf(target) - to_chat(SPAN_NOTICE("You have selected [temp_pod.dropoff_point] as your dropoff location.")) + if(holder) + to_chat(holder, SPAN_NOTICE("You have selected [temp_pod.dropoff_point] as your dropoff location.")) SStgui.update_uis(src) return COMPONENT_INTERRUPT_CLICK diff --git a/tools/ci/check_grep.sh b/tools/ci/check_grep.sh index 4a223fe3d3c5..796e50e2d90f 100644 --- a/tools/ci/check_grep.sh +++ b/tools/ci/check_grep.sh @@ -198,6 +198,13 @@ if $grep 'balloon_alert\(.*?, ?"[A-Z]' $code_files; then st=1 fi; +part "to_chat without user" +if $grep 'to_chat\(("|SPAN)' $code_files; then + echo + echo -e "${RED}ERROR: to_chat() requires a target as its first argument.${NC}" + st=1 +fi; + section "515 Proc Syntax" part "proc ref syntax" if $grep '\.proc/' $code_x_515 ; then From b3d63e063664cf03f28a1022b1bf66e9b0c7f07c Mon Sep 17 00:00:00 2001 From: Zonespace <41448081+Zonespace27@users.noreply.github.com> Date: Tue, 21 Nov 2023 16:52:40 -0800 Subject: [PATCH 139/355] Fix macro_set index out of range bug (#4972) # About the pull request ![image](https://github.com/cmss13-devs/cmss13/assets/41448081/6ddb3b06-8e72-4b23-8b2a-14ea8a2315a1) --- code/modules/keybindings/setup.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/keybindings/setup.dm b/code/modules/keybindings/setup.dm index 703649808f70..9ba1b783a11d 100644 --- a/code/modules/keybindings/setup.dm +++ b/code/modules/keybindings/setup.dm @@ -15,7 +15,7 @@ for(var/k in 1 to length(macro_set)) var/list/split_name = splittext(macro_set[k], ".") - if(findtext(split_name[2], "srvkeybinds-") == 1) + if((length(split_name) >= 2) && (findtext(split_name[2], "srvkeybinds-") == 1)) var/macro_name = "[split_name[1]].[split_name[2]]" // [3] is "command" erase_output = "[erase_output];[macro_name].parent=null" winset(src, null, erase_output) From e7d3ce04f103872f3633438fd88c3e3843414399 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Wed, 22 Nov 2023 00:53:30 +0000 Subject: [PATCH 140/355] Removes a couple of istype(src) & unused proc (#4955) # About the pull request Removes a couple if istype(src) I noticed. - GetJobRealName() removed this is never called - GetJobName() moved into the scope of `/obj/item/card/id` instead of `/obj` This is only ever called in that object. - Moves `make_dizzy()` processing into `/mob/living/carbon/human` and removes istype(src) on `/mob` # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: code: Removes some istype(src) /:cl: --- code/__HELPERS/job.dm | 22 ------------------- code/game/objects/items/cards_ids.dm | 15 +++++++++++++ code/modules/mob/living/carbon/human/human.dm | 6 +++++ code/modules/mob/mob.dm | 11 ++-------- 4 files changed, 23 insertions(+), 31 deletions(-) diff --git a/code/__HELPERS/job.dm b/code/__HELPERS/job.dm index 89fe6877647e..220236c6f7e3 100644 --- a/code/__HELPERS/job.dm +++ b/code/__HELPERS/job.dm @@ -14,32 +14,10 @@ all_jobs += new jobtype return all_jobs - /proc/get_all_centcom_jobs() return list() -//gets the actual job rank (ignoring alt titles) -//this is used solely for sechuds -/obj/proc/GetJobRealName() - if (!istype(src,/obj/item/card/id)) return - var/obj/item/card/id/I = src - if(I.rank in GLOB.joblist) return I.rank - if(I.assignment in GLOB.joblist) return I.assignment - return "Unknown" - /proc/get_all_job_icons() return GLOB.joblist + list("Prisoner")//For all existing HUD icons -/obj/proc/GetJobName() //Used in secHUD icon generation - var/obj/item/card/id/I = src - if(istype(I)) - var/job_icons = get_all_job_icons() - var/centcom = get_all_centcom_jobs() - - if(I.assignment in job_icons) return I.assignment//Check if the job has a hud icon - if(I.rank in job_icons) return I.rank - if(I.assignment in centcom) return "Centcom"//Return with the NT logo if it is a Centcom job - if(I.rank in centcom) return "Centcom" - return "Unknown" //Return unknown if none of the above apply - /proc/get_actual_job_name(mob/M) if(!M) return null diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index a5e0eafe2f91..f6af3c0ca237 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -97,6 +97,21 @@ . = ..() screen_loc = null +/obj/item/card/id/proc/GetJobName() //Used in secHUD icon generation + + var/job_icons = get_all_job_icons() + var/centcom = get_all_centcom_jobs() + + if(assignment in job_icons) + return assignment//Check if the job has a hud icon + if(rank in job_icons) + return rank + if(assignment in centcom) + return "Centcom"//Return with the NT logo if it is a Centcom job + if(rank in centcom) + return "Centcom" + return "Unknown" //Return unknown if none of the above apply + /obj/item/card/id/attack_self(mob/user as mob) ..() user.visible_message("[user] shows you: [icon2html(src, viewers(user))] [name]: assignment: [assignment]") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3bc8e97623da..95fd393d12b5 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1741,3 +1741,9 @@ return FALSE . = ..() + +/mob/living/carbon/human/make_dizzy(amount) + dizziness = min(500, dizziness + amount) // store what will be new value + // clamped to max 500 + if(dizziness > 100 && !is_dizzy) + INVOKE_ASYNC(src, PROC_REF(dizzy_process)) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c28de81ecfc1..26139af07eb6 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -593,20 +593,13 @@ adds a dizziness amount to a mob use this rather than directly changing var/dizziness since this ensures that the dizzy_process proc is started -currently only humans get dizzy +currently only mob/living/carbon/human get dizzy value of dizziness ranges from 0 to 1000 below 100 is not dizzy */ /mob/proc/make_dizzy(amount) - if(!istype(src, /mob/living/carbon/human)) // for the moment, only humans get dizzy - return - - dizziness = min(500, dizziness + amount) // store what will be new value - // clamped to max 500 - if(dizziness > 100 && !is_dizzy) - INVOKE_ASYNC(src, PROC_REF(dizzy_process)) - + return /* dizzy process - wiggles the client's pixel offset over time From d7e054057ad6674c6ea3a61ae10d1764a3237424 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 01:10:09 +0000 Subject: [PATCH 141/355] Automatic changelog for PR #4955 [ci skip] --- html/changelogs/AutoChangeLog-pr-4955.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4955.yml diff --git a/html/changelogs/AutoChangeLog-pr-4955.yml b/html/changelogs/AutoChangeLog-pr-4955.yml new file mode 100644 index 000000000000..e5c9d19ebd72 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4955.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - code_imp: "Removes some istype(src)" \ No newline at end of file From 8f4d9bac2ed0ca167c73159e0bfafae80eff3958 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Wed, 22 Nov 2023 01:14:36 +0000 Subject: [PATCH 142/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4793.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4858.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4955.yml | 4 ---- html/changelogs/AutoChangeLog-pr-4983.yml | 4 ---- html/changelogs/archive/2023-11.yml | 10 ++++++++++ 5 files changed, 10 insertions(+), 16 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4793.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4858.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4955.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4983.yml diff --git a/html/changelogs/AutoChangeLog-pr-4793.yml b/html/changelogs/AutoChangeLog-pr-4793.yml deleted file mode 100644 index 67830aa5fcbf..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4793.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "AnturK" -delete-after: True -changes: - - server: "the server now supports auto-profiling" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4858.yml b/html/changelogs/AutoChangeLog-pr-4858.yml deleted file mode 100644 index 22a86b1c3f54..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4858.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "hislittlecuzingames" -delete-after: True -changes: - - rscadd: "Launch Announcement Alarm for dropships to notify ground forces of departure." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4955.yml b/html/changelogs/AutoChangeLog-pr-4955.yml deleted file mode 100644 index e5c9d19ebd72..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4955.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - code_imp: "Removes some istype(src)" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4983.yml b/html/changelogs/AutoChangeLog-pr-4983.yml deleted file mode 100644 index 72dfdd9d84c2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4983.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Morrow" -delete-after: True -changes: - - rscadd: "Mess tech positions now scale from 1 to 2 after 70 marines are in the game" \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index d7d533486f25..66eaccb86d87 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -269,3 +269,13 @@ 2023-11-21: hislittlecuzingames: - code_imp: Added ability to have looping sounds from further away +2023-11-22: + AnturK: + - server: the server now supports auto-profiling + Birdtalon: + - code_imp: Removes some istype(src) + Morrow: + - rscadd: Mess tech positions now scale from 1 to 2 after 70 marines are in the + game + hislittlecuzingames: + - rscadd: Launch Announcement Alarm for dropships to notify ground forces of departure. From eeee374151d015d20fa94e9755d878664e76ed75 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Tue, 21 Nov 2023 16:54:17 -0800 Subject: [PATCH 143/355] Hivecores perform multiple spawns at once (#4953) # About the pull request This PR simply makes it so hive cores try to dequeue as many larva as they have stored_larva each larva spawn delay rather than a single larva. # Explain why it's good for the game Fixes #4945 # Testing Photographs and Procedure 1. Spawn as queen 2. Create core 3. Ensure hive has 2 stored_larva 4. Ghost (Have two admin clients at this point observing) 5. Ensure both clients have xeno preference set and then lose larva protections (assuming admin) 6. Both will spawn at once 7. Try again with 1 stored_larva 8. One will spawn and other has queue message updated # Changelog :cl: Drathek fix: Tweaked larva queue spawning: Now spawns as many larva as possible each cycle rather than one. /:cl: --- .../cm_aliens/structures/special/pylon_core.dm | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/code/modules/cm_aliens/structures/special/pylon_core.dm b/code/modules/cm_aliens/structures/special/pylon_core.dm index 62a7417c57f8..a7cb15a31ce7 100644 --- a/code/modules/cm_aliens/structures/special/pylon_core.dm +++ b/code/modules/cm_aliens/structures/special/pylon_core.dm @@ -272,12 +272,14 @@ if(spawning_larva || (last_larva_queue_time + spawn_cooldown * 4) < world.time) last_larva_queue_time = world.time var/list/players_with_xeno_pref = get_alien_candidates(linked_hive) - if(length(players_with_xeno_pref)) - if(spawning_larva && spawn_burrowed_larva(players_with_xeno_pref[1])) - // We were in spawning_larva mode and successfully spawned someone - count_spawned = 1 - // Update everyone's queue status - message_alien_candidates(players_with_xeno_pref, dequeued = count_spawned) + if(spawning_larva) + var/i = 0 + while(i < length(players_with_xeno_pref) && can_spawn_larva()) + if(spawn_burrowed_larva(players_with_xeno_pref[++i])) + // We were in spawning_larva mode and successfully spawned someone + count_spawned++ + // Update everyone's queue status + message_alien_candidates(players_with_xeno_pref, dequeued = count_spawned) if(linked_hive.hijack_burrowed_surge && (last_surge_time + surge_cooldown) < world.time) last_surge_time = world.time From de2a345d366b15ac6929528038b2ba9c01d01b29 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 01:29:08 +0000 Subject: [PATCH 144/355] Automatic changelog for PR #4953 [ci skip] --- html/changelogs/AutoChangeLog-pr-4953.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4953.yml diff --git a/html/changelogs/AutoChangeLog-pr-4953.yml b/html/changelogs/AutoChangeLog-pr-4953.yml new file mode 100644 index 000000000000..4dd8c48e8206 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4953.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Tweaked larva queue spawning: Now spawns as many larva as possible each cycle rather than one." \ No newline at end of file From ed3628e7e52c93e76e0298e88e7bb2b78dab438c Mon Sep 17 00:00:00 2001 From: LC4492 <122557086+LC4492@users.noreply.github.com> Date: Wed, 22 Nov 2023 00:24:59 -0300 Subject: [PATCH 145/355] Bureau du commandant - CO office (#4827) # About the pull request An update to the CO office # Explain why it's good for the game If people like, its good, if people don't, it is not # Testing Photographs and Procedure ![image](https://github.com/cmss13-devs/cmss13/assets/122557086/f4ca9cc9-9719-44bb-aef7-fcf95da5f7f5)
# Changelog :cl: maptweak: Changes to the CO office: The bathroom now faces into the CO's bedroom, and not to his main office. Victory cabinet have been moved to the Officer's mess because of logical issues. Extra-detail to the office, including an exclusive stamp, table flags and others. The safe is now inside the CO's bedroom, and not in his office. The energy APC is now inside the CO's bedroom, and not in his office. Jones finally have a BED again, or something like that. Other minor changes to objects, such the addition of a cane, a box of glasses for serving guests, etc. /:cl: --- maps/map_files/USS_Almayer/USS_Almayer.dmm | 5921 ++++++++++---------- 1 file changed, 3110 insertions(+), 2811 deletions(-) diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index 528e0a02f7e3..f3074bd4d7d0 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -529,6 +529,17 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) +"abQ" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "abR" = ( /obj/item/tank/phoron, /turf/open/floor/almayer{ @@ -787,12 +798,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) -"acE" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/lifeboat_pumps/north2) "acF" = ( /obj/structure/machinery/light{ dir = 1 @@ -915,12 +920,20 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"acT" = ( -/obj/structure/closet/firecloset, +"acS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ + pixel_y = -29 + }, /turf/open/floor/almayer{ - icon_state = "cargo" + icon_state = "silver" }, -/area/almayer/lifeboat_pumps/north2) +/area/almayer/command/cichallway) "acU" = ( /obj/structure/closet/basketball, /turf/open/floor/almayer{ @@ -1088,12 +1101,6 @@ "adu" = ( /turf/open/floor/almayer, /area/almayer/shipboard/starboard_missiles) -"adv" = ( -/obj/structure/machinery/power/apc/almayer{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "ady" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -1176,15 +1183,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"adQ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "adR" = ( /obj/structure/machinery/door/airlock/almayer/generic{ access_modified = 1; @@ -1213,13 +1211,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"adZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/north2) "aea" = ( /obj/structure/machinery/light{ dir = 1 @@ -1321,16 +1312,6 @@ "aet" = ( /turf/closed/wall/almayer, /area/almayer/living/starboard_garden) -"aew" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/closet/secure_closet/bar{ - name = "Success Cabinet"; - req_access_txt = "1" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "aex" = ( /obj/item/reagent_container/food/drinks/cans/beer{ pixel_x = 6; @@ -1579,17 +1560,6 @@ icon_state = "redfull" }, /area/almayer/shipboard/starboard_missiles) -"afc" = ( -/obj/structure/reagent_dispensers/water_cooler/stacks{ - density = 0; - pixel_y = 17 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "afd" = ( /obj/structure/largecrate/random/barrel/white, /obj/structure/sign/safety/bulkhead_door{ @@ -2127,18 +2097,6 @@ icon_state = "plate" }, /area/almayer/living/cafeteria_officer) -"aha" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/almayer/command/reinforced{ - access_modified = 1; - name = "\improper Commanding Officer's Quarters"; - req_access = null; - req_access_txt = "31" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) "ahb" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -2262,20 +2220,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"ahv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"ahw" = ( -/obj/structure/machinery/disposal, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "ahx" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -2383,43 +2327,6 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"ahY" = ( -/obj/structure/machinery/light, -/obj/structure/surface/table/woodentable/fancy, -/obj/item/clothing/shoes/laceup{ - desc = "The height of fashion, and they're pre-polished! The name 'Bob' is written on the inside."; - pixel_y = -5 - }, -/obj/effect/landmark/map_item, -/obj/item/device/flashlight/lamp/green, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"ahZ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen, -/obj/structure/machinery/door_control{ - id = "ARES StairsLock"; - name = "ARES Exterior Lockdown Override"; - pixel_x = 8; - pixel_y = -24; - req_one_access_txt = "90;91;92" - }, -/obj/structure/machinery/door_control{ - id = "ARES Emergency"; - name = "ARES Emergency Lockdown Override"; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/obj/structure/machinery/door_control{ - id = "Brig Lockdown Shutters"; - name = "Brig Lockdown Override"; - pixel_x = -8; - pixel_y = -24; - req_access_txt = "1;3" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "aia" = ( /turf/open/floor/almayer{ dir = 8; @@ -2631,14 +2538,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"aiF" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"aiG" = ( -/obj/structure/filingcabinet, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "aiH" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -2660,6 +2559,14 @@ icon_state = "red" }, /area/almayer/living/starboard_garden) +"aiQ" = ( +/obj/structure/machinery/faxmachine, +/obj/structure/surface/table/almayer, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "aiR" = ( /obj/structure/stairs{ dir = 8; @@ -2708,7 +2615,13 @@ }, /area/almayer/hull/upper_hull/u_f_s) "aiW" = ( -/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/disposalpipe/segment{ + dir = 2; + icon_state = "pipe-c" + }, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 + }, /turf/open/floor/carpet, /area/almayer/living/commandbunks) "aiX" = ( @@ -2754,6 +2667,12 @@ "ajl" = ( /turf/closed/wall/almayer/white, /area/almayer/medical/upper_medical) +"ajm" = ( +/obj/structure/closet/secure_closet/securecom, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "ajp" = ( /obj/structure/surface/table/almayer, /obj/structure/dropship_equipment/fuel/cooling_system{ @@ -3054,71 +2973,14 @@ icon_state = "redcorner" }, /area/almayer/shipboard/weapon_room) -"akk" = ( -/obj/structure/machinery/door/window/westright{ - dir = 4 - }, -/obj/structure/machinery/shower{ - dir = 4 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/commandbunks) -"akl" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/commandbunks) -"akm" = ( -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) -"akn" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - icon_state = "pipe-c" - }, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "ako" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"akp" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"akr" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 1 }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"aks" = ( -/obj/structure/surface/table/almayer, -/obj/item/clipboard, -/obj/item/device/binoculars, -/turf/open/floor/wood/ship, +/turf/open/floor/carpet, /area/almayer/living/commandbunks) "akt" = ( /obj/structure/cable/heavyduty{ @@ -3347,28 +3209,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/starboard_garden) -"alb" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/commandbunks) -"alc" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 28 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/commandbunks) "ald" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -3407,15 +3247,6 @@ icon_state = "bluecorner" }, /area/almayer/hallways/aft_hallway) -"alj" = ( -/obj/structure/surface/table/almayer, -/obj/item/paper, -/obj/item/device/whistle, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -17 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "alk" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; @@ -3433,13 +3264,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"alo" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_18" - }, -/obj/structure/machinery/light, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "alp" = ( /turf/open/floor/almayer{ dir = 9; @@ -3460,12 +3284,6 @@ icon_state = "bluecorner" }, /area/almayer/hallways/aft_hallway) -"alu" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/megaphone, -/obj/item/device/radio, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "alw" = ( /obj/structure/machinery/door/airlock/almayer/generic{ dir = 2; @@ -3698,6 +3516,15 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) +"amE" = ( +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "amF" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -3920,6 +3747,47 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) +"anp" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) +"anq" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/structure/surface/rack, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/clothing/suit/storage/marine/light/vest, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) +"anr" = ( +/obj/structure/sign/safety/intercom{ + pixel_x = 8; + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "ans" = ( /turf/open/floor/almayer{ dir = 8; @@ -4240,15 +4108,6 @@ icon_state = "bluecorner" }, /area/almayer/hallways/aft_hallway) -"aox" = ( -/obj/structure/machinery/cm_vending/sorted/medical/wall_med{ - pixel_y = 25 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "silver" - }, -/area/almayer/command/cichallway) "aoy" = ( /obj/structure/sign/safety/fire_haz{ pixel_x = 8; @@ -4489,10 +4348,6 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) -"aoZ" = ( -/obj/structure/sign/prop1, -/turf/closed/wall/almayer/reinforced, -/area/almayer/living/commandbunks) "apa" = ( /obj/structure/surface/rack, /obj/item/tool/screwdriver, @@ -5555,6 +5410,16 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) +"asu" = ( +/obj/structure/sign/safety/hazard{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "asv" = ( /obj/effect/decal/cleanable/blood/oil, /obj/structure/machinery/light{ @@ -5972,6 +5837,12 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) +"atx" = ( +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "aty" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -6147,14 +6018,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"atY" = ( -/obj/structure/closet/emcloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "atZ" = ( /obj/structure/machinery/door_control{ id = "OTStore"; @@ -7476,6 +7339,16 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering) +"axR" = ( +/obj/structure/machinery/shower, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "axV" = ( /obj/structure/machinery/telecomms/server/presets/command, /turf/open/floor/almayer{ @@ -7922,6 +7795,33 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) +"azm" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/paper_bin/uscm{ + pixel_y = 7; + pixel_x = -17 + }, +/obj/item/tool/pen/clicky{ + pixel_x = -13; + pixel_y = -1 + }, +/obj/item/tool/pen/clicky{ + pixel_y = 5; + pixel_x = -13 + }, +/obj/structure/machinery/door_control{ + id = "CO-Office"; + name = "Door Control"; + normaldoorcontrol = 1; + req_access_txt = "31"; + pixel_y = 7 + }, +/obj/item/ashtray/bronze{ + pixel_y = 1; + pixel_x = 12 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "azn" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ @@ -7937,6 +7837,12 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) +"azp" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "azq" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -8947,14 +8853,6 @@ icon_state = "orangecorner" }, /area/almayer/command/telecomms) -"aDc" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "aDe" = ( /obj/structure/machinery/light{ dir = 8 @@ -9748,12 +9646,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) -"aGi" = ( -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "aGj" = ( /obj/structure/machinery/door/poddoor/almayer/open{ dir = 2; @@ -9932,24 +9824,6 @@ "aHe" = ( /turf/closed/wall/almayer, /area/almayer/command/lifeboat) -"aHk" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/sink{ - pixel_y = 16 - }, -/obj/structure/mirror{ - pixel_y = 21 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/numbertwobunks) "aHl" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /turf/open/floor/engine, @@ -10104,12 +9978,6 @@ }, /turf/open/floor/engine, /area/almayer/engineering/airmix) -"aHT" = ( -/obj/structure/bed/chair/wood/normal, -/obj/item/bedsheet/brown, -/obj/item/toy/plush/farwa, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/brig/cells) "aHU" = ( /obj/structure/platform{ dir = 1 @@ -10336,6 +10204,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) +"aIV" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "aIX" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -10598,6 +10472,11 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"aKk" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "aKn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -10889,16 +10768,6 @@ icon_state = "dark_sterile" }, /area/almayer/living/numbertwobunks) -"aLt" = ( -/obj/structure/surface/rack, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/numbertwobunks) "aLB" = ( /turf/closed/wall/almayer, /area/almayer/hallways/starboard_hallway) @@ -11240,14 +11109,6 @@ icon_state = "red" }, /area/almayer/squads/alpha) -"aNe" = ( -/obj/structure/closet/firecloset, -/obj/item/clothing/mask/gas, -/obj/item/clothing/mask/gas, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "aNi" = ( /turf/closed/wall/almayer, /area/almayer/living/chapel) @@ -11403,6 +11264,18 @@ /obj/effect/landmark/start/nurse, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices) +"aOj" = ( +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom"; + dir = 2 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) "aOq" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -12479,6 +12352,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/cichallway) +"aTl" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply, +/turf/open/floor/almayer, +/area/almayer/command/cichallway) "aTm" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north1) @@ -12652,12 +12530,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"aTV" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "aTW" = ( /obj/structure/bed/chair{ dir = 8 @@ -13181,23 +13053,6 @@ icon_state = "test_floor4" }, /area/almayer/lifeboat_pumps/south1) -"aWA" = ( -/obj/structure/toilet{ - pixel_y = 13 - }, -/obj/item/paper_bin/uscm{ - pixel_x = 9; - pixel_y = -3 - }, -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/item/prop/magazine/dirty{ - pixel_x = -6; - pixel_y = -10 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/living/captain_mess) "aWD" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -14798,16 +14653,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) -"bfe" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/port) "bfl" = ( /turf/open/floor/almayer{ dir = 5; @@ -15327,6 +15172,10 @@ icon_state = "bluefull" }, /area/almayer/living/bridgebunks) +"bhM" = ( +/obj/structure/safe/cl_office, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "bhT" = ( /obj/structure/cargo_container/lockmart/mid{ layer = 3.1; @@ -15421,6 +15270,22 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) +"biJ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 1; + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "biL" = ( /obj/structure/platform{ dir = 4 @@ -15584,6 +15449,13 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_umbilical) +"bjQ" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "bjR" = ( /obj/structure/cargo_container/arious/right, /turf/open/floor/almayer, @@ -16404,6 +16276,16 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) +"boc" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "bof" = ( /obj/structure/pipes/vents/scrubber{ dir = 4 @@ -16659,6 +16541,15 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"bpw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "bpz" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -18095,6 +17986,16 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) +"bxA" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "bxB" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -19200,18 +19101,6 @@ icon_state = "cargo" }, /area/almayer/living/cryo_cells) -"bCO" = ( -/obj/item/tool/kitchen/tray{ - layer = 2.9 - }, -/obj/item/reagent_container/food/snacks/carpmeat{ - layer = 3.3 - }, -/obj/item/reagent_container/food/snacks/carpmeat{ - layer = 3.3 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "bCP" = ( /obj/structure/bed/chair{ dir = 1 @@ -20068,6 +19957,16 @@ icon_state = "green" }, /area/almayer/squads/req) +"bGz" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/squads/req) "bGF" = ( /obj/structure/machinery/landinglight/ds2{ dir = 1 @@ -20539,31 +20438,6 @@ }, /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/navigation) -"bIz" = ( -/mob/living/simple_animal/cat/Jones{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"bIA" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/mirror{ - pixel_x = 29 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/auxiliary_officer_office) "bII" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 8; @@ -22449,6 +22323,23 @@ icon_state = "tcomms" }, /area/almayer/engineering/engine_core) +"bQl" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/item/prop/magazine/boots/n160{ + pixel_y = -8; + pixel_x = 4; + layer = 2.8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/commandbunks) "bQm" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/almayer{ @@ -22551,6 +22442,12 @@ }, /turf/closed/wall/almayer, /area/almayer/squads/req) +"bQS" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/squads/req) "bQU" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -22644,14 +22541,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/lobby) -"bRo" = ( -/obj/effect/landmark/late_join/working_joe, -/obj/effect/landmark/start/working_joe, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/airoom) "bRr" = ( /obj/structure/machinery/fuelcell_recycler, /turf/open/floor/almayer{ @@ -23318,6 +23207,19 @@ icon_state = "blue" }, /area/almayer/squads/charlie_delta_shared) +"bUo" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = -32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = -32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/squads/req) "bUp" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -23563,6 +23465,12 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"bVs" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "bVw" = ( /turf/open/floor/almayer{ dir = 4; @@ -24128,14 +24036,17 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) +"bYa" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "green" + }, +/area/almayer/squads/req) "bYc" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) -"bYd" = ( -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "bYe" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -25448,6 +25359,13 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/hangar) +"cdB" = ( +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "cdE" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/cans/waterbottle{ @@ -26098,12 +26016,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha) -"cij" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "cil" = ( /obj/structure/machinery/light, /obj/structure/sign/safety/waterhazard{ @@ -26490,15 +26402,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_s) -"ckE" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "ckI" = ( /obj/structure/disposalpipe/segment, /obj/item/device/radio/intercom{ @@ -26978,6 +26881,16 @@ icon_state = "plating" }, /area/almayer/shipboard/port_point_defense) +"cmo" = ( +/obj/structure/surface/table/almayer, +/obj/effect/spawner/random/powercell, +/obj/effect/spawner/random/tool, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "green" + }, +/area/almayer/squads/req) "cmp" = ( /turf/closed/wall/almayer, /area/almayer/engineering/engineering_workshop/hangar) @@ -27306,6 +27219,10 @@ icon_state = "blue" }, /area/almayer/squads/delta) +"com" = ( +/obj/structure/largecrate/supply/weapons/pistols, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "cop" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/tankerbunks) @@ -27327,6 +27244,14 @@ icon_state = "plate" }, /area/almayer/squads/alpha_bravo_shared) +"coD" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_18"; + pixel_y = 12 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "coG" = ( /obj/effect/decal/cleanable/blood/oil, /turf/open/floor/almayer{ @@ -27512,6 +27437,21 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"crw" = ( +/obj/structure/bed/bedroll{ + name = "cat bed"; + desc = "A bed of cotton fabric, purposely made for a cat to comfortably sleep on."; + pixel_y = 0 + }, +/mob/living/simple_animal/cat/Jones{ + dir = 8 + }, +/obj/structure/machinery/firealarm{ + pixel_y = 28; + pixel_x = -1 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "crD" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -27838,12 +27778,6 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/execution) -"czG" = ( -/obj/structure/machinery/recharge_station, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/airoom) "czJ" = ( /obj/structure/sign/safety/restrictedarea{ pixel_x = 8; @@ -28009,12 +27943,6 @@ }, /turf/open/floor/almayer, /area/almayer/living/chapel) -"cCd" = ( -/obj/structure/bookcase{ - icon_state = "book-5" - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "cCD" = ( /obj/structure/platform{ dir = 8; @@ -28601,6 +28529,15 @@ icon_state = "test_floor4" }, /area/almayer/medical/containment/cell/cl) +"cNK" = ( +/obj/structure/pipes/vents/pump{ + dir = 1 + }, +/obj/structure/machinery/light/small, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "cNX" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28726,16 +28663,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) -"cRg" = ( -/obj/item/tool/weldpack{ - pixel_y = 15 - }, -/obj/structure/surface/table/almayer, -/obj/item/clothing/head/welding, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "cRi" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -28858,6 +28785,12 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_f_p) +"cVb" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "cVs" = ( /obj/structure/platform_decoration{ dir = 8 @@ -28967,6 +28900,16 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_s) +"cWE" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "cWI" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -29327,12 +29270,6 @@ icon_state = "plating" }, /area/almayer/engineering/engine_core) -"ddN" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/squads/req) "deb" = ( /obj/structure/bed, /obj/structure/machinery/flasher{ @@ -29438,17 +29375,6 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) -"dfP" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "dgg" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -29489,6 +29415,11 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"dha" = ( +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "dhQ" = ( /obj/structure/sign/safety/terminal{ pixel_x = -17 @@ -29582,14 +29513,6 @@ icon_state = "cargo_arrow" }, /area/almayer/squads/alpha_bravo_shared) -"diM" = ( -/obj/structure/bed/chair{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "djm" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -29644,14 +29567,6 @@ icon_state = "orange" }, /area/almayer/engineering/engineering_workshop/hangar) -"djN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "djQ" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -29731,17 +29646,6 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) -"dkS" = ( -/obj/structure/machinery/shower, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 2 - }, -/obj/item/clothing/mask/cigarette/weed, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "dll" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -29763,15 +29667,6 @@ icon_state = "dark_sterile" }, /area/almayer/shipboard/brig/surgery) -"dlN" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "dmg" = ( /obj/structure/machinery/vending/coffee, /obj/structure/sign/safety/coffee{ @@ -29867,22 +29762,6 @@ icon_state = "mono" }, /area/almayer/engineering/upper_engineering/starboard) -"dnJ" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "dnS" = ( /obj/structure/safe, /turf/open/floor/almayer{ @@ -29946,6 +29825,10 @@ icon_state = "cargo" }, /area/almayer/squads/req) +"doU" = ( +/obj/structure/surface/rack, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "dpn" = ( /obj/structure/closet/secure_closet/freezer/fridge/full, /obj/structure/machinery/light{ @@ -30175,12 +30058,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) -"dtv" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "dtH" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -30264,6 +30141,15 @@ icon_state = "mono" }, /area/almayer/living/starboard_garden) +"duz" = ( +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "duF" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/almayer{ @@ -30458,6 +30344,15 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"dyj" = ( +/obj/structure/closet/secure_closet/commander, +/obj/item/clothing/suit/storage/marine/light/vest, +/obj/item/device/whistle, +/obj/item/device/megaphone, +/obj/item/device/radio, +/obj/item/clothing/shoes/laceup, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "dyp" = ( /obj/structure/machinery/ares/cpu, /turf/open/floor/almayer/no_build{ @@ -30523,17 +30418,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_p) -"dAi" = ( -/obj/structure/sign/nosmoking_2{ - pixel_x = 32 - }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "dAq" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ @@ -30801,6 +30685,12 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) +"dEJ" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/north2) "dEQ" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/tabasco, @@ -30815,6 +30705,24 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"dFb" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/bible{ + desc = "As the legendary US Army chaplain once said, 'There are no Athiests in fancy offices'."; + name = "Holy Bible"; + pixel_x = -3; + pixel_y = 9 + }, +/obj/item/prop/helmetgarb/rosary{ + pixel_y = 5; + pixel_x = -4 + }, +/obj/item/device/flashlight/lamp{ + pixel_y = 1; + pixel_x = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "dFk" = ( /turf/open/floor/almayer{ dir = 8; @@ -31030,6 +30938,16 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) +"dID" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "dII" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/marine/shared/alpha_bravo, /obj/effect/decal/warning_stripes{ @@ -31052,6 +30970,12 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_m_s) +"dKa" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_s) "dKm" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -31094,6 +31018,16 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"dLe" = ( +/obj/structure/pipes/standard/manifold/hidden/supply, +/obj/structure/disposalpipe/junction{ + dir = 4; + icon_state = "pipe-j2" + }, +/turf/open/floor/almayer{ + icon_state = "silver" + }, +/area/almayer/command/cichallway) "dLt" = ( /obj/structure/sign/safety/hazard{ pixel_x = -17; @@ -31118,6 +31052,20 @@ icon_state = "silver" }, /area/almayer/hallways/aft_hallway) +"dMf" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/photo_album{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/folder/black{ + pixel_x = 7; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "dMB" = ( /turf/open/floor/almayer{ dir = 8; @@ -31247,6 +31195,25 @@ icon_state = "silver" }, /area/almayer/command/airoom) +"dQp" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 1; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + dir = 1; + name = "Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/cells) "dQs" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -31290,6 +31257,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/hydroponics) +"dRs" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/port) "dRv" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -31353,19 +31326,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/main_office) -"dSn" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/cells) "dSp" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" @@ -31613,6 +31573,13 @@ icon_state = "dark_sterile" }, /area/almayer/engineering/laundry) +"dXo" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/taperecorder, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "dXr" = ( /obj/structure/bed/chair{ dir = 8; @@ -31765,12 +31732,6 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) -"eaX" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/starboard) "ebd" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/plating_catwalk, @@ -31784,26 +31745,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"ebt" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/camera/autoname/almayer{ - name = "ship-grade camera" - }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) -"ebz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "ebD" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -31933,26 +31874,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/medical_science) -"edx" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/sign/safety/maint{ - pixel_x = 8; - pixel_y = -32 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) -"edM" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hallways/vehiclehangar) "eed" = ( /turf/open/floor/almayer{ icon_state = "mono" @@ -32242,15 +32163,6 @@ dir = 1 }, /area/almayer/medical/containment/cell) -"eiH" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "eiK" = ( /obj/structure/bed/chair{ dir = 4 @@ -32411,6 +32323,15 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_one) +"elM" = ( +/obj/structure/bed/chair{ + dir = 8; + pixel_y = 3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "elR" = ( /turf/closed/wall/almayer/research/containment/wall/corner{ dir = 1 @@ -32592,18 +32513,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) -"epK" = ( -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/smg/m39{ - pixel_y = 6 - }, -/obj/item/weapon/gun/smg/m39{ - pixel_y = -6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "eqb" = ( /obj/structure/surface/table/almayer, /obj/item/tool/stamp/denied{ @@ -32726,14 +32635,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) -"erz" = ( -/obj/structure/closet/crate, -/obj/item/ammo_box/magazine/l42a, -/obj/item/ammo_box/magazine/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "erG" = ( /obj/structure/disposalpipe/junction{ dir = 2; @@ -32758,10 +32659,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/port_umbilical) -"erZ" = ( -/obj/structure/pipes/vents/scrubber, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "esi" = ( /obj/structure/sign/safety/stairs{ pixel_x = 15; @@ -32781,6 +32678,23 @@ icon_state = "plate" }, /area/almayer/hallways/starboard_hallway) +"esC" = ( +/obj/structure/toilet{ + pixel_y = 13 + }, +/obj/item/paper_bin/uscm{ + pixel_x = 9; + pixel_y = -3 + }, +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/item/prop/magazine/dirty{ + pixel_x = -6; + pixel_y = -10 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/captain_mess) "esF" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -32814,6 +32728,14 @@ icon_state = "plating_striped" }, /area/almayer/command/lifeboat) +"etn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "ets" = ( /obj/structure/machinery/power/apc/almayer{ dir = 4 @@ -32900,12 +32822,6 @@ icon_state = "logo_c" }, /area/almayer/command/cic) -"euY" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/port) "eva" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = 32 @@ -33048,12 +32964,6 @@ icon_state = "cargo" }, /area/almayer/shipboard/brig/cryo) -"eyv" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "eyG" = ( /obj/structure/platform, /turf/open/floor/almayer{ @@ -33196,16 +33106,18 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) -"eBo" = ( -/obj/structure/machinery/cm_vending/gear/commanding_officer, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "eBC" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_umbilical) +"eBE" = ( +/obj/structure/machinery/photocopier{ + anchored = 0 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "eBO" = ( /obj/structure/bed, /turf/open/floor/almayer{ @@ -33374,6 +33286,17 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"eFG" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/surface/table/almayer, +/obj/item/tool/hand_labeler, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/chemistry) "eFH" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) @@ -33851,19 +33774,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) -"eRt" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "eRu" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -33913,16 +33823,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"eSJ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/transmitter/rotary{ - name = "Captain's Office"; - phone_category = "Offices"; - phone_id = "Captain's Office"; - pixel_y = 6 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "eSU" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer1" @@ -33941,27 +33841,6 @@ /obj/effect/landmark/crap_item, /turf/open/floor/almayer, /area/almayer/living/briefing) -"eTh" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/surface/rack, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "eTo" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -33975,13 +33854,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) -"eTx" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "eTO" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -34143,6 +34015,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"eXk" = ( +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) "eXo" = ( /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, @@ -34154,15 +34034,17 @@ /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, /area/almayer/living/offices) -"eXU" = ( -/obj/structure/bed/chair{ - dir = 8; - pixel_y = 3 +"eXS" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_x = 2; + pixel_y = 2 }, -/area/almayer/hull/upper_hull/u_m_s) +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_p) "eYr" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -34202,10 +34084,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"eYC" = ( -/obj/structure/machinery/vending/cigarette, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "eYH" = ( /obj/structure/platform{ dir = 4 @@ -34299,6 +34177,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"faE" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "law and engineering manuals bookcase"; + opacity = 0 + }, +/obj/item/book/manual/marine_law, +/obj/item/book/manual/detective, +/obj/item/book/manual/security_space_law, +/obj/item/book/manual/engineering_guide, +/obj/item/book/manual/engineering_construction, +/obj/item/book/manual/orbital_cannon_manual, +/obj/item/book/manual/ripley_build_and_repair, +/obj/item/book/manual/engineering_hacking, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "faO" = ( /obj/item/stack/cable_coil, /turf/open/floor/plating/plating_catwalk, @@ -34809,6 +34706,12 @@ icon_state = "redcorner" }, /area/almayer/shipboard/brig/execution) +"fnv" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "fnx" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/door/window/eastright{ @@ -34850,18 +34753,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/req) -"fnQ" = ( -/obj/structure/toilet{ - dir = 1 - }, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "fnZ" = ( /obj/structure/machinery/portable_atmospherics/canister/air, /obj/structure/machinery/light/small{ @@ -34982,12 +34873,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/command/corporateliason) -"fqg" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer, -/area/almayer/lifeboat_pumps/south2) "fqu" = ( /obj/structure/largecrate/random/barrel/red, /turf/open/floor/almayer, @@ -35044,6 +34929,20 @@ icon_state = "red" }, /area/almayer/shipboard/starboard_missiles) +"frJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "frM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -35057,6 +34956,19 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) +"frY" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = -6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "fsd" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -35644,16 +35556,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"fFq" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "fFD" = ( /obj/structure/window/reinforced{ dir = 4; @@ -35689,6 +35591,16 @@ icon_state = "plate" }, /area/almayer/medical/morgue) +"fGa" = ( +/obj/structure/surface/rack, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) "fGg" = ( /obj/effect/decal/cleanable/blood/oil/streak, /turf/open/floor/almayer, @@ -36064,13 +35976,6 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) -"fNb" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/computer/card{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "fNg" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/plating/plating_catwalk, @@ -36106,19 +36011,21 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"fOh" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4; - icon_state = "exposed01-supply" - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/combat_correspondent) "fOk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 }, /turf/open/floor/almayer, /area/almayer/living/briefing) +"fOv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "fOz" = ( /obj/structure/target{ name = "punching bag" @@ -36224,6 +36131,20 @@ /obj/effect/step_trigger/clone_cleaner, /turf/closed/wall/almayer, /area/almayer/hull/upper_hull/u_m_p) +"fQY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/largecrate/supply/weapons/m39{ + pixel_x = 2 + }, +/obj/structure/largecrate/supply/weapons/m41a{ + layer = 3.1; + pixel_x = 6; + pixel_y = 17 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "fRr" = ( /obj/structure/machinery/light{ dir = 1 @@ -36327,19 +36248,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"fUn" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_21" - }, -/obj/structure/sign/poster/io{ - pixel_y = 32; - name = "propaganda poster" - }, -/obj/structure/sign/safety/escapepod{ - pixel_x = -17 - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "fUA" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) @@ -36363,6 +36271,18 @@ icon_state = "dark_sterile" }, /area/almayer/medical/chemistry) +"fWi" = ( +/obj/structure/toilet{ + dir = 1 + }, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "fWT" = ( /obj/structure/machinery/door/airlock/almayer/engineering{ dir = 2; @@ -36391,16 +36311,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/medical/morgue) -"fXt" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "green" - }, -/area/almayer/squads/req) "fXx" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -36421,17 +36331,33 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/aft_hallway) -"fXM" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"fXE" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "fXN" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"fXP" = ( +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "silver" + }, +/area/almayer/command/cichallway) "fYb" = ( /turf/open/floor/almayer{ dir = 8; @@ -36782,28 +36708,6 @@ icon_state = "orangecorner" }, /area/almayer/hallways/stern_hallway) -"geW" = ( -/obj/structure/sign/prop1{ - pixel_y = 32 - }, -/obj/item/storage/fancy/cigar, -/obj/item/reagent_container/food/drinks/bottle/sake{ - layer = 3.6; - pixel_x = 9; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - layer = 3.6; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/sake{ - layer = 3.6; - pixel_x = -9; - pixel_y = 16 - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "geX" = ( /obj/structure/pipes/vents/scrubber, /obj/structure/sign/safety/ammunition{ @@ -36912,14 +36816,6 @@ /obj/effect/landmark/start/liaison, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) -"ghX" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/item/toy/inflatable_duck, -/obj/structure/window/reinforced, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "gio" = ( /obj/structure/closet/emcloset, /obj/structure/sign/safety/restrictedarea{ @@ -37056,6 +36952,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) +"gka" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "gks" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/plating, @@ -37124,10 +37026,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_p) -"glU" = ( -/obj/structure/bed/chair/office/dark, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "gmb" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 1 @@ -37275,15 +37173,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) -"gqF" = ( -/obj/structure/machinery/photocopier, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "gqK" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -37503,6 +37392,12 @@ icon_state = "green" }, /area/almayer/squads/req) +"gvW" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_p) "gwm" = ( /obj/structure/largecrate/random/case/small, /obj/item/device/taperecorder{ @@ -37529,15 +37424,6 @@ icon_state = "bluecorner" }, /area/almayer/living/basketball) -"gwu" = ( -/obj/structure/machinery/light, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out" - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "gww" = ( /obj/structure/bed/chair, /obj/structure/machinery/light{ @@ -37737,6 +37623,13 @@ icon_state = "orange" }, /area/almayer/engineering/ce_room) +"gyU" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/north2) "gzn" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 @@ -37930,6 +37823,19 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"gCB" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "gCI" = ( /obj/structure/machinery/light{ dir = 4 @@ -37949,16 +37855,14 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"gDq" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 +"gDP" = ( +/obj/structure/closet/crate, +/obj/item/ammo_box/magazine/l42a, +/obj/item/ammo_box/magazine/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/hull/upper_hull/u_m_s) "gDW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -37992,36 +37896,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"gEI" = ( -/obj/item/device/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 3 - }, -/obj/structure/machinery/door_control{ - id = "cl_shutters"; - name = "Privacy Shutters"; - pixel_x = -5; - pixel_y = 8; - req_access_txt = "200" - }, -/obj/structure/machinery/door_control{ - id = "RoomDivider"; - name = "Room Divider"; - pixel_x = -5; - pixel_y = -4; - req_access_txt = "200" - }, -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/door_control{ - id = "cl_evac"; - name = "Evac Pod Door Control"; - normaldoorcontrol = 1; - pixel_x = -5; - pixel_y = 2; - req_access_txt = "200" - }, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "gEK" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -38069,31 +37943,22 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"gGl" = ( +"gGp" = ( /obj/structure/surface/table/almayer, -/obj/item/device/taperecorder, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) -"gGo" = ( -/obj/structure/surface/table/almayer, -/obj/effect/landmark/map_item{ - pixel_x = -8 +/obj/item/clothing/mask/cigarette/pipe{ + pixel_x = 8 }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_x = 7; - pixel_y = -1; - throwforce = 15 +/obj/structure/transmitter/rotary{ + name = "Reporter Telephone"; + phone_category = "Almayer"; + phone_id = "Reporter"; + pixel_x = -4; + pixel_y = 6 }, /turf/open/floor/almayer{ icon_state = "plate" }, -/area/almayer/living/briefing) +/area/almayer/command/combat_correspondent) "gGr" = ( /obj/structure/machinery/vending/cigarette, /turf/open/floor/almayer{ @@ -38226,12 +38091,6 @@ icon_state = "orange" }, /area/almayer/engineering/lower_engineering) -"gJs" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, -/turf/open/floor/almayer{ - icon_state = "green" - }, -/area/almayer/squads/req) "gJP" = ( /obj/structure/machinery/light, /obj/structure/disposalpipe/segment{ @@ -38687,14 +38546,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"gUr" = ( -/obj/item/stack/folding_barricade/three, -/obj/item/stack/folding_barricade/three, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/hull/lower_hull/l_f_s) "gUv" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -38754,6 +38605,18 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) +"gVd" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/folder/black{ + pixel_y = 8 + }, +/obj/item/folder/yellow, +/obj/item/device/flashlight/lamp/green{ + pixel_y = 8; + pixel_x = -16 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "gVq" = ( /obj/structure/machinery/light, /obj/effect/decal/warning_stripes{ @@ -39035,6 +38898,16 @@ icon_state = "silver" }, /area/almayer/living/auxiliary_officer_office) +"hbI" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 32; + pixel_y = 7 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "hbZ" = ( /obj/structure/surface/table/almayer, /obj/structure/sign/safety/terminal{ @@ -39120,6 +38993,16 @@ "hcZ" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/offices) +"hdb" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "hdd" = ( /turf/open/floor/almayer{ dir = 9; @@ -39200,13 +39083,6 @@ icon_state = "plate" }, /area/almayer/engineering/engine_core) -"hey" = ( -/obj/effect/decal/cleanable/blood/oil/streak, -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "heK" = ( /obj/structure/machinery/door/airlock/almayer/maint{ dir = 1; @@ -39262,35 +39138,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"hfm" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/photocopier{ - anchored = 0 - }, -/obj/structure/sign/poster/io{ - pixel_y = 32; - name = "propaganda poster" - }, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) -"hfw" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22" - }, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 1; - name = "ship-grade camera" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "red" - }, -/area/almayer/command/lifeboat) "hfy" = ( /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, @@ -39436,6 +39283,14 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) +"hiy" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "hiB" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -39449,13 +39304,6 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"hiN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) "hiQ" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -39678,6 +39526,19 @@ icon_state = "sterile_green" }, /area/almayer/medical/hydroponics) +"hnI" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + name = "\improper Flight Crew Quarters"; + req_one_access_txt = "19;22" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/pilotbunks) "hnV" = ( /obj/structure/machinery/light, /turf/open/floor/almayer, @@ -39868,6 +39729,18 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/starboard) +"htG" = ( +/obj/item/tool/soap, +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "htI" = ( /obj/structure/platform_decoration{ dir = 1 @@ -40109,6 +39982,13 @@ "hyQ" = ( /turf/closed/wall/almayer, /area/almayer/living/synthcloset) +"hzb" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4; + icon_state = "exposed01-supply" + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/combat_correspondent) "hzc" = ( /turf/closed/wall/almayer/outer, /area/almayer/engineering/upper_engineering/notunnel) @@ -40276,6 +40156,12 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"hBL" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "hBU" = ( /obj/structure/largecrate/random/secure, /obj/effect/decal/warning_stripes{ @@ -40423,16 +40309,12 @@ /obj/structure/largecrate/random/barrel/red, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"hGa" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "hGB" = ( /obj/structure/machinery/light, +/obj/structure/flora/pottedplant{ + pixel_y = 3; + pixel_x = -1 + }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) "hGD" = ( @@ -40556,19 +40438,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_s) -"hJh" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "hJk" = ( /obj/structure/stairs/perspective{ dir = 4; @@ -40642,6 +40511,61 @@ icon_state = "cargo_arrow" }, /area/almayer/engineering/engineering_workshop/hangar) +"hLB" = ( +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "hLC" = ( /obj/structure/surface/table/almayer, /turf/open/floor/almayer{ @@ -41196,12 +41120,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"hWX" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) "hXb" = ( /turf/open/floor/almayer{ dir = 1; @@ -41239,15 +41157,18 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cic_hallway) -"hXD" = ( +"hXG" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, /obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 + icon_state = "N"; + pixel_y = 2 }, /turf/open/floor/almayer{ - icon_state = "mono" + icon_state = "dark_sterile" }, -/area/almayer/lifeboat_pumps/south1) +/area/almayer/engineering/upper_engineering/port) "hXS" = ( /obj/structure/sign/safety/water{ pixel_x = 8; @@ -41338,6 +41259,12 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) +"iaa" = ( +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "iag" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, @@ -41388,12 +41315,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"iaE" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "iaF" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -41581,15 +41502,6 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/north1) -"ift" = ( -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/structure/surface/rack, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "ifR" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -41692,19 +41604,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_p) -"iii" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = -32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = -32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/squads/req) "iit" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -41909,14 +41808,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/offices/flight) -"imW" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"imJ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 }, -/area/almayer/command/combat_correspondent) +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "ina" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/emails{ @@ -42195,6 +42093,17 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) +"isI" = ( +/obj/structure/sign/nosmoking_2{ + pixel_x = 32 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "isN" = ( /obj/structure/sink{ dir = 8; @@ -42206,17 +42115,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/morgue) -"isS" = ( -/obj/item/stack/sheet/cardboard{ - amount = 50 - }, -/obj/structure/surface/rack, -/obj/item/packageWrap, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "green" - }, -/area/almayer/squads/req) "isW" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -42306,16 +42204,6 @@ }, /turf/open/floor/plating, /area/almayer/hull/lower_hull/l_f_p) -"iuw" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/port) "iuz" = ( /obj/structure/surface/rack, /obj/effect/spawner/random/warhead, @@ -42333,16 +42221,6 @@ icon_state = "silver" }, /area/almayer/shipboard/brig/cic_hallway) -"iuT" = ( -/obj/structure/closet/emcloset, -/obj/structure/machinery/camera/autoname/almayer{ - dir = 4; - name = "ship-grade camera" - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_s) "ivf" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/camera, @@ -42435,6 +42313,15 @@ /obj/structure/bed/chair/comfy/beige, /turf/open/floor/carpet, /area/almayer/command/cichallway) +"iwZ" = ( +/obj/structure/surface/table/almayer, +/obj/item/storage/fancy/cigarettes/lucky_strikes, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "green" + }, +/area/almayer/squads/req) "ixj" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/computer/crew/alt, @@ -42770,6 +42657,14 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_p) +"iEz" = ( +/obj/structure/machinery/light, +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21"; + pixel_y = 3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "iFc" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -43114,6 +43009,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"iNY" = ( +/obj/structure/machinery/status_display{ + pixel_x = 32; + pixel_y = 16 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "iNZ" = ( /obj/structure/machinery/light{ dir = 8 @@ -43138,6 +43040,18 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"iPu" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/item/bedsheet/hop{ + pixel_y = 0 + }, +/obj/structure/bed{ + pixel_y = 0 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "iPv" = ( /obj/structure/bed/chair/comfy, /obj/structure/window/reinforced/ultra, @@ -43337,6 +43251,25 @@ /obj/item/facepaint/black, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/alpha) +"iTd" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) +"iTe" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "iTf" = ( /obj/structure/closet/crate/trashcart, /obj/item/clothing/gloves/yellow, @@ -43433,14 +43366,6 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) -"iUC" = ( -/obj/structure/machinery/faxmachine, -/obj/structure/surface/table/almayer, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "iUW" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -43489,30 +43414,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) -"iVZ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/folder/black, -/obj/item/storage/bible/booze, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door_control{ - id = "CO-Office"; - name = "Door Control"; - normaldoorcontrol = 1; - pixel_x = 18; - req_access_txt = "31" - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"iWb" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 32; - pixel_y = -8 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "iWc" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -43771,6 +43672,15 @@ icon_state = "plating" }, /area/almayer/command/airoom) +"jaK" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hallways/vehiclehangar) "jaP" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/almayer_network{ @@ -43888,19 +43798,6 @@ icon_state = "plating_striped" }, /area/almayer/engineering/upper_engineering/starboard) -"jcZ" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "jdk" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -44129,22 +44026,28 @@ icon_state = "test_floor4" }, /area/almayer/living/auxiliary_officer_office) -"jgu" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +"jgr" = ( +/obj/structure/surface/table/almayer, +/obj/item/device/camera{ + pixel_x = -8; + pixel_y = 12 }, -/obj/structure/mirror{ - pixel_x = 29 +/obj/item/paper_bin/uscm{ + pixel_x = 6; + pixel_y = 6 }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +/obj/item/tool/pen{ + pixel_x = 4; + pixel_y = -4 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = -8; + pixel_y = -1 }, /turf/open/floor/almayer{ - icon_state = "dark_sterile" + icon_state = "plate" }, -/area/almayer/living/captain_mess) +/area/almayer/command/combat_correspondent) "jgw" = ( /obj/structure/sign/safety/nonpress_0g{ pixel_x = 32 @@ -44227,6 +44130,21 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"jhB" = ( +/obj/structure/bookcase{ + icon_state = "book-5"; + name = "medical manuals bookcase"; + opacity = 0 + }, +/obj/item/book/manual/surgery, +/obj/item/book/manual/research_and_development, +/obj/item/book/manual/medical_diagnostics_manual, +/obj/item/book/manual/medical_cloning, +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "jhD" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -44396,11 +44314,6 @@ icon_state = "plate" }, /area/almayer/living/briefing) -"jkL" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/weldingtool, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "jkS" = ( /obj/structure/window/framed/almayer/hull/hijack_bustable, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ @@ -44585,20 +44498,6 @@ /obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/command/cic) -"jog" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/photo_album{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/folder/black{ - pixel_x = 7; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "jox" = ( /obj/structure/machinery/brig_cell/cell_3{ pixel_x = -32 @@ -44714,16 +44613,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"jrV" = ( -/obj/structure/surface/table/almayer, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "jss" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -44773,12 +44662,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/starboard_hallway) -"juf" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "jup" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -44794,14 +44677,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"juN" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/paper_bin/uscm, -/obj/item/tool/pen{ - pixel_y = 7 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "juX" = ( /obj/structure/platform_decoration{ dir = 1 @@ -44952,6 +44827,13 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"jxP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) "jyi" = ( /obj/structure/machinery/power/port_gen/pacman, /turf/open/floor/almayer{ @@ -44979,6 +44861,15 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/notunnel) +"jzE" = ( +/obj/structure/closet/secure_closet/bar{ + name = "Success Cabinet"; + req_access_txt = "1" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/captain_mess) "jzZ" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ @@ -45073,36 +44964,6 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) -"jBY" = ( -/obj/structure/surface/rack, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = -6; - pixel_y = -3 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = 9 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0; - pixel_x = 5; - pixel_y = -3 - }, -/obj/structure/noticeboard{ - desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "jCa" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -45213,6 +45074,12 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_a_s) +"jFY" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/port) "jGn" = ( /obj/structure/machinery/light{ dir = 1 @@ -45505,6 +45372,16 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) +"jMx" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out" + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = 11; + pixel_y = -26 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "jMG" = ( /obj/structure/largecrate/random/case/small, /obj/structure/largecrate/random/mini/wooden{ @@ -45588,6 +45465,13 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"jND" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "jOi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -45726,15 +45610,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"jRZ" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "jSo" = ( /obj/item/tool/warning_cone, /turf/open/floor/almayer{ @@ -45996,29 +45871,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"jWC" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) -"jWH" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - cell_type = /obj/item/cell/hyper; - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north1) "jWU" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/blocker/forcefield/multitile_vehicles, @@ -46047,18 +45899,54 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"jXW" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "jXY" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"jYc" = ( +/obj/item/bedsheet/blue{ + layer = 3.2 + }, +/obj/item/bedsheet/blue{ + pixel_y = 13 + }, +/obj/item/toy/plush/therapy/red{ + desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; + force = 15; + layer = 4.1; + name = "Sergeant Huggs"; + pixel_y = 15; + throwforce = 15 + }, +/obj/item/clothing/head/cmcap{ + layer = 4.1; + pixel_x = -1; + pixel_y = 22 + }, +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "blue" + }, +/area/almayer/living/port_emb) "jYd" = ( /obj/structure/machinery/gear{ id = "vehicle_elevator_gears" @@ -46243,20 +46131,20 @@ icon_state = "bluefull" }, /area/almayer/squads/charlie_delta_shared) -"kaJ" = ( -/obj/structure/bed/chair{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "kaN" = ( /obj/structure/platform{ dir = 1 }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_p) +"kaS" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "kbc" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -46369,6 +46257,14 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"kdv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "kdB" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -46380,6 +46276,27 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/starboard) +"keT" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/storage/fancy/cigar{ + pixel_y = 2; + layer = 3.04; + pixel_x = -2 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = -11; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_y = 16; + pixel_x = -2 + }, +/obj/item/reagent_container/food/drinks/bottle/sake{ + pixel_x = 7; + pixel_y = 16 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kff" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -46419,6 +46336,17 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"kfR" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "kfU" = ( /turf/open/floor/plating, /area/almayer/powered/agent) @@ -46641,6 +46569,12 @@ }, /turf/open/floor/almayer, /area/almayer/shipboard/brig/cells) +"kmk" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hallways/vehiclehangar) "kmp" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -46717,10 +46651,12 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) -"knT" = ( -/obj/structure/safe/cl_office, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) +"knL" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/south2) "koc" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -46974,12 +46910,6 @@ icon_state = "cargo" }, /area/almayer/squads/bravo) -"ksv" = ( -/obj/structure/closet/secure_closet/securecom, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "ksA" = ( /obj/structure/closet/secure_closet/freezer/fridge/groceries, /obj/structure/machinery/light{ @@ -47025,6 +46955,17 @@ icon_state = "red" }, /area/almayer/shipboard/brig/evidence_storage) +"ktn" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/armory) "ktB" = ( /obj/structure/largecrate/random/barrel/white, /turf/open/floor/almayer{ @@ -47481,6 +47422,10 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"kDK" = ( +/obj/structure/pipes/vents/scrubber, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kDR" = ( /obj/structure/disposalpipe/junction{ dir = 1; @@ -47517,10 +47462,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"kFk" = ( -/obj/structure/closet/secure_closet/commander, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "kFq" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/engineering_construction, @@ -47704,6 +47645,12 @@ icon_state = "plate" }, /area/almayer/squads/alpha) +"kJm" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kJC" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -47745,6 +47692,19 @@ icon_state = "green" }, /area/almayer/hallways/port_hallway) +"kJW" = ( +/obj/structure/machinery/door/window/westright, +/obj/structure/machinery/shower{ + dir = 8; + layer = 3.10; + plane = -4 + }, +/obj/item/tool/soap{ + pixel_x = 2; + pixel_y = 7 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/commandbunks) "kKb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -47913,6 +47873,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/briefing) +"kNq" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/faxmachine/uscm/command/capt{ + name = "Commanding Officer's Fax Machine"; + pixel_y = 3; + pixel_x = -4 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kNx" = ( /obj/structure/sign/safety/ref_bio_storage{ pixel_x = -17; @@ -48063,6 +48035,12 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"kPH" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/lifeboat_pumps/south2) "kPJ" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -48131,6 +48109,12 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_three) +"kRg" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "kRu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -48182,6 +48166,18 @@ icon_state = "tcomms" }, /area/almayer/command/airoom) +"kSH" = ( +/obj/structure/sign/prop1{ + pixel_y = 32 + }, +/obj/structure/filingcabinet/security{ + pixel_x = -8 + }, +/obj/structure/filingcabinet/medical{ + pixel_x = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kSJ" = ( /obj/structure/disposalpipe/junction{ dir = 4; @@ -48211,6 +48207,16 @@ icon_state = "plating" }, /area/almayer/squads/req) +"kTc" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "kTq" = ( /obj/structure/largecrate/supply/supplies/mre, /turf/open/floor/almayer{ @@ -48266,23 +48272,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) -"kUb" = ( -/obj/structure/closet/secure_closet, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/device/camera_film, -/obj/item/storage/box/tapes, -/obj/item/clothing/head/fedora, -/obj/item/clothing/suit/storage/marine/light/reporter, -/obj/item/clothing/head/helmet/marine/reporter, -/obj/item/clothing/head/cmcap/reporter, -/obj/item/device/flashlight, -/obj/item/device/toner, -/obj/item/device/toner, +"kUh" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ + access_modified = 1; + dir = 1; + name = "\improper Flight Crew Quarters"; + req_one_access_txt = "19;22" + }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/command/combat_correspondent) +/area/almayer/living/pilotbunks) "kUt" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -48327,6 +48328,27 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south2) +"kVT" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/tool/stamp/hop{ + name = "Commanding Officer's rubber stamp"; + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/paper_bin/uscm{ + pixel_y = 6; + pixel_x = 7 + }, +/obj/item/tool/pen/red/clicky{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/tool/pen/blue/clicky{ + pixel_x = -6; + pixel_y = -3 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "kVX" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -48506,6 +48528,12 @@ icon_state = "orange" }, /area/almayer/hallways/port_umbilical) +"kZH" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "kZN" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/prop/almayer/computer/PC{ @@ -48599,6 +48627,16 @@ }, /turf/open/floor/plating, /area/almayer/command/cic) +"laY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/mechanical{ + pixel_x = 4; + pixel_y = -3 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "lbb" = ( /obj/structure/surface/table/almayer, /obj/item/organ/heart/prosthetic{ @@ -49045,6 +49083,12 @@ icon_state = "red" }, /area/almayer/living/offices/flight) +"lkm" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/starboard) "lkM" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -49069,22 +49113,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"llt" = ( -/obj/structure/machinery/conveyor{ - id = "req_belt" - }, -/obj/structure/plasticflaps, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer, -/area/almayer/squads/req) -"llD" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 5 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/combat_correspondent) "llM" = ( /obj/structure/pipes/vents/scrubber, /turf/open/floor/almayer, @@ -49468,6 +49496,11 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) +"ltc" = ( +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) "lto" = ( /obj/structure/machinery/iv_drip, /turf/open/floor/almayer{ @@ -49494,16 +49527,19 @@ }, /turf/open/floor/plating, /area/almayer/hull/upper_hull/u_m_p) +"ltU" = ( +/obj/structure/bed/chair{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "ltX" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/main_office) -"lue" = ( -/obj/structure/surface/table/almayer, -/obj/item/folder/yellow, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "luk" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -49514,6 +49550,17 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_a_p) +"lul" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/machinery/door/airlock/almayer/command/reinforced{ + name = "\improper Commanding Officer's Quarters"; + req_access = null; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) "lut" = ( /obj/structure/machinery/computer/crew, /turf/open/floor/almayer{ @@ -49806,61 +49853,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"lAj" = ( -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/closet/crate, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/obj/item/ammo_magazine/rifle/l42a/ap{ - current_rounds = 0 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "lAl" = ( /turf/open/floor/almayer{ dir = 4; @@ -49983,20 +49975,6 @@ icon_state = "plate" }, /area/almayer/engineering/engineering_workshop/hangar) -"lCn" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/sign/safety/ammunition{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/sign/safety/hazard{ - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "lCt" = ( /turf/open/floor/almayer{ dir = 10; @@ -50049,13 +50027,22 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"lDj" = ( +"lDn" = ( /obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 2 + icon_state = "NE-out"; + pixel_y = 1 }, /turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) +/area/almayer/command/lifeboat) +"lDD" = ( +/obj/structure/safe/co_office, +/obj/item/weapon/pole/fancy_cane, +/obj/item/tool/lighter/zippo/gold{ + pixel_y = 3; + layer = 3.05 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "lDJ" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_x = -17 @@ -50065,20 +50052,6 @@ icon_state = "orange" }, /area/almayer/hallways/starboard_hallway) -"lDK" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/largecrate/supply/weapons/m39{ - pixel_x = 2 - }, -/obj/structure/largecrate/supply/weapons/m41a{ - layer = 3.1; - pixel_x = 6; - pixel_y = 17 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "lDL" = ( /obj/structure/machinery/light{ dir = 4 @@ -50350,6 +50323,15 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) +"lIl" = ( +/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ + name = "\improper Armourer's Workshop"; + req_access = null + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/hull/upper_hull/u_m_s) "lIp" = ( /obj/structure/bed/chair/comfy/beige{ dir = 1 @@ -50442,6 +50424,19 @@ icon_state = "cargo" }, /area/almayer/living/offices) +"lJL" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/cells) "lJO" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -50490,20 +50485,6 @@ /obj/structure/surface/table/almayer, /turf/open/floor/almayer, /area/almayer/squads/charlie) -"lLN" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -30 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/shipboard/brig/armory) "lLS" = ( /obj/structure/sign/safety/galley{ pixel_x = 32 @@ -50544,6 +50525,12 @@ icon_state = "plating_striped" }, /area/almayer/squads/req) +"lMx" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/engineering/upper_engineering/starboard) "lMM" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -50700,6 +50687,14 @@ icon_state = "silver" }, /area/almayer/command/securestorage) +"lQi" = ( +/obj/structure/machinery/cm_vending/clothing/commanding_officer{ + pixel_y = 0 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) "lQj" = ( /obj/structure/machinery/door_control{ id = "InnerShutter"; @@ -50719,11 +50714,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"lQq" = ( -/obj/structure/bed, -/obj/item/bedsheet/hop, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "lQu" = ( /obj/structure/bed/stool, /turf/open/floor/almayer{ @@ -50846,12 +50836,16 @@ /obj/structure/closet/firecloset, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) -"lUv" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +"lUA" = ( +/obj/structure/surface/table/almayer, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, /turf/open/floor/almayer{ - icon_state = "redfull" + icon_state = "plate" }, -/area/almayer/hull/lower_hull/l_f_s) +/area/almayer/hull/upper_hull/u_m_s) "lVl" = ( /obj/structure/machinery/cm_vending/sorted/tech/electronics_storage, /turf/open/floor/almayer, @@ -51099,16 +51093,6 @@ icon_state = "greencorner" }, /area/almayer/hallways/aft_hallway) -"mcl" = ( -/obj/structure/sign/safety/ladder{ - pixel_x = -16 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hallways/vehiclehangar) "mcL" = ( /obj/structure/machinery/vending/snack, /obj/structure/sign/safety/maint{ @@ -51368,6 +51352,13 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"mje" = ( +/obj/structure/machinery/light, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "mji" = ( /obj/structure/pipes/standard/manifold/fourway/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -51448,6 +51439,16 @@ allow_construction = 0 }, /area/almayer/shipboard/brig/lobby) +"mko" = ( +/obj/item/tool/weldpack{ + pixel_y = 15 + }, +/obj/structure/surface/table/almayer, +/obj/item/clothing/head/welding, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "mkx" = ( /obj/structure/machinery/door_control{ id = "cl_shutters 2"; @@ -51672,6 +51673,12 @@ /obj/structure/disposalpipe/segment, /turf/closed/wall/almayer, /area/almayer/squads/req) +"mqb" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "mqg" = ( /obj/structure/bed/chair{ dir = 4 @@ -51857,6 +51864,17 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"mts" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "mtD" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -51901,48 +51919,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/north1) -"mus" = ( -/obj/item/bedsheet/blue{ - layer = 3.2 - }, -/obj/item/bedsheet/blue{ - pixel_y = 13 - }, -/obj/item/toy/plush/therapy/red{ - desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; - force = 15; - layer = 4.1; - name = "Sergeant Huggs"; - pixel_y = 15; - throwforce = 15 - }, -/obj/item/clothing/head/cmcap{ - layer = 4.1; - pixel_x = -1; - pixel_y = 22 - }, -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "blue" - }, -/area/almayer/living/port_emb) "mux" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -51975,15 +51951,6 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"mvH" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "mvI" = ( /obj/structure/machinery/camera/autoname/almayer{ dir = 4; @@ -52058,6 +52025,19 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_f_p) +"myl" = ( +/obj/structure/machinery/power/apc/almayer/hardened{ + cell_type = /obj/item/cell/hyper; + dir = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "myn" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -52171,6 +52151,13 @@ /obj/effect/spawner/random/tool, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"mAr" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "mAT" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 8; @@ -52315,6 +52302,23 @@ icon_state = "emerald" }, /area/almayer/living/briefing) +"mDX" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/airlock/almayer/command/reinforced{ + dir = 1; + id_tag = "CO-Office"; + name = "\improper Commanding Officer's Office"; + req_access = null; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/commandbunks) "mEb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -52495,12 +52499,6 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) -"mIA" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/lifeboat_pumps/south2) "mIB" = ( /obj/structure/machinery/cm_vending/sorted/medical/marinemed, /obj/structure/sign/safety/medical{ @@ -52511,6 +52509,26 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"mIJ" = ( +/obj/structure/sign/safety/ladder{ + pixel_x = -16 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hallways/vehiclehangar) +"mIP" = ( +/obj/structure/pipes/vents/pump, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "mIW" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -52640,6 +52658,15 @@ icon_state = "mono" }, /area/almayer/medical/hydroponics) +"mKy" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "mKJ" = ( /obj/structure/machinery/firealarm{ pixel_y = 28 @@ -52994,6 +53021,33 @@ icon_state = "test_floor4" }, /area/almayer/command/airoom) +"mRp" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = -28 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) +"mRQ" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22" + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "mRS" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -53004,13 +53058,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/starboard_hallway) -"mRU" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "mRW" = ( /turf/open/floor/almayer/research/containment/corner1, /area/almayer/medical/containment/cell/cl) @@ -53076,6 +53123,14 @@ icon_state = "green" }, /area/almayer/hallways/aft_hallway) +"mTc" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/emails{ + dir = 4; + pixel_y = 2 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "mTd" = ( /obj/structure/machinery/smartfridge/chemistry{ pixel_x = -3; @@ -53298,19 +53353,6 @@ dir = 1 }, /area/almayer/medical/containment/cell) -"mXa" = ( -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = -6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "mXj" = ( /turf/closed/wall/almayer, /area/almayer/living/commandbunks) @@ -53348,17 +53390,6 @@ icon_state = "blue" }, /area/almayer/hallways/port_hallway) -"mYX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/m41a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/m41a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "mYY" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -53446,17 +53477,6 @@ "naB" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/shipboard/brig/perma) -"naQ" = ( -/obj/structure/machinery/light/small{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "naR" = ( /obj/structure/machinery/iv_drip, /obj/effect/decal/warning_stripes{ @@ -53484,15 +53504,6 @@ icon_state = "test_floor4" }, /area/almayer/living/gym) -"nbr" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "nbB" = ( /obj/structure/closet/secure_closet/freezer/fridge/full, /turf/open/floor/almayer{ @@ -53605,6 +53616,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) +"neG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "neO" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -54018,12 +54038,6 @@ icon_state = "silver" }, /area/almayer/command/securestorage) -"nna" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_s) "nnc" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer{ @@ -54089,6 +54103,12 @@ /obj/structure/largecrate/random/barrel/white, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"nnX" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "noj" = ( /obj/structure/largecrate, /obj/structure/prop/server_equipment/laptop{ @@ -54151,13 +54171,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/containment) -"npB" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_s) "nqx" = ( /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -54270,6 +54283,22 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_s) +"nsQ" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 29 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/captain_mess) "nsY" = ( /turf/closed/wall/almayer, /area/almayer/living/port_emb) @@ -54392,17 +54421,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"nuI" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/surface/table/almayer, -/obj/item/tool/hand_labeler, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/chemistry) "nuK" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/franks{ @@ -54424,6 +54442,24 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) +"nvG" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/sink{ + pixel_y = 16 + }, +/obj/structure/mirror{ + pixel_y = 21 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/numbertwobunks) "nvM" = ( /obj/structure/window/framed/almayer/white, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -54471,26 +54507,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"nwv" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/item/paper{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/tool/lighter/zippo/gold, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) -"nww" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "nwx" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/almayer{ @@ -54654,18 +54670,6 @@ icon_state = "blue" }, /area/almayer/hallways/aft_hallway) -"nzI" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "nzO" = ( /obj/effect/decal/cleanable/blood/oil, /obj/effect/decal/warning_stripes{ @@ -54767,6 +54771,46 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"nCx" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = -5; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + desc = "A premium double-malt whiskey, this bottle was gifted to the Captain of the USS Almayer after the completion of the ship's space trials by the VADM. himself."; + pixel_x = 3; + pixel_y = 16 + }, +/obj/item/reagent_container/food/drinks/bottle/whiskey{ + pixel_x = 11; + pixel_y = 16 + }, +/obj/item/storage/box/drinkingglasses{ + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"nCR" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 29 + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/auxiliary_officer_office) "nCT" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -54775,6 +54819,33 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) +"nCU" = ( +/obj/structure/disposalpipe/segment{ + dir = 1; + icon_state = "pipe-c" + }, +/obj/structure/coatrack{ + pixel_y = 1; + pixel_x = -5 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) +"nDd" = ( +/obj/structure/sign/safety/ammunition{ + pixel_x = 15; + pixel_y = 32 + }, +/obj/structure/sign/safety/hazard{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "nDh" = ( /obj/structure/transmitter/rotary{ name = "CL Office Telephone"; @@ -54980,6 +55051,12 @@ icon_state = "plate" }, /area/almayer/shipboard/port_point_defense) +"nGY" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/north2) "nHg" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -55247,16 +55324,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"nMM" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "nMV" = ( /obj/structure/machinery/cm_vending/sorted/medical/wall_med{ pixel_y = 25 @@ -55434,6 +55501,18 @@ icon_state = "plate" }, /area/almayer/squads/req) +"nPY" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "nQg" = ( /obj/structure/sink{ pixel_y = 24 @@ -55478,13 +55557,6 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering) -"nSj" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "green" - }, -/area/almayer/squads/req) "nSG" = ( /obj/structure/machinery/door_control{ id = "tcomms"; @@ -55541,6 +55613,10 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"nTA" = ( +/obj/structure/bed/chair/comfy/blue, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "nTH" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -55894,12 +55970,6 @@ icon_state = "green" }, /area/almayer/living/grunt_rnr) -"ocs" = ( -/obj/structure/pipes/vents/pump{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "ocB" = ( /obj/effect/decal/warning_stripes{ icon_state = "S"; @@ -56090,16 +56160,6 @@ icon_state = "cargo" }, /area/almayer/squads/charlie) -"ohl" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "green" - }, -/area/almayer/squads/req) "ohA" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -56147,6 +56207,18 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/north2) +"ohS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/living/captain_mess) "oih" = ( /obj/structure/bed{ icon_state = "abed" @@ -56337,21 +56409,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/execution) -"olk" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 2 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/upper_engineering/port) "olv" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler{ @@ -56421,6 +56478,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) +"omu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_shotgun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "omy" = ( /obj/structure/disposalpipe/segment{ dir = 1; @@ -56494,6 +56558,17 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"ooo" = ( +/obj/structure/reagent_dispensers/water_cooler/stacks{ + density = 0; + pixel_y = 17 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) "oos" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) @@ -56531,16 +56606,6 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/perma) -"opj" = ( -/obj/structure/surface/table/almayer, -/obj/effect/spawner/random/powercell, -/obj/effect/spawner/random/tool, -/obj/item/packageWrap, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "green" - }, -/area/almayer/squads/req) "opC" = ( /obj/structure/machinery/door/airlock/almayer/command/reinforced{ name = "\improper Combat Information Center" @@ -56552,6 +56617,23 @@ "opD" = ( /turf/open/floor/plating/plating_catwalk, /area/almayer/living/gym) +"opI" = ( +/obj/structure/closet/secure_closet, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/device/camera_film, +/obj/item/storage/box/tapes, +/obj/item/clothing/head/fedora, +/obj/item/clothing/suit/storage/marine/light/reporter, +/obj/item/clothing/head/helmet/marine/reporter, +/obj/item/clothing/head/cmcap/reporter, +/obj/item/device/flashlight, +/obj/item/device/toner, +/obj/item/device/toner, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "opJ" = ( /obj/docking_port/stationary/emergency_response/external/port4, /turf/open/space/basic, @@ -56598,13 +56680,6 @@ icon_state = "plate" }, /area/almayer/living/pilotbunks) -"oqA" = ( -/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "cargo_arrow" - }, -/area/almayer/command/cic) "oqD" = ( /obj/structure/surface/table/almayer, /obj/item/tool/wet_sign, @@ -56635,6 +56710,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/port_emb) +"oqY" = ( +/obj/structure/machinery/conveyor{ + id = "req_belt" + }, +/obj/structure/plasticflaps, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer, +/area/almayer/squads/req) "oqZ" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/microwave{ @@ -56785,18 +56870,6 @@ "otu" = ( /turf/closed/wall/almayer/research/containment/wall/connect_w, /area/almayer/medical/containment/cell) -"otK" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ - access_modified = 1; - dir = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/pilotbunks) "otX" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -57242,12 +57315,6 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) -"oDO" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "oDR" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 9 @@ -57469,18 +57536,15 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) +"oIt" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "oIB" = ( /turf/closed/wall/almayer, /area/almayer/command/combat_correspondent) -"oIY" = ( -/obj/structure/machinery/cryopod/right{ - layer = 3.1; - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/airoom) "oJp" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -57661,13 +57725,6 @@ icon_state = "redfull" }, /area/almayer/squads/alpha_bravo_shared) -"oMM" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/machinery/cm_vending/clothing/commanding_officer, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "oMQ" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer, @@ -57682,6 +57739,14 @@ icon_state = "mono" }, /area/almayer/engineering/ce_room) +"oNf" = ( +/obj/item/stack/folding_barricade/three, +/obj/item/stack/folding_barricade/three, +/obj/structure/surface/rack, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/hull/lower_hull/l_f_s) "oNj" = ( /obj/structure/sign/prop1{ pixel_x = -32; @@ -57995,6 +58060,40 @@ icon_state = "cargo" }, /area/almayer/squads/alpha) +"oTM" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/item/clothing/mask/cigarette/pipe{ + pixel_y = -7; + layer = 2.8 + }, +/obj/item/reagent_container/spray/cleaner{ + pixel_x = -4; + pixel_y = 7; + layer = 3.04 + }, +/obj/structure/machinery/door_control/brbutton{ + pixel_y = 26; + pixel_x = -12; + id = "Brig Lockdown Shutters"; + name = "Brig Lockdown" + }, +/obj/structure/machinery/door_control/brbutton{ + pixel_y = 26; + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown Override"; + pixel_x = -2 + }, +/obj/structure/machinery/door_control/brbutton{ + pixel_y = 26; + pixel_x = 8; + name = "ARES Emergency Lockdown Override"; + id = "ARES Emergency" + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "oUG" = ( /obj/structure/machinery/light{ dir = 8 @@ -58201,15 +58300,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"pbl" = ( -/obj/structure/bed, -/obj/item/toy/plush/farwa{ - pixel_x = 5 - }, -/obj/item/clothing/under/redpyjamas, -/obj/item/bedsheet/orange, -/turf/open/floor/wood/ship, -/area/almayer/command/corporateliason) "pbp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -58426,18 +58516,6 @@ allow_construction = 0 }, /area/almayer/stair_clone) -"pfA" = ( -/obj/item/tool/soap, -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "pfH" = ( /obj/structure/platform_decoration, /turf/open/floor/almayer{ @@ -58466,6 +58544,15 @@ icon_state = "orange" }, /area/almayer/hull/lower_hull/l_m_s) +"pgw" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "pgD" = ( /turf/closed/wall/almayer, /area/almayer/lifeboat_pumps/south1) @@ -58501,6 +58588,15 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"phj" = ( +/obj/structure/machinery/photocopier, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "piO" = ( /obj/structure/surface/rack, /obj/item/tool/weldingtool, @@ -58576,6 +58672,16 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) +"pjR" = ( +/obj/structure/disposalpipe/segment{ + dir = 4; + icon_state = "pipe-c" + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "pky" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ @@ -58662,6 +58768,16 @@ icon_state = "plate" }, /area/almayer/living/briefing) +"pmI" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_f_s) "pmV" = ( /obj/structure/prop/server_equipment/yutani_server/broken{ density = 0; @@ -58686,6 +58802,23 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"pnL" = ( +/obj/structure/machinery/constructable_frame{ + icon_state = "box_2" + }, +/obj/item/weapon/baseballbat/metal{ + pixel_x = -2; + pixel_y = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + dir = 6; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "pop" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 1 @@ -59550,6 +59683,15 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"pIZ" = ( +/obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/lifeboat_pumps/north1) "pJi" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -59557,18 +59699,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) -"pJn" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light/small{ - dir = 1 - }, -/obj/structure/largecrate/random/secure{ - pixel_x = -5 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "pJD" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -59686,6 +59816,15 @@ icon_state = "plate" }, /area/almayer/living/captain_mess) +"pMk" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north2) "pMp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/almayer{ @@ -59732,14 +59871,6 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) -"pNK" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/auxiliary_officer_office) "pNM" = ( /obj/structure/platform{ dir = 4 @@ -59846,16 +59977,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"pPF" = ( -/obj/structure/machinery/power/apc/almayer/hardened, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south2) "pPM" = ( /obj/structure/surface/rack, /turf/open/floor/almayer{ @@ -59870,28 +59991,6 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) -"pPV" = ( -/obj/structure/pipes/vents/pump, -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/structure/machinery/door_control{ - id = "Alpha_2"; - name = "Door Lock"; - normaldoorcontrol = 1; - pixel_x = 23; - specialfunctions = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/port_emb) "pQq" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -60073,16 +60172,6 @@ icon_state = "mono" }, /area/almayer/command/computerlab) -"pUe" = ( -/obj/structure/machinery/power/apc/almayer/hardened, -/obj/effect/decal/warning_stripes{ - icon_state = "SE-out"; - pixel_x = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/south1) "pUf" = ( /obj/structure/bed/chair{ dir = 4 @@ -60106,15 +60195,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_m_p) -"pUl" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/vehiclehangar) "pUp" = ( /obj/item/device/radio/intercom{ freerange = 1; @@ -60170,6 +60250,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"pVx" = ( +/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/squads/req) "pVA" = ( /obj/item/trash/cigbutt/ucigbutt{ pixel_x = 2; @@ -60493,15 +60579,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"qbh" = ( -/obj/structure/pipes/vents/pump{ - dir = 1 - }, -/obj/structure/machinery/light/small, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "qbt" = ( /obj/structure/pipes/vents/pump, /turf/open/floor/almayer{ @@ -60758,6 +60835,12 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) +"qfD" = ( +/obj/structure/bed/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "qfR" = ( /obj/structure/machinery/light{ dir = 1 @@ -60822,6 +60905,16 @@ }, /turf/open/floor/almayer, /area/almayer/squads/delta) +"qgU" = ( +/obj/structure/machinery/power/apc/almayer/hardened, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "qhb" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -60976,15 +61069,19 @@ /obj/effect/landmark/late_join/charlie, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/charlie) -"qkj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 +"qkm" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_21" }, -/turf/open/floor/almayer{ - icon_state = "plate" +/obj/structure/sign/poster/io{ + pixel_y = 32; + name = "propaganda poster" }, -/area/almayer/command/lifeboat) +/obj/structure/sign/safety/escapepod{ + pixel_x = -17 + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "qkn" = ( /obj/structure/sign/safety/maint{ pixel_x = -17 @@ -61019,6 +61116,16 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/hallways/starboard_umbilical) +"qlp" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/prop/tableflag/uscm{ + pixel_x = -5 + }, +/obj/item/prop/tableflag/uscm2{ + pixel_x = 5 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "qlz" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -61028,6 +61135,14 @@ }, /turf/open/floor/plating, /area/almayer/shipboard/sea_office) +"qlI" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/machinery/disposal, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "qmk" = ( /obj/structure/surface/table/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -61042,21 +61157,6 @@ icon_state = "bluecorner" }, /area/almayer/squads/delta) -"qmr" = ( -/obj/structure/surface/table/almayer, -/obj/item/tool/screwdriver, -/obj/item/prop/helmetgarb/gunoil{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/item/weapon/gun/rifle/l42a{ - pixel_x = 17; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "qmt" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -61167,6 +61267,17 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) +"qmZ" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/transmitter/rotary{ + name = "Commanding Officer's Office"; + phone_category = "Offices"; + phone_id = "Commanding Officer's Office"; + pixel_y = 8; + pixel_x = 16 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "qnd" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out" @@ -61293,16 +61404,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/chemistry) -"qpU" = ( -/obj/structure/flora/pottedplant{ - icon_state = "pottedplant_22"; - pixel_y = 12 - }, -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "qqn" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -61310,6 +61411,15 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) +"qqr" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "qqu" = ( /turf/open/floor/almayer{ dir = 1; @@ -61418,12 +61528,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"qtR" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/lifeboat) "qtS" = ( /obj/structure/largecrate/random/case/double, /turf/open/floor/almayer, @@ -61449,6 +61553,20 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/cryo_tubes) +"quy" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/structure/sign/safety/maint{ + pixel_x = 8; + pixel_y = -32 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "SW-out"; + pixel_x = -1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "quI" = ( /obj/structure/machinery/door_control{ id = "laddersouthwest"; @@ -61694,35 +61812,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"qyH" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer, -/area/almayer/command/lifeboat) -"qyJ" = ( -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) -"qyM" = ( -/obj/structure/surface/table/almayer, -/obj/item/clothing/mask/cigarette/pipe{ - pixel_x = 8 - }, -/obj/structure/transmitter/rotary{ - name = "Reporter Telephone"; - phone_category = "Almayer"; - phone_id = "Reporter"; - pixel_x = -4; - pixel_y = 6 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "qyW" = ( /obj/structure/bed/chair{ dir = 4 @@ -61808,24 +61897,10 @@ }, /turf/open/floor/almayer, /area/almayer/living/briefing) -"qCg" = ( -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "qCi" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 }, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = -28 - }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) "qCo" = ( @@ -62008,6 +62083,12 @@ icon_state = "dark_sterile" }, /area/almayer/medical/operating_room_two) +"qGU" = ( +/obj/structure/closet/firecloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/lifeboat_pumps/south2) "qHb" = ( /obj/structure/bed/chair{ dir = 8 @@ -62091,6 +62172,15 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"qJf" = ( +/obj/structure/machinery/light{ + dir = 4 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/engineering/upper_engineering) "qJj" = ( /obj/structure/desertdam/decals/road_edge{ icon_state = "road_edge_decal3"; @@ -62146,6 +62236,15 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) +"qJU" = ( +/obj/structure/bed, +/obj/item/toy/plush/farwa{ + pixel_x = 5 + }, +/obj/item/clothing/under/redpyjamas, +/obj/item/bedsheet/orange, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "qJY" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/drinks/bottle/orangejuice{ @@ -62191,6 +62290,16 @@ icon_state = "plating" }, /area/almayer/engineering/upper_engineering) +"qKt" = ( +/obj/structure/closet/emcloset, +/obj/structure/machinery/camera/autoname/almayer{ + dir = 4; + name = "ship-grade camera" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_s) "qKz" = ( /obj/structure/machinery/light/small, /turf/open/floor/almayer{ @@ -62219,6 +62328,16 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"qKY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "qLi" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -62461,6 +62580,15 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"qPX" = ( +/obj/structure/machinery/light, +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer{ + icon_state = "red" + }, +/area/almayer/command/lifeboat) "qQc" = ( /obj/structure/closet/secure_closet/personal/patient{ name = "morgue closet" @@ -62478,16 +62606,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/south1) -"qQL" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/port) "qQM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -62549,19 +62667,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/general_equipment) -"qRL" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/machinery/door/airlock/multi_tile/almayer/generic2{ - access_modified = 1; - name = "\improper Flight Crew Quarters"; - req_one_access_txt = "19;22" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/pilotbunks) "qRT" = ( /obj/effect/decal/warning_stripes{ icon_state = "SE-out"; @@ -62989,6 +63094,15 @@ icon_state = "silvercorner" }, /area/almayer/command/computerlab) +"rbE" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + req_access = list(1); + pixel_y = 0 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) "rbF" = ( /obj/effect/landmark/late_join, /obj/effect/landmark/ert_spawns/distress_cryo, @@ -63061,14 +63175,6 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering) -"rcW" = ( -/obj/item/storage/toolbox/mechanical{ - pixel_y = 13 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "rde" = ( /obj/structure/sign/prop1, /turf/closed/wall/almayer, @@ -63270,17 +63376,6 @@ icon_state = "emeraldcorner" }, /area/almayer/living/briefing) -"rhD" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) "rhO" = ( /obj/structure/machinery/vending/cola/research{ pixel_x = 4 @@ -63575,6 +63670,17 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"rmE" = ( +/obj/structure/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "rmN" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -63852,16 +63958,6 @@ /obj/structure/pipes/standard/manifold/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) -"rsW" = ( -/obj/structure/pipes/vents/pump, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "rsY" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -63941,6 +64037,22 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/living/grunt_rnr) +"rur" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S"; + pixel_y = -1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) "rux" = ( /obj/structure/surface/table/almayer, /obj/item/paper_bin/uscm, @@ -63991,12 +64103,6 @@ /obj/structure/largecrate/random/case/double, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) -"rwT" = ( -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "rwY" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ @@ -64057,11 +64163,12 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"rzf" = ( -/obj/effect/landmark/late_join/working_joe, -/obj/effect/landmark/start/working_joe, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/airoom) +"ryR" = ( +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "rzj" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -64103,13 +64210,6 @@ icon_state = "bluecorner" }, /area/almayer/living/briefing) -"rAv" = ( -/obj/structure/machinery/shower{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/shipboard/brig/cells) "rAx" = ( /obj/structure/disposalpipe/junction{ dir = 4 @@ -64289,14 +64389,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) -"rDd" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/machinery/computer/emails{ - dir = 1; - pixel_y = 2 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "rDe" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/snacks/kepler_crisps{ @@ -64653,11 +64745,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) -"rJg" = ( -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "rJh" = ( /obj/item/storage/backpack/marine/satchel{ desc = "It's the heavy-duty black polymer kind. Time to take out the trash!"; @@ -64782,6 +64869,28 @@ dir = 8 }, /area/almayer/medical/containment/cell/cl) +"rNb" = ( +/obj/structure/pipes/vents/pump, +/obj/structure/mirror{ + pixel_y = 32 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/machinery/door_control{ + id = "Alpha_2"; + name = "Door Lock"; + normaldoorcontrol = 1; + pixel_x = 23; + specialfunctions = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/port_emb) "rNF" = ( /obj/structure/machinery/light{ unacidable = 1; @@ -64833,17 +64942,6 @@ icon_state = "plate" }, /area/almayer/living/gym) -"rOZ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/secure_closet/guncabinet, -/obj/item/weapon/gun/rifle/l42a{ - pixel_y = 6 - }, -/obj/item/weapon/gun/rifle/l42a, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "rPh" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65088,27 +65186,6 @@ icon_state = "silver" }, /area/almayer/command/computerlab) -"rUB" = ( -/obj/structure/pipes/vents/pump, -/obj/item/tool/soap, -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/warning_stripes{ - icon_state = "W" - }, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/structure/sink{ - pixel_y = 24 - }, -/obj/structure/mirror{ - pixel_y = 32 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/shipboard/brig/cells) "rUU" = ( /obj/structure/machinery/door/airlock/almayer/maint{ req_access = null; @@ -65144,14 +65221,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) -"rWF" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/lifeboat) "rWL" = ( /obj/structure/barricade/metal, /turf/open/floor/almayer{ @@ -65258,14 +65327,6 @@ icon_state = "plate" }, /area/almayer/living/offices/flight) -"rYZ" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/vehiclehangar) "rZz" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 5 @@ -65736,18 +65797,6 @@ icon_state = "test_floor4" }, /area/almayer/command/lifeboat) -"skg" = ( -/obj/structure/machinery/light/small{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/starboard) "skl" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -65899,25 +65948,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"soa" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 1; - pixel_y = 1 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - dir = 1; - name = "Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/shipboard/brig/cells) "soq" = ( /obj/structure/machinery/computer/working_joe{ dir = 4; @@ -66148,6 +66178,15 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/starboard) +"ssW" = ( +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_shotgun, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "ssX" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -66182,6 +66221,12 @@ allow_construction = 0 }, /area/almayer/stair_clone/upper) +"stu" = ( +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "stY" = ( /obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ @@ -66240,16 +66285,18 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"svp" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 +"svC" = ( +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/smg/m39{ + pixel_y = 6 }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 +/obj/item/weapon/gun/smg/m39{ + pixel_y = -6 }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "swn" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -66350,6 +66397,28 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) +"sxT" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/m41a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/m41a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) +"sxW" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "silver" + }, +/area/almayer/command/cichallway) "syH" = ( /obj/structure/machinery/firealarm{ pixel_y = -28 @@ -66467,24 +66536,6 @@ icon_state = "orange" }, /area/almayer/engineering/ce_room) -"sBF" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/obj/structure/disposalpipe/segment, -/obj/structure/machinery/door/airlock/almayer/command/reinforced{ - access_modified = 1; - dir = 1; - id_tag = "CO-Office"; - name = "\improper Commanding Officer's Office"; - req_access = null; - req_access_txt = "31" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/commandbunks) "sBH" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 10 @@ -66950,6 +67001,25 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/starboard_hallway) +"sLZ" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/item/device/flashlight/lamp/green{ + pixel_y = 20; + pixel_x = -7 + }, +/obj/item/ashtray/bronze{ + pixel_y = 19; + pixel_x = 4 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/landmark/map_item{ + pixel_y = 3; + pixel_x = -1 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "sMs" = ( /obj/structure/machinery/door/airlock/almayer/maint/reinforced{ dir = 1 @@ -67055,6 +67125,15 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) +"sOZ" = ( +/obj/structure/sign/safety/ammunition{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/medical/upper_medical) "sPc" = ( /obj/structure/machinery/light{ dir = 1 @@ -67359,6 +67438,27 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cryo) +"sWs" = ( +/obj/structure/closet/emcloset, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/hull/upper_hull/u_f_p) +"sWC" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "NE-out"; + pixel_y = 2 + }, +/obj/structure/machinery/door/airlock/almayer/generic{ + name = "\improper Bathroom" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/engineering/upper_engineering/port) "sWW" = ( /obj/structure/machinery/flasher{ alpha = 1; @@ -67479,6 +67579,14 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south2) +"sYB" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "sYC" = ( /obj/structure/machinery/door/airlock/almayer/maint, /obj/structure/machinery/door/poddoor/almayer/open{ @@ -67608,6 +67716,12 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/aft_hallway) +"tan" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "tat" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/disposalpipe/segment, @@ -67686,6 +67800,14 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/perma) +"tcZ" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/engineering/upper_engineering/port) "tda" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -67796,6 +67918,15 @@ /obj/effect/landmark/late_join, /turf/open/floor/almayer, /area/almayer/living/cryo_cells) +"teE" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "teH" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -67936,6 +68067,18 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"thR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/largecrate/random/secure{ + pixel_x = -5 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "thT" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -67996,23 +68139,6 @@ icon_state = "green" }, /area/almayer/hallways/starboard_hallway) -"tiw" = ( -/obj/structure/machinery/constructable_frame{ - icon_state = "box_2" - }, -/obj/item/weapon/baseballbat/metal{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "SW-out"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "orange" - }, -/area/almayer/engineering/upper_engineering/starboard) "tiE" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer, @@ -68329,12 +68455,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_m_s) -"tpt" = ( -/obj/structure/machinery/sentry_holder/almayer, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "tpD" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -68361,6 +68481,21 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) +"tqd" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/screwdriver, +/obj/item/prop/helmetgarb/gunoil{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/item/weapon/gun/rifle/l42a{ + pixel_x = 17; + pixel_y = 6 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "tqe" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -68412,19 +68547,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) -"tqB" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "tqV" = ( /obj/structure/extinguisher_cabinet{ pixel_y = 26 @@ -68709,6 +68831,25 @@ icon_state = "outerhull_dir" }, /area/space) +"twI" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + density = 0; + pixel_y = 16 + }, +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/machinery/door_control{ + id = "bot_uniforms"; + name = "Uniform Vendor Lockdown"; + pixel_x = -24; + pixel_y = 18; + req_access_txt = "31" + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/cic) "twT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -68860,12 +69001,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"tAh" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/port) "tAi" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -68933,6 +69068,13 @@ /obj/item/tool/crowbar, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south1) +"tBu" = ( +/obj/effect/decal/cleanable/blood/oil/streak, +/obj/structure/machinery/sentry_holder/almayer, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south1) "tBz" = ( /obj/structure/machinery/power/apc/almayer{ dir = 1 @@ -69118,6 +69260,15 @@ /obj/effect/spawner/random/tool, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) +"tGj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/north1) "tGq" = ( /obj/effect/projector{ name = "Almayer_Up4"; @@ -69194,6 +69345,12 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/shipboard/brig/cells) +"tId" = ( +/obj/structure/machinery/recharge_station, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "tIp" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Dorms" @@ -69259,17 +69416,6 @@ icon_state = "plate" }, /area/almayer/living/bridgebunks) -"tJo" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_x = 2; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_p) "tJp" = ( /obj/structure/surface/table/almayer, /obj/item/tool/crowbar/red, @@ -69301,6 +69447,15 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"tJN" = ( +/obj/structure/machinery/cryopod/right{ + layer = 3.1; + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "tJR" = ( /obj/structure/machinery/vending/cigarette, /obj/structure/sign/safety/medical{ @@ -69386,11 +69541,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"tMn" = ( -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/structure/bed/chair/comfy/beige, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "tMW" = ( /obj/effect/decal/warning_stripes{ icon_state = "NW-out"; @@ -69538,10 +69688,6 @@ /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/hangar) -"tQM" = ( -/obj/structure/safe/co_office, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "tQV" = ( /turf/closed/wall/almayer/outer, /area/almayer/lifeboat_pumps/south1) @@ -69630,28 +69776,12 @@ icon_state = "orangecorner" }, /area/almayer/living/briefing) -"tSF" = ( -/obj/structure/surface/table/almayer, -/obj/item/device/camera{ - pixel_x = -8; - pixel_y = 12 - }, -/obj/item/paper_bin/uscm{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/tool/pen{ - pixel_x = 4; - pixel_y = -4 - }, -/obj/item/storage/box/donkpockets{ - pixel_x = -8; - pixel_y = -1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" +"tTk" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4 }, -/area/almayer/command/combat_correspondent) +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "tTp" = ( /obj/structure/surface/table/almayer, /obj/item/reagent_container/food/condiment/hotsauce/sriracha{ @@ -69818,13 +69948,6 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/cryo) -"tXz" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hallways/vehiclehangar) "tXM" = ( /obj/structure/pipes/vents/pump{ dir = 8 @@ -69883,12 +70006,6 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) -"tYv" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/hull/upper_hull/u_f_p) "tYw" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -69910,6 +70027,12 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_f_s) +"tYM" = ( +/obj/structure/pipes/vents/pump{ + dir = 4 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "tYX" = ( /turf/open/floor/almayer{ icon_state = "test_floor4" @@ -69952,12 +70075,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) -"tZB" = ( -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "tZF" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -70065,6 +70182,13 @@ /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"uaX" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W"; + pixel_x = -1 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_s) "uaZ" = ( /obj/structure/surface/table/almayer, /obj/item/weapon/gun/rifle/m41a, @@ -70088,17 +70212,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"uck" = ( -/obj/structure/surface/rack, -/obj/item/stack/cable_coil, -/obj/item/attachable/flashlight/grip, -/obj/item/ammo_box/magazine/l42a{ - pixel_y = 14 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "ucp" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -70131,15 +70244,36 @@ icon_state = "plate" }, /area/almayer/command/cic) -"udb" = ( -/obj/structure/sign/safety/ammunition{ - pixel_y = 32 +"ucI" = ( +/obj/item/device/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 3 }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" +/obj/structure/machinery/door_control{ + id = "cl_shutters"; + name = "Privacy Shutters"; + pixel_x = -5; + pixel_y = 8; + req_access_txt = "200" }, -/area/almayer/medical/upper_medical) +/obj/structure/machinery/door_control{ + id = "RoomDivider"; + name = "Room Divider"; + pixel_x = -5; + pixel_y = -4; + req_access_txt = "200" + }, +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/door_control{ + id = "cl_evac"; + name = "Evac Pod Door Control"; + normaldoorcontrol = 1; + pixel_x = -5; + pixel_y = 2; + req_access_txt = "200" + }, +/turf/open/floor/carpet, +/area/almayer/command/corporateliason) "udi" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -70306,16 +70440,12 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"ufS" = ( -/obj/structure/sign/safety/terminal{ - pixel_x = 7; - pixel_y = 29 - }, -/obj/structure/filingcabinet, +"ufL" = ( +/obj/structure/machinery/door/poddoor/shutters/almayer/uniform_vendors, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, -/area/almayer/command/combat_correspondent) +/area/almayer/command/cic) "ugs" = ( /obj/structure/surface/table/almayer, /obj/item/book/manual/marine_law{ @@ -70591,19 +70721,6 @@ icon_state = "mono" }, /area/almayer/medical/upper_medical) -"umR" = ( -/obj/structure/machinery/power/apc/almayer/hardened{ - cell_type = /obj/item/cell/hyper; - dir = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "mono" - }, -/area/almayer/lifeboat_pumps/north2) "umS" = ( /obj/structure/bed/chair/comfy{ dir = 8 @@ -70621,17 +70738,6 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_p) -"umY" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_x = -1; - pixel_y = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_f_s) "unh" = ( /obj/structure/surface/table/almayer, /obj/item/storage/firstaid/o2, @@ -70682,40 +70788,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"uoh" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/window/reinforced{ - dir = 8; - layer = 3.3; - pixel_y = 4 - }, -/obj/structure/bed{ - can_buckle = 0 - }, -/obj/structure/bed{ - buckling_y = 13; - layer = 3.5; - pixel_y = 13 - }, -/obj/item/bedsheet/yellow{ - layer = 3.2 - }, -/obj/item/bedsheet/yellow{ - pixel_y = 13 - }, -/obj/structure/sign/safety/bathunisex{ - pixel_x = -16; - pixel_y = 8 - }, -/obj/item/toy/plush/barricade, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/port_emb) "uoi" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -71071,14 +71143,24 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/basketball) -"uvk" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"uva" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item{ + pixel_x = -8 + }, +/obj/item/toy/plush/therapy/red{ + desc = "A USCM approved plush doll. It's not soft and hardly comforting!"; + force = 15; + layer = 4.1; + name = "Sergeant Huggs"; + pixel_x = 7; + pixel_y = -1; + throwforce = 15 }, /turf/open/floor/almayer{ - icon_state = "orange" + icon_state = "plate" }, -/area/almayer/engineering/upper_engineering/starboard) +/area/almayer/living/briefing) "uvs" = ( /obj/structure/machinery/conveyor{ id = "lower_garbage" @@ -71160,26 +71242,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/cells) -"uvZ" = ( -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - desc = "A premium double-malt whiskey, this bottle was gifted to the Captain of the USS Almayer after the completion of the ship's space trials by the VADM. himself."; - pixel_x = 1; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - pixel_x = 9; - pixel_y = 16 - }, -/obj/item/reagent_container/food/drinks/bottle/whiskey{ - pixel_x = -7; - pixel_y = 16 - }, -/obj/item/clothing/mask/cigarette/pipe{ - pixel_y = 5 - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "uws" = ( /obj/structure/machinery/light{ dir = 4 @@ -71381,6 +71443,16 @@ icon_state = "red" }, /area/almayer/shipboard/port_missiles) +"uAl" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/port) "uAs" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -71419,6 +71491,12 @@ icon_state = "emerald" }, /area/almayer/living/port_emb) +"uAL" = ( +/obj/structure/bed/chair/wood/normal, +/obj/item/bedsheet/brown, +/obj/item/toy/plush/farwa, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/brig/cells) "uAW" = ( /obj/structure/machinery/cryopod{ layer = 3.1; @@ -71458,6 +71536,12 @@ icon_state = "orange" }, /area/almayer/hallways/stern_hallway) +"uBM" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 5 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/combat_correspondent) "uBN" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -71637,12 +71721,6 @@ icon_state = "plate" }, /area/almayer/hallways/port_hallway) -"uGa" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/lifeboat_pumps/south2) "uGc" = ( /obj/structure/machinery/suit_storage_unit/compression_suit/uscm, /obj/structure/sign/safety/hazard{ @@ -72116,6 +72194,19 @@ icon_state = "plate" }, /area/almayer/engineering/engineering_workshop/hangar) +"uRs" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 9; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "uRt" = ( /obj/structure/machinery/light{ dir = 8 @@ -72310,16 +72401,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) -"uUV" = ( -/obj/structure/machinery/shower, -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/machinery/door/window/tinted{ - dir = 2 - }, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "uVb" = ( /obj/structure/closet/toolcloset, /turf/open/floor/almayer{ @@ -72491,6 +72572,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"uYd" = ( +/obj/structure/flora/pottedplant{ + icon_state = "pottedplant_22"; + pixel_y = 12 + }, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "uYg" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -72518,6 +72609,16 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/repair_bay) +"uZY" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "uZZ" = ( /obj/structure/machinery/door/airlock/multi_tile/almayer/generic{ name = "\improper Basketball Court" @@ -72536,15 +72637,6 @@ }, /turf/closed/wall/almayer, /area/almayer/hallways/starboard_umbilical) -"vba" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/engineering/upper_engineering/port) "vbf" = ( /obj/structure/machinery/landinglight/ds2/delaytwo{ dir = 8 @@ -72574,6 +72666,23 @@ icon_state = "orange" }, /area/almayer/squads/bravo) +"vbP" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) +"vbR" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "green" + }, +/area/almayer/squads/req) "vbS" = ( /obj/structure/closet/secure_closet/personal/patient{ name = "morgue closet" @@ -73052,6 +73161,16 @@ icon_state = "red" }, /area/almayer/lifeboat_pumps/south1) +"vjd" = ( +/obj/structure/machinery/door/firedoor/border_only/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/command/lifeboat) "vjg" = ( /obj/structure/prop/almayer/missile_tube{ icon_state = "missiletubesouth" @@ -73182,6 +73301,14 @@ icon_state = "orange" }, /area/almayer/shipboard/brig/processing) +"vlk" = ( +/obj/structure/closet/emcloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "vln" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -73199,6 +73326,40 @@ icon_state = "redfull" }, /area/almayer/shipboard/port_missiles) +"vlO" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = -2; + pixel_y = 4 + }, +/obj/structure/window/reinforced{ + dir = 8; + layer = 3.3; + pixel_y = 4 + }, +/obj/structure/bed{ + can_buckle = 0 + }, +/obj/structure/bed{ + buckling_y = 13; + layer = 3.5; + pixel_y = 13 + }, +/obj/item/bedsheet/yellow{ + layer = 3.2 + }, +/obj/item/bedsheet/yellow{ + pixel_y = 13 + }, +/obj/structure/sign/safety/bathunisex{ + pixel_x = -16; + pixel_y = 8 + }, +/obj/item/toy/plush/barricade, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/port_emb) "vlR" = ( /obj/structure/machinery/light{ dir = 4 @@ -73334,6 +73495,17 @@ icon_state = "orangefull" }, /area/almayer/living/briefing) +"vpv" = ( +/obj/structure/machinery/shower, +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/machinery/door/window/tinted{ + dir = 2 + }, +/obj/item/clothing/mask/cigarette/weed, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/engineering/upper_engineering/port) "vpI" = ( /obj/effect/landmark/start/police, /turf/open/floor/plating/plating_catwalk, @@ -73526,6 +73698,16 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"vsI" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/camera/autoname/almayer{ + name = "ship-grade camera" + }, +/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "vsJ" = ( /obj/structure/machinery/door/airlock/almayer/maint{ access_modified = 1; @@ -73605,14 +73787,6 @@ icon_state = "test_floor4" }, /area/almayer/hallways/port_hallway) -"vtT" = ( -/obj/structure/pipes/standard/manifold/hidden/supply, -/obj/structure/disposalpipe/junction{ - dir = 4; - icon_state = "pipe-j2" - }, -/turf/open/floor/almayer, -/area/almayer/command/cichallway) "vub" = ( /turf/closed/wall/almayer, /area/almayer/shipboard/sea_office) @@ -74058,14 +74232,6 @@ icon_state = "green" }, /area/almayer/shipboard/brig/cells) -"vCz" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/lifeboat_pumps/north1) "vCG" = ( /obj/structure/toilet{ dir = 8 @@ -74090,6 +74256,14 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/hydroponics) +"vEf" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "vEj" = ( /obj/structure/prop/invuln/overhead_pipe{ pixel_x = 12 @@ -74220,16 +74394,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/living/port_emb) -"vHl" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/effect/decal/warning_stripes{ - icon_state = "NW-out"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/command/lifeboat) "vHq" = ( /obj/item/device/assembly/mousetrap/armed, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -74547,14 +74711,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"vMC" = ( -/obj/structure/bed/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "vME" = ( /turf/open/floor/almayer{ dir = 9; @@ -74952,6 +75108,14 @@ /obj/structure/machinery/light/small, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_s) +"vUk" = ( +/obj/item/storage/toolbox/mechanical{ + pixel_y = 13 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "vUI" = ( /obj/structure/largecrate/random/barrel/white, /obj/structure/sign/safety/security{ @@ -75018,6 +75182,13 @@ icon_state = "sterile_green" }, /area/almayer/medical/containment) +"vVu" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "vVw" = ( /turf/open/floor/almayer{ icon_state = "plate" @@ -75120,6 +75291,27 @@ }, /turf/open/floor/almayer, /area/almayer/squads/charlie_delta_shared) +"vWG" = ( +/obj/structure/pipes/vents/pump, +/obj/item/tool/soap, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/obj/structure/sink{ + pixel_y = 24 + }, +/obj/structure/mirror{ + pixel_y = 32 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/shipboard/brig/cells) "vWJ" = ( /obj/structure/machinery/landinglight/ds1/delaytwo{ dir = 4 @@ -75282,16 +75474,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull) -"vZJ" = ( -/obj/structure/sign/safety/intercom{ - pixel_x = 8; - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m39_submachinegun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "wan" = ( /obj/structure/surface/table/almayer, /obj/item/facepaint/brown, @@ -75504,15 +75686,6 @@ icon_state = "red" }, /area/almayer/shipboard/brig/main_office) -"wdv" = ( -/obj/structure/machinery/light{ - dir = 4 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/engineering/upper_engineering) "wdz" = ( /obj/effect/landmark/start/marine/engineer/charlie, /obj/effect/landmark/late_join/charlie, @@ -75847,6 +76020,12 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) +"wkA" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out" + }, +/turf/open/floor/almayer, +/area/almayer/command/lifeboat) "wkH" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/item/device/whistle{ @@ -75859,6 +76038,17 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) +"wkL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/guncabinet, +/obj/item/weapon/gun/rifle/l42a{ + pixel_y = 6 + }, +/obj/item/weapon/gun/rifle/l42a, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "wkM" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "ARES StairsLower"; @@ -76100,13 +76290,6 @@ icon_state = "rasputin3" }, /area/almayer/powered/agent) -"wpj" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 2 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "wpw" = ( /obj/structure/bed/chair/comfy/ares{ dir = 1 @@ -76160,6 +76343,16 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) +"wqr" = ( +/obj/structure/sign/safety/terminal{ + pixel_x = 7; + pixel_y = 29 + }, +/obj/structure/filingcabinet, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "wqu" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -76347,6 +76540,18 @@ /obj/item/reagent_container/food/snacks/sliceable/pizza/vegetablepizza, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"wuT" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "orange" + }, +/area/almayer/engineering/upper_engineering/starboard) "wvb" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -76523,18 +76728,6 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"wyv" = ( -/obj/structure/machinery/door_control{ - id = "ARES JoeCryo"; - name = "Working Joe Cryogenics Lockdown"; - pixel_x = -24; - pixel_y = -8; - req_one_access_txt = "91;92" - }, -/obj/effect/landmark/late_join/working_joe, -/obj/effect/landmark/start/working_joe, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/command/airoom) "wyO" = ( /obj/structure/largecrate/random/barrel/red, /obj/structure/prop/invuln/overhead_pipe{ @@ -76586,13 +76779,6 @@ icon_state = "sterile_green" }, /area/almayer/medical/lower_medical_medbay) -"wAd" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer, -/area/almayer/hull/upper_hull/u_f_p) "wAR" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -76826,6 +77012,18 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"wFJ" = ( +/obj/structure/toilet{ + dir = 8; + pixel_y = 8; + layer = 2.9 + }, +/obj/structure/window{ + pixel_y = -2; + layer = 2.95 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/living/commandbunks) "wFR" = ( /turf/open/floor/almayer, /area/almayer/living/gym) @@ -76866,6 +77064,13 @@ /obj/effect/landmark/late_join/delta, /turf/open/floor/plating/plating_catwalk, /area/almayer/squads/delta) +"wGI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "wGX" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -76972,6 +77177,12 @@ icon_state = "plate" }, /area/almayer/hallways/vehiclehangar) +"wJB" = ( +/obj/structure/machinery/cryopod/right, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/airoom) "wJD" = ( /obj/structure/bed/chair{ dir = 8; @@ -76993,6 +77204,23 @@ "wJH" = ( /turf/closed/wall/almayer/research/containment/wall/east, /area/almayer/medical/containment/cell/cl) +"wJQ" = ( +/obj/item/trash/plate{ + pixel_x = 9; + pixel_y = 11 + }, +/obj/item/reagent_container/food/snacks/carpmeat{ + layer = 3.3; + pixel_y = 11; + pixel_x = 8 + }, +/obj/item/reagent_container/food/snacks/carpmeat{ + layer = 3.3; + pixel_y = 11; + pixel_x = 8 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "wKn" = ( /obj/structure/surface/rack, /obj/item/facepaint/sniper, @@ -77024,15 +77252,6 @@ }, /turf/open/floor/plating, /area/almayer/medical/containment) -"wKS" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/turf/open/floor/almayer{ - dir = 6; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "wLi" = ( /obj/structure/machinery/door_control/airlock{ id = "s_engi"; @@ -77145,6 +77364,14 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_s) +"wMv" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "W" + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/auxiliary_officer_office) "wMG" = ( /obj/structure/machinery/cryopod/right{ pixel_y = 6 @@ -77194,6 +77421,14 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull) +"wNS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/lifeboat) "wNT" = ( /obj/structure/platform, /turf/open/floor/almayer, @@ -77275,16 +77510,6 @@ icon_state = "bluefull" }, /area/almayer/command/cichallway) -"wQa" = ( -/obj/structure/sign/safety/hazard{ - pixel_x = 15; - pixel_y = 32 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_m4a3_pistol, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "wQg" = ( /turf/open/floor/almayer{ dir = 1; @@ -77546,6 +77771,17 @@ "wVb" = ( /turf/closed/wall/almayer/outer, /area/almayer/hull/lower_hull/l_a_s) +"wVw" = ( +/obj/structure/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m39_submachinegun, +/turf/open/floor/plating/almayer, +/area/almayer/shipboard/brig/armory) "wVy" = ( /obj/structure/window/reinforced{ dir = 8 @@ -77657,22 +77893,6 @@ icon_state = "blue" }, /area/almayer/living/pilotbunks) -"wWJ" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "S"; - pixel_y = -1 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" - }, -/area/almayer/living/port_emb) "wWL" = ( /obj/item/tool/screwdriver, /obj/structure/platform_decoration{ @@ -77792,14 +78012,18 @@ /turf/open/floor/plating, /area/almayer/engineering/ce_room) "wYZ" = ( -/obj/structure/machinery/door/airlock/almayer/secure/reinforced{ - name = "\improper Armourer's Workshop"; - req_access = null +/obj/structure/machinery/light{ + dir = 1 }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" +/obj/structure/machinery/photocopier{ + anchored = 0 }, -/area/almayer/hull/upper_hull/u_m_s) +/obj/structure/sign/poster/io{ + pixel_y = 32; + name = "propaganda poster" + }, +/turf/open/floor/wood/ship, +/area/almayer/command/corporateliason) "wZa" = ( /turf/open/floor/almayer{ icon_state = "redcorner" @@ -78048,20 +78272,22 @@ icon_state = "tcomms" }, /area/almayer/engineering/engine_core) +"xfk" = ( +/obj/structure/surface/rack, +/obj/item/stack/cable_coil, +/obj/item/attachable/flashlight/grip, +/obj/item/ammo_box/magazine/l42a{ + pixel_y = 14 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hull/upper_hull/u_m_s) "xfm" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/cafeteria_officer) -"xfw" = ( -/obj/structure/surface/table/almayer, -/obj/item/storage/fancy/cigarettes/lucky_strikes, -/obj/item/packageWrap, -/turf/open/floor/almayer{ - dir = 9; - icon_state = "green" - }, -/area/almayer/squads/req) "xfO" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -78130,16 +78356,6 @@ icon_state = "plating" }, /area/almayer/hallways/vehiclehangar) -"xgE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 4; - pixel_y = -3 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hull/upper_hull/u_m_s) "xgJ" = ( /obj/structure/machinery/cm_vending/sorted/medical/blood, /obj/structure/machinery/light{ @@ -78233,6 +78449,14 @@ }, /turf/open/floor/carpet, /area/almayer/command/cichallway) +"xik" = ( +/obj/structure/machinery/shower{ + dir = 8 + }, +/obj/item/toy/inflatable_duck, +/obj/structure/window/reinforced, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "xiz" = ( /obj/structure/prop/invuln/lattice_prop{ icon_state = "lattice12"; @@ -78260,18 +78484,14 @@ icon_state = "kitchen" }, /area/almayer/living/grunt_rnr) -"xjw" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "dark_sterile" +"xjt" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/machinery/computer/card{ + dir = 4; + pixel_x = 2 }, -/area/almayer/engineering/upper_engineering/port) +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "xjz" = ( /turf/open/floor/almayer{ icon_state = "plating_striped" @@ -78450,6 +78670,28 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_a_p) +"xns" = ( +/obj/structure/machinery/door_control{ + id = "ARES JoeCryo"; + name = "Working Joe Cryogenics Lockdown"; + pixel_x = -24; + pixel_y = -8; + req_one_access_txt = "91;92" + }, +/obj/effect/landmark/late_join/working_joe, +/obj/effect/landmark/start/working_joe, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/command/airoom) +"xnz" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 1 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "red" + }, +/area/almayer/command/lifeboat) "xnI" = ( /obj/effect/landmark/start/requisition, /turf/open/floor/plating/plating_catwalk, @@ -78506,6 +78748,20 @@ icon_state = "orange" }, /area/almayer/engineering/upper_engineering/port) +"xoS" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "N"; + pixel_y = 2 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = -30 + }, +/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/shipboard/brig/armory) "xpd" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/manifold/hidden/supply{ @@ -78523,6 +78779,23 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_p) +"xpi" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = -12; + pixel_y = 2 + }, +/obj/structure/mirror{ + pixel_x = -29 + }, +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "dark_sterile" + }, +/area/almayer/living/commandbunks) "xpo" = ( /obj/structure/machinery/light, /turf/open/floor/almayer{ @@ -78634,6 +78907,14 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) +"xrq" = ( +/obj/structure/closet/firecloset, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/lifeboat) "xrr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -78684,12 +78965,6 @@ icon_state = "cargo" }, /area/almayer/hallways/vehiclehangar) -"xtg" = ( -/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "xtD" = ( /obj/structure/surface/table/almayer, /obj/item/tool/weldpack, @@ -78707,17 +78982,36 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) -"xub" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 2 +"xtQ" = ( +/obj/structure/surface/rack, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = 7 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = -6; + pixel_y = -3 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/ammo_magazine/rifle/l42a/ap{ + current_rounds = 0; + pixel_x = 5; + pixel_y = -3 + }, +/obj/structure/noticeboard{ + desc = "The note is haphazardly attached to the cork board by what looks like a bent firing pin. 'The order has come in to perform end of life service checks on all L42A service rifles, any that are defective are to be dis-assembled and packed into a crate and sent to to the cargo hold. L42A service rifles that are in working order after servicing, are to be locked in secure cabinets ready to be off-loaded at Chinook. Scheduled end of life service for the L42A - Complete'"; + pixel_y = 29 }, -/obj/structure/closet/secure_closet/guncabinet/red/mp_armory_m4ra_rifle, /turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" + icon_state = "plate" }, -/area/almayer/shipboard/brig/armory) +/area/almayer/hull/upper_hull/u_m_s) "xuc" = ( /obj/structure/surface/table/almayer, /obj/item/tool/extinguisher, @@ -78900,6 +79194,17 @@ icon_state = "test_floor4" }, /area/almayer/hallways/aft_hallway) +"xxa" = ( +/obj/item/stack/sheet/cardboard{ + amount = 50 + }, +/obj/structure/surface/rack, +/obj/item/packageWrap, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "green" + }, +/area/almayer/squads/req) "xxe" = ( /obj/structure/surface/rack, /obj/item/tool/crowbar, @@ -79061,6 +79366,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_a_s) +"xyL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "SE-out"; + pixel_x = 1 + }, +/turf/open/floor/almayer{ + icon_state = "mono" + }, +/area/almayer/lifeboat_pumps/south2) "xyY" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/effect/decal/warning_stripes{ @@ -79138,10 +79452,6 @@ icon_state = "green" }, /area/almayer/squads/req) -"xAC" = ( -/obj/structure/surface/rack, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/engineering/upper_engineering/port) "xAI" = ( /obj/structure/platform{ dir = 1 @@ -79242,6 +79552,13 @@ icon_state = "test_floor4" }, /area/almayer/hull/upper_hull/u_m_p) +"xDj" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "E"; + pixel_x = 2 + }, +/turf/open/floor/almayer, +/area/almayer/hull/upper_hull/u_f_p) "xDn" = ( /turf/open/floor/almayer{ dir = 1; @@ -79539,12 +79856,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"xJn" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/engineering/upper_engineering/starboard) "xJC" = ( /obj/structure/machinery/door/airlock/almayer/generic/corporate{ name = "Corporate Liaison's Closet" @@ -79568,6 +79879,12 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/hangar) +"xJT" = ( +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/shipboard/brig/cells) "xKM" = ( /obj/structure/machinery/status_display{ pixel_x = 16; @@ -79757,6 +80074,14 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) +"xNL" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "NW-out"; + pixel_x = -1; + pixel_y = 2 + }, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hallways/vehiclehangar) "xOL" = ( /obj/structure/machinery/disposal, /obj/structure/disposalpipe/trunk, @@ -80121,6 +80446,14 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_m_s) +"xUV" = ( +/obj/structure/bed/chair{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "xVc" = ( /obj/effect/step_trigger/clone_cleaner, /obj/structure/machinery/door_control{ @@ -80259,6 +80592,11 @@ icon_state = "mono" }, /area/almayer/medical/medical_science) +"xYe" = ( +/obj/structure/surface/table/almayer, +/obj/item/tool/weldingtool, +/turf/open/floor/plating/plating_catwalk, +/area/almayer/hull/upper_hull/u_m_s) "xYf" = ( /obj/structure/machinery/cm_vending/clothing/sea, /turf/open/floor/almayer{ @@ -80282,6 +80620,15 @@ icon_state = "orange" }, /area/almayer/shipboard/brig/cells) +"xYr" = ( +/obj/structure/machinery/light, +/obj/structure/machinery/cm_vending/gear/commanding_officer{ + pixel_y = 0 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/living/commandbunks) "xYB" = ( /obj/structure/sign/safety/storage{ pixel_x = 8; @@ -80315,18 +80662,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering) -"xZf" = ( -/obj/structure/machinery/light, -/obj/structure/closet/secure_closet/guncabinet/red/cic_armory_mk1_rifle_ap, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) -"xZz" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/faxmachine/uscm/command/capt, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) "xZI" = ( /obj/structure/prop/invuln/lattice_prop{ dir = 1; @@ -80520,10 +80855,6 @@ icon_state = "plate" }, /area/almayer/engineering/upper_engineering/port) -"ydr" = ( -/obj/structure/largecrate/supply/weapons/pistols, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/hull/upper_hull/u_m_s) "ydx" = ( /obj/structure/sign/safety/hvac_old{ pixel_x = 8; @@ -80593,17 +80924,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"yeo" = ( -/obj/structure/machinery/cm_vending/clothing/dress{ - req_access = list(1) - }, -/turf/open/floor/wood/ship, -/area/almayer/living/commandbunks) -"yev" = ( -/obj/item/device/flashlight/lamp/green, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "yeH" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -80647,13 +80967,18 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/chief_mp_office) -"yeX" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "S" +"yff" = ( +/obj/structure/machinery/cm_vending/clothing/dress{ + density = 0; + pixel_y = 16 }, -/obj/structure/closet/secure_closet/guncabinet/blue/riot_control, -/turf/open/floor/plating/almayer, -/area/almayer/shipboard/brig/armory) +/obj/structure/machinery/light{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "cargo" + }, +/area/almayer/command/cic) "yfm" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, @@ -80698,6 +81023,18 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) +"yfG" = ( +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/machinery/power/apc/almayer{ + dir = 8 + }, +/obj/item/storage/briefcase{ + pixel_y = 15 + }, +/turf/open/floor/wood/ship, +/area/almayer/living/commandbunks) "yfS" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/firedoor/border_only/almayer{ @@ -80714,18 +81051,6 @@ icon_state = "plate" }, /area/almayer/command/lifeboat) -"ygs" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "NE-out"; - pixel_y = 1 - }, -/obj/structure/machinery/door/airlock/almayer/generic{ - name = "\improper Bathroom" - }, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/living/captain_mess) "ygy" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -80741,16 +81066,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_m_s) -"ygM" = ( -/obj/structure/sign/safety/ammunition{ - pixel_x = 32; - pixel_y = 7 - }, -/obj/structure/closet/secure_closet/guncabinet/red/armory_shotgun, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/medical/upper_medical) "yhI" = ( /turf/open/floor/almayer{ dir = 4; @@ -80872,16 +81187,6 @@ icon_state = "cargo" }, /area/almayer/hull/lower_hull/l_m_s) -"ykD" = ( -/obj/effect/decal/warning_stripes{ - icon_state = "N"; - pixel_y = 1 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "red" - }, -/area/almayer/command/lifeboat) "ykF" = ( /obj/structure/machinery/cm_vending/sorted/tech/tool_storage, /turf/open/floor/almayer{ @@ -80932,12 +81237,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"ylg" = ( -/obj/structure/machinery/cryopod/right, -/turf/open/floor/almayer{ - icon_state = "cargo" - }, -/area/almayer/command/airoom) "ylJ" = ( /obj/structure/sign/safety/maint{ pixel_x = 8; @@ -89557,8 +89856,8 @@ mLJ eiO xFs xkd -eiH -aTV +teE +xJT xkd xkd xkd @@ -89760,9 +90059,9 @@ iqn eRL tmy xkd -rUB -dSn -soa +vWG +lJL +dQp xzu xkd xkd @@ -89963,8 +90262,8 @@ aJz dXy nHg xkd -ghX -rAv +xik +bjQ xkd eTo iHG @@ -91797,7 +92096,7 @@ eZH ohJ thL thL -aHT +uAL liZ rUk jVa @@ -92379,9 +92678,9 @@ pCi rPC rwS lrq -fFq +kTc uqo -rhD +wVw cqn gTx eRL @@ -92582,9 +92881,9 @@ ahE rPC nfI lrq -eTx +omu uqo -hGa +sYB cqn ldu eRL @@ -92785,9 +93084,9 @@ ahE rPC heV lrq -lCn +frJ uqo -xub +ktn cqn nBb mdS @@ -92988,9 +93287,9 @@ ahE wcn nBc lrq -ebt +vsI uqo -lLN +xoS lrq mAT lrq @@ -93191,7 +93490,7 @@ pCi wcn wcn lrq -yeX +mAr uqo fsT jnA @@ -93394,7 +93693,7 @@ pCi oCL wcn lrq -ebz +uZY uqo uqo uqo @@ -93597,7 +93896,7 @@ pCi rPC aou lrq -yeX +mAr uqo uvy tfO @@ -93910,8 +94209,8 @@ poR mGL pNp kcp -pNK -bIA +wMv +nCR alU uDn bKf @@ -94318,9 +94617,9 @@ bTS lxo qcy kcp -edM -edM -mcl +kmk +kmk +mIJ bLt bXX bKh @@ -94521,9 +94820,9 @@ oQM aqI aqI kcp -pUl -tXz -rYZ +jaK +jxP +xNL bLu bBB bBB @@ -97753,7 +98052,7 @@ aaa nXP ndx uNL -eRt +nDd soS sgy nsu @@ -97956,9 +98255,9 @@ aaa nXP hJp uNL -lUv +gka bwQ -gUr +oNf uNL aNw kXJ @@ -98300,7 +98599,7 @@ ukU bfP fvv vcK -wAd +wGI tuA tuA tuA @@ -99314,9 +99613,9 @@ vCO vCO vCO jxB -wpj -gDq -tJo +xDj +boc +eXS bGr hnV xEF @@ -99517,9 +99816,9 @@ wmT jhW mWD jxB -hWX -tYv -mRU +gvW +sWs +imJ xuB gpe xEF @@ -99680,7 +99979,7 @@ aad aai aai pCi -nMM +pmI avl avl agj @@ -99722,7 +100021,7 @@ aES aES aES aES -lDj +vbP uEv gpe xEF @@ -99881,20 +100180,20 @@ aaa aaa aad ahE -iuT -nna -svp +qKt +dKa +hdb avl agj agj -aew -bCO -hvH -hvH -hvH +oTM +mTc +sLZ +yfG +lQi kcN -cod -oqA +twI +ufL aic aov wVW @@ -100084,20 +100383,20 @@ aaa aaa aad ahE -afc -npB -umY +ooo +uaX +kfR avl agj -yeo +lDD agc -bIz +qfD agc -hvH -lQq +kJm +xYr kcN cod -oqA +ufL aic aov wVW @@ -100292,16 +100591,16 @@ wBY hJJ qCi agj -eBo +crw +wJQ agc agc -agc -ahY -mXj +kJm +rbE kcN -kcN -agj -amI +yff +ufL +aic aKq luZ alX @@ -100493,16 +100792,16 @@ pCi kwS avl avl -lIh +mRp agj -oMM -agc -agc -glU -rDd +nCx +tYM +mqb +kDK +jMx mXj -akk -alb +kcN +kcN agj aic aKq @@ -100698,14 +100997,14 @@ avl hCo lIh agj -kFk +keT hvH +bVs hvH hvH -ahZ -mXj -akl -alc +aOj +bQl +xpi agj bFA aov @@ -100901,16 +101200,16 @@ avl hMI lFb agj +dyj +fnv +bVs +iPu +dFb mXj -mXj -aoZ -aha -mXj -mXj -akm -mXj +wFJ +kJW agj -aox +aic aoA wVW teY @@ -101095,7 +101394,7 @@ bdH aaa aaa bdH -aaa +bdH aaa aad ahE @@ -101105,13 +101404,13 @@ iDT tDx agj mXj -tZB -hvH -hvH -hvH -adv -hvH -alj +mXj +lul +mXj +mXj +mXj +mXj +mXj agj aic aov @@ -101298,7 +101597,7 @@ bdH bdH bdH aaa -aaa +bdH aaa aad pCi @@ -101307,16 +101606,16 @@ dTt jgM lFb agj -eYC -agc -fNb -eSJ -agc -agc -hvH -alo +mXj +pjR +jND +aKk +aKk +nCU +faE +mXj agj -aic +amI aov wVW wVW @@ -101510,17 +101809,17 @@ avl jpJ lzH agj -uvZ -agc -agc -juN -pxG -agc -ocs +qlI +cdB +xjt +coD agc +ako +tYM +hGB agj aic -aov +acS wVW asQ awG @@ -101713,19 +102012,19 @@ avl llM lGL agj -geW -erZ -tMn -iVZ -aiW -aiW -akn -xyk -sBF -amY -vtT +eBE +hvH +agc +azm +pxG +fOv +agc +agc +agj +aic +sxW wVW -nww +abQ atN cEl sOi @@ -101916,21 +102215,21 @@ avl avl mrc agj -cCd -agc -agc -nwv -pxG -agc -ako +kSH +hvH +nTA +qmZ agc -agj -aic -aov +aiW +xyk +xyk +mDX +aTl +dLe wVW -qyJ +atx qEk -ksv +ajm wVW arP alX @@ -101942,7 +102241,7 @@ hkG wVW fvB qEk -aGi +iaa wVW aKn aKz @@ -102119,19 +102418,19 @@ pCi jTi nRq agj -bYd +kVT +hvH agc -qck -yev +qlp +pxG +tTk agc agc -akp -hGB agj -aic +fXP aov wVW -qyJ +atx qEk ato wVW @@ -102145,7 +102444,7 @@ aEB wVW fvB qEk -aGi +iaa wVW aKn aKz @@ -102322,19 +102621,19 @@ pCi avl myn agj -mXj -tZB +kNq hvH -ahv -aiF -aiF -akr -xZz +qck +gVd +agc +tan +kDK +iEz agj aic aov wVW -nbr +ssW qEk hrm wVW @@ -102348,7 +102647,7 @@ aEC wVW dNZ qEk -xZf +mje wVW aKn aKz @@ -102526,18 +102825,18 @@ cnX lIh agj mXj -tQM -lue -ahw -aiG -aiG -aks -alu +fnv +hvH +hvH +iNY +hvH +jhB +mXj agj aic aoA wVW -qyJ +atx jvX ato wVW @@ -102549,9 +102848,9 @@ alX aIf aED wVW -xtg +ryR jvX -aGi +iaa wVW aKn aKy @@ -103572,7 +103871,7 @@ aJc ecr ecr ecr -ygs +ohS aET nUv aJU @@ -103774,8 +104073,8 @@ cST aTz aUl aET -aWA -jgu +esC +nsQ aET mSi wHp @@ -103973,7 +104272,7 @@ aGV rvA aKE awF -cST +jzE aUw aUm aET @@ -104348,7 +104647,7 @@ awW add add add -juf +stu add add add @@ -104394,7 +104693,7 @@ baw aJU aJU aJU -hey +tBu aJU aJU aJU @@ -104748,7 +105047,7 @@ bdH aaC abs adq -jWH +myl ajI add fsU @@ -104806,7 +105105,7 @@ qys gBW aJU tiW -pUe +qgU pgD tQV aaC @@ -104978,13 +105277,13 @@ umS yjM qbO aqw -qRL +hnI bYe amO wZM aPm awF -aHk +nvG vGI aLp awF @@ -105189,7 +105488,7 @@ ejp awF aHn szU -aLt +fGa awF aRC aUw @@ -105357,7 +105656,7 @@ aaa aaY abs adq -ckE +tGj ajI add fsU @@ -105415,7 +105714,7 @@ qys gBW aJU tiW -hXD +bpw pgD tQV aaY @@ -105769,7 +106068,7 @@ aoC add add add -juf +stu add add add @@ -105815,7 +106114,7 @@ baw aJU aJU aJU -eyv +nnX aJU aJU aJU @@ -106493,7 +106792,7 @@ bsk sxu cBI bkA -nuI +eFG bej arX vSG @@ -106598,7 +106897,7 @@ aiX aiX aiX sHM -otK +kUh aiX aiX aiX @@ -106794,7 +107093,7 @@ awW awW awW fSm -vCz +hiy apl bbL bbL @@ -106997,7 +107296,7 @@ ajf ajf ajf oAO -dlN +pIZ aod qgG amC @@ -107200,7 +107499,7 @@ awW awW awW aSJ -dAi +isI dtM aii mce @@ -109235,7 +109534,7 @@ dtM akU ajC sqf -wQa +anp wjz fnA jZY @@ -109438,7 +109737,7 @@ dtM aii ajC sqf -udb +sOZ oNJ eDo eDo @@ -109641,7 +109940,7 @@ dtM ajt aik sqf -eTh +anq awn xsz jTj @@ -109844,11 +110143,11 @@ dtM aii ajC sqf -vZJ +anr awn tEi -iWb -ygM +asu +hbI sqf ajl vtx @@ -112303,7 +112602,7 @@ kSJ avj cGr awE -fUn +qkm wQv rne guC @@ -112915,7 +113214,7 @@ awE bqy bYj eUR -gEI +ucI nDh bYj xne @@ -114738,12 +115037,12 @@ ajr aii avm awE -hfm +wYZ rne rne fAo awE -knT +bhM wQv bBi awE @@ -115150,7 +115449,7 @@ rne wft awE hpf -pbl +qJU igp awE hoX @@ -115608,7 +115907,7 @@ kxd jgk nsY rSG -wWJ +rur oqS nsY lhu @@ -116013,7 +116312,7 @@ gsg vHq vvY nsY -pPV +rNb bxC jiU nsY @@ -116421,7 +116720,7 @@ wNl nGh fPp lqN -uoh +vlO nsY xCN pOB @@ -117088,7 +117387,7 @@ uVh nsY kzK lFh -mus +jYc pVA mzV pML @@ -117240,7 +117539,7 @@ aLf tRc qEW bdd -gGo +uva mLb wmz vpt @@ -118157,7 +118456,7 @@ abg caF aar aar -wYZ +lIl aar aar ael @@ -118359,10 +118658,10 @@ bWs abg caF aar -rcW +vUk sTB -jrV -qmr +lUA +tqd ael afE agT @@ -118562,9 +118861,9 @@ acO aJs cbN aar -lDK +fQY aap -eXU +elM vFb ael afH @@ -118765,10 +119064,10 @@ pNQ abx hTy aar -pJn +thR aao aao -erz +gDP ael afI agY @@ -118968,10 +119267,10 @@ acP bUE qFQ aar -jBY +xtQ aap aao -mYX +sxT ael afJ agY @@ -119171,10 +119470,10 @@ acG abx caF aar -ydr +com aap aao -mYX +sxT ael afK ahc @@ -119376,7 +119675,7 @@ lCz aar tAV sTB -uck +xfk wKn ael afL @@ -119577,7 +119876,7 @@ acG abx caF aar -wYZ +lIl aar aar aar @@ -119782,8 +120081,8 @@ arJ aar aao aao -rOZ -dfP +wkL +mts adO afM fpR @@ -119983,10 +120282,10 @@ jSY abx hTy aar -lAj +hLB aao aao -xgE +laY adO afN ahh @@ -120186,10 +120485,10 @@ acP bUE qFQ aar -jkL -iaE +xYe +kZH aao -mXa +frY adO afO ahh @@ -120389,10 +120688,10 @@ aJa abg ccf aar -cRg +mko uaZ aap -epK +svC adO jkj ahh @@ -121321,7 +121620,7 @@ rbY gwD bOK bPD -nSj +bYa bPD jOk bNB @@ -121524,7 +121823,7 @@ rbY bEc bKA bCA -gJs +bQS bCA bKA bEc @@ -121602,7 +121901,7 @@ aeA aeC aeC aeC -tpt +cVb aeC aeC aeC @@ -121650,7 +121949,7 @@ lJY vcE vcE vcE -oDO +iTd vcE vcE vcE @@ -121937,7 +122236,7 @@ bmD mYv doP jac -isS +xxa cai bdl bII @@ -122002,7 +122301,7 @@ aag aag abh acx -adQ +pMk ajs aeC wXh @@ -122062,7 +122361,7 @@ eyG kpo vcE kUV -mvH +xyL rRq uOi aag @@ -122204,8 +122503,8 @@ aah aah aah abi -acE -adZ +nGY +gyU ajk aeA asY @@ -122265,8 +122564,8 @@ deg wLu lJY xVS -fqg -uGa +kPH +knL uyC aah aah @@ -122328,7 +122627,7 @@ aYW bzV beB mCo -xfw +iwZ lBF bKA sbM @@ -122343,7 +122642,7 @@ bmD lyk bOR eHa -opj +cmo xAB mCo bJz @@ -122407,8 +122706,8 @@ bdH bdH bdH abi -acT -adZ +dEJ +gyU ajk aeA atp @@ -122468,8 +122767,8 @@ pfH wlF lJY xVS -fqg -mIA +kPH +qGU uyC bdH aaa @@ -122611,7 +122910,7 @@ aaa bdH abh acx -umR +gCB ajs aeC wXh @@ -122671,7 +122970,7 @@ eyG kpo vcE kUV -pPF +bxA rRq uOi bdH @@ -123023,7 +123322,7 @@ amH aeC aeC aeC -tpt +cVb aeC aeC aeC @@ -123071,7 +123370,7 @@ kKR vcE vcE vcE -oDO +iTd vcE vcE vcE @@ -123156,7 +123455,7 @@ bZr bNQ bNQ bNQ -ohl +bGz hMs cbw iEb @@ -123359,7 +123658,7 @@ bZr krN krN krN -llt +oqY can buH iEb @@ -123465,9 +123764,9 @@ alG anG apf oIB -tSF -qyM -jog +jgr +gGp +dMf oIB sFR vuv @@ -123562,7 +123861,7 @@ bZr ibc uly bNN -fXt +vbR pky cbv cbS @@ -123668,9 +123967,9 @@ alG aYD uPI oIB -hJh -vMC -iUC +fXE +kaS +aiQ oIB sFR vuv @@ -123871,9 +124170,9 @@ sUF anG apd oIB -ufS +wqr bZw -kaJ +xUV oIB sFR hPo @@ -123968,7 +124267,7 @@ bZr bKA dyx eYr -iii +bUo uys cbz cbU @@ -124075,8 +124374,8 @@ aYD aTS qgK tEB -llD -gGl +uBM +dXo oIB lBR nVu @@ -124171,7 +124470,7 @@ bmD bKA dyx hGN -ddN +pVx uys ttM iEb @@ -124278,8 +124577,8 @@ anG mPX oIB wKF -fOh -diM +hzb +ltU oIB fbx cFA @@ -124480,9 +124779,9 @@ aSC aZH iAB oIB -gqF -imW -qbh +phj +vEf +cNK oIB fbx cxo @@ -124683,8 +124982,8 @@ rFY ctC gPF oIB -kUb -rJg +opI +dha pxj oIB fbx @@ -126705,8 +127004,8 @@ auu aoT aFm xBe -cij -jRZ +aIV +qqr arH xBe alG @@ -127113,7 +127412,7 @@ anO nFX atv auV -ift +amE xBe alG aDZ @@ -127316,7 +127615,7 @@ atc nFX atv auV -ift +amE xBe alG aYj @@ -127720,8 +128019,8 @@ atq aDr aFu xBe -rwT -wdv +azp +qJf anV xBe alG @@ -130977,7 +131276,7 @@ vuv vuv jWh jWh -olk +sWC jWh jWh jWh @@ -131179,10 +131478,10 @@ vuv nfS emx jWh -qCg -xjw -pfA -xAC +duz +hXG +htG +doU jWh lbB uIv @@ -131382,10 +131681,10 @@ iEs cxo cxo jWh -uUV -rsW -djN -fnQ +axR +mIP +tcZ +fWi jWh lbB cKL @@ -131585,10 +131884,10 @@ vuv xct cxo jWh -dkS -vba -naQ -fnQ +vpv +pgw +rmE +fWi jWh xPZ pcv @@ -131769,7 +132068,7 @@ ptK dmQ psm psm -qyH +lDn arV wZX eky @@ -131783,7 +132082,7 @@ aDQ eky wZX arV -dtv +wkA vuv vuv cxo @@ -131971,8 +132270,8 @@ hWU dmQ aeq psm -aNe -hiN +xrq +vVu arV wZX eky @@ -131986,8 +132285,8 @@ aHe eky wZX arV -fXM -aNe +oIt +xrq vuv ahb cxo @@ -132174,8 +132473,8 @@ rwb dmQ jXY psm -atY -qkj +vlk +mKy aMT svl pzJ @@ -132189,8 +132488,8 @@ qDt pzJ sQO aMT -rWF -atY +wNS +vlk vuv woM nqD @@ -132378,7 +132677,7 @@ dmQ atD psm psm -vHl +vjd aRp jBX akS @@ -132392,7 +132691,7 @@ aHe tKf jBX aRp -edx +quy vuv vuv myC @@ -132774,8 +133073,8 @@ cuC bNM tgK tfb -skg -eaX +wuT +lMx pVZ pVZ pVZ @@ -132807,8 +133106,8 @@ qMu qMu qMu qMu -euY -iuw +jFY +qKY jHL wOK uIv @@ -132977,8 +133276,8 @@ cuC riJ kHY uhM -uvk -xJn +kdv +lkm cuC aag aag @@ -133010,8 +133309,8 @@ aag aag aag bYn -tAh -bfe +dRs +uAl rDb qjV rID @@ -133180,7 +133479,7 @@ cuC cuC umy iKZ -tiw +pnL cuC cuC mNX @@ -133214,7 +133513,7 @@ mNX qOk bYn bYn -qQL +cWE kHS rID bYn @@ -134207,8 +134506,8 @@ xVk xVk aad jbq -jXW -jcZ +kRg +uRs aDO qqu eky @@ -134216,8 +134515,8 @@ aNl eky dFk aDO -nzI -jXW +nPY +kRg jbq ajZ xVk @@ -134410,8 +134709,8 @@ xVk xVk aad jbq -qtR -jWC +hBL +dID eky eky nJu @@ -134419,8 +134718,8 @@ aNl eky eky eky -aDc -qtR +etn +hBL jbq ajZ xVk @@ -134614,7 +134913,7 @@ xVk eJQ aPw aHe -dnJ +mRQ eky eky eky @@ -134622,7 +134921,7 @@ aNl eky eky eky -hfw +biJ aHe aPw eJQ @@ -136441,7 +136740,7 @@ xVk oee aPw aHe -tqB +iTe eky eky atg @@ -136449,7 +136748,7 @@ aBE ouB eky eky -gwu +qPX aHe aPw oee @@ -136643,8 +136942,8 @@ xVk xVk aad jbq -aNe -jWC +xrq +dID eky eky esT @@ -136652,8 +136951,8 @@ nYE orH eky eky -aDc -aNe +etn +xrq jbq ajZ xVk @@ -136846,8 +137145,8 @@ xVk xVk aad jbq -atY -jWC +vlk +dID eky eky bAe @@ -136855,8 +137154,8 @@ aBG sGh eky eky -aDc -atY +etn +vlk jbq ajZ xVk @@ -137049,8 +137348,8 @@ xVk xVk aad aPw -qpU -ykD +uYd +xnz dqj eky xaS @@ -137058,8 +137357,8 @@ ejt mPf eky gUV -wKS -qpU +neG +uYd aPw ajZ xVk @@ -140146,9 +140445,9 @@ lmz lmz lmz daz -rzf -bRo -wyv +ltc +eXk +xns pTt gAe rCi @@ -140349,9 +140648,9 @@ lmz lmz lmz daz -czG -ylg -oIY +tId +wJB +tJN daz daz daz From d95be7e65ead9d09af23a09b2f59b473f62d61e1 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 03:33:23 +0000 Subject: [PATCH 146/355] Automatic changelog for PR #4827 [ci skip] --- html/changelogs/AutoChangeLog-pr-4827.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4827.yml diff --git a/html/changelogs/AutoChangeLog-pr-4827.yml b/html/changelogs/AutoChangeLog-pr-4827.yml new file mode 100644 index 000000000000..b95ce40e4607 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4827.yml @@ -0,0 +1,4 @@ +author: "LC4492" +delete-after: True +changes: + - maptweak: "Changes to the CO office: The bathroom now faces into the CO's bedroom, and not to his main office. Victory cabinet have been moved to the Officer's mess because of logical issues. Extra-detail to the office, including an exclusive stamp, table flags and others. The safe is now inside the CO's bedroom, and not in his office. The energy APC is now inside the CO's bedroom, and not in his office. Jones finally have a BED again, or something like that. Other minor changes to objects, such the addition of a cane, a box of glasses for serving guests, etc." \ No newline at end of file From 8f5e5e16e5d8e969939491f7fd9dd794a6af7060 Mon Sep 17 00:00:00 2001 From: Steelpoint <6595389+Steelpoint@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:37:38 +0800 Subject: [PATCH 147/355] Break Up Secure Storage LV-624: V2 (#4944) Breaks open the secure storage on LV-624. Remake of #4767 Mapping changes are identical, however this PR has also removed buttons that reference the now removed secure dome shutters from the rest of the map, and similar nightmare inserts. # Explain why it's good for the game Survivor holds on 624 are usually a case of either the survivors running and gunning or hiding in secure storage for 18 minutes until the xenos reach T3, then its a case of if the Xenos can breach secure storage before the Marines arrive. Secure storage is simply not a fun exercise for both sides, if survivors are going to survive there should be more effort than hiding in a pre-made bunker. I should note that this does not make Secure Storage a impossible hold, only that its now not 100% inaccessible to xenos until they reach T3. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: maptweak: Secure Storage on LV-624 has been broken open, making it far less defendable but easier to access. /:cl: Co-authored-by: Steelpoint --- maps/map_files/LV624/LV624.dmm | 161 ++++++++---------- maps/map_files/LV624/armory/10.cheese.dmm | 6 - maps/map_files/LV624/armory/10.extra.dmm | 6 - maps/map_files/LV624/armory/10.looted.dmm | 14 +- maps/map_files/LV624/science/10.yautja.dmm | 14 +- .../LV624/science/40.fullylocked.dmm | 13 +- 6 files changed, 77 insertions(+), 137 deletions(-) diff --git a/maps/map_files/LV624/LV624.dmm b/maps/map_files/LV624/LV624.dmm index ba11b0b8ee3d..af507ab907fd 100644 --- a/maps/map_files/LV624/LV624.dmm +++ b/maps/map_files/LV624/LV624.dmm @@ -9229,12 +9229,6 @@ /obj/effect/landmark/crap_item, /obj/effect/landmark/crap_item, /obj/item/clothing/suit/armor/vest/security, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, /turf/open/floor{ icon_state = "cult" }, @@ -11199,32 +11193,11 @@ /obj/item/ore/silver, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) -"aWb" = ( -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, -/obj/structure/machinery/door_control{ - id = "secure_outer_blast"; - name = "Secure Outer Doors"; - pixel_x = 25; - pixel_y = -5 - }, -/turf/open/floor/greengrid, -/area/lv624/lazarus/secure_storage) "aWc" = ( /obj/structure/computerframe{ anchored = 1 }, -/obj/structure/machinery/door_control{ - id = "secure_outer_blast"; - name = "Secure Outer Doors"; - pixel_x = 25; - pixel_y = -5 - }, -/turf/open/floor/greengrid, +/turf/open/floor/plating, /area/lv624/lazarus/secure_storage) "aWd" = ( /obj/structure/machinery/cm_vending/sorted/tech/comp_storage, @@ -11342,24 +11315,7 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/south_west_jungle) -"aWu" = ( -/obj/structure/machinery/door/poddoor/almayer{ - dir = 4; - id = "secure_inner_blast"; - layer = 3.3; - name = "\improper Secure Armory Blast Door"; - unacidable = 1 - }, -/turf/open/floor/greengrid, -/area/lv624/lazarus/secure_storage) "aWv" = ( -/obj/structure/machinery/door/poddoor/almayer{ - dir = 4; - id = "secure_outer_blast"; - layer = 3.3; - name = "\improper Secure Armory Blast Door"; - unacidable = 1 - }, /turf/open/floor/plating{ icon_state = "platebotc" }, @@ -13900,6 +13856,10 @@ "dLY" = ( /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/east_jungle) +"dMc" = ( +/obj/structure/flora/jungle/planttop1, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/south_central_jungle) "dMF" = ( /obj/structure/surface/table/reinforced/prison{ color = "#6b675e" @@ -14051,6 +14011,9 @@ icon_state = "bot" }, /area/lv624/lazarus/landing_zones/lz1) +"ebr" = ( +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/south_central_jungle) "ebS" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/east, @@ -17042,6 +17005,10 @@ /obj/structure/flora/jungle/vines/light_3, /turf/open/gm/dirtgrassborder/grassdirt_corner2/south_west, /area/lv624/ground/caves/sand_temple) +"ksM" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/south_central_jungle) "ksQ" = ( /obj/structure/surface/rack, /obj/item/storage/toolbox/mechanical{ @@ -17189,6 +17156,10 @@ icon_state = "vault" }, /area/lv624/lazarus/quartstorage) +"kBq" = ( +/obj/structure/flora/bush/ausbushes/ausbush, +/turf/open/gm/dirtgrassborder/grassdirt_corner/south_west, +/area/lv624/ground/jungle/south_west_jungle) "kCD" = ( /obj/structure/flora/bush/ausbushes/var3/leafybush, /turf/open/auto_turf/strata_grass/layer1, @@ -18026,6 +17997,9 @@ icon_state = "grass1" }, /area/lv624/ground/barrens/south_eastern_barrens) +"mkn" = ( +/turf/open/floor/plating, +/area/lv624/lazarus/secure_storage) "mko" = ( /obj/structure/fence, /turf/open/gm/dirtgrassborder/north, @@ -21614,6 +21588,11 @@ }, /turf/open/gm/dirt, /area/lv624/ground/caves/south_central_caves) +"sWk" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/lv624/lazarus/secure_storage) "sWy" = ( /obj/effect/landmark/monkey_spawn, /turf/open/gm/grass/grass1, @@ -22728,6 +22707,10 @@ "uWJ" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/caves/south_west_caves) +"uXV" = ( +/obj/structure/flora/bush/ausbushes/lavendergrass, +/turf/open/gm/dirt, +/area/lv624/ground/jungle/south_central_jungle) "uXW" = ( /obj/structure/barricade/sandbags/wired, /turf/open/floor/wood{ @@ -23192,6 +23175,10 @@ /obj/structure/flora/jungle/vines/light_1, /turf/open/gm/grass/grass1, /area/lv624/ground/jungle/north_east_jungle) +"vUj" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirtgrassborder/south, +/area/lv624/ground/jungle/south_west_jungle) "vUw" = ( /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/gm/dirt, @@ -23205,6 +23192,9 @@ /obj/effect/landmark/objective_landmark/medium, /turf/open/floor/greengrid, /area/lv624/lazarus/secure_storage) +"vVe" = ( +/turf/open/gm/dirtgrassborder/grassdirt_corner/south_east, +/area/lv624/ground/jungle/south_central_jungle) "vVf" = ( /turf/open/floor{ dir = 5; @@ -23510,18 +23500,6 @@ /obj/structure/flora/bush/ausbushes/var3/ywflowers, /turf/open/auto_turf/strata_grass/layer1, /area/lv624/ground/caves/south_central_caves) -"wAe" = ( -/obj/effect/decal/cleanable/blood/splatter, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = -25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "white" - }, -/area/lv624/lazarus/research) "wAF" = ( /obj/effect/decal/grass_overlay/grass1/inner{ dir = 1 @@ -24147,6 +24125,11 @@ /obj/item/storage/box/lights/mixed, /turf/open/floor/vault, /area/lv624/lazarus/quartstorage) +"xLT" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/lv624/lazarus/secure_storage) "xNi" = ( /obj/effect/landmark/structure_spawner/setup/distress/xeno_weed_node, /obj/effect/decal/grass_overlay/grass1{ @@ -24157,6 +24140,10 @@ "xNK" = ( /turf/open/gm/dirt, /area/lv624/ground/barrens/containers) +"xNQ" = ( +/obj/structure/flora/bush/ausbushes/var3/sparsegrass, +/turf/open/gm/dirtgrassborder/east, +/area/lv624/ground/jungle/south_central_jungle) "xPk" = ( /turf/open/gm/dirtgrassborder/grassdirt_corner2/north_west, /area/lv624/ground/colony/south_medbay_road) @@ -33500,10 +33487,10 @@ aTf aTf aTf aUQ -aWb aUQ aUQ aUQ +sWk aUQ aUQ aTf @@ -33729,11 +33716,11 @@ aTf aTf aTf aTf -aWu -aWu -aWu -aTf -aTf +mkn +xLT +mkn +xLT +sWk aTf aTf aXh @@ -33957,13 +33944,13 @@ efp aTf aTf aWc -aUQ -aUQ -aUQ -aTf -aTf -aTf -cWm +mkn +mkn +sWk +mkn +mkn +xLT +kBq aXh aXh aKb @@ -34185,13 +34172,13 @@ efp efp aTf aTf +xLT aWv aWv -aWv -aTf -aXh -aXh -aXh +xLT +xTT +xTT +vUj qGH aLj aXk @@ -34416,10 +34403,10 @@ uSq qIO qIO qIO -ntL -mnK -kxI -wkP +qIO +uXV +qtj +dMc knp iIU kZw @@ -34644,10 +34631,10 @@ uSq njC qIO qIO -ntL -kxI -tsa -kxI +qIO +qtj +qtj +ksM rox wqz kZw @@ -34873,9 +34860,9 @@ hDX qIO qIO aXH -kxI -gGd -kxI +ebr +xNQ +vVe kxI wbK rHp @@ -41666,7 +41653,7 @@ auV atU avE atp -wAe +awr atU axH aum diff --git a/maps/map_files/LV624/armory/10.cheese.dmm b/maps/map_files/LV624/armory/10.cheese.dmm index 26bfd92837f3..cee714b1c170 100644 --- a/maps/map_files/LV624/armory/10.cheese.dmm +++ b/maps/map_files/LV624/armory/10.cheese.dmm @@ -182,12 +182,6 @@ pixel_x = 8; pixel_y = -4 }, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, /turf/open/floor{ icon_state = "cult" }, diff --git a/maps/map_files/LV624/armory/10.extra.dmm b/maps/map_files/LV624/armory/10.extra.dmm index f9c0f47729c5..7086e945d1ad 100644 --- a/maps/map_files/LV624/armory/10.extra.dmm +++ b/maps/map_files/LV624/armory/10.extra.dmm @@ -187,12 +187,6 @@ /obj/effect/landmark/crap_item, /obj/item/ammo_magazine/smg/m39/extended, /obj/item/weapon/gun/smg/m39, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, /turf/open/floor{ icon_state = "cult" }, diff --git a/maps/map_files/LV624/armory/10.looted.dmm b/maps/map_files/LV624/armory/10.looted.dmm index 478a3db3ea48..b81e0660816d 100644 --- a/maps/map_files/LV624/armory/10.looted.dmm +++ b/maps/map_files/LV624/armory/10.looted.dmm @@ -186,18 +186,6 @@ icon_state = "cult" }, /area/lv624/lazarus/armory) -"K" = ( -/obj/item/stack/sheet/metal, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = 25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "cult" - }, -/area/lv624/lazarus/armory) "T" = ( /obj/structure/machinery/door_control{ id = "garage_blast"; @@ -272,7 +260,7 @@ i w w w -K +w p i "} diff --git a/maps/map_files/LV624/science/10.yautja.dmm b/maps/map_files/LV624/science/10.yautja.dmm index c77bacd35202..04e671be3259 100644 --- a/maps/map_files/LV624/science/10.yautja.dmm +++ b/maps/map_files/LV624/science/10.yautja.dmm @@ -538,18 +538,6 @@ icon_state = "white" }, /area/lv624/lazarus/research) -"WJ" = ( -/obj/effect/landmark/crap_item, -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = -25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "white" - }, -/area/lv624/lazarus/research) "Zw" = ( /obj/structure/surface/table, /obj/item/storage/fancy/vials/random, @@ -670,7 +658,7 @@ al ar aJ Lo -WJ +gd ar aZ CC diff --git a/maps/map_files/LV624/science/40.fullylocked.dmm b/maps/map_files/LV624/science/40.fullylocked.dmm index 8e523f6c7e9c..933de359a481 100644 --- a/maps/map_files/LV624/science/40.fullylocked.dmm +++ b/maps/map_files/LV624/science/40.fullylocked.dmm @@ -417,17 +417,6 @@ "bF" = ( /turf/closed/wall/strata_ice/jungle, /area/lv624/ground/jungle/central_jungle) -"gu" = ( -/obj/structure/machinery/door_control{ - id = "secure_inner_blast"; - name = "Secure Inner Doors"; - pixel_x = -25; - pixel_y = 5 - }, -/turf/open/floor{ - icon_state = "white" - }, -/area/lv624/lazarus/research) "ky" = ( /obj/effect/landmark/objective_landmark/science, /turf/open/floor{ @@ -608,7 +597,7 @@ ay au aQ Kl -gu +ak au bp ay From 1b85e53909047dc7c043b15ba6394d75dfbd9b78 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 03:45:54 +0000 Subject: [PATCH 148/355] Automatic changelog for PR #4944 [ci skip] --- html/changelogs/AutoChangeLog-pr-4944.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4944.yml diff --git a/html/changelogs/AutoChangeLog-pr-4944.yml b/html/changelogs/AutoChangeLog-pr-4944.yml new file mode 100644 index 000000000000..0c8af20f86c8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4944.yml @@ -0,0 +1,4 @@ +author: "Steelpoint" +delete-after: True +changes: + - maptweak: "Secure Storage on LV-624 has been broken open, making it far less defendable but easier to access." \ No newline at end of file From c448d8aa5e253f92d4ad3a4306708a91ff9367c1 Mon Sep 17 00:00:00 2001 From: silencer-pl <103842328+silencer-pl@users.noreply.github.com> Date: Wed, 22 Nov 2023 13:32:43 -0500 Subject: [PATCH 149/355] Adds DISCORDURL to the example config (#5002) # About the pull request This adds a commented DISCORDURL entry to the example config in the files, along with a comment explaining its use. This entry is currently missing and is not mentioned anywhere in the files so unless you already know what you are looking for, you are forced to dig to get the exact string. # Explain why it's good for the game Config file clarity and general user friendliness is good. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
This does not seem like a front facing change at all, so did not include a changelog. --- config/example/config.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/config/example/config.txt b/config/example/config.txt index 8e8bb2b754d5..8a976e02a580 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -140,6 +140,9 @@ RULESURL https://cm-ss13.com/viewtopic.php?f=57&t=5094 ## Ban appeals URL - usually for a forum or wherever people should go to contact your admins. BANAPPEALS https://cm-ss13.com/viewforum.php?f=76 +## Discord URL - uncomment and add a valid Discord invite link (remember to make it a permanent one, since it does not default to it) to make the Discord button work properly. +## DISCORDURL + ## In-game features ## Remove the # to show a popup 'reply to' window to every non-admin that recieves an adminPM. ## The intention is to make adminPMs more visible. (although I fnd popups annoying so this defaults to off) From cbfb9f31da9d858240ab9f543c37d0171e4825c7 Mon Sep 17 00:00:00 2001 From: fira Date: Wed, 22 Nov 2023 20:08:17 +0100 Subject: [PATCH 150/355] Makes Thunderdome Floor Explosion-Proof (#4994) # About the pull request Explosions could permanently mess with the tdome floor. This looks ugly and happens frequently with the amount of abombs thrown in it. # Explain why it's good for the game Admin level looks cleaner and clearer. # Testing Photographs and Procedure Drop-Bomb enter enter DMM edited in-place via regex, shouldn't be any mapmerging issues # Changelog :cl: fix: The Thunderdome floor is now explosion-proof. /:cl: --- code/game/turfs/floor_types.dm | 7 ++++ maps/map_files/generic/Admin_level.dmm | 52 +++++++++++++------------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/code/game/turfs/floor_types.dm b/code/game/turfs/floor_types.dm index 4e47fd004f74..e9c6b9a2048e 100644 --- a/code/game/turfs/floor_types.dm +++ b/code/game/turfs/floor_types.dm @@ -203,6 +203,13 @@ icon_state = "default" plating_type = /turf/open/floor/plating/almayer +/// Admin level thunderdome floor. Doesn't get damaged by explosions and such for pristine testing +/turf/open/floor/tdome + icon = 'icons/turf/almayer.dmi' + icon_state = "plating" + plating_type = /turf/open/floor/tdome + hull_floor = TRUE + //Cargo elevator /turf/open/floor/almayer/empty name = "empty space" diff --git a/maps/map_files/generic/Admin_level.dmm b/maps/map_files/generic/Admin_level.dmm index 43b3d26ec3f9..d085d7a99b0c 100644 --- a/maps/map_files/generic/Admin_level.dmm +++ b/maps/map_files/generic/Admin_level.dmm @@ -12,7 +12,7 @@ /turf/open/floor/wood/ship, /area/adminlevel/ert_station) "ad" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -27,7 +27,7 @@ id = "tdome_observer"; name = "\improper Observer Shutters" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -63,7 +63,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -72,7 +72,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "E" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -83,7 +83,7 @@ id = "tdome_t2"; name = "\improper Team 2 Shutters" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "test_floor4" }, /area/tdome) @@ -101,7 +101,7 @@ /turf/open/space, /area/space) "aE" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 1; icon_state = "w-y0" }, @@ -683,7 +683,7 @@ /obj/item/device/binoculars{ pixel_y = 4 }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -896,7 +896,7 @@ }, /area/adminlevel/ert_station/shuttle_dispatch) "wj" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 1; icon_state = "w-y2" }, @@ -921,7 +921,7 @@ /area/adminlevel/ert_station) "wv" = ( /obj/structure/machinery/vending/snack, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1147,7 +1147,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "E" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1163,7 +1163,7 @@ /obj/structure/flora/pottedplant{ icon_state = "pottedplant_20" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1277,13 +1277,13 @@ /turf/open/floor/plating/almayer, /area/adminlevel/ert_station/shuttle_dispatch) "DV" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "tcomms" }, /area/tdome) "Ee" = ( /obj/effect/landmark/thunderdome/one, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1375,7 +1375,7 @@ "Fw" = ( /obj/structure/surface/table/almayer, /obj/item/storage/fancy/cigar, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1639,7 +1639,7 @@ /turf/closed/wall/mineral/gold, /area/adminlevel/ert_station) "Kq" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "redfull" }, /area/tdome/tdome2) @@ -1738,7 +1738,7 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1871,7 +1871,7 @@ /area/adminlevel/ert_station) "NU" = ( /obj/structure/machinery/vending/cola, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1937,7 +1937,7 @@ /obj/effect/decal/warning_stripes{ icon_state = "W" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -1967,13 +1967,13 @@ /area/adminlevel/simulation) "PF" = ( /obj/effect/landmark/thunderdome/two, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, /area/tdome/tdome2) "PJ" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 1; icon_state = "w-y1" }, @@ -2041,7 +2041,7 @@ /area/adminlevel/ert_station) "QL" = ( /obj/structure/bed/chair/comfy/black, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "tcomms" }, /area/tdome/tdomeobserve) @@ -2095,7 +2095,7 @@ id = "tdome_t1"; name = "\improper Team 1 Shutters" }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "test_floor4" }, /area/tdome) @@ -2165,7 +2165,7 @@ name = "Observer Shutters"; pixel_y = 9 }, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -2313,7 +2313,7 @@ /area/adminlevel/ert_station) "VD" = ( /obj/structure/machinery/vending/cigarette/free, -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -2483,7 +2483,7 @@ }, /area/adminlevel/ert_station) "YP" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ dir = 5; icon_state = "plating" }, @@ -2498,7 +2498,7 @@ /turf/open/floor/plating/plating_catwalk, /area/adminlevel/ert_station) "Zd" = ( -/turf/open/floor/almayer{ +/turf/open/floor/tdome{ icon_state = "bluefull" }, /area/tdome/tdome1) From 876259e9e0f21cd24e2ea0a1d188bf3187bfb37c Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 19:23:53 +0000 Subject: [PATCH 151/355] Automatic changelog for PR #4994 [ci skip] --- html/changelogs/AutoChangeLog-pr-4994.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4994.yml diff --git a/html/changelogs/AutoChangeLog-pr-4994.yml b/html/changelogs/AutoChangeLog-pr-4994.yml new file mode 100644 index 000000000000..2ace9428aaef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4994.yml @@ -0,0 +1,4 @@ +author: "fira" +delete-after: True +changes: + - bugfix: "The Thunderdome floor is now explosion-proof." \ No newline at end of file From fa6ee9c0498a15d07664297c2127081f1e3799f6 Mon Sep 17 00:00:00 2001 From: Sort1eEnMer <151575280+Sort1eEnMer@users.noreply.github.com> Date: Wed, 22 Nov 2023 13:20:12 -0600 Subject: [PATCH 152/355] Match Unlock Time in Nuke Timelock Message with Nuke Techtree Description (#4987) # About the pull request Matches the unlock time given in the refused nuke timelock message with the time given in the nuke's techtree description. # Explain why it's good for the game It was confusing seeing two different numbers for when the nuke would be unlocked. # Testing Photographs and Procedure Gave myself tech points, tried to unlock nuke early, time was correct after commit. # Changelog :cl: SortieEnMer qol: Match Unlock Time in Nuke Timelock Message with Nuke Techtree Description / :cl: --- code/modules/cm_tech/techs/marine/tier4/nuke.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/cm_tech/techs/marine/tier4/nuke.dm b/code/modules/cm_tech/techs/marine/tier4/nuke.dm index f970f37a3fab..932caa4a6853 100644 --- a/code/modules/cm_tech/techs/marine/tier4/nuke.dm +++ b/code/modules/cm_tech/techs/marine/tier4/nuke.dm @@ -36,7 +36,7 @@ return if(ROUND_TIME < NUKE_UNLOCK_TIME) - to_chat(unlocking_mob, SPAN_WARNING("You cannot purchase this node before [NUKE_UNLOCK_TIME / (1 MINUTES)] minutes into the operation.")) + to_chat(unlocking_mob, SPAN_WARNING("You cannot purchase this node before [Ceiling((NUKE_UNLOCK_TIME + SSticker.round_start_time) / (1 MINUTES))] minutes into the operation.")) return FALSE return TRUE From 43d197a373d5968979ebdbc51bd1a5a7a764646e Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 19:39:34 +0000 Subject: [PATCH 153/355] Automatic changelog for PR #4987 [ci skip] --- html/changelogs/AutoChangeLog-pr-4987.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4987.yml diff --git a/html/changelogs/AutoChangeLog-pr-4987.yml b/html/changelogs/AutoChangeLog-pr-4987.yml new file mode 100644 index 000000000000..ef48b7dd6e62 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4987.yml @@ -0,0 +1,4 @@ +author: "SortieEnMer" +delete-after: True +changes: + - qol: "Match Unlock Time in Nuke Timelock Message with Nuke Techtree Description" \ No newline at end of file From 2dfbb94db367141b5ce511c1bcf42b6946adb9be Mon Sep 17 00:00:00 2001 From: zzzmike <85382350+zzzmike@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:21:11 -0800 Subject: [PATCH 154/355] Clarity on hijack announcements (#4989) # About the pull request Makes it clear that pods will also not crash at 100% fuel. And minor change to make the announcement flow a bit better. # Explain why it's good for the game Makes game mechanics a bit more clear for new players. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: qol: ARES hijack announcement specifies that pods will not crash at 100% fuel /:cl: --- code/controllers/subsystem/hijack.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/controllers/subsystem/hijack.dm b/code/controllers/subsystem/hijack.dm index 55b5aa75caf8..a256a7f2a8b2 100644 --- a/code/controllers/subsystem/hijack.dm +++ b/code/controllers/subsystem/hijack.dm @@ -216,13 +216,13 @@ SUBSYSTEM_DEF(hijack) switch(announce) if(1) - marine_announcement("Emergency fuel replenishment at 25 percent. Lifeboat emergency early launch now available.[marine_warning_areas ? "\nTo increase speed restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + marine_announcement("Emergency fuel replenishment is at 25 percent. Lifeboat emergency early launch is now available.[marine_warning_areas ? "\nTo increase speed, restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) if(2) - marine_announcement("Emergency fuel replenishment at 50 percent.[marine_warning_areas ? "\nTo increase speed restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + marine_announcement("Emergency fuel replenishment is at 50 percent.[marine_warning_areas ? "\nTo increase speed, restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) if(3) - marine_announcement("Emergency fuel replenishment at 75 percent.[marine_warning_areas ? "\nTo increase speed restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) + marine_announcement("Emergency fuel replenishment is at 75 percent.[marine_warning_areas ? "\nTo increase speed, restore power to the following areas: [marine_warning_areas]" : " All fueling areas operational."]", HIJACK_ANNOUNCE) if(4) - marine_announcement("Emergency fuel replenishment at 100 percent. Safe utilization of lifeboats now possible.", HIJACK_ANNOUNCE) + marine_announcement("Emergency fuel replenishment is at 100 percent. Safe utilization of lifeboats and pods is now possible.", HIJACK_ANNOUNCE) if(!admin_sd_blocked) addtimer(CALLBACK(src, PROC_REF(unlock_self_destruct)), 8 SECONDS) From 8d5f3d38ddee66c1d1a05e36e7843518023ee64c Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 20:01:05 +0000 Subject: [PATCH 155/355] Automatic changelog for PR #4989 [ci skip] --- html/changelogs/AutoChangeLog-pr-4989.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4989.yml diff --git a/html/changelogs/AutoChangeLog-pr-4989.yml b/html/changelogs/AutoChangeLog-pr-4989.yml new file mode 100644 index 000000000000..062eaf000f63 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4989.yml @@ -0,0 +1,4 @@ +author: "zzzmike" +delete-after: True +changes: + - qol: "ARES hijack announcement specifies that pods will not crash at 100% fuel" \ No newline at end of file From c2aeb60871c36165ff4e7bf91df0f8749d833bad Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:21:31 -0800 Subject: [PATCH 156/355] Fix resin doors not closing on mob/living if they are merged with weeds (#4990) # About the pull request This PR simply changes the mob/living check in `/obj/structure/mineral_door/resin/Close()` to also account for whether they are merged with the weeds. As soon as xeno corpses are also merging with weeds this will handle them too. # Explain why it's good for the game Although I think this is a very rare situation, it can be especially confusing if a fully weeded corpse that intentionally is hard to see is causing a door to not close (seemingly arbitrarily). # Testing Photographs and Procedure
Screenshots & Videos https://github.com/cmss13-devs/cmss13/assets/76988376/4770ff65-c484-4e88-9381-19dfad22ffae
# Changelog :cl: Drathek fix: Resin doors will now close on dead mobs that are merged with weeds (currently only human). fix: Resin doors will now restart their closing timer each open making the delay to close consistent. code: Added a TRAIT_MERGED_WITH_WEEDS that is set whenever the mob is currently merged with weeds. /:cl: --- code/__DEFINES/traits.dm | 2 ++ code/datums/components/weed_food.dm | 2 ++ code/modules/cm_aliens/XenoStructures.dm | 31 ++++++++++++++---------- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index af8af22ca707..7f69a4acc4d6 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -147,6 +147,8 @@ #define TRAIT_IMMOBILIZED "immobilized" /// Apply this to make a mob not dense, and remove it when you want it to no longer make them undense, other sorces of undesity will still apply. Always define a unique source when adding a new instance of this! #define TRAIT_UNDENSE "undense" +/// Apply this to identify a mob as merged with weeds +#define TRAIT_MERGED_WITH_WEEDS "merged_with_weeds" // SPECIES TRAITS /// Knowledge of Yautja technology diff --git a/code/datums/components/weed_food.dm b/code/datums/components/weed_food.dm index 16be8665f55b..648478aa6140 100644 --- a/code/datums/components/weed_food.dm +++ b/code/datums/components/weed_food.dm @@ -260,6 +260,7 @@ merged = TRUE ADD_TRAIT(parent_mob, TRAIT_UNDENSE, XENO_WEED_TRAIT) + ADD_TRAIT(parent_mob, TRAIT_MERGED_WITH_WEEDS, XENO_WEED_TRAIT) parent_mob.anchored = TRUE parent_mob.mouse_opacity = MOUSE_OPACITY_TRANSPARENT parent_mob.plane = FLOOR_PLANE @@ -288,6 +289,7 @@ UnregisterSignal(absorbing_weeds, COMSIG_PARENT_QDELETING) absorbing_weeds = null + REMOVE_TRAIT(parent_mob, TRAIT_MERGED_WITH_WEEDS, XENO_WEED_TRAIT) parent_mob.anchored = FALSE parent_mob.mouse_opacity = MOUSE_OPACITY_ICON parent_mob.plane = GAME_PLANE diff --git a/code/modules/cm_aliens/XenoStructures.dm b/code/modules/cm_aliens/XenoStructures.dm index 73ced8099427..211f53a0ec7a 100644 --- a/code/modules/cm_aliens/XenoStructures.dm +++ b/code/modules/cm_aliens/XenoStructures.dm @@ -418,18 +418,23 @@ update_icon() isSwitchingStates = 0 layer = DOOR_OPEN_LAYER - spawn(close_delay) - if(!isSwitchingStates && state == 1) - Close() + addtimer(CALLBACK(src, PROC_REF(Close)), close_delay, TIMER_UNIQUE|TIMER_OVERRIDE) + +/obj/structure/mineral_door/resin/proc/close_blocked() + for(var/turf/turf in locs) + for(var/mob/living/living_mob in turf) + if(!HAS_TRAIT(living_mob, TRAIT_MERGED_WITH_WEEDS)) + return TRUE + return FALSE /obj/structure/mineral_door/resin/Close() - if(!state || !loc) return //already closed + if(!state || !loc || isSwitchingStates) + return //already closed or changing //Can't close if someone is blocking it - for(var/turf/turf in locs) - if(locate(/mob/living) in turf) - spawn (close_delay) - Close() - return + if(close_blocked()) + addtimer(CALLBACK(src, PROC_REF(Close)), close_delay, TIMER_UNIQUE|TIMER_OVERRIDE) + return + isSwitchingStates = 1 playsound(loc, "alien_resin_move", 25) flick("[mineralType]closing",src) @@ -440,10 +445,10 @@ update_icon() isSwitchingStates = 0 layer = DOOR_CLOSED_LAYER - for(var/turf/turf in locs) - if(locate(/mob/living) in turf) - Open() - return + + if(close_blocked()) + Open() + return /obj/structure/mineral_door/resin/Dismantle(devastated = 0) qdel(src) From 35d5071c5240a37a4e4a79eb588f24cbd6de70de Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 20:21:33 +0000 Subject: [PATCH 157/355] Automatic changelog for PR #4990 [ci skip] --- html/changelogs/AutoChangeLog-pr-4990.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4990.yml diff --git a/html/changelogs/AutoChangeLog-pr-4990.yml b/html/changelogs/AutoChangeLog-pr-4990.yml new file mode 100644 index 000000000000..8f54dcade5d8 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4990.yml @@ -0,0 +1,6 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Resin doors will now close on dead mobs that are merged with weeds (currently only human)." + - bugfix: "Resin doors will now restart their closing timer each open making the delay to close consistent." + - code_imp: "Added a TRAIT_MERGED_WITH_WEEDS that is set whenever the mob is currently merged with weeds." \ No newline at end of file From fa3745bf4137a5747a9ec399b4fd284fcca01ba7 Mon Sep 17 00:00:00 2001 From: Drathek <76988376+Drulikar@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:31:39 -0800 Subject: [PATCH 158/355] Fix buried larva spawn grace period at start of round (#4988) # About the pull request Looking at the code again, #4502 is unintentionally eliminating the buried larva grace period when there is no core. The first 30 minutes should have a core be optional (because the hive is still being established), but the queue requires a core (or nested bodies) to dequeue players from the queue. So as soon as there is one player in queue, buried spawns during the no-core grace period would be stopped. This PR makes it so the queue will only prevent manual buried spawns when there is a core. # Explain why it's good for the game Fixes a situation that needlessly hinders xeno start if the hive puts off creating a core. Also the logic was getting fairly complex here so the early returns should make it more manageable. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: Drathek fix: Fixed buried larva spawn grace period at start of round if there is a queue: Now join as xeno when there's a queue will only prevent buried larva spawns if there is no core. /:cl: --- code/game/gamemodes/cm_initialize.dm | 36 ++++++++++++++++------------ 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index 17a255009089..519ce4ed4f6f 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -356,21 +356,27 @@ Additional game mode variables. else available_xenos_non_ssd += cur_xeno - // Only offer buried larva if there is no queue: - // This basically means this block of code will almost never execute, because we are instead relying on the hive cores/larva pops to handle their larva - // Technically this should be after a get_alien_candidates() call to be accurate, but we are intentionally trying to not call that proc as much as possible - if(GLOB.xeno_queue_candidate_count < 1) - var/datum/hive_status/hive - for(var/hivenumber in GLOB.hive_datum) - hive = GLOB.hive_datum[hivenumber] - if(!hive.hardcore && hive.stored_larva && (hive.hive_location || (world.time < XENO_BURIED_LARVA_TIME_LIMIT + SSticker.round_start_time))) - if(SSticker.mode && (SSticker.mode.flags_round_type & MODE_RANDOM_HIVE)) - available_xenos |= "any buried larva" - LAZYADD(available_xenos["any buried larva"], hive) - else - var/larva_option = "buried larva ([hive])" - available_xenos += larva_option - available_xenos[larva_option] = list(hive) + var/datum/hive_status/hive + for(var/hivenumber in GLOB.hive_datum) + hive = GLOB.hive_datum[hivenumber] + if(hive.hardcore) + continue + if(!hive.stored_larva) + continue + // Only offer buried larva if there is no queue because we are instead relying on the hive cores/larva pops to handle their larva: + // Technically this should be after a get_alien_candidates() call to be accurate, but we are intentionally trying to not call that proc as much as possible + if(hive.hive_location && GLOB.xeno_queue_candidate_count > 0) + continue + if(!hive.hive_location && (world.time > XENO_BURIED_LARVA_TIME_LIMIT + SSticker.round_start_time)) + continue + + if(SSticker.mode && (SSticker.mode.flags_round_type & MODE_RANDOM_HIVE)) + available_xenos |= "any buried larva" + LAZYADD(available_xenos["any buried larva"], hive) + else + var/larva_option = "buried larva ([hive])" + available_xenos += larva_option + available_xenos[larva_option] = list(hive) if(!available_xenos.len || (instant_join && !available_xenos_non_ssd.len)) if(!xeno_candidate.client || !xeno_candidate.client.prefs || !(xeno_candidate.client.prefs.be_special & BE_ALIEN_AFTER_DEATH)) From 91d3dd68c6b3870acdbf18d44b667fe30ffbe786 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 20:35:40 +0000 Subject: [PATCH 159/355] Automatic changelog for PR #4988 [ci skip] --- html/changelogs/AutoChangeLog-pr-4988.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4988.yml diff --git a/html/changelogs/AutoChangeLog-pr-4988.yml b/html/changelogs/AutoChangeLog-pr-4988.yml new file mode 100644 index 000000000000..ba67e425bd74 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4988.yml @@ -0,0 +1,4 @@ +author: "Drathek" +delete-after: True +changes: + - bugfix: "Fixed buried larva spawn grace period at start of round if there is a queue: Now join as xeno when there's a queue will only prevent buried larva spawns if there is no core." \ No newline at end of file From 7e7db48664cf2a48f6e3eb643106a87f7e45ffff Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Wed, 22 Nov 2023 22:33:50 +0300 Subject: [PATCH 160/355] Oppressor XvX nerf (#4981) # About the pull request Oppressor no longer can abduct "big" xenos (Queen, T3s, hivelord, carrier, defender). # Explain why it's good for the game Way too strong in XvX to abduct an enemy queen. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: ihatethisengine balance: Oppressor no longer can abduct big xenos. /:cl: --- .../abilities/praetorian/praetorian_powers.dm | 120 +++++++++--------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm index 0d7a86c58318..400a4a80ba49 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/praetorian/praetorian_powers.dm @@ -234,16 +234,16 @@ xeno_attack_delay(stabbing_xeno) return ..() -/datum/action/xeno_action/activable/prae_abduct/use_ability(atom/A) - var/mob/living/carbon/xenomorph/X = owner +/datum/action/xeno_action/activable/prae_abduct/use_ability(atom/atom) + var/mob/living/carbon/xenomorph/xeno = owner - if(!A || A.layer >= FLY_LAYER || !isturf(X.loc)) + if(!atom || atom.layer >= FLY_LAYER || !isturf(xeno.loc)) return - if(!action_cooldown_check() || X.action_busy) + if(!action_cooldown_check() || xeno.action_busy) return - if(!X.check_state()) + if(!xeno.check_state()) return if(!check_plasma_owner()) @@ -252,11 +252,11 @@ // Build our turflist var/list/turf/turflist = list() var/list/telegraph_atom_list = list() - var/facing = get_dir(X, A) - var/turf/T = X.loc - var/turf/temp = X.loc - for(var/x in 0 to max_distance) - temp = get_step(T, facing) + var/facing = get_dir(xeno, atom) + var/turf/turf = xeno.loc + var/turf/temp = xeno.loc + for(var/distance in 0 to max_distance) + temp = get_step(turf, facing) if(facing in diagonals) // check if it goes through corners var/reverse_face = reverse_dir[facing] var/turf/back_left = get_step(temp, turn(reverse_face, 45)) @@ -267,103 +267,103 @@ break var/blocked = FALSE - for(var/obj/structure/S in temp) - if(S.opacity || ((istype(S, /obj/structure/barricade) || istype(S, /obj/structure/girder) && S.density || istype(S, /obj/structure/machinery/door)) && S.density)) + for(var/obj/structure/structure in temp) + if(structure.opacity || ((istype(structure, /obj/structure/barricade) || istype(structure, /obj/structure/girder) && structure.density || istype(structure, /obj/structure/machinery/door)) && structure.density)) blocked = TRUE break if(blocked) break - T = temp + turf = temp - if (T in turflist) + if (turf in turflist) break - turflist += T - facing = get_dir(T, A) - telegraph_atom_list += new /obj/effect/xenomorph/xeno_telegraph/brown/abduct_hook(T, windup) + turflist += turf + facing = get_dir(turf, atom) + telegraph_atom_list += new /obj/effect/xenomorph/xeno_telegraph/brown/abduct_hook(turf, windup) if(!length(turflist)) - to_chat(X, SPAN_XENOWARNING("You don't have any room to do your abduction!")) + to_chat(xeno, SPAN_XENOWARNING("You don't have any room to do your abduction!")) return - X.visible_message(SPAN_XENODANGER("\The [X]'s segmented tail starts coiling..."), SPAN_XENODANGER("You begin coiling your tail, aiming towards \the [A]...")) - X.emote("roar") + xeno.visible_message(SPAN_XENODANGER("\The [xeno]'s segmented tail starts coiling..."), SPAN_XENODANGER("You begin coiling your tail, aiming towards \the [atom]...")) + xeno.emote("roar") - var/throw_target_turf = get_step(X.loc, facing) + var/throw_target_turf = get_step(xeno.loc, facing) - ADD_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - X.update_canmove() - if(!do_after(X, windup, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 1)) - to_chat(X, SPAN_XENOWARNING("You relax your tail.")) + ADD_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) + xeno.update_canmove() + if(!do_after(xeno, windup, INTERRUPT_NO_NEEDHAND, BUSY_ICON_HOSTILE, numticks = 1)) + to_chat(xeno, SPAN_XENOWARNING("You relax your tail.")) apply_cooldown() - for (var/obj/effect/xenomorph/xeno_telegraph/XT in telegraph_atom_list) - telegraph_atom_list -= XT - qdel(XT) + for (var/obj/effect/xenomorph/xeno_telegraph/xenotelegraph in telegraph_atom_list) + telegraph_atom_list -= xenotelegraph + qdel(xenotelegraph) - REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - X.update_canmove() + REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) + xeno.update_canmove() return if(!check_and_use_plasma_owner()) return - REMOVE_TRAIT(X, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - X.update_canmove() + REMOVE_TRAIT(xeno, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) + xeno.update_canmove() - playsound(get_turf(X), 'sound/effects/bang.ogg', 25, 0) - X.visible_message(SPAN_XENODANGER("\The [X] suddenly uncoils its tail, firing it towards [A]!"), SPAN_XENODANGER("You uncoil your tail, sending it out towards \the [A]!")) + playsound(get_turf(xeno), 'sound/effects/bang.ogg', 25, 0) + xeno.visible_message(SPAN_XENODANGER("\The [xeno] suddenly uncoils its tail, firing it towards [atom]!"), SPAN_XENODANGER("You uncoil your tail, sending it out towards \the [atom]!")) var/list/targets = list() for (var/turf/target_turf in turflist) - for (var/mob/living/carbon/H in target_turf) - if(!isxeno_human(H) || X.can_not_harm(H) || H.is_dead() || H.is_mob_incapacitated(TRUE)) + for (var/mob/living/carbon/target in target_turf) + if(!isxeno_human(target) || xeno.can_not_harm(target) || target.is_dead() || target.is_mob_incapacitated(TRUE) || target.mob_size >= MOB_SIZE_BIG) continue - targets += H + targets += target if (LAZYLEN(targets) == 1) - X.balloon_alert(X, "your tail catches and slows one target!", text_color = "#51a16c") + xeno.balloon_alert(xeno, "your tail catches and slows one target!", text_color = "#51a16c") else if (LAZYLEN(targets) == 2) - X.balloon_alert(X, "your tail catches and roots two targets!", text_color = "#51a16c") + xeno.balloon_alert(xeno, "your tail catches and roots two targets!", text_color = "#51a16c") else if (LAZYLEN(targets) >= 3) - X.balloon_alert(X, "your tail catches and stuns [LAZYLEN(targets)] targets!", text_color = "#51a16c") + xeno.balloon_alert(xeno, "your tail catches and stuns [LAZYLEN(targets)] targets!", text_color = "#51a16c") - for (var/mob/living/carbon/H in targets) - X.visible_message(SPAN_XENODANGER("\The [X]'s hooked tail coils itself around [H]!"), SPAN_XENODANGER("Your hooked tail coils itself around [H]!")) + for (var/mob/living/carbon/target in targets) + xeno.visible_message(SPAN_XENODANGER("\The [xeno]'s hooked tail coils itself around [target]!"), SPAN_XENODANGER("Your hooked tail coils itself around [target]!")) - H.apply_effect(0.2, WEAKEN) + target.apply_effect(0.2, WEAKEN) if (LAZYLEN(targets) == 1) - new /datum/effects/xeno_slow(H, X, , ,25) - H.apply_effect(1, SLOW) + new /datum/effects/xeno_slow(target, xeno, , ,25) + target.apply_effect(1, SLOW) else if (LAZYLEN(targets) == 2) - ADD_TRAIT(H, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) - H.update_canmove() - if (ishuman(H)) - var/mob/living/carbon/human/Hu = H - Hu.update_xeno_hostile_hud() - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), H), get_xeno_stun_duration(H, 25)) - to_chat(H, SPAN_XENOHIGHDANGER("[X] has pinned you to the ground! You cannot move!")) + ADD_TRAIT(target, TRAIT_IMMOBILIZED, TRAIT_SOURCE_ABILITY("Abduct")) + target.update_canmove() + if (ishuman(target)) + var/mob/living/carbon/human/human = target + human.update_xeno_hostile_hud() + addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(unroot_human), target), get_xeno_stun_duration(target, 25)) + to_chat(target, SPAN_XENOHIGHDANGER("[xeno] has pinned you to the ground! You cannot move!")) - H.set_effect(2, DAZE) + target.set_effect(2, DAZE) else if (LAZYLEN(targets) >= 3) - H.apply_effect(get_xeno_stun_duration(H, 1.3), WEAKEN) - to_chat(H, SPAN_XENOHIGHDANGER("You are slammed into the other victims of [X]!")) + target.apply_effect(get_xeno_stun_duration(target, 1.3), WEAKEN) + to_chat(target, SPAN_XENOHIGHDANGER("You are slammed into the other victims of [xeno]!")) - shake_camera(H, 10, 1) + shake_camera(target, 10, 1) - var/obj/effect/beam/tail_beam = X.beam(H, "oppressor_tail", 'icons/effects/beam.dmi', 0.5 SECONDS, 8) + var/obj/effect/beam/tail_beam = xeno.beam(target, "oppressor_tail", 'icons/effects/beam.dmi', 0.5 SECONDS, 8) var/image/tail_image = image('icons/effects/status_effects.dmi', "hooked") - H.overlays += tail_image + target.overlays += tail_image - H.throw_atom(throw_target_turf, get_dist(throw_target_turf, H)-1, SPEED_VERY_FAST) + target.throw_atom(throw_target_turf, get_dist(throw_target_turf, target)-1, SPEED_VERY_FAST) qdel(tail_beam) // hook beam catches target, throws them back, is deleted (throw_atom has sleeps), then hook beam catches another target, repeat - addtimer(CALLBACK(src, /datum/action/xeno_action/activable/prae_abduct/proc/remove_tail_overlay, H, tail_image), 0.5 SECONDS) //needed so it can actually be seen as it gets deleted too quickly otherwise. + addtimer(CALLBACK(src, /datum/action/xeno_action/activable/prae_abduct/proc/remove_tail_overlay, target, tail_image), 0.5 SECONDS) //needed so it can actually be seen as it gets deleted too quickly otherwise. apply_cooldown() return ..() From d97e87ae249c17e7c9d0d98d3940beee31febfb6 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 20:48:54 +0000 Subject: [PATCH 161/355] Automatic changelog for PR #4981 [ci skip] --- html/changelogs/AutoChangeLog-pr-4981.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4981.yml diff --git a/html/changelogs/AutoChangeLog-pr-4981.yml b/html/changelogs/AutoChangeLog-pr-4981.yml new file mode 100644 index 000000000000..6edc5e60a381 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4981.yml @@ -0,0 +1,4 @@ +author: "ihatethisengine" +delete-after: True +changes: + - balance: "Oppressor no longer can abduct big xenos." \ No newline at end of file From b28e9e5d3b97befc03c05166668d84d1581b34e7 Mon Sep 17 00:00:00 2001 From: zzzmike <85382350+zzzmike@users.noreply.github.com> Date: Wed, 22 Nov 2023 11:34:09 -0800 Subject: [PATCH 162/355] Location name standardization (#4980) # About the pull request The most noticeable thing about this PR is that it converts east/west/north/south references from fuel pumps into port/starboard/etc. Which will be quite noticeable during the hijack announcements when they go online or offline. It also makes it a bit more clear on crew monitor when something is on the upper deck or lower deck, and introduces some standardization for location names. Also ![Screenshot 2023-11-20 063208](https://github.com/cmss13-devs/cmss13/assets/85382350/01e3beff-d009-491d-877e-96e1818538cf) # Explain why it's good for the game I GET IT. It's much easier, especially for new players, if you could refer to things the way they are OOCly on your monitor. But it's also a disservice to have it both ways ingame. The crew monitor never refers to "North Lifeboat". It's starboard. PSA to anyone not good with the directional structure on crew monitor - (I'm not good with it either, don't worry) The engines are on the rear of the ship, in engineering. That's why it must be aft (or stern), and everything else must oriented from that perspective. If someone yells to get on starboard lifeboat, go north. Port? Go south. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: qol: Location name standardization. So, North is now Starboard. This is already how it is for everything except pumps. /:cl: --- code/game/area/almayer.dm | 139 +++++++++++++++++++------------------- 1 file changed, 70 insertions(+), 69 deletions(-) diff --git a/code/game/area/almayer.dm b/code/game/area/almayer.dm index 742ae7a1addb..d9ff42f4f55c 100644 --- a/code/game/area/almayer.dm +++ b/code/game/area/almayer.dm @@ -29,12 +29,12 @@ SShijack.progress_areas[src] = power_equip /area/shuttle/almayer/elevator_maintenance/upperdeck - name = "\improper Maintenance Elevator" + name = "\improper Upper Deck Maintenance Elevator" icon_state = "shuttle" fake_zlevel = 1 /area/shuttle/almayer/elevator_maintenance/lowerdeck - name = "\improper Maintenance Elevator" + name = "\improper Lower Deck Maintenance Elevator" icon_state = "shuttle" fake_zlevel = 2 @@ -98,23 +98,23 @@ resin_construction_allowed = FALSE /area/almayer/command/securestorage - name = "\improper Secure Storage" + name = "\improper Upper Deck Secure Storage" icon_state = "corporatespace" - fake_zlevel = 2 // lowerdeck + fake_zlevel = 1 // upperdeck /area/almayer/command/computerlab - name = "\improper Computer Lab" + name = "\improper Upper Deck Computer Lab" icon_state = "ceroom" - fake_zlevel = 2 // lowerdeck + fake_zlevel = 1 // upperdeck /area/almayer/command/telecomms - name = "\improper Telecommunications" + name = "\improper Upper Deck Telecommunications" icon_state = "tcomms" fake_zlevel = 1 // upperdeck flags_area = AREA_NOTUNNEL /area/almayer/command/self_destruct - name = "\improper Self-Destruct Core Room" + name = "\improper Upper Deck Self-Destruct Core Room" icon_state = "selfdestruct" fake_zlevel = 1 // upperdeck flags_area = AREA_NOTUNNEL @@ -125,7 +125,7 @@ fake_zlevel = 1 // upperdeck /area/almayer/command/combat_correspondent - name = "\improper Combat Correspondent Office" + name = "\improper Upper Deck Combat Correspondent Office" icon_state = "selfdestruct" fake_zlevel = 1 // upperdeck @@ -133,36 +133,36 @@ minimap_color = MINIMAP_AREA_ENGI /area/almayer/engineering/upper_engineering - name = "\improper Upper Engineering" + name = "\improper Upper Deck Engineering" icon_state = "upperengineering" fake_zlevel = 1 // upperdeck /area/almayer/engineering/upper_engineering/starboard - name = "\improper Starboard Upper Engineering" + name = "\improper Upper Deck Starboard Engineering" /area/almayer/engineering/upper_engineering/port - name = "\improper Port Upper Engineering" + name = "\improper Upper Deck Port Engineering" /area/almayer/engineering/upper_engineering/notunnel flags_area = AREA_NOTUNNEL /area/almayer/engineering/ce_room - name = "\improper Chief Engineer Office" + name = "\improper Upper Deck Chief Engineer Office" icon_state = "ceroom" fake_zlevel = 1 // upperdeck /area/almayer/engineering/lower_engine_monitoring - name = "\improper Engine Reactor Monitoring" + name = "\improper Lower Deck Engine Reactor Monitoring" icon_state = "lowermonitoring" fake_zlevel = 2 // lowerdeck /area/almayer/engineering/lower_engineering - name = "\improper Engineering Lower" + name = "\improper Lower Deck Engineering" icon_state = "lowerengineering" fake_zlevel = 2 // lowerdeck /area/almayer/engineering/engineering_workshop - name = "\improper Engineering Workshop" + name = "\improper Lower Deck Engineering Workshop" icon_state = "workshop" fake_zlevel = 2 // lowerdeck @@ -180,17 +180,17 @@ hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE /area/almayer/engineering/starboard_atmos - name = "\improper Atmospherics Starboard" + name = "\improper Upper Deck Starboard Atmospherics" icon_state = "starboardatmos" fake_zlevel = 1 // upperdeck /area/almayer/engineering/port_atmos - name = "\improper Atmospherics Port" + name = "\improper Upper Deck Port Atmospherics" icon_state = "portatmos" fake_zlevel = 1 // upperdeck /area/almayer/engineering/laundry - name = "\improper Laundry Room" + name = "\improper Upper Deck Laundry Room" icon_state = "laundry" fake_zlevel = 1 // upperdeck @@ -211,17 +211,17 @@ fake_zlevel = 2 // lowerdeck /area/almayer/shipboard/starboard_missiles - name = "\improper Missile Tubes Starboard" + name = "\improper Upper Deck Starboard Missile Tubes" icon_state = "starboardmissile" fake_zlevel = 1 // upperdeck /area/almayer/shipboard/port_missiles - name = "\improper Missile Tubes Port" + name = "\improper Upper Deck Port Missile Tubes" icon_state = "portmissile" fake_zlevel = 1 // upperdeck /area/almayer/shipboard/weapon_room - name = "\improper Weapon Control Room" + name = "\improper Lower Deck Weapon Control" icon_state = "weaponroom" fake_zlevel = 2 // lowerdeck @@ -229,12 +229,12 @@ flags_area = AREA_NOTUNNEL /area/almayer/shipboard/starboard_point_defense - name = "\improper Point Defense Starboard" + name = "\improper Lower Deck Starboard Point Defense" icon_state = "starboardpd" fake_zlevel = 2 // lowerdeck /area/almayer/shipboard/port_point_defense - name = "\improper Point Defense Port" + name = "\improper Lower Deck Port Point Defense" icon_state = "portpd" fake_zlevel = 2 // lowerdeck @@ -300,7 +300,7 @@ icon_state = "chiefmpoffice" /area/almayer/shipboard/sea_office - name = "\improper Senior Enlisted Advisor Office" + name = "\improper Lower Deck Senior Enlisted Advisor Office" icon_state = "chiefmpoffice" fake_zlevel = 2 // lowerdeck @@ -326,7 +326,7 @@ soundscape_interval = 50 /area/almayer/hallways/vehiclehangar - name = "\improper Vehicle Storage" + name = "\improper Lower Deck Vehicle Storage" icon_state = "exoarmor" fake_zlevel = 2 @@ -334,135 +334,136 @@ minimap_color = MINIMAP_AREA_COLONY /area/almayer/living/tankerbunks - name = "\improper Vehicle Crew Bunks" + name = "\improper Lower Deck Vehicle Crew Bunks" icon_state = "livingspace" fake_zlevel = 2 /area/almayer/living/auxiliary_officer_office - name = "\improper Auxiliary Support Officer office" + name = "\improper Lower Deck Auxiliary Support Officer office" icon_state = "livingspace" fake_zlevel = 2 /area/almayer/squads/tankdeliveries - name = "\improper Vehicle ASRS" + name = "\improper Lower Deck Vehicle ASRS" icon_state = "req" fake_zlevel = 2 /area/almayer/hallways/exoarmor - name = "\improper Vehicle Armor Storage" + name = "\improper Lower Deck Vehicle Armor Storage" icon_state = "exoarmor" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/repair_bay - name = "\improper Deployment Workshop" + name = "\improper Lower Deck Deployment Workshop" icon_state = "dropshiprepair" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/mission_planner - name = "\improper Dropship Central Computer Room" + name = "\improper Lower Deck Dropship Central Computer Room" icon_state = "missionplanner" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/starboard_umbilical - name = "\improper Umbilical Starboard" + name = "\improper Lower Deck Starboard Umbilical Hallway" icon_state = "starboardumbilical" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/port_umbilical - name = "\improper Umbilical Port" + name = "\improper Lower Deck Port Umbilical Hallway" icon_state = "portumbilical" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/aft_hallway - name = "\improper Hallway Aft" + name = "\improper Upper Deck Aft Hallway" icon_state = "aft" fake_zlevel = 1 // upperdeck /area/almayer/hallways/stern_hallway - name = "\improper Hallway Stern" + name = "\improper Upper Deck Stern Hallway" icon_state = "stern" fake_zlevel = 1 // upperdeck /area/almayer/hallways/port_hallway - name = "\improper Hallway Port" + name = "\improper Lower Deck Port Hallway" icon_state = "port" fake_zlevel = 2 // lowerdeck /area/almayer/hallways/starboard_hallway - name = "\improper Hallway Starboard" + name = "\improper Lower Deck Starboard Hallway" icon_state = "starboard" fake_zlevel = 2 // lowerdeck /area/almayer/stair_clone - name = "\improper Stairs" + name = "\improper Lower Deck Stairs" icon_state = "stairs_lowerdeck" fake_zlevel = 2 // lowerdeck resin_construction_allowed = FALSE /area/almayer/stair_clone/upper + name = "\improper Upper Deck Stairs" icon_state = "stairs_upperdeck" fake_zlevel = 1 // upperdeck /area/almayer/hull/lower_hull - name = "\improper Hull Lower" + name = "\improper Lower Deck Hull" icon_state = "lowerhull" fake_zlevel = 2 // lowerdeck /area/almayer/hull/upper_hull - name = "\improper Hull Upper" + name = "\improper Upper Deck Hull" icon_state = "upperhull" fake_zlevel = 1 // upperdeck /area/almayer/hull/upper_hull/u_f_s - name = "\improper Upper Fore-Starboard Hull" + name = "\improper Upper Deck Fore-Starboard Hull" icon_state = "upperhull" /area/almayer/hull/upper_hull/u_m_s - name = "\improper Upper Midship-Starboard Hull" + name = "\improper Upper Deck Starboard-Midship Hull" icon_state = "upperhull" /area/almayer/hull/upper_hull/u_a_s - name = "\improper Upper Aft-Starboard Hull" + name = "\improper Upper Deck Starboard-Aft Hull" icon_state = "upperhull" /area/almayer/hull/upper_hull/u_f_p - name = "\improper Upper Fore-Port Hull" + name = "\improper Upper Deck Port-Fore Hull" icon_state = "upperhull" /area/almayer/hull/upper_hull/u_m_p - name = "\improper Upper Midship-Port Hull" + name = "\improper Upper Deck Port-Midship Hull" icon_state = "upperhull" /area/almayer/hull/upper_hull/u_a_p - name = "\improper Upper Aft-Port Hull" + name = "\improper Upper Deck Port-Aft Hull" icon_state = "upperhull" /area/almayer/hull/lower_hull/l_f_s - name = "\improper Lower Fore-Starboard Hull" + name = "\improper Lower Deck Starboard-Fore Hull" icon_state = "upperhull" /area/almayer/hull/lower_hull/l_m_s - name = "\improper Lower Midship-Starboard Hull" + name = "\improper Lower Deck Starboard-Midship Hull" icon_state = "upperhull" /area/almayer/hull/lower_hull/l_a_s - name = "\improper Lower Aft-Starboard Hull" + name = "\improper Lower Deck Starboard Hull" icon_state = "upperhull" /area/almayer/hull/lower_hull/l_f_p - name = "\improper Lower Fore-Port Hull" + name = "\improper Lower Deck Port-Fore Hull" icon_state = "upperhull" /area/almayer/hull/lower_hull/l_m_p - name = "\improper Lower Midship-Port Hull" + name = "\improper Lower Deck Port-Midship Hull" icon_state = "upperhull" /area/almayer/hull/lower_hull/l_a_p - name = "\improper Lower Aft-Port Hull" + name = "\improper Lower Deck Port-Aft Hull" icon_state = "upperhull" /area/almayer/living/cryo_cells - name = "\improper Cryo Cells" + name = "\improper Lower Deck Cryo Cells" icon_state = "cryo" fake_zlevel = 2 // lowerdeck @@ -472,22 +473,22 @@ fake_zlevel = 2 // lowerdeck /area/almayer/living/port_emb - name = "\improper Extended Mission Bunks" + name = "\improper Lower Deck Port Extended Mission Bunks" icon_state = "portemb" fake_zlevel = 2 // lowerdeck /area/almayer/living/starboard_emb - name = "\improper Extended Mission Bunks" + name = "\improper Lower Deck Starboard Extended Mission Bunks" icon_state = "starboardemb" fake_zlevel = 2 // lowerdeck /area/almayer/living/port_garden - name = "\improper Garden" + name = "\improper Port Garden" icon_state = "portemb" fake_zlevel = 1 // upperdeck /area/almayer/living/starboard_garden - name = "\improper Garden" + name = "\improper Starboard Garden" icon_state = "starboardemb" fake_zlevel = 1 // upperdeck @@ -502,12 +503,12 @@ fake_zlevel = 2 // lowerdeck /area/almayer/living/officer_rnr - name = "\improper Officer's Lounge" + name = "\improper Upper Deck Officer's Lounge" icon_state = "officerrnr" fake_zlevel = 1 // upperdeck /area/almayer/living/officer_study - name = "\improper Officer's Study" + name = "\improper Upper Deck Officer's Study" icon_state = "officerstudy" fake_zlevel = 1 // upperdeck @@ -522,17 +523,17 @@ fake_zlevel = 2 // lowerdeck /area/almayer/living/gym - name = "\improper Gym" + name = "\improper Lower Deck Gym" icon_state = "officerrnr" fake_zlevel = 2 // lowerdeck /area/almayer/living/cafeteria_officer - name = "\improper Officer Cafeteria" + name = "\improper Upper Deck Officer Cafeteria" icon_state = "food" fake_zlevel = 1 // upperdeck /area/almayer/living/offices - name = "\improper Conference Office" + name = "\improper Lower Deck Conference Office" icon_state = "briefing" fake_zlevel = 2 // lowerdeck @@ -560,7 +561,7 @@ fake_zlevel = 1 // upperdeck /area/almayer/living/synthcloset - name = "\improper Synthetic Storage Closet" + name = "\improper Upper Deck Synthetic Storage Closet" icon_state = "livingspace" fake_zlevel = 1 // upperdeck @@ -738,16 +739,16 @@ hijack_evacuation_type = EVACUATION_TYPE_ADDITIVE /area/almayer/lifeboat_pumps/north1 - name = "North West Lifeboat Fuel Pump" + name = "Starboard Fore Lifeboat Fuel Pump" /area/almayer/lifeboat_pumps/north2 - name = "North East Lifeboat Fuel Pump" + name = "Starboard Aft Lifeboat Fuel Pump" /area/almayer/lifeboat_pumps/south1 - name = "South West Lifeboat Fuel Pump" + name = "Port Fore Lifeboat Fuel Pump" /area/almayer/lifeboat_pumps/south2 - name = "South East Lifeboat Fuel Pump" + name = "Port Aft Lifeboat Fuel Pump" /area/almayer/command/lifeboat name = "\improper Lifeboat Docking Port" @@ -760,7 +761,7 @@ flags_area = AREA_NOTUNNEL /area/space/almayer/lifeboat_dock - name = "\improper Lifeboat Docking Port" + name = "\improper Port Lifeboat Docking" icon_state = "lifeboat" fake_zlevel = 1 // upperdeck flags_area = AREA_NOTUNNEL From 148a189066f7156984b2ef8765caee6efe457484 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Wed, 22 Nov 2023 19:39:20 +0000 Subject: [PATCH 163/355] Lesser drones now die upon ghosting (#4978) # About the pull request https://forum.cm-ss13.com/t/ghosted-lesser-drones-should-just-die/4356/10 Lessers now die upon ghosting and are not offered to observers. # Explain why it's good for the game Nobody likes trying to join as xeno or see their position in the queue only to see Lesser Drone (420) Lesser Drone (69) # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: del: Lesser drones die upon ghosting and are not offered to observers. /:cl: --------- Co-authored-by: harryob --- .../mob/living/carbon/xenomorph/castes/lesser_drone.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm b/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm index 48bf0d95ddcf..3eb11d155c74 100644 --- a/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm +++ b/code/modules/mob/living/carbon/xenomorph/castes/lesser_drone.dm @@ -95,3 +95,11 @@ if (PF) PF.flags_pass = PASS_MOB_IS_XENO|PASS_MOB_THRU_XENO PF.flags_can_pass_all = PASS_MOB_IS_XENO|PASS_MOB_THRU_XENO + +/mob/living/carbon/xenomorph/lesser_drone/ghostize(can_reenter_corpse = FALSE, aghosted = FALSE) + . = ..() + if(. && !aghosted) + gib() + +/mob/living/carbon/xenomorph/lesser_drone/handle_ghost_message() + return From b98d6032d5aca3302a8886b88f7b6102fc5f5368 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 21:19:43 +0000 Subject: [PATCH 164/355] Automatic changelog for PR #4978 [ci skip] --- html/changelogs/AutoChangeLog-pr-4978.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4978.yml diff --git a/html/changelogs/AutoChangeLog-pr-4978.yml b/html/changelogs/AutoChangeLog-pr-4978.yml new file mode 100644 index 000000000000..fc04901a02a0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4978.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - rscdel: "Lesser drones die upon ghosting and are not offered to observers." \ No newline at end of file From 81f55a30a3d539ac398d84e8141cb92ed67c196c Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Wed, 22 Nov 2023 20:41:28 +0000 Subject: [PATCH 165/355] Adds explosion handling to experimental sensor tower (#4984) # About the pull request Fixes #4958 Adds explosion handling to sensor tower. # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: add: Explosion handling logic to experimental sensor tower. fix: Explosions no longer delete experimental sensor tower. /:cl: --- .../desert_dam/motion_sensor/sensortower.dm | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/code/modules/desert_dam/motion_sensor/sensortower.dm b/code/modules/desert_dam/motion_sensor/sensortower.dm index 4ef11c32245d..6a718607aaf6 100644 --- a/code/modules/desert_dam/motion_sensor/sensortower.dm +++ b/code/modules/desert_dam/motion_sensor/sensortower.dm @@ -233,6 +233,25 @@ ..() update_icon() +/* Decreases the buildstate of the sensor tower and switches it off if affected by any explosion. +Higher severity explosion will damage the sensor tower more +*/ +/obj/structure/machinery/sensortower/ex_act(severity) + if(buildstate == SENSORTOWER_BUILDSTATE_WRENCH) + return + switch(severity) + if(0 to EXPLOSION_THRESHOLD_LOW) + buildstate += 1 + if(EXPLOSION_THRESHOLD_LOW to EXPLOSION_THRESHOLD_MEDIUM) + buildstate = clamp(buildstate + 2, SENSORTOWER_BUILDSTATE_WORKING, SENSORTOWER_BUILDSTATE_WRENCH) + if(EXPLOSION_THRESHOLD_HIGH to INFINITY) + buildstate = 3 + if(is_on) + is_on = FALSE + cur_tick = 0 + stop_processing() + update_icon() + #undef SENSORTOWER_BUILDSTATE_WORKING #undef SENSORTOWER_BUILDSTATE_BLOWTORCH #undef SENSORTOWER_BUILDSTATE_WIRECUTTERS From 32b992b0a599ae0833552218cdbc53b83f537bab Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 21:36:27 +0000 Subject: [PATCH 166/355] Automatic changelog for PR #4984 [ci skip] --- html/changelogs/AutoChangeLog-pr-4984.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4984.yml diff --git a/html/changelogs/AutoChangeLog-pr-4984.yml b/html/changelogs/AutoChangeLog-pr-4984.yml new file mode 100644 index 000000000000..a2ddcbb933ca --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4984.yml @@ -0,0 +1,5 @@ +author: "Birdtalon" +delete-after: True +changes: + - rscadd: "Explosion handling logic to experimental sensor tower." + - bugfix: "Explosions no longer delete experimental sensor tower." \ No newline at end of file From 123019107d9dce6a5340d2ef7a9d609a7a07f226 Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Wed, 22 Nov 2023 20:42:53 +0000 Subject: [PATCH 167/355] Differentiates pylons in same area when spawning as lesser drone (#4985) # About the pull request Adds a (1) to duplicate named pylons if they reside in the same area when trying to spawn at pylon as lesser drone. Fixes #4424 # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Pylons now differentiated in the input list with a (1) if in the same area. /:cl: --- code/game/gamemodes/cm_initialize.dm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/code/game/gamemodes/cm_initialize.dm b/code/game/gamemodes/cm_initialize.dm index 519ce4ed4f6f..f047c4a5bf57 100644 --- a/code/game/gamemodes/cm_initialize.dm +++ b/code/game/gamemodes/cm_initialize.dm @@ -597,7 +597,14 @@ Additional game mode variables. for(var/obj/effect/alien/resin/special/pylon/cycled_pylon as anything in hive.hive_structures[XENO_STRUCTURE_PYLON]) if(cycled_pylon.lesser_drone_spawns >= 1) - selection_list += "[cycled_pylon.name] at [get_area(cycled_pylon)]" + var/pylon_number = 1 + var/pylon_name = "[cycled_pylon.name] at [get_area(cycled_pylon)]" + //For renaming the pylon if we have duplicates + var/pylon_selection_name = pylon_name + while(pylon_selection_name in selection_list) + pylon_selection_name = "[pylon_name] ([pylon_number])" + pylon_number ++ + selection_list += pylon_selection_name selection_list_structure += cycled_pylon if(!length(selection_list)) From 7667a45fb8dbcf4788c210133db179c4ec12f5a3 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 21:03:59 +0000 Subject: [PATCH 168/355] Automatic changelog for PR #4980 [ci skip] --- html/changelogs/AutoChangeLog-pr-4980.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4980.yml diff --git a/html/changelogs/AutoChangeLog-pr-4980.yml b/html/changelogs/AutoChangeLog-pr-4980.yml new file mode 100644 index 000000000000..67fc216fe995 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4980.yml @@ -0,0 +1,4 @@ +author: "zzzmike" +delete-after: True +changes: + - qol: "Location name standardization. So, North is now Starboard. This is already how it is for everything except pumps." \ No newline at end of file From 643c05d0500e3ec059e1db667dec2f471f1b8505 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 21:49:20 +0000 Subject: [PATCH 169/355] Automatic changelog for PR #4985 [ci skip] --- html/changelogs/AutoChangeLog-pr-4985.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4985.yml diff --git a/html/changelogs/AutoChangeLog-pr-4985.yml b/html/changelogs/AutoChangeLog-pr-4985.yml new file mode 100644 index 000000000000..9d8216e9eb7b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4985.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Pylons now differentiated in the input list with a (1) if in the same area." \ No newline at end of file From 15086ae683f727d9a990e05f8ce9a08e43731207 Mon Sep 17 00:00:00 2001 From: fira Date: Wed, 22 Nov 2023 23:22:30 +0100 Subject: [PATCH 170/355] Allow playing uploaded sounds through the music player w/ Webroot (#4934) # About the pull request Too long have we suffered at the hands of admin auditive abuse. The prophet, spookydonut, once said, "You shouldn't be using this lol". And he was right. Using "Play MIDI sound" both reduces usability for our users, and can cause performance issues by freezing up the game for a while as the data is transfered to these 200 poor CM addicts. So we sought to alienate it with "Play Internet Sound" backed by youtube-dl. Unfortunately, some things are subject to geo blocking or simply not available on Youtube. Thus the regime of terror of Admins continues. This PR brings us one step closer to our goal: it allows to use the now renamed "Play Admin Sound" to (also) upload a sound file to Webroot and have it played through CDN. It also works with simple transport but that mostly defeats the point. Also reduced default volume for new players from 50% to 20%... Don't worry, It's still way more than enough to get them to quit the server, i have mine at 2-10% max # Explain why it's good for the game * Less new player abuse by reducing default volume * More performance by allowing big or custom songs to be backed by CDN * Better UX: People can easily see the song name and more easily stop it * Admins can now hide the name of played songs if they want to. Don't ask me why. # Testing Photographs and Procedure ![image](https://github.com/cmss13-devs/cmss13/assets/604624/4f00c45d-76ca-47e2-860a-2f26d55de2a4) You'll have to believe me on the sound working # Changelog :cl: balance: Default Web Music Player volume is now 20% down from 50%. It was found too effective against new players. admin: "Play Internet Sound" is now "Play Admin Sound" and optionally allow to hide the track name. admin: "Play Admin Sound" can now be used with uploaded tracks, which use CDN delivery and the in-chat music player, granting players more control over them. admin: Removed "Play Midi Sound". /:cl: --- code/__DEFINES/__game.dm | 2 +- code/__DEFINES/sounds.dm | 2 +- code/datums/soundOutput.dm | 5 - code/modules/admin/admin_verbs.dm | 6 +- code/modules/admin/verbs/playsound.dm | 226 ++++++++----------- code/modules/client/preferences.dm | 10 +- code/modules/client/preferences_toggles.dm | 21 +- code/modules/tgui_panel/audio.dm | 7 +- code/modules/tgui_panel/tgui_panel.dm | 7 +- tgui/packages/tgui-panel/settings/reducer.js | 2 +- 10 files changed, 119 insertions(+), 169 deletions(-) diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm index f1424f5560ec..765603df629c 100644 --- a/code/__DEFINES/__game.dm +++ b/code/__DEFINES/__game.dm @@ -103,7 +103,7 @@ block( \ #define SOUND_MIDI (1<<1) #define SOUND_AMBIENCE (1<<2) #define SOUND_LOBBY (1<<3) -#define SOUND_INTERNET (1<<4) +#define SOUND_INTERNET (1<<4) // Unused currently. Kept for default prefs compat only #define SOUND_REBOOT (1<<5) #define SOUND_ADMIN_MEME (1<<6) #define SOUND_ADMIN_ATMOSPHERIC (1<<7) diff --git a/code/__DEFINES/sounds.dm b/code/__DEFINES/sounds.dm index a6bb381100e7..541d95d28189 100644 --- a/code/__DEFINES/sounds.dm +++ b/code/__DEFINES/sounds.dm @@ -27,7 +27,7 @@ #define SOUND_CHANNEL_AMBIENCE 1019 #define SOUND_CHANNEL_WALKMAN 1020 #define SOUND_CHANNEL_SOUNDSCAPE 1021 -#define SOUND_CHANNEL_ADMIN_MIDI 1022 +//#define SOUND_CHANNEL_ADMIN_MIDI 1022 #define SOUND_CHANNEL_LOBBY 1023 #define SOUND_CHANNEL_Z 1024 diff --git a/code/datums/soundOutput.dm b/code/datums/soundOutput.dm index bc5ffd8efcfb..1f4512b28d59 100644 --- a/code/datums/soundOutput.dm +++ b/code/datums/soundOutput.dm @@ -152,11 +152,6 @@ adjust_volume_prefs(VOLUME_AMB, "Set the volume for ambience and soundscapes", 0) soundOutput.update_ambience(null, null, TRUE) -/client/verb/adjust_volume_admin_music() - set name = "Adjust Volume Admin MIDIs" - set category = "Preferences.Sound" - adjust_volume_prefs(VOLUME_ADM, "Set the volume for admin MIDIs", SOUND_CHANNEL_ADMIN_MIDI) - /client/verb/adjust_volume_lobby_music() set name = "Adjust Volume LobbyMusic" set category = "Preferences.Sound" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 5d02917f70ee..207eebd3e409 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -100,10 +100,8 @@ var/list/admin_verbs_ban = list( ) var/list/admin_verbs_sounds = list( - /client/proc/play_web_sound, - /client/proc/play_sound, - /client/proc/stop_web_sound, - /client/proc/stop_sound, + /client/proc/play_admin_sound, + /client/proc/stop_admin_sound, /client/proc/cmd_admin_vox_panel ) diff --git a/code/modules/admin/verbs/playsound.dm b/code/modules/admin/verbs/playsound.dm index 9d622fce501b..0763a0e10795 100644 --- a/code/modules/admin/verbs/playsound.dm +++ b/code/modules/admin/verbs/playsound.dm @@ -1,45 +1,83 @@ -/client/proc/play_web_sound() +/client/proc/play_admin_sound() set category = "Admin.Fun" - set name = "Play Internet Sound" + set name = "Play Admin Sound" if(!check_rights(R_SOUNDS)) return - var/ytdl = CONFIG_GET(string/invoke_youtubedl) - if(!ytdl) - to_chat(src, SPAN_BOLDWARNING("Youtube-dl was not configured, action unavailable"), confidential = TRUE) //Check config.txt for the INVOKE_YOUTUBEDL value + var/sound_mode = tgui_input_list(src, "Play a sound from which source?", "Select Source", list("Web", "Upload")) + if(!sound_mode) return - var/web_sound_input = input("Enter content URL (supported sites only)", "Play Internet Sound via youtube-dl") as text|null - if(!istext(web_sound_input) || !length(web_sound_input)) - return + var/list/data = list() + var/log_title = TRUE + var/web_sound_input + var/asset_name + var/must_send_assets = FALSE + var/announce_title = TRUE + + if(sound_mode == "Web") + var/ytdl = CONFIG_GET(string/invoke_youtubedl) + if(!ytdl) + to_chat(src, SPAN_BOLDWARNING("Youtube-dl was not configured, action unavailable"), confidential = TRUE) //Check config.txt for the INVOKE_YOUTUBEDL value + return - web_sound_input = trim(web_sound_input) + web_sound_input = input("Enter content URL (supported sites only)", "Play Internet Sound via youtube-dl") as text|null + if(!istext(web_sound_input) || !length(web_sound_input)) + return - if(findtext(web_sound_input, ":") && !findtext(web_sound_input, GLOB.is_http_protocol)) - to_chat(src, SPAN_WARNING("Non-http(s) URIs are not allowed.")) - to_chat(src, SPAN_WARNING("For youtube-dl shortcuts like ytsearch: please use the appropriate full url from the website.")) - return + web_sound_input = trim(web_sound_input) - var/web_sound_url = "" - var/list/music_extra_data = list() - var/title + if(findtext(web_sound_input, ":") && !findtext(web_sound_input, GLOB.is_http_protocol)) + to_chat(src, SPAN_WARNING("Non-http(s) URIs are not allowed.")) + to_chat(src, SPAN_WARNING("For youtube-dl shortcuts like ytsearch: please use the appropriate full url from the website.")) + return - var/list/output = world.shelleo("[ytdl] --geo-bypass --format \"bestaudio\[ext=mp3]/best\[ext=mp4]\[height<=360]/bestaudio\[ext=m4a]/bestaudio\[ext=aac]\" --dump-single-json --no-playlist -- \"[shell_url_scrub(web_sound_input)]\"") - var/errorlevel = output[SHELLEO_ERRORLEVEL] - var/stdout = output[SHELLEO_STDOUT] - var/stderr = output[SHELLEO_STDERR] + var/list/output = world.shelleo("[ytdl] --geo-bypass --format \"bestaudio\[ext=mp3]/best\[ext=mp4]\[height<=360]/bestaudio\[ext=m4a]/bestaudio\[ext=aac]\" --dump-single-json --no-playlist -- \"[shell_url_scrub(web_sound_input)]\"") + var/errorlevel = output[SHELLEO_ERRORLEVEL] + var/stdout = output[SHELLEO_STDOUT] + var/stderr = output[SHELLEO_STDERR] - if(errorlevel) - to_chat(src, SPAN_WARNING("Youtube-dl URL retrieval FAILED: [stderr]")) - return + if(errorlevel) + to_chat(src, SPAN_WARNING("Youtube-dl URL retrieval FAILED: [stderr]")) + return - var/list/data = list() - try - data = json_decode(stdout) - catch(var/exception/e) - to_chat(src, SPAN_WARNING("Youtube-dl JSON parsing FAILED: [e]: [stdout]")) - return + try + data = json_decode(stdout) + catch(var/exception/e) + to_chat(src, SPAN_WARNING("Youtube-dl JSON parsing FAILED: [e]: [stdout]")) + return + + else if(sound_mode == "Upload") + var/current_transport = CONFIG_GET(string/asset_transport) + if(!current_transport || current_transport == "simple") + if(tgui_alert(usr, "WARNING: Your server is using simple asset transport. Sounds will have to be sent directly to players, which may freeze the game for long durations. Are you SURE?", "Really play direct sound?", list("Yes", "No")) != "Yes") + return + must_send_assets = TRUE + + var/soundfile = input(usr, "Choose a sound file to play", "Upload Sound") as null|file + if(!soundfile) + return + + var/static/regex/only_extension = regex(@{"^.*\.([a-z0-9]{1,5})$"}, "gi") + var/extension = only_extension.Replace("[soundfile]", "$1") + if(!length(extension)) + to_chat(src, SPAN_WARNING("Invalid filename extension.")) + return + + var/static/playsound_notch = 1 + asset_name = "admin_sound_[playsound_notch++].[extension]" + SSassets.transport.register_asset(asset_name, soundfile) + message_admins("[key_name_admin(src)] uploaded admin sound '[soundfile]' to asset transport.") + + var/static/regex/remove_extension = regex(@{"\.[a-z0-9]+$"}, "gi") + data["title"] = remove_extension.Replace("[soundfile]", "") + data["url"] = SSassets.transport.get_asset_url(asset_name) + web_sound_input = "[soundfile]" + log_title = FALSE + var/title + var/web_sound_url = "" + var/list/music_extra_data = list() if(data["url"]) music_extra_data["link"] = data["url"] music_extra_data["title"] = data["title"] @@ -48,19 +86,28 @@ music_extra_data["start"] = data["start_time"] music_extra_data["end"] = data["end_time"] - if(web_sound_url && !findtext(web_sound_url, GLOB.is_http_protocol)) + if(!must_send_assets && web_sound_url && !findtext(web_sound_url, GLOB.is_http_protocol)) to_chat(src, SPAN_BOLDWARNING("BLOCKED: Content URL not using http(s) protocol"), confidential = TRUE) to_chat(src, SPAN_WARNING("The media provider returned a content URL that isn't using the HTTP or HTTPS protocol"), confidential = TRUE) return + switch(tgui_alert(src, "Show the name of this sound to the players?", "Sound Name", list("Yes","No","Cancel"))) + if("No") + music_extra_data["title"] = "Admin sound" + announce_title = FALSE + if("Cancel") + return + var/list/targets = list() var/list/sound_type_list = list( "Meme" = SOUND_ADMIN_MEME, "Atmospheric" = SOUND_ADMIN_ATMOSPHERIC ) - var/style = tgui_input_list(src, "Who do you want to play this to?", "Select Listeners", list("Globally", "Xenos", "Marines", "Ghosts", "All Inview", "Single Inview")) + + var/style = tgui_input_list(src, "Who do you want to play this to?", "Select Listeners", list("Globally", "Xenos", "Marines", "Ghosts", "All In View Range", "Single Mob")) var/sound_type = tgui_input_list(src, "What kind of sound is this?", "Select Sound Type", sound_type_list) sound_type = sound_type_list[sound_type] + switch(style) if("Globally") targets = GLOB.mob_list @@ -70,30 +117,40 @@ targets = GLOB.human_mob_list + GLOB.dead_mob_list if("Ghosts") targets = GLOB.observer_list + GLOB.dead_mob_list - if("All Inview") - targets = viewers(usr.client.view, src) - if("Single Inview") - var/mob/choice = tgui_input_list(src, "Select the mob to play to:","Select Mob", sortmobs()) + if("All In View Range") + var/list/atom/ranged_atoms = urange(usr.client.view, get_turf(usr)) + for(var/mob/receiver in ranged_atoms) + targets += receiver + if("Single Mob") + var/list/mob/all_mobs = sortmobs() + var/list/mob/all_client_mobs = list() + for(var/mob/mob in all_mobs) + if(mob.client) + all_client_mobs += mob + var/mob/choice = tgui_input_list(src, "Select the mob to play to:","Select Mob", all_client_mobs) if(QDELETED(choice)) return targets.Add(choice) else return - for(var/i in targets) - var/mob/M = i - var/client/client = M?.client - if((client?.prefs.toggles_sound & SOUND_INTERNET) && (client?.prefs.toggles_sound & sound_type)) + for(var/mob/mob as anything in targets) + var/client/client = mob?.client + if((client?.prefs?.toggles_sound & SOUND_MIDI) && (client?.prefs?.toggles_sound & sound_type)) + if(must_send_assets) + SSassets.transport.send_assets(client, asset_name) client?.tgui_panel?.play_music(web_sound_url, music_extra_data) + if(announce_title) + to_chat(client, SPAN_BOLDANNOUNCE("An admin played: [music_extra_data["title"]]"), confidential = TRUE) else client?.tgui_panel?.stop_music() - log_admin("[key_name(src)] played web sound: [web_sound_input] - [title] - [style]") - message_admins("[key_name_admin(src)] played web sound: [web_sound_input] - [title] - [style]") + log_admin("[key_name(src)] played admin sound: [web_sound_input] -[log_title ? " [title] -" : ""] [style]") + message_admins("[key_name_admin(src)] played admin sound: [web_sound_input] -[log_title ? " [title] -" : ""] [style]") -/client/proc/stop_web_sound() +/client/proc/stop_admin_sound() set category = "Admin.Fun" - set name = "Stop Internet Sounds" + set name = "Stop Admin Sounds" if(!check_rights(R_SOUNDS)) return @@ -105,86 +162,3 @@ log_admin("[key_name(src)] stopped the currently playing web sounds.") message_admins("[key_name_admin(src)] stopped the currently playing web sounds.") -/client/proc/play_sound(S as sound) - set category = "Admin.Fun" - set name = "Play Midi Sound" - if(!check_rights(R_SOUNDS)) - return - - var/freq = 1 - var/vol = tgui_input_number(src, "What volume would you like the sound to play at?", "Volume", 25, 100, 1) - if(!vol) - return - vol = clamp(vol, 1, 100) - - var/sound/admin_sound = new() - admin_sound.file = S - admin_sound.priority = 250 - admin_sound.channel = SOUND_CHANNEL_ADMIN_MIDI - admin_sound.frequency = freq - admin_sound.wait = 1 - admin_sound.repeat = FALSE - admin_sound.status = SOUND_STREAM - admin_sound.volume = vol - - var/showtitle = FALSE - var/res = alert(src, "Show the title of this song to the players?",, "Yes","No", "Cancel") - switch(res) - if("Yes") - showtitle = TRUE - if("Cancel") - return - - var/list/targets = list() - var/list/sound_type_list = list( - "Meme" = SOUND_ADMIN_MEME, - "Atmospheric" = SOUND_ADMIN_ATMOSPHERIC - ) - var/style = tgui_input_list(src, "Who do you want to play this to?", "Select Listeners", list("Globally", "Xenos", "Marines", "Ghosts", "All Inview", "Single Inview")) - var/sound_type = tgui_input_list(src, "What kind of sound is this?", "Select Sound Type", sound_type_list) - sound_type = sound_type_list[sound_type] - switch(style) - if("Globally") - targets = GLOB.mob_list - if("Xenos") - targets = GLOB.xeno_mob_list + GLOB.dead_mob_list - if("Marines") - targets = GLOB.human_mob_list + GLOB.dead_mob_list - if("Ghosts") - targets = GLOB.observer_list + GLOB.dead_mob_list - if("All Inview") - targets = viewers(usr.client.view, src) - if("Single Inview") - var/mob/choice = tgui_input_list(src, "Select the mob to play to:","Select Mob", sortmobs()) - if(QDELETED(choice)) - return - targets.Add(choice) - else - return - - for(var/items in targets) - var/mob/Mob = items - var/client/client = Mob?.client - if((client?.prefs.toggles_sound & SOUND_INTERNET) && (client?.prefs.toggles_sound & sound_type)) - admin_sound.volume = vol * client?.admin_music_volume - SEND_SOUND(Mob, admin_sound) - admin_sound.volume = vol - if(showtitle) - to_chat(client, SPAN_BOLDANNOUNCE("An admin played: [S]"), confidential = TRUE) - - log_admin("[key_name(src)] played midi sound [S] - [style]") - message_admins("[key_name_admin(src)] played midi sound [S] - [style]") - -/client/proc/stop_sound() - set category = "Admin.Fun" - set name = "Stop Midi Sounds" - - if(!check_rights(R_SOUNDS)) - return - - for(var/mob/M in GLOB.player_list) - if(M.client) - SEND_SOUND(M, sound(null)) - - log_admin("[key_name(src)] stopped midi sounds.") - message_admins("[key_name_admin(src)] stopped midi sounds.") diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 04b82628e3c6..ad12cb99b50e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -586,8 +586,7 @@ var/const/MAX_SAVE_SLOTS = 10 dat += "Tooltips: [tooltips ? "Enabled" : "Disabled"]
" dat += "tgui Window Mode: [(tgui_fancy) ? "Fancy (default)" : "Compatible (slower)"]
" dat += "tgui Window Placement: [(tgui_lock) ? "Primary monitor" : "Free (default)"]
" - dat += "Play Admin Midis: [(toggles_sound & SOUND_MIDI) ? "Yes" : "No"]
" - dat += "Play Admin Internet Sounds: [(toggles_sound & SOUND_INTERNET) ? "Yes" : "No"]
" + dat += "Play Admin Sounds: [(toggles_sound & SOUND_MIDI) ? "Yes" : "No"]
" dat += "Toggle Meme or Atmospheric Sounds: Toggle
" dat += "Set Eye Blur Type: Set
" dat += "Play Lobby Music: [(toggles_sound & SOUND_LOBBY) ? "Yes" : "No"]
" @@ -1807,11 +1806,10 @@ var/const/MAX_SAVE_SLOTS = 10 if("rand_body") be_random_body = !be_random_body - if("hear_midis") + if("hear_admin_sounds") toggles_sound ^= SOUND_MIDI - - if("hear_internet") - toggles_sound ^= SOUND_INTERNET + if(!(toggles_sound & SOUND_MIDI)) + user?.client?.tgui_panel?.stop_music() if("lobby_music") toggles_sound ^= SOUND_LOBBY diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 6f9026a437dd..080f071823f8 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -48,25 +48,10 @@ to_chat(src, "You will [(prefs.toggles_sound & SOUND_REBOOT) ? "now" : "no longer"] hear server reboot sounds.") /client/verb/togglemidis() - set name = "Silence Current Midi" + set name = "Silence Current Admin Sound" set category = "Preferences.Sound" - set desc = "Toggles hearing sounds uploaded by admins" - // prefs.toggles_sound ^= SOUND_MIDI // Toggle on/off - // prefs.save_preferences() // We won't save the change - it'll be a temporary switch instead of permanent, but they can still make it permanent in character setup. - if(prefs.toggles_sound & SOUND_MIDI) // Not using && midi_playing here - since we can't tell how long an admin midi is, the user should always be able to turn it off at any time. - to_chat(src, SPAN_BOLDNOTICE("The currently playing midi has been silenced.")) - var/sound/break_sound = sound(null, repeat = 0, wait = 0, channel = SOUND_CHANNEL_ADMIN_MIDI) - break_sound.priority = 250 - src << break_sound //breaks the client's sound output on SOUND_CHANNEL_ADMIN_MIDI - if(src.mob.client.midi_silenced) return - if(midi_playing) - total_silenced++ - message_admins("A player has silenced the currently playing midi. Total: [total_silenced] player(s).", 1) - src.mob.client.midi_silenced = 1 - spawn(30 SECONDS) // Prevents message_admins() spam. Should match with the midi_playing_timer spawn() in playsound.dm - src.mob.client.midi_silenced = 0 - else - to_chat(src, SPAN_BOLDNOTICE("You have 'Play Admin Midis' disabled in your Character Setup, so this verb is useless to you.")) + set desc = "Stops the current admin sound. You can also use the STOP icon in the player above tgchat." + tgui_panel?.stop_music() /client/verb/togglechat() set name = "Toggle Abovehead Chat" diff --git a/code/modules/tgui_panel/audio.dm b/code/modules/tgui_panel/audio.dm index 680696159943..d66421df5348 100644 --- a/code/modules/tgui_panel/audio.dm +++ b/code/modules/tgui_panel/audio.dm @@ -3,8 +3,6 @@ * SPDX-License-Identifier: MIT */ -/// Admin music volume, from 0 to 1. -/client/var/admin_music_volume = 1 /** * public @@ -22,8 +20,9 @@ /datum/tgui_panel/proc/play_music(url, extra_data) if(!is_ready()) return - if(!findtext(url, GLOB.is_http_protocol)) - return + // Commented to allow playing via simple asset transport. Just check when calling. +// if(!findtext(url, GLOB.is_http_protocol)) +// return var/list/payload = list() if(length(extra_data) > 0) for(var/key in extra_data) diff --git a/code/modules/tgui_panel/tgui_panel.dm b/code/modules/tgui_panel/tgui_panel.dm index 9fb8b02b0196..f33f190d80e0 100644 --- a/code/modules/tgui_panel/tgui_panel.dm +++ b/code/modules/tgui_panel/tgui_panel.dm @@ -85,9 +85,10 @@ ), )) return TRUE - if(type == "audio/setAdminMusicVolume") - client.admin_music_volume = payload["volume"] - return TRUE +// Deprecated due to removal of old sound play commands +// if(type == "audio/setAdminMusicVolume") +// client.admin_music_volume = payload["volume"] +// return TRUE if(type == "telemetry") analyze_telemetry(payload) return TRUE diff --git a/tgui/packages/tgui-panel/settings/reducer.js b/tgui/packages/tgui-panel/settings/reducer.js index 42d799fd6597..0c93a5b94d4e 100644 --- a/tgui/packages/tgui-panel/settings/reducer.js +++ b/tgui/packages/tgui-panel/settings/reducer.js @@ -16,7 +16,7 @@ const initialState = { fontFamily: FONTS[0], lineHeight: 1.2, theme: 'light', - adminMusicVolume: 0.5, + adminMusicVolume: 0.2, // Keep these two state vars for compatibility with other servers highlightText: '', highlightColor: '#ffdd44', From 7947f362f80b6c553586ef551bc0a482159b0461 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 22:32:48 +0000 Subject: [PATCH 171/355] Automatic changelog for PR #4934 [ci skip] --- html/changelogs/AutoChangeLog-pr-4934.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4934.yml diff --git a/html/changelogs/AutoChangeLog-pr-4934.yml b/html/changelogs/AutoChangeLog-pr-4934.yml new file mode 100644 index 000000000000..f3b1e179d8cb --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4934.yml @@ -0,0 +1,7 @@ +author: "fira" +delete-after: True +changes: + - balance: "Default Web Music Player volume is now 20% down from 50%. It was found too effective against new players." + - admin: "\"Play Internet Sound\" is now \"Play Admin Sound\" and optionally allow to hide the track name." + - admin: "\"Play Admin Sound\" can now be used with uploaded tracks, which use CDN delivery and the in-chat music player, granting players more control over them." + - admin: "Removed \"Play Midi Sound\"." \ No newline at end of file From 170f3cd8759141ba4ec245975895531c66b37e0d Mon Sep 17 00:00:00 2001 From: QuickLode <63271983+QuickLode@users.noreply.github.com> Date: Wed, 22 Nov 2023 15:49:09 -0800 Subject: [PATCH 172/355] Synthetic internal powercell (#4559) # About the pull request This PR should tackle two things: 1. Synths shouldn't lose blood 2. Synths shouldn't feel woozy (RP) revives #3589 from ghostsheet # Explain why it's good for the game Synthetics should not be feeling woozy. They also shouldn't be going blind from bloodloss. # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags. https://cdn.discordapp.com/attachments/490668342357786645/1157856898834497536/image.png?ex=651a21c4&is=6518d044&hm=813abcc8be5fd02367499e24651c97b7f840d8bcbc557364c534f1c0a61f25f5& https://cdn.discordapp.com/attachments/490668342357786645/1157856899132305529/image.png?ex=651a21c4&is=6518d044&hm=d9fb14dcaa5eb9fa8ad1280636a5f8f188a72e0e5045b892fc29192046acd139&
# Changelog :cl: add: Damage to Synthetic's internal causes debuffs, eventual powercell failure.(death) fix: Synthetic's should no longer lose blood. code: moves blood proc to human.dm from blood.dm with above changes. /:cl: --------- Co-authored-by: harryob --- code/modules/mob/living/blood.dm | 78 +----------------- .../mob/living/carbon/human/species/human.dm | 82 +++++++++++++++++++ 2 files changed, 84 insertions(+), 76 deletions(-) diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm index ab3ce823c68e..dea179e6ad48 100644 --- a/code/modules/mob/living/blood.dm +++ b/code/modules/mob/living/blood.dm @@ -2,80 +2,6 @@ BLOOD SYSTEM */ -/mob/living/proc/handle_blood() - return - -// Takes care blood loss and regeneration -/mob/living/carbon/human/handle_blood() - if(NO_BLOOD in species.flags) - return - - if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood. - //Blood regeneration if there is some space - if(blood_volume < max_blood && nutrition >= 1) - blood_volume += 0.1 // regenerate blood VERY slowly - nutrition -= 0.25 - else if(blood_volume > max_blood) - blood_volume -= 0.1 // The reverse in case we've gotten too much blood in our body - if(blood_volume > limit_blood) - blood_volume = limit_blood // This should never happen, but lets make sure - - var/b_volume = blood_volume - - // Damaged heart virtually reduces the blood volume, as the blood isn't - // being pumped properly anymore. - if(species && species.has_organ["heart"]) - var/datum/internal_organ/heart/heart = internal_organs_by_name["heart"] - if(!heart) - b_volume = 0 - else if(chem_effect_flags & CHEM_EFFECT_ORGAN_STASIS) - b_volume *= 1 - else if(heart.damage >= heart.organ_status >= ORGAN_BRUISED) - b_volume *= Clamp(100 - (2 * heart.damage), 30, 100) / 100 - - //Effects of bloodloss - if(b_volume <= BLOOD_VOLUME_SAFE) - /// The blood volume turned into a %, with BLOOD_VOLUME_NORMAL being 100% - var/blood_percentage = b_volume / (BLOOD_VOLUME_NORMAL / 100) - /// How much oxyloss will there be from the next time blood processes - var/additional_oxyloss = (100 - blood_percentage) / 5 - /// The limit of the oxyloss gained, ignoring oxyloss from the switch statement - var/maximum_oxyloss = Clamp((100 - blood_percentage) / 2, oxyloss, 100) - if(oxyloss < maximum_oxyloss) - oxyloss += round(max(additional_oxyloss, 0)) - - switch(b_volume) - if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) - if(prob(1)) - var/word = pick("dizzy","woozy","faint") - to_chat(src, SPAN_DANGER("You feel [word].")) - if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) - if(eye_blurry < 50) - AdjustEyeBlur(6) - oxyloss += 3 - if(prob(15)) - apply_effect(rand(1,3), PARALYZE) - var/word = pick("dizzy","woozy","faint") - to_chat(src, SPAN_DANGER("You feel very [word].")) - if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD) - if(eye_blurry < 50) - AdjustEyeBlur(6) - oxyloss += 8 - toxloss += 3 - if(prob(15)) - apply_effect(rand(1,3), PARALYZE) - var/word = pick("dizzy","woozy","faint") - to_chat(src, SPAN_DANGER("You feel extremely [word].")) - if(0 to BLOOD_VOLUME_SURVIVE) - death(create_cause_data("blood loss")) - -// Xeno blood regeneration -/mob/living/carbon/xenomorph/handle_blood() - if(stat != DEAD) //Only living xenos regenerate blood - //Blood regeneration if there is some space - if(blood_volume < max_blood) - blood_volume = min(blood_volume + 1, max_blood) - //Makes a blood drop, leaking amt units of blood from the mob /mob/living/carbon/proc/drip(amt) if(!blood_volume) @@ -91,7 +17,7 @@ /mob/living/carbon/human/drip(amt) if(in_stasis) // stasis now stops bloodloss return - if(NO_BLOOD in species.flags) + if((species.flags & NO_BLOOD) && !(species.flags & IS_SYNTHETIC)) return ..() @@ -272,7 +198,7 @@ return "xenoblood" /mob/living/carbon/human/get_blood_id() - if((NO_BLOOD in species.flags)) + if(species.flags & NO_BLOOD) return if(special_blood) return special_blood diff --git a/code/modules/mob/living/carbon/human/species/human.dm b/code/modules/mob/living/carbon/human/species/human.dm index 6a59e97af867..add78365a350 100644 --- a/code/modules/mob/living/carbon/human/species/human.dm +++ b/code/modules/mob/living/carbon/human/species/human.dm @@ -1,3 +1,85 @@ +// handles all blood related problems for humans and synthetics, moved from blood.dm +/mob/living/proc/handle_blood() + return + +// Takes care blood loss and regeneration +/mob/living/carbon/human/handle_blood() + if((species.flags & NO_BLOOD) && !(species.flags & IS_SYNTHETIC)) + return + + if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood. + //Blood regeneration if there is some space + if(blood_volume < max_blood && nutrition >= 1) + blood_volume += 0.1 // regenerate blood VERY slowly + nutrition -= 0.25 + else if(blood_volume > max_blood) + blood_volume -= 0.1 // The reverse in case we've gotten too much blood in our body + if(blood_volume > limit_blood) + blood_volume = limit_blood // This should never happen, but lets make sure + + var/b_volume = blood_volume + + // Damaged heart virtually reduces the blood volume, as the blood isn't + // being pumped properly anymore. + if(species && species.has_organ["heart"]) + var/datum/internal_organ/heart/heart = internal_organs_by_name["heart"] + if(!heart) + b_volume = 0 + else if(chem_effect_flags & CHEM_EFFECT_ORGAN_STASIS) + b_volume *= 1 + else if(heart.damage >= heart.organ_status >= ORGAN_BRUISED) + b_volume *= Clamp(100 - (2 * heart.damage), 30, 100) / 100 + + //Effects of bloodloss + if(b_volume <= BLOOD_VOLUME_SAFE) + /// The blood volume turned into a %, with BLOOD_VOLUME_NORMAL being 100% + var/blood_percentage = b_volume / (BLOOD_VOLUME_NORMAL / 100) + /// How much oxyloss will there be from the next time blood processes + var/additional_oxyloss = (100 - blood_percentage) / 5 + /// The limit of the oxyloss gained, ignoring oxyloss from the switch statement + var/maximum_oxyloss = Clamp((100 - blood_percentage) / 2, oxyloss, 100) + if(oxyloss < maximum_oxyloss) + oxyloss += round(max(additional_oxyloss, 0)) + + switch(b_volume) + if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE) + if(species.flags & IS_SYNTHETIC) + if(prob(1)) + to_chat(src, SPAN_DANGER("Subdermal damage detected in critical region. Operational impact minimal. Diagnosis queued for maintenance cycle.")) + else + if(prob(1)) + var/word = pick("dizzy","woozy","faint") + to_chat(src, SPAN_DANGER("You feel [word].")) + if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY) + if(species.flags & IS_SYNTHETIC) + if(prob(3)) + apply_effect(rand(1, 2), WEAKEN) + to_chat(src, SPAN_DANGER("Internal power cell fault detected.\nSeek nearest recharging station.")) + else + if(eye_blurry < 50) + AdjustEyeBlur(6) + oxyloss += 3 + if(prob(15)) + apply_effect(rand(1,3), PARALYZE) + var/word = pick("dizzy","woozy","faint") + to_chat(src, SPAN_DANGER("You feel very [word].")) + if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD) + if(species.flags & IS_SYNTHETIC) + if(prob(5)) + apply_effect(rand(1, 2), PARALYZE) + to_chat(src, SPAN_DANGER("Critical power cell failure detected.\nSeek recharging station immediately.")) + else + if(eye_blurry < 50) + AdjustEyeBlur(6) + oxyloss += 8 + toxloss += 3 + if(prob(15)) + apply_effect(rand(1, 3), PARALYZE) + var/word = pick("dizzy", "woozy", "faint") + to_chat(src, SPAN_DANGER("You feel extremely [word].")) + if(0 to BLOOD_VOLUME_SURVIVE) + death(create_cause_data(species.flags & IS_SYNTHETIC ? "power failure" : "blood loss")) + /datum/species/human group = SPECIES_HUMAN name = "Human" From 446f6f1e81478d1e684f6dd1e827acfbd0a71a73 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Wed, 22 Nov 2023 23:57:18 +0000 Subject: [PATCH 173/355] Automatic changelog for PR #4559 [ci skip] --- html/changelogs/AutoChangeLog-pr-4559.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-4559.yml diff --git a/html/changelogs/AutoChangeLog-pr-4559.yml b/html/changelogs/AutoChangeLog-pr-4559.yml new file mode 100644 index 000000000000..4bc42904d0fa --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-4559.yml @@ -0,0 +1,6 @@ +author: "QuickLode" +delete-after: True +changes: + - rscadd: "Damage to Synthetic's internal causes debuffs, eventual powercell failure.(death)" + - bugfix: "Synthetic's should no longer lose blood." + - code_imp: "moves blood proc to human.dm from blood.dm with above changes." \ No newline at end of file From 236a44319009607869c05698d3215a3a1ebe9d40 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Thu, 23 Nov 2023 01:11:08 +0000 Subject: [PATCH 174/355] Automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-4559.yml | 6 --- html/changelogs/AutoChangeLog-pr-4827.yml | 4 -- html/changelogs/AutoChangeLog-pr-4934.yml | 7 --- html/changelogs/AutoChangeLog-pr-4944.yml | 4 -- html/changelogs/AutoChangeLog-pr-4953.yml | 4 -- html/changelogs/AutoChangeLog-pr-4978.yml | 4 -- html/changelogs/AutoChangeLog-pr-4980.yml | 4 -- html/changelogs/AutoChangeLog-pr-4981.yml | 4 -- html/changelogs/AutoChangeLog-pr-4984.yml | 5 --- html/changelogs/AutoChangeLog-pr-4985.yml | 4 -- html/changelogs/AutoChangeLog-pr-4987.yml | 4 -- html/changelogs/AutoChangeLog-pr-4988.yml | 4 -- html/changelogs/AutoChangeLog-pr-4989.yml | 4 -- html/changelogs/AutoChangeLog-pr-4990.yml | 6 --- html/changelogs/AutoChangeLog-pr-4994.yml | 4 -- html/changelogs/archive/2023-11.yml | 52 +++++++++++++++++++++++ 16 files changed, 52 insertions(+), 68 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-4559.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4827.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4934.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4944.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4953.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4978.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4980.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4981.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4984.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4985.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4987.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4988.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4989.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4990.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-4994.yml diff --git a/html/changelogs/AutoChangeLog-pr-4559.yml b/html/changelogs/AutoChangeLog-pr-4559.yml deleted file mode 100644 index 4bc42904d0fa..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4559.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "QuickLode" -delete-after: True -changes: - - rscadd: "Damage to Synthetic's internal causes debuffs, eventual powercell failure.(death)" - - bugfix: "Synthetic's should no longer lose blood." - - code_imp: "moves blood proc to human.dm from blood.dm with above changes." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4827.yml b/html/changelogs/AutoChangeLog-pr-4827.yml deleted file mode 100644 index b95ce40e4607..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4827.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "LC4492" -delete-after: True -changes: - - maptweak: "Changes to the CO office: The bathroom now faces into the CO's bedroom, and not to his main office. Victory cabinet have been moved to the Officer's mess because of logical issues. Extra-detail to the office, including an exclusive stamp, table flags and others. The safe is now inside the CO's bedroom, and not in his office. The energy APC is now inside the CO's bedroom, and not in his office. Jones finally have a BED again, or something like that. Other minor changes to objects, such the addition of a cane, a box of glasses for serving guests, etc." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4934.yml b/html/changelogs/AutoChangeLog-pr-4934.yml deleted file mode 100644 index f3b1e179d8cb..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4934.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "fira" -delete-after: True -changes: - - balance: "Default Web Music Player volume is now 20% down from 50%. It was found too effective against new players." - - admin: "\"Play Internet Sound\" is now \"Play Admin Sound\" and optionally allow to hide the track name." - - admin: "\"Play Admin Sound\" can now be used with uploaded tracks, which use CDN delivery and the in-chat music player, granting players more control over them." - - admin: "Removed \"Play Midi Sound\"." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4944.yml b/html/changelogs/AutoChangeLog-pr-4944.yml deleted file mode 100644 index 0c8af20f86c8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4944.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - maptweak: "Secure Storage on LV-624 has been broken open, making it far less defendable but easier to access." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4953.yml b/html/changelogs/AutoChangeLog-pr-4953.yml deleted file mode 100644 index 4dd8c48e8206..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4953.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Tweaked larva queue spawning: Now spawns as many larva as possible each cycle rather than one." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4978.yml b/html/changelogs/AutoChangeLog-pr-4978.yml deleted file mode 100644 index fc04901a02a0..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4978.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - rscdel: "Lesser drones die upon ghosting and are not offered to observers." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4980.yml b/html/changelogs/AutoChangeLog-pr-4980.yml deleted file mode 100644 index 67fc216fe995..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4980.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "zzzmike" -delete-after: True -changes: - - qol: "Location name standardization. So, North is now Starboard. This is already how it is for everything except pumps." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4981.yml b/html/changelogs/AutoChangeLog-pr-4981.yml deleted file mode 100644 index 6edc5e60a381..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4981.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ihatethisengine" -delete-after: True -changes: - - balance: "Oppressor no longer can abduct big xenos." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4984.yml b/html/changelogs/AutoChangeLog-pr-4984.yml deleted file mode 100644 index a2ddcbb933ca..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4984.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - rscadd: "Explosion handling logic to experimental sensor tower." - - bugfix: "Explosions no longer delete experimental sensor tower." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4985.yml b/html/changelogs/AutoChangeLog-pr-4985.yml deleted file mode 100644 index 9d8216e9eb7b..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4985.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - bugfix: "Pylons now differentiated in the input list with a (1) if in the same area." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4987.yml b/html/changelogs/AutoChangeLog-pr-4987.yml deleted file mode 100644 index ef48b7dd6e62..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4987.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SortieEnMer" -delete-after: True -changes: - - qol: "Match Unlock Time in Nuke Timelock Message with Nuke Techtree Description" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4988.yml b/html/changelogs/AutoChangeLog-pr-4988.yml deleted file mode 100644 index ba67e425bd74..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4988.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed buried larva spawn grace period at start of round if there is a queue: Now join as xeno when there's a queue will only prevent buried larva spawns if there is no core." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4989.yml b/html/changelogs/AutoChangeLog-pr-4989.yml deleted file mode 100644 index 062eaf000f63..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4989.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "zzzmike" -delete-after: True -changes: - - qol: "ARES hijack announcement specifies that pods will not crash at 100% fuel" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4990.yml b/html/changelogs/AutoChangeLog-pr-4990.yml deleted file mode 100644 index 8f54dcade5d8..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4990.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Resin doors will now close on dead mobs that are merged with weeds (currently only human)." - - bugfix: "Resin doors will now restart their closing timer each open making the delay to close consistent." - - code_imp: "Added a TRAIT_MERGED_WITH_WEEDS that is set whenever the mob is currently merged with weeds." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4994.yml b/html/changelogs/AutoChangeLog-pr-4994.yml deleted file mode 100644 index 2ace9428aaef..000000000000 --- a/html/changelogs/AutoChangeLog-pr-4994.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "The Thunderdome floor is now explosion-proof." \ No newline at end of file diff --git a/html/changelogs/archive/2023-11.yml b/html/changelogs/archive/2023-11.yml index 66eaccb86d87..89f61d356258 100644 --- a/html/changelogs/archive/2023-11.yml +++ b/html/changelogs/archive/2023-11.yml @@ -279,3 +279,55 @@ game hislittlecuzingames: - rscadd: Launch Announcement Alarm for dropships to notify ground forces of departure. +2023-11-23: + Birdtalon: + - rscdel: Lesser drones die upon ghosting and are not offered to observers. + - rscadd: Explosion handling logic to experimental sensor tower. + - bugfix: Explosions no longer delete experimental sensor tower. + - bugfix: Pylons now differentiated in the input list with a (1) if in the same + area. + Drathek: + - bugfix: Resin doors will now close on dead mobs that are merged with weeds (currently + only human). + - bugfix: Resin doors will now restart their closing timer each open making the + delay to close consistent. + - code_imp: Added a TRAIT_MERGED_WITH_WEEDS that is set whenever the mob is currently + merged with weeds. + - bugfix: 'Fixed buried larva spawn grace period at start of round if there is a + queue: Now join as xeno when there''s a queue will only prevent buried larva + spawns if there is no core.' + - bugfix: 'Tweaked larva queue spawning: Now spawns as many larva as possible each + cycle rather than one.' + LC4492: + - maptweak: 'Changes to the CO office: The bathroom now faces into the CO''s bedroom, + and not to his main office. Victory cabinet have been moved to the Officer''s + mess because of logical issues. Extra-detail to the office, including an exclusive + stamp, table flags and others. The safe is now inside the CO''s bedroom, and + not in his office. The energy APC is now inside the CO''s bedroom, and not in + his office. Jones finally have a BED again, or something like that. Other minor + changes to objects, such the addition of a cane, a box of glasses for serving + guests, etc.' + QuickLode: + - rscadd: Damage to Synthetic's internal causes debuffs, eventual powercell failure.(death) + - bugfix: Synthetic's should no longer lose blood. + - code_imp: moves blood proc to human.dm from blood.dm with above changes. + SortieEnMer: + - qol: Match Unlock Time in Nuke Timelock Message with Nuke Techtree Description + Steelpoint: + - maptweak: Secure Storage on LV-624 has been broken open, making it far less defendable + but easier to access. + fira: + - bugfix: The Thunderdome floor is now explosion-proof. + - balance: Default Web Music Player volume is now 20% down from 50%. It was found + too effective against new players. + - admin: '"Play Internet Sound" is now "Play Admin Sound" and optionally allow to + hide the track name.' + - admin: '"Play Admin Sound" can now be used with uploaded tracks, which use CDN + delivery and the in-chat music player, granting players more control over them.' + - admin: Removed "Play Midi Sound". + ihatethisengine: + - balance: Oppressor no longer can abduct big xenos. + zzzmike: + - qol: ARES hijack announcement specifies that pods will not crash at 100% fuel + - qol: Location name standardization. So, North is now Starboard. This is already + how it is for everything except pumps. From ceaec32965be4fee449b32811819798a9b7467f9 Mon Sep 17 00:00:00 2001 From: SabreML <57483089+SabreML@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:13:31 +0000 Subject: [PATCH 175/355] More readable colour for the 'Maintainer' section in staffwho (#5010) # About the pull request Changes the colour of the Maintainer section in the staffwho interface from '`blue`' (`#0000FF`) to '`dodgerblue`' (`#1E90FF`). # Explain why it's good for the game It varies slightly between my monitors, but on both of them it's very hard to make out what the text actually says because of the bad contrast between its colour and the background. # Testing Photographs and Procedure
Screenshots **Before:** ![before](https://github.com/cmss13-devs/cmss13/assets/57483089/56843789-b05d-4f35-8323-bf5fdb5c60ca) **After:** ![after](https://github.com/cmss13-devs/cmss13/assets/57483089/1b65994a-6856-4060-b1ee-c0955fb0e5b4)
*(See also: [Before](https://webaim.org/resources/contrastchecker/?fcolor=0000FF&bcolor=272727) vs [After](https://webaim.org/resources/contrastchecker/?fcolor=1E90FF&bcolor=272727) using WebAIM's contrast checker.)* # Changelog :cl: ui: Tweaked the colour of the 'Maintainer' category in staffwho. /:cl: --- code/game/verbs/who.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/verbs/who.dm b/code/game/verbs/who.dm index 8a249d297cbe..faa857f8518f 100644 --- a/code/game/verbs/who.dm +++ b/code/game/verbs/who.dm @@ -160,7 +160,7 @@ if(CONFIG_GET(flag/show_manager)) LAZYSET(mappings, "Management", R_PERMISSIONS) if(CONFIG_GET(flag/show_devs)) - LAZYSET(mappings, "Maintainers", R_PROFILER) + LAZYSET(mappings, "Maintainers", R_PROFILER) LAZYSET(mappings, "Admins", R_ADMIN) if(CONFIG_GET(flag/show_mods)) LAZYSET(mappings, "Moderators", R_MOD) From 3ddbc741b988c4d8b3d5ebbae75516c3c2ce8c14 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:21:23 +0000 Subject: [PATCH 176/355] Automatic changelog for PR #5010 [ci skip] --- html/changelogs/AutoChangeLog-pr-5010.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5010.yml diff --git a/html/changelogs/AutoChangeLog-pr-5010.yml b/html/changelogs/AutoChangeLog-pr-5010.yml new file mode 100644 index 000000000000..7533b06d42a5 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5010.yml @@ -0,0 +1,4 @@ +author: "SabreML" +delete-after: True +changes: + - ui: "Tweaked the colour of the 'Maintainer' category in staffwho." \ No newline at end of file From 2b3cf3f6d2c4e04692934b231367b31ffcf668cf Mon Sep 17 00:00:00 2001 From: Birdtalon Date: Fri, 24 Nov 2023 10:13:46 +0000 Subject: [PATCH 177/355] Fixes runtime with fire extinguisher cabinets on lifeboats (#5009) # About the pull request Fixes #3998 Fire extinguisher cabinets now new() a fire extinguisher properly in `Intialize()` # Explain why it's good for the game # Testing Photographs and Procedure
Screenshots & Videos Put screenshots and videos here with an empty line between the screenshots and the `
` tags.
# Changelog :cl: fix: Lifeboats fire extinguisher runtime. /:cl: --- code/game/objects/structures/extinguisher.dm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 7b54f0447fae..e4ee4a1b662b 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -5,13 +5,15 @@ icon_state = "extinguisher" anchored = TRUE density = FALSE - var/obj/item/tool/extinguisher/has_extinguisher = new/obj/item/tool/extinguisher + var/obj/item/tool/extinguisher/has_extinguisher var/opened = 0 var/base_icon /obj/structure/extinguisher_cabinet/Initialize() . = ..() base_icon = initial(icon_state) + has_extinguisher = new /obj/item/tool/extinguisher() + has_extinguisher.forceMove(src) /obj/structure/extinguisher_cabinet/lifeboat name = "extinguisher cabinet" @@ -21,15 +23,15 @@ /obj/structure/extinguisher_cabinet/alt icon_state = "extinguisher_alt" -/obj/structure/extinguisher_cabinet/attackby(obj/item/O, mob/user) +/obj/structure/extinguisher_cabinet/attackby(obj/item/item, mob/user) if(isrobot(user)) return - if(istype(O, /obj/item/tool/extinguisher)) + if(istype(item, /obj/item/tool/extinguisher)) if(!has_extinguisher && opened) user.drop_held_item() - contents += O - has_extinguisher = O - to_chat(user, SPAN_NOTICE("You place [O] in [src].")) + item.forceMove(src) + has_extinguisher = item + to_chat(user, SPAN_NOTICE("You place [item] in [src].")) else opened = !opened else @@ -45,7 +47,7 @@ user.put_in_hands(has_extinguisher) to_chat(user, SPAN_NOTICE("You take [has_extinguisher] from [src].")) has_extinguisher = null - opened = 1 + opened = TRUE else opened = !opened update_icon() From 5bf403306a31795d9c866a3caac9de7f55f08160 Mon Sep 17 00:00:00 2001 From: cm13-github <128137806+cm13-github@users.noreply.github.com> Date: Fri, 24 Nov 2023 10:35:23 +0000 Subject: [PATCH 178/355] Automatic changelog for PR #5009 [ci skip] --- html/changelogs/AutoChangeLog-pr-5009.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-5009.yml diff --git a/html/changelogs/AutoChangeLog-pr-5009.yml b/html/changelogs/AutoChangeLog-pr-5009.yml new file mode 100644 index 000000000000..094bc7ccfee3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-5009.yml @@ -0,0 +1,4 @@ +author: "Birdtalon" +delete-after: True +changes: + - bugfix: "Lifeboats fire extinguisher runtime." \ No newline at end of file From e5e18a550ac97a6638e102688b9cf530a9c5e87f Mon Sep 17 00:00:00 2001 From: ihatethisengine <115417687+ihatethisengine@users.noreply.github.com> Date: Fri, 24 Nov 2023 13:13:55 +0300 Subject: [PATCH 179/355] Lockdown actually closes doors on DS (#5015) # About the pull request Lockdown actually closes doors on DS. # Explain why it's good for the game It used to be the case before the gui rework. I think. Anyway DP should be able to control doors, hunting for the moment when all doors are closed to lock them is extremely not fun. # Testing Photographs and Procedure
:)
# Changelog :cl: ihatethisengine add: Locking down dropship's doors closes them before locking. /:cl: --- code/game/machinery/door_control.dm | 2 +- tgui/packages/tgui/interfaces/DropshipFlightControl.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 8b73588f1d0b..5d6c66309d48 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -64,7 +64,7 @@ if(is_mainship_level(z)) // on the almayer return - shuttle.control_doors("lock", "all", force=FALSE) + shuttle.control_doors("force-lock", "all", force=FALSE) /obj/structure/machinery/door_control/proc/handle_door() for(var/obj/structure/machinery/door/airlock/D in range(range)) diff --git a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx index bbb7fea96d2c..4c1c463e65dd 100644 --- a/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx +++ b/tgui/packages/tgui/interfaces/DropshipFlightControl.tsx @@ -45,7 +45,7 @@ const DropshipDoorControl = (_, context) => { disabled={disable_door_controls} onClick={() => act('door-control', { - interaction: 'lock', + interaction: 'force-lock', location: 'all', }) } @@ -81,7 +81,7 @@ const DropshipDoorControl = (_, context) => {

fT$Zg+5xclA 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