From f79d84b766eac0fc8314436db2ad9126340a405a Mon Sep 17 00:00:00 2001 From: Roxy <75404941+TealSeer@users.noreply.github.com> Date: Mon, 3 Feb 2025 12:59:59 -0600 Subject: [PATCH 001/120] Port cyborg inducer fix (#3035) ## About The Pull Request Port https://github.com/tgstation/tgstation/pull/87953 ## Why It's Good For The Game Cyborg inducer doesn't work right now ## Proof Of Testing I just closed the game but I swear it works Co-authored-by: thegrb93 --- code/game/objects/items/inducer.dm | 17 ++++++++++------- code/game/objects/items/robot/robot_upgrades.dm | 3 +++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm index 0f66cd4b6d1..ea942c4f663 100644 --- a/code/game/objects/items/inducer.dm +++ b/code/game/objects/items/inducer.dm @@ -61,8 +61,9 @@ /obj/item/inducer/examine(mob/living/user) . = ..() - if(!QDELETED(powerdevice)) - . += span_notice("Its display shows: [display_energy(powerdevice.charge)].") + var/obj/item/stock_parts/power_store/our_cell = get_cell(src, user) + if(!QDELETED(our_cell)) + . += span_notice("Its display shows: [display_energy(our_cell.charge)].") if(opened) . += span_notice("The cell can be removed with an empty hand.") . += span_notice("Plasma sheets can be used to recharge the cell.") @@ -146,11 +147,13 @@ to_chat(user, span_warning("You don't have the dexterity to use [src]!")) return ITEM_INTERACT_FAILURE - if(QDELETED(powerdevice)) + var/obj/item/stock_parts/power_store/our_cell = get_cell(src, user) + + if(QDELETED(our_cell)) balloon_alert(user, "no cell installed!") return ITEM_INTERACT_FAILURE - if(!powerdevice.charge) + if(!our_cell.charge) balloon_alert(user, "no charge!") return ITEM_INTERACT_FAILURE @@ -173,13 +176,13 @@ break //transfer of charge - var/transferred = min(powerdevice.charge, target_cell.used_charge(), (target_cell.rating_base * target_cell.rating * power_transfer_multiplier)) + var/transferred = min(our_cell.charge, target_cell.used_charge(), (target_cell.rating_base * target_cell.rating * power_transfer_multiplier)) if(!transferred) break - powerdevice.use(target_cell.give(transferred)) + our_cell.use(target_cell.give(transferred)) //update all appearances - powerdevice.update_appearance() + our_cell.update_appearance() target_cell.update_appearance() interacting_with.update_appearance() diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm index 5b4207f352c..1f15c8af590 100644 --- a/code/game/objects/items/robot/robot_upgrades.dm +++ b/code/game/objects/items/robot/robot_upgrades.dm @@ -668,6 +668,9 @@ /obj/item/inducer/cyborg/screwdriver_act(mob/living/user, obj/item/tool) return NONE +/obj/item/inducer/cyborg/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + return ITEM_INTERACT_FAILURE + /obj/item/borg/upgrade/pinpointer name = "medical cyborg crew pinpointer" desc = "A crew pinpointer module for the medical cyborg. Permits remote access to the crew monitor." From f0743a421b6fba941a2ca2a5562cf5dfe555c88f Mon Sep 17 00:00:00 2001 From: Arturlang <24881678+Arturlang@users.noreply.github.com> Date: Mon, 3 Feb 2025 21:19:00 +0200 Subject: [PATCH 002/120] caps laser eye blur at 20 seconds (#2922) ## About The Pull Request caps laser eye blur at 20 seconds ## Why It's Good For The Game there is no cap and we have guns that shoot VERY FAST ## Proof Of Testing I tested it, trust me. ## Changelog :cl: balance: Eye blur from lasers is capped at maximum of 20 seconds. /:cl: --- code/modules/mob/living/damage_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/damage_procs.dm b/code/modules/mob/living/damage_procs.dm index f49b8e21951..bb83a920c2a 100644 --- a/code/modules/mob/living/damage_procs.dm +++ b/code/modules/mob/living/damage_procs.dm @@ -247,7 +247,7 @@ if(drowsy) adjust_drowsiness(drowsy) if(eyeblur) - adjust_eye_blur(eyeblur) + adjust_eye_blur_up_to(eyeblur, 30 SECONDS) // BUBBER CHANGE, CAPS EYEBLUR if(jitter && !check_stun_immunity(CANSTUN)) adjust_jitter(jitter) if(slur) From 210f2f7c7dc2518d149cb866312aafb67bb0f763 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Feb 2025 20:19:25 +0100 Subject: [PATCH 003/120] Automatic changelog for PR #2922 [ci skip] --- html/changelogs/AutoChangeLog-pr-2922.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2922.yml diff --git a/html/changelogs/AutoChangeLog-pr-2922.yml b/html/changelogs/AutoChangeLog-pr-2922.yml new file mode 100644 index 00000000000..fc5cfd74aa9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2922.yml @@ -0,0 +1,4 @@ +author: "Arturlang" +delete-after: True +changes: + - balance: "Eye blur from lasers is capped at maximum of 20 seconds." \ No newline at end of file From 7f916d3b1e27d635acbc3072f0ece7d9d71293ea Mon Sep 17 00:00:00 2001 From: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:01:40 +0000 Subject: [PATCH 004/120] Xenoarcheology and Triage pods (#2907) ## About The Pull Request This PR aims to add two new pods along side adding two long existing pods to departmental orders. The two new pods, both 3x3 deployables; One contains; a stasis bed, operating equipment for medical triage during dangerous situations. The xenoarcheology pod is available one; carrying a suite of tools for xenoarcheology and useful supplies for your expeditions. I also applied a small fix to the large medical shelter, which actually makes the robotic repair medkit actually have supplies, I'm shocked no-one told me after this long! ## Why It's Good For The Game Valued at 1,500cr the triage pod is also available on departmental orders, a useful thing to keep for breaches, fires and blob/xeno breakouts. The xenoarcheology pod is very useful; affordable (400cr) for scientists and a reliable way of getting started. Most people didn't even notice the medical and chemistry pods even existed; access on departmental orders means parameds, chemists and doctors who wish to operate on the planet can get what they want. ## Proof Of Testing
Screenshots/Videos Xenoarch: ![image](https://github.com/user-attachments/assets/6e68e4f2-5246-4ac9-b9fb-13662957ea89) Triage: ![image](https://github.com/user-attachments/assets/9031060b-315f-49d5-ba8a-bc9166f15396)
## Changelog :cl: add: Added two new pods; Xenoarch and triage fix: fixed the robotic repair kit in the large medical pod from being empty. /:cl: --- _maps/bubber/pods/shelter_4.dmm | 2 +- _maps/bubber/pods/shelter_triage.dmm | 65 ++++++++++++++ _maps/bubber/pods/shelterxenoarch.dmm | 64 ++++++++++++++ .../modules/mining/equipment/survival_pod.dm | 85 ++++++++++++++++++- 4 files changed, 213 insertions(+), 3 deletions(-) create mode 100644 _maps/bubber/pods/shelter_triage.dmm create mode 100644 _maps/bubber/pods/shelterxenoarch.dmm diff --git a/_maps/bubber/pods/shelter_4.dmm b/_maps/bubber/pods/shelter_4.dmm index 8f1ce3449c3..2fd1bc6b51f 100644 --- a/_maps/bubber/pods/shelter_4.dmm +++ b/_maps/bubber/pods/shelter_4.dmm @@ -32,7 +32,7 @@ /obj/structure/table/reinforced/plastitaniumglass, /obj/item/storage/box/syringes, /obj/item/storage/medkit/regular, -/obj/item/storage/medkit/robotic_repair, +/obj/item/storage/medkit/robotic_repair/stocked, /obj/item/storage/medkit/toxin, /obj/item/storage/medkit/o2, /obj/item/storage/medkit/brute, diff --git a/_maps/bubber/pods/shelter_triage.dmm b/_maps/bubber/pods/shelter_triage.dmm new file mode 100644 index 00000000000..1bf0f215699 --- /dev/null +++ b/_maps/bubber/pods/shelter_triage.dmm @@ -0,0 +1,65 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/light/floor, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"l" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/structure/table/optable, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"w" = ( +/obj/structure/window/reinforced/survival_pod, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/item/surgery_tray/full/deployed, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"x" = ( +/obj/structure/window/reinforced/survival_pod, +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/machinery/defibrillator_mount/mobile, +/obj/item/defibrillator/loaded, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"H" = ( +/obj/structure/window/reinforced/survival_pod, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"L" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/machinery/stasis, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"M" = ( +/obj/structure/fans/tiny, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"R" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/machinery/computer/operating, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"U" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/turf/open/floor/pod/light, +/area/misc/survivalpod) + +(1,1,1) = {" +R +l +w +"} +(2,1,1) = {" +U +a +H +"} +(3,1,1) = {" +L +M +x +"} diff --git a/_maps/bubber/pods/shelterxenoarch.dmm b/_maps/bubber/pods/shelterxenoarch.dmm new file mode 100644 index 00000000000..cb75afc647c --- /dev/null +++ b/_maps/bubber/pods/shelterxenoarch.dmm @@ -0,0 +1,64 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/item/clothing/suit/hooded/wintercoat/science, +/obj/item/gps/science, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"c" = ( +/obj/machinery/door/window/survival_pod/left/directional/south, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"e" = ( +/obj/machinery/door/window/survival_pod/left/directional/west, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"k" = ( +/obj/machinery/light/floor, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"v" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/east, +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/clothing/mask/breath, +/obj/item/pickaxe/drill, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"F" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/structure/closet/xenoarch, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"G" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/south, +/obj/structure/window/reinforced/survival_pod/spawner/directional/west, +/obj/machinery/xenoarch/researcher, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"T" = ( +/obj/machinery/door/window/survival_pod/left/directional/north, +/turf/open/floor/pod/light, +/area/misc/survivalpod) +"W" = ( +/obj/machinery/door/window/survival_pod/left/directional/east, +/turf/open/floor/pod/light, +/area/misc/survivalpod) + +(1,1,1) = {" +F +e +G +"} +(2,1,1) = {" +T +k +c +"} +(3,1,1) = {" +v +W +a +"} diff --git a/modular_zubbers/code/modules/mining/equipment/survival_pod.dm b/modular_zubbers/code/modules/mining/equipment/survival_pod.dm index b448b5ea595..9ee2c0fc211 100644 --- a/modular_zubbers/code/modules/mining/equipment/survival_pod.dm +++ b/modular_zubbers/code/modules/mining/equipment/survival_pod.dm @@ -54,6 +54,26 @@ item_type = /obj/item/survivalcapsule/chemistry cost = PAYCHECK_COMMAND * 20 +/datum/supply_pack/medical/medpod + name = "Medical Trauma Pod" + crate_name = "medical pod crate" + desc = "A bluespace capsule that deploys a fairly effective medical treatment pod!" + access = ACCESS_MEDICAL + cost = CARGO_CRATE_VALUE * 20 + contains = list( + /obj/item/survivalcapsule/medical, + ) + +/datum/supply_pack/medical/chempod + name = "Chemical Refinement Pod" + crate_name = "chemistry pod crate" + desc = "A bluespace capsule that deploys a functional chemistry refining area, useful for harvesting those helpful geysers." + access = ACCESS_MEDICAL + cost = CARGO_CRATE_VALUE * 10 + contains = list( + /obj/item/survivalcapsule/chemistry, + ) + /*****************************Botany Pods - Home is where the green is...********************************/ /obj/item/survivalcapsule/botany name = "botany control capsule" @@ -95,6 +115,8 @@ whitelisted_turfs = typecacheof(/turf/closed/mineral) banned_objects = typecacheof(/obj/structure/stone_tile) +/*********************************************Odd Pods**************************************************/ + /obj/item/survivalcapsule/fan name = "airlock fan capsule" desc = "A bluespace pod, containing a deployable fan, to keep the pressure in." @@ -176,7 +198,7 @@ banned_objects = typecacheof(/obj/structure/stone_tile) /obj/item/survivalcapsule/threebythree - name = "deployable small emtpy capsule" + name = "deployable small empty capsule" desc = "A bluespace pod, containing an empty 3x3 capsule." icon_state = "capsule" icon = 'icons/obj/mining.dmi' @@ -196,7 +218,7 @@ banned_objects = typecacheof(/obj/structure/stone_tile) /obj/item/survivalcapsule/sixbysix - name = "deployable large emtpy capsule" + name = "deployable large empty capsule" desc = "A bluespace pod, containing an empty 6x6 capsule." icon_state = "capsule" icon = 'icons/obj/mining.dmi' @@ -246,3 +268,62 @@ /datum/armament_entry/company_import/nri_surplus/misc/cabin item_type = /obj/item/survivalcapsule/cabin cost = PAYCHECK_COMMAND * 2 + + +/************************* MED-SCI Pods***************************/ + +/***xenoarcheology***/ +/obj/item/survivalcapsule/xenoarchpod + name = "deployable xenoarcheology capsule" + desc = "A bluespace pod, containing an 3x3 xenoarcheology capsule." + icon_state = "capsule" + icon = 'icons/obj/mining.dmi' + w_class = WEIGHT_CLASS_TINY + template_id = "shelter_xenoarch" + used = FALSE + +/datum/map_template/shelter/xenoarch + name = "xenoarch capsule deployer" + shelter_id = "shelter_xenoarch" + description = "A contained small xenoarch capsule." + mappath = "_maps/bubber/pods/shelterxenoarch.dmm" + +/datum/map_template/shelter/xenoarch/New() + . = ..() + whitelisted_turfs = typecacheof(/turf/closed/mineral) + banned_objects = typecacheof(/obj/structure/stone_tile) + +/datum/supply_pack/science/xenoarchpod + name = "Xenoarcheology Pod" + desc = "A bluespace pod, containing an 3x3 xenoarcheology capsule." + cost = CARGO_CRATE_VALUE * 4 + contains = list(/obj/item/survivalcapsule/xenoarchpod) + crate_type = /obj/structure/closet/crate/nakamura + +/***triage***/ + +/obj/item/survivalcapsule/triage + name = "deployable triage capsule" + desc = "A bluespace pod, containing an 3x3 emergency triage." + icon_state = "capsule" + icon = 'icons/obj/mining.dmi' + w_class = WEIGHT_CLASS_TINY + template_id = "shelter_triage" + used = FALSE + +/datum/map_template/shelter/triage + name = "triage capsule deployer" + shelter_id = "shelter_triage" + description = "A contained small triage capsule." + mappath = "_maps/bubber/pods/shelter_triage.dmm" + +/datum/map_template/shelter/triage/New() + . = ..() + whitelisted_turfs = typecacheof(/turf/closed/mineral) + banned_objects = typecacheof(/obj/structure/stone_tile) + +/datum/supply_pack/medical/triagepod + name = "Triage Pod" + desc = "A bluespace pod, containing an 3x3 triage suite." + cost = CARGO_CRATE_VALUE * 15 + contains = list(/obj/item/survivalcapsule/triage) From 2a8bc7c35e08952880c8a3506f63752af004b634 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Feb 2025 23:02:17 +0100 Subject: [PATCH 005/120] Automatic changelog for PR #2907 [ci skip] --- html/changelogs/AutoChangeLog-pr-2907.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2907.yml diff --git a/html/changelogs/AutoChangeLog-pr-2907.yml b/html/changelogs/AutoChangeLog-pr-2907.yml new file mode 100644 index 00000000000..67271fd8fce --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2907.yml @@ -0,0 +1,5 @@ +author: "xXPawnStarrXx" +delete-after: True +changes: + - rscadd: "Added two new pods; Xenoarch and triage" + - bugfix: "fixed the robotic repair kit in the large medical pod from being empty." \ No newline at end of file From f6bc0d861bef10cba43daea9c3cabed9356e69d7 Mon Sep 17 00:00:00 2001 From: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:11:28 +0000 Subject: [PATCH 006/120] Orefruit harvesting producing sheets (#2800) ## About The Pull Request This PR makes it so that orefruit when harvested produces cores as sheets, instead of a grown item. I've added stack sprites too, so you can get more of a visual update on stacks. This doesn't affect the tedium of peeling them, you still have to do that by hand, this just makes it so that the resulting cores can be loaded into protolathes, machines and silos. ## Why It's Good For The Game It was tedious for many to produce a recycler layout or autolathe to actually make use of the ores. ## Proof Of Testing
Screenshots/Videos ![image](https://github.com/user-attachments/assets/81eb40fe-1ad5-43c3-87dc-e94ab5ce042a) ![image](https://github.com/user-attachments/assets/bc88f7bd-5481-4595-9226-f3ca33162021)
## Changelog :cl: qol: made orefruits produce sheets as cores, instead of lame objects, letting them be inserted into a silo. /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- .../modules/hydroponics/code/grown/rocks.dm | 176 ++++++++++-------- .../modules/hydroponics/icons/harvest.dmi | Bin 3939 -> 7071 bytes 2 files changed, 100 insertions(+), 76 deletions(-) diff --git a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm b/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm index a666c778286..8ec39c17887 100644 --- a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm +++ b/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm @@ -121,17 +121,19 @@ desc = "A mutated variant of rockfruits; rough, course and now available everywhere. Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/sandfruitcore + trash_type = /obj/item/stack/sheet/mineral/sandfruitcore foodtypes = FRUIT distill_reagent = /datum/reagent/silicon -/obj/item/grown/sandfruitcore - seed = /obj/item/seeds/sandfruit +/obj/item/stack/sheet/mineral/sandfruitcore name = "sandfruit core" desc = "A very fragile sandfruit core, literally composed of dozens of particles of sand... don't store in pockets." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' + singular_name = "sandfruit core" icon_state = "sandfruit" - custom_materials = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/sandfruitcore + max_amount = 10 + mats_per_unit = list(/datum/material/glass=SHEET_MATERIAL_AMOUNT*0.2) //Uranium - First on 'energy' line @@ -157,17 +159,19 @@ desc = "A mutated variant of rockfruits; you might not want to hold it for long... also not actually a berry! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/uraniberrycore + trash_type = /obj/item/stack/sheet/mineral/uraniberrycore foodtypes = FRUIT distill_reagent = /datum/reagent/uranium -/obj/item/grown/uraniberrycore - seed = /obj/item/seeds/uraniberry +/obj/item/stack/sheet/mineral/uraniberrycore name = "uraniberry core" + singular_name = "uraniberry core" desc = "A very dense uraniberry core, don't store in pockets, unless you want extra limbs." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "uraniberry" - custom_materials = list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/uraniberrycore + max_amount = 10 + mats_per_unit =list(/datum/material/uranium=SHEET_MATERIAL_AMOUNT*0.2) //Plasma - Second stage of 'energy' line. @@ -193,17 +197,19 @@ desc = "A mutated variant of rockfruits; Incredibly volatile... also not actually a plum! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/plasmaplumcore + trash_type = /obj/item/stack/sheet/mineral/plasmaplumcore foodtypes = FRUIT distill_reagent = /datum/reagent/toxin/plasma -/obj/item/grown/plasmaplumcore - seed = /obj/item/seeds/plasmaplum +/obj/item/stack/sheet/mineral/plasmaplumcore name = "plasmaplum core" + singular_name = "plasmaplum core" desc = "A very dense plasmaplum core, store in a cold, fire and spark free place." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "plasmaplum" - custom_materials = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/plasmaplumcore + max_amount = 10 + mats_per_unit = list(/datum/material/plasma=SHEET_MATERIAL_AMOUNT*0.2) //Bluespace - ending of 'energy' line. @@ -229,29 +235,31 @@ desc = "A mutated variant of rockfruits; Incredibly fragile... also not actually a drupe! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/bluegemdrupecore + trash_type = /obj/item/stack/sheet/mineral/bluegemdrupecore foodtypes = FRUIT distill_reagent = /datum/reagent/bluespace -/obj/item/grown/bluegemdrupecore - seed = /obj/item/seeds/bluegemdrupe +/obj/item/stack/sheet/mineral/bluegemdrupecore name = "bluegem drupe core" + singular_name = "bluegem drupe core" desc = "A very dense bluegem drupe core, dropping may incur teleportation in rare cases." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "bluegemdrupe" - custom_materials = list(/datum/material/bluespace=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/bluegemdrupecore + max_amount = 10 + mats_per_unit = list(/datum/material/bluespace=SHEET_MATERIAL_AMOUNT*0.2) -//Silver - Aubergine (Get it? AU, silver?!) - First on 'precious' line +//Silver - Agbergine (Get it? AG, silver?!) - First on 'precious' line -/obj/item/seeds/aubergine - name = "au-bergine seed pack" +/obj/item/seeds/agbergine + name = "ag-bergine seed pack" desc = "These seeds grow to produce fruits, with cores of solid silver." icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' - icon_state = "seed-aubergine" + icon_state = "seed-agbergine" species = "ore" - plantname = "aubergine" - product = /obj/item/food/grown/shell/aubergine - mutatelist = list(/obj/item/seeds/agbergine) + plantname = "agbergine" + product = /obj/item/food/grown/shell/agbergine + mutatelist = list(/obj/item/seeds/aubergine) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/silver = 0.1) growthstages = 2 @@ -259,34 +267,36 @@ growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/aubergine - seed = /obj/item/seeds/aubergine - name = "au-bergine" - desc = "Au-bergine, get it AU? It's hilarious and valuable! Just peel it for a core." +/obj/item/food/grown/shell/agbergine + seed = /obj/item/seeds/agbergine + name = "ag-bergine" + desc = "Ag-bergine, get it AG? It's hilarious and valuable! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/auberginecore + trash_type = /obj/item/stack/sheet/mineral/agberginecore foodtypes = FRUIT distill_reagent = /datum/reagent/silver -/obj/item/grown/auberginecore - seed = /obj/item/seeds/aubergine - name = "au-bergine core" - desc = "A dense aubergine core of solid, sterling silver." +/obj/item/stack/sheet/mineral/agberginecore + name = "ag-bergine core" + singular_name = "ag-bergine core" + desc = "A dense agbergine core of solid, sterling silver." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' - icon_state = "aubergine" - custom_materials = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT*0.2) + icon_state = "agbergine" + merge_type = /obj/item/stack/sheet/mineral/agberginecore + max_amount = 10 + mats_per_unit = list(/datum/material/silver=SHEET_MATERIAL_AMOUNT*0.2) -//Gold - Agbergine (Pretty sure you can work this one out) - Second stage of 'precious' line. +//Gold - Au-bergine (Pretty sure you can work this one out) - Second stage of 'precious' line. -/obj/item/seeds/agbergine - name = "ag-bergine seed pack" +/obj/item/seeds/aubergine + name = "au-bergine seed pack" desc = "These seeds grow to golden cored fruits." icon = 'modular_zubbers/code/modules/hydroponics/icons/seeds.dmi' - icon_state = "seed-agbergine" + icon_state = "seed-aubergine" species = "ore" - plantname = "agbergine" - product = /obj/item/food/grown/shell/agbergine + plantname = "aubergine" + product = /obj/item/food/grown/shell/aubergine mutatelist = list(/obj/item/seeds/dimantis) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, /datum/reagent/gold = 0.1) @@ -295,23 +305,25 @@ growing_icon = 'modular_zubbers/code/modules/hydroponics/icons/growing_fruits.dmi' genes = list(/datum/plant_gene/trait/chem_cooling) -/obj/item/food/grown/shell/agbergine - seed = /obj/item/seeds/agbergine - name = "agbergine" - desc = "An agbergine; AG? Get it?!... My talents are wasted here! Just peel it for a core." +/obj/item/food/grown/shell/aubergine + seed = /obj/item/seeds/aubergine + name = "aubergine" + desc = "An aubergine; AU? Get it?!... My talents are wasted here! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/agberginecore + trash_type = /obj/item/stack/sheet/mineral/auberginecore foodtypes = FRUIT distill_reagent = /datum/reagent/gold -/obj/item/grown/agberginecore - seed = /obj/item/seeds/agbergine - name = "ag-bergine core" - desc = "A very dense ag-bergine core, solid 24 karat goodness." +/obj/item/stack/sheet/mineral/auberginecore + name = "au-bergine core" + singular_name = "au-bergine core" + desc = "A very dense au-bergine core, solid 24 karat goodness." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' - icon_state = "agbergine" - custom_materials = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT*0.2) + icon_state = "aubergine" + merge_type = /obj/item/stack/sheet/mineral/auberginecore + max_amount = 10 + mats_per_unit = list(/datum/material/gold=SHEET_MATERIAL_AMOUNT*0.2) //Dimantis - ending of 'precious' line. @@ -337,17 +349,19 @@ desc = "A fleshy fruid with a diamond core, Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/dimantiscore + trash_type = /obj/item/stack/sheet/mineral/dimantiscore foodtypes = FRUIT distill_reagent = /datum/reagent/carbon -/obj/item/grown/dimantiscore - seed = /obj/item/seeds/dimantis +/obj/item/stack/sheet/mineral/dimantiscore name = "dimantis core" + singular_name = "dimantis core" desc = "A very dense dimantis core, the way to a woman's heart, it could probably get through her ribcage..." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "dimantis" - custom_materials = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/dimantiscore + max_amount = 10 + mats_per_unit = list(/datum/material/diamond=SHEET_MATERIAL_AMOUNT*0.2) //Iron - Ferrotubers - First on 'metal' line @@ -373,17 +387,19 @@ desc = "Ferrotubers, fleshy shells with iron fillings! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/ferrotubercore + trash_type = /obj/item/stack/sheet/mineral/ferrotubercore foodtypes = FRUIT distill_reagent = /datum/reagent/iron -/obj/item/grown/ferrotubercore - seed = /obj/item/seeds/ferrotuber +/obj/item/stack/sheet/mineral/ferrotubercore name = "ferrotuber core" + singular_name = "ferrotuber core" desc = "A dense ferrotuber core of solid iron, slightly magnetic." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "ferrotuber" - custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/ferrotubercore + max_amount = 10 + mats_per_unit = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*0.2) //Titanium - titanituber - Second stage of 'metal' line. @@ -408,16 +424,18 @@ desc = "soft fruits with incredibly sturdy cores, watch your teeth! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/titanitubercore + trash_type = /obj/item/stack/sheet/mineral/titanitubercore foodtypes = FRUIT -/obj/item/grown/titanitubercore - seed = /obj/item/seeds/titanituber +/obj/item/stack/sheet/mineral/titanitubercore name = "titanituber core" + singular_name = "titanituber core" desc = "A very dense titanituber core, let's hope you didn't bite it!" icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "titanituber" - custom_materials = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/titanitubercore + max_amount = 10 + mats_per_unit = list(/datum/material/titanium=SHEET_MATERIAL_AMOUNT*0.2) //Adamantine - First on 'misc' line @@ -442,16 +460,18 @@ desc = "Adam's apples, The garden Eden's bounty! Just peel it for a core." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/adamapplecore + trash_type = /obj/item/stack/sheet/mineral/adamapplecore foodtypes = FRUIT -/obj/item/grown/adamapplecore - seed = /obj/item/seeds/adamapple +/obj/item/stack/sheet/mineral/adamapplecore name = "adam's apple core" + singular_name = "adam's apple core" desc = "A dense adam's apple core of solid adamantine." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "adamapple" - custom_materials = list(/datum/material/adamantine=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/adamapplecore + max_amount = 10 + mats_per_unit = list(/datum/material/adamantine=SHEET_MATERIAL_AMOUNT*0.2) //Runite - Second stage of 'misc' line. @@ -476,16 +496,18 @@ desc = "A fruit, usually grown in wild places where men would kill each other for gain." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/runescoopercore + trash_type = /obj/item/stack/sheet/mineral/runescoopercore foodtypes = FRUIT -/obj/item/grown/runescoopercore - seed = /obj/item/seeds/runescooper - name = "ag-bergine core" +/obj/item/stack/sheet/mineral/runescoopercore + name = "runescooper core" + singular_name = "runescooper core" desc = "A very dense runite core, a few more of these and you might be able to make a scimitar to defeat your foes..." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "runescooper" - custom_materials = list(/datum/material/runite=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/runescoopercore + max_amount = 10 + mats_per_unit = list(/datum/material/runite=SHEET_MATERIAL_AMOUNT*0.2) //bananiumberry - ending of 'misc' line. @@ -511,14 +533,16 @@ desc = "holy honkmother... This fruit got a core of bananium, Just peel it!" icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "orefruit" - trash_type = /obj/item/grown/bananiumberrycore + trash_type = /obj/item/stack/sheet/mineral/bananiumberrycore foodtypes = FRUIT distill_reagent = /datum/reagent/consumable/nutriment/soup/clown_tears -/obj/item/grown/bananiumberrycore - seed = /obj/item/seeds/bananiumberry +/obj/item/stack/sheet/mineral/bananiumberrycore name = "bananiumberry core" + singular_name = "bananiumberry core" desc = "A very dense bananium core, the way to a clown's heart, it could probably get through their ribcage..." icon = 'modular_zubbers/code/modules/hydroponics/icons/harvest.dmi' icon_state = "bananiumberry" - custom_materials = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT*0.2) + merge_type = /obj/item/stack/sheet/mineral/bananiumberrycore + max_amount = 10 + mats_per_unit = list(/datum/material/bananium=SHEET_MATERIAL_AMOUNT*0.2) diff --git a/modular_zubbers/code/modules/hydroponics/icons/harvest.dmi b/modular_zubbers/code/modules/hydroponics/icons/harvest.dmi index 9effeac5a383823b6e805e9b87467ee525eb970a..695cf60ce799e882f4879eed7f47ea6fd6987d99 100644 GIT binary patch literal 7071 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 literal 3939 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 S9X$Lsvl;1|!K?IcMg0$JJg`du From fafd7c42b5452538f3fa2875bbf28c7a6bef26c3 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Feb 2025 23:11:52 +0100 Subject: [PATCH 007/120] Automatic changelog for PR #2800 [ci skip] --- html/changelogs/AutoChangeLog-pr-2800.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2800.yml diff --git a/html/changelogs/AutoChangeLog-pr-2800.yml b/html/changelogs/AutoChangeLog-pr-2800.yml new file mode 100644 index 00000000000..13d8860747c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2800.yml @@ -0,0 +1,4 @@ +author: "xXPawnStarrXx" +delete-after: True +changes: + - qol: "made orefruits produce sheets as cores, instead of lame objects, letting them be inserted into a silo." \ No newline at end of file From afed1a552eef33c8333e63643c6c961dcfc2c7f8 Mon Sep 17 00:00:00 2001 From: Sebastionate <51052308+Sebastionate@users.noreply.github.com> Date: Mon, 3 Feb 2025 16:18:09 -0600 Subject: [PATCH 008/120] Lizard Gas Atmos Fix/I.D transferred to Modular File (#3049) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request The Lizard Gas Ghost roles use Omni pressure tanks, these are ass in game and don't have layers properly coded in. Also the loop is currently not hooked up. Also the Liquid plasma tank network has been changed to have an exterior store-house, because immediately upon people trying to fix atmos- sparks from the RPD caught the tank on fire and torched the entire backroom, maintenance room, and manager's office in a roaring plasma/trit fire 😔 p.s the Lizard Gas I.D was added to a non-modular file on accident, this PR switches it to modular. The mapsize was not altered to accommodate these changes overall and it remains a 25x25 Ghost Role ruin (as it's always been.) TL;DR: -Atmos Pipes are colored Red and Blue for Scrubbers and Air Supply, as God intended -Exterior Scrubber added to suck Oxygen out of the air and store it in the network/a connected Atmos Oxygen Cannister -Mapping Error corrected, interior vent in the central room was set to layer 4, and not hooked up. -Exterior storage closet added for liquid plasma supply following ridiculous flammability INSIDE of the structure (risks torching the ENTIRE gas station because of a single spark.) -Moves Lizard Gas I.D `item` to Modular folder, is currently (and unnecessarily) in Non-Modular folder without being noted. No bueno. -Grants access to alter their own air alarm -Additional Air Scrubber and Vent added to Maintenance backroom -Additional Air Scrubber and Vent added to Bathroom -Moves Oxygen Atmos can inside instead of outback, pretty sure the heat of Lavaland damages it/causes it to leak. Edit: -Edited the Note that formerly mentioned the omni pressure tanks, as manually fixing the atmos is no longer required as they have been removed! -Added Connector port for giant fucking plasma gas tank outside. Formerly was only for looks, now can actually inject more plasma into the tank (no one ever will probably but it makes more sense than having it just, not hooked up to anything) -Actually connected plasma tank to Plasma connectors of the gas station. They weren't. For some reason. ## Why It's Good For The Game Overall it fixes a blatant mapping error and prevents a Ghost role from being scorched/burned out so easily. Pretty sure I don't have to elaborate on the modular part ## Proof Of Testing Tested Locally/It's a very minor map edit. I.D still functions the same, it's only a movement of the code to a modular folder. No new Run-Time Errors.
Screenshots/Videos ![atmospr1](https://github.com/user-attachments/assets/b1d7649b-12ed-4a07-9c41-c74785ca5b2a) ![image](https://github.com/user-attachments/assets/43710ecd-c13d-4722-98aa-d1015f6b7e98) p.s the fluid ducting as been moved to connect horizontally instead of vertically, instead of as defined in the pictures.
--- .../icemoon_surface_gas_bubber.dmm | 304 ++++++++++-------- .../lavaland_surface_gas_bubber.dmm | 283 ++++++++-------- code/game/objects/items/cards_ids.dm | 7 - .../code/game/objects/items/cards_ids.dm | 7 + 4 files changed, 315 insertions(+), 286 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm index 3f3970b62b9..e1be5253587 100644 --- a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm +++ b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm @@ -1,6 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ac" = ( /obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -22,18 +23,21 @@ }, /area/ruin/powered/lizard_gas) "ap" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, +/obj/machinery/door/airlock/external/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "lizardgas_lavaland_entrance" + }, +/obj/structure/fans/tiny, /obj/machinery/duct, -/turf/open/floor/iron{ +/turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "bn" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/noticeboard/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -75,7 +79,6 @@ /obj/effect/mapping_helpers/apc/cell_10k, /obj/effect/mapping_helpers/apc/unlocked, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/flashlight{ pixel_x = 4; pixel_y = 6 @@ -254,6 +257,15 @@ /obj/structure/fence/corner, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/unexplored) +"gC" = ( +/obj/structure/reagent_dispensers/plumbed/storage{ + dir = 8; + reagent_id = /datum/reagent/toxin/plasma; + name = "plasma storage tank"; + tank_volume = 2500 + }, +/turf/open/floor/plating/icemoon, +/area/ruin/powered/lizard_gas) "gE" = ( /obj/structure/cable, /obj/structure/railing, @@ -278,7 +290,6 @@ }, /obj/structure/cable, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -337,29 +348,29 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "hV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/turf/closed/wall{ - baseturfs = /turf/open/floor/plating/lavaland_baseturf +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/turf/open/floor/iron{ + baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "ia" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/turf/open/floor/iron/smooth{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/atmospherics/pipe/smart/manifold4w/pink/hidden, +/turf/closed/wall/r_wall{ + baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/powered/lizard_gas) "iC" = ( /obj/machinery/computer/security/telescreen/entertainment/directional/north, /obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/crowbar{ pixel_x = 1; pixel_y = 4 @@ -368,7 +379,7 @@ pixel_x = 7; pixel_y = 0; name = "Manager Note"; - default_raw_text = "Good news! That little decrepit hut out front is finally, legally ours! Feel free to snoop around it if you find the time, and remember, time to lean means time to clean!

P.S, go into the backroom and set the nitrogen and oxygen pressure tanks to layer 3 with the multitool, the HVAC tech had no fucking clue what he was doing apparently!

-General Manager, Ra'Tahul Rekinov" + default_raw_text = "Good news! That little decrepit hut out front is finally, legally ours! Feel free to snoop around it if you find the time, and remember, time to lean means time to clean!

-General Manager, Ra'Tahul Rekinov" }, /obj/item/multitool{ pixel_x = -6; @@ -417,7 +428,6 @@ pixel_x = 1; pixel_y = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -432,12 +442,9 @@ }, /area/ruin/powered/lizard_gas) "kq" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/closed/wall/r_wall{ + baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/powered/lizard_gas) "kJ" = ( @@ -455,7 +462,6 @@ "lx" = ( /obj/effect/spawner/random/trash/food_packaging, /obj/structure/cable, -/obj/machinery/duct, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -467,11 +473,13 @@ "mH" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/item/trash/popcorn/caramel{ pixel_x = -7; pixel_y = 11 }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -509,11 +517,14 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) +"nA" = ( +/obj/structure/sign/warning/chem_diamond/directional/north, +/turf/open/floor/plating/snowed/smoothed/icemoon, +/area/icemoon/underground/unexplored) "nH" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -544,6 +555,12 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) +"pb" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/closed/wall{ + baseturfs = /turf/open/floor/plating/lavaland_baseturf + }, +/area/ruin/powered/lizard_gas) "pu" = ( /obj/structure/sign/warning/fire/directional/north, /obj/structure/reagent_dispensers/fueltank/large{ @@ -592,9 +609,9 @@ "sk" = ( /obj/structure/cable, /obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -621,7 +638,6 @@ /area/ruin/powered/lizard_gas) "sy" = ( /obj/structure/sign/poster/official/pda_ad/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/table/reinforced, /obj/item/food/rootbread_peanut_butter_banana{ pixel_y = 12; @@ -631,14 +647,16 @@ pixel_x = 2; pixel_y = 2 }, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "sB" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/machinery/light_switch/directional/south, +/obj/machinery/duct, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -659,7 +677,8 @@ "ts" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron, /area/ruin/powered/lizard_gas) "tB" = ( @@ -672,10 +691,8 @@ "tJ" = ( /obj/structure/cable, /obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -717,28 +734,27 @@ pixel_x = 7 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "vE" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/machinery/door/airlock/grunge{ name = "Break Room" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "vX" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/duct, -/turf/open/floor/plating/lavaland_baseturf, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1; + filter_types = list(/datum/gas/oxygen) + }, +/turf/open/floor/plating/snowed/smoothed/icemoon, /area/ruin/powered/lizard_gas) "vY" = ( /obj/machinery/duct, @@ -748,8 +764,8 @@ /area/ruin/powered/lizard_gas) "wB" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -764,7 +780,8 @@ pixel_y = 2; pixel_x = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -782,7 +799,7 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/unexplored) "xV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -859,25 +876,26 @@ id_tag = "gasbathroom"; name = "Bathroom" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "zc" = ( -/obj/machinery/airalarm/directional/west, +/obj/machinery/airalarm/directional/west{ + all_access = 1 + }, /obj/effect/mob_spawn/ghost_role/human/lavaland_gasstation{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "zv" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -897,7 +915,7 @@ /obj/item/reagent_containers/condiment/milk, /obj/item/reagent_containers/condiment/soymilk, /obj/item/reagent_containers/condiment/soymilk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/freezer{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -919,7 +937,6 @@ dir = 4 }, /obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1009,13 +1026,18 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) +"Dc" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/sign/warning/no_smoking/circle/directional/east, +/obj/machinery/duct, +/turf/open/floor/plating/snowed/smoothed/icemoon, +/area/ruin/powered/lizard_gas) "Df" = ( /obj/structure/cable, /obj/machinery/power/smes/full{ component_parts = 4; charge = 0 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1031,15 +1053,14 @@ "DJ" = ( /obj/structure/cable, /obj/effect/spawner/random/trash/deluxe_garbage, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "DN" = ( /obj/structure/sign/poster/contraband/tipper_cream_soda/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/table/reinforced, /obj/item/reagent_containers/condiment/bbqsauce{ pixel_y = 17; @@ -1064,6 +1085,8 @@ /obj/item/food/bun, /obj/item/food/bun, /obj/item/food/bun, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1078,12 +1101,11 @@ /area/icemoon/underground/unexplored) "Ec" = ( /obj/machinery/door/airlock/external/ruin, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1127,7 +1149,6 @@ /area/icemoon/underground/unexplored) "Fg" = ( /obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/food/donut/choco{ pixel_x = -4; pixel_y = 7 @@ -1135,6 +1156,7 @@ /obj/item/food/donut/berry{ pixel_x = 5 }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1155,7 +1177,6 @@ pixel_x = 3 }, /obj/structure/closet/crate/freezer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/item/food/cornuto{ pixel_y = -5; pixel_x = -3 @@ -1172,6 +1193,7 @@ pixel_y = -5; pixel_x = 2 }, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/freezer{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1195,21 +1217,21 @@ /area/ruin/powered/lizard_gas) "FU" = ( /obj/structure/sign/poster/official/plasma_effects/directional/east, -/obj/structure/reagent_dispensers/plumbed/storage{ - dir = 8; - reagent_id = /datum/reagent/toxin/plasma; - name = "plasma storage tank"; - tank_volume = 2500 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ + dir = 8 + }, +/obj/machinery/portable_atmospherics/canister/oxygen{ + connected_port = 1 + }, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) "Ga" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1228,12 +1250,9 @@ /turf/open/floor/asphalt, /area/ruin/powered/lizard_gas) "Hq" = ( -/obj/machinery/atmospherics/components/tank/oxygen{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/turf/open/floor/iron/smooth{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/duct, +/turf/closed/wall/r_wall{ + baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/powered/lizard_gas) "HA" = ( @@ -1278,7 +1297,7 @@ }, /area/ruin/powered/lizard_gas) "IP" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/iron{ @@ -1322,10 +1341,11 @@ /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/unexplored) "Lb" = ( -/obj/structure/fence, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/floor/plating/snowed/smoothed/icemoon, -/area/icemoon/underground/unexplored) +/obj/machinery/door/airlock/grunge{ + name = "Plasma Hook-Up" + }, +/turf/open/floor/plating/icemoon, +/area/ruin/powered/lizard_gas) "Ll" = ( /obj/item/stack/sheet/mineral/wood/fifty{ pixel_x = 10; @@ -1338,11 +1358,11 @@ /turf/open/floor/wood/lavaland, /area/icemoon/underground/unexplored) "Lm" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/machinery/door/airlock/grunge{ id_tag = "corpoffice"; name = "Manager's Office" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/wood/parquet, /area/ruin/powered/lizard_gas) "Lo" = ( @@ -1350,7 +1370,6 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1413,6 +1432,7 @@ /obj/item/food/raw_sausage{ pixel_y = 9 }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1459,7 +1479,8 @@ /area/icemoon/underground/unexplored) "PC" = ( /obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/duct, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1501,17 +1522,17 @@ /turf/open/floor/wood/parquet, /area/ruin/powered/lizard_gas) "QF" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface - }, -/area/ruin/powered/lizard_gas) +/obj/structure/sign/warning/fire/directional/north, +/turf/template_noop, +/area/template_noop) "QM" = ( /obj/machinery/vending/dorms{ density = 0; pixel_y = -32 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1528,7 +1549,7 @@ /area/ruin/powered/lizard_gas) "QW" = ( /obj/machinery/light/small/dim/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1545,7 +1566,6 @@ }, /area/ruin/powered/lizard_gas) "Rt" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/railing{ dir = 4 }, @@ -1555,6 +1575,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/plating/lavaland_atmos{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1602,6 +1623,9 @@ }, /obj/structure/cable, /obj/effect/turf_decal/stripes/end, +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 1 + }, /turf/open/floor/plating/lavaland_atmos{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1650,7 +1674,6 @@ /obj/item/gun/energy/recharge/kinetic_accelerator/glock, /obj/item/clothing/mask/breath, /obj/item/pickaxe, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/tank/internals/emergency_oxygen/double, /obj/item/tank/internals/emergency_oxygen/double, /obj/item/storage/backpack/satchel/science{ @@ -1703,6 +1726,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, +/obj/machinery/duct, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1715,6 +1739,9 @@ id = "gasbathroom"; name = "Door Bolt Control" }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1736,8 +1763,9 @@ /turf/open/floor/asphalt, /area/ruin/powered/lizard_gas) "Wq" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/turf/closed/wall{ +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/duct, +/turf/closed/wall/r_wall{ baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/powered/lizard_gas) @@ -1747,9 +1775,8 @@ /area/ruin/powered/lizard_gas) "WZ" = ( /obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1759,6 +1786,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1774,10 +1802,8 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/unexplored) "YL" = ( -/obj/machinery/atmospherics/components/tank/nitrogen{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1806,9 +1832,9 @@ }, /area/ruin/powered/lizard_gas) "ZX" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/sign/poster/fluff/lizards_gas_payment/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -2121,13 +2147,13 @@ Vw Bv MK MK -cx +MK MK MK MK VR MK -MK +cx MK Vw Gr @@ -2145,17 +2171,17 @@ Gr Gr Vw dK -Bv +Vw gm yo -vX +yo yo gm gm gm Ja -Ja -gm +ap +ia Bv Bv Vw @@ -2175,14 +2201,14 @@ bZ gm gm UC -QF +GA MX fr mK yb QW XL -gm +ia hi FS FS @@ -2229,7 +2255,7 @@ AN xV yb BR -ap +ZQ ll Qw Mu @@ -2256,7 +2282,7 @@ dD zv vE nH -kq +nH wB Ga wB @@ -2275,7 +2301,7 @@ Gr "} (18,1,1) = {" gm -Wq +yb yb yb yb @@ -2304,7 +2330,7 @@ Gr gm Df fv -ia +WZ DJ tJ WZ @@ -2315,7 +2341,7 @@ um nN UE hy -um +hV PC gm QP @@ -2333,7 +2359,7 @@ iO ac YL Ah -Hq +pT FU yb ch @@ -2356,9 +2382,9 @@ Gr "} (21,1,1) = {" gm -Wq +yb Lm -hV +pb gm gm Jb @@ -2369,7 +2395,7 @@ GA GA ZQ qQ -GA +nH mH ts Rt @@ -2396,11 +2422,11 @@ gm IN gm gm -gm +kq zb -gm -Vw -Vw +Wq +Dc +vX Vw Vw Bv @@ -2426,9 +2452,9 @@ eA Vv QM gm -Vw -Bv -Vw +Hq +gm +nA Bv Gr Gr @@ -2442,7 +2468,7 @@ RU SL gm Vw -Lb +Vw LJ PA dv @@ -2453,8 +2479,8 @@ za hj VK gm -Vw -Bv +gC +Lb Bv Gr Gr @@ -2480,9 +2506,9 @@ gm gm gm gm -Gr -Gr -Gr +gm +gm +QF Gr Gr Gr diff --git a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm index fe2f78732a9..f8ddb3b1270 100644 --- a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm +++ b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm @@ -5,7 +5,6 @@ /area/lavaland/surface/outdoors) "aN" = ( /obj/structure/table/reinforced, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/food/donut/choco{ pixel_x = -4; pixel_y = 7 @@ -13,6 +12,7 @@ /obj/item/food/donut/berry{ pixel_x = 5 }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -26,7 +26,6 @@ pixel_x = 7 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -45,12 +44,9 @@ }, /area/ruin/thelizardsgas_lavaland) "bK" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/turf/open/floor/iron/smooth{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/turf/closed/wall/r_wall{ + baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/thelizardsgas_lavaland) "bL" = ( @@ -69,24 +65,26 @@ id = "gasbathroom"; name = "Door Bolt Control" }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "bO" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/noticeboard/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "cf" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -141,7 +139,6 @@ }, /obj/structure/cable, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -169,6 +166,9 @@ "eB" = ( /obj/item/mop, /obj/structure/mop_bucket/janitorialcart, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -185,7 +185,6 @@ "ga" = ( /obj/machinery/computer/security/telescreen/entertainment/directional/north, /obj/structure/table, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/crowbar{ pixel_x = 1; pixel_y = 4 @@ -241,11 +240,13 @@ }, /area/ruin/thelizardsgas_lavaland) "gQ" = ( +/obj/machinery/door/airlock/external/ruin, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "lizardgas_lavaland_entrance" + }, +/obj/structure/fans/tiny, /obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/obj/structure/cable, -/turf/open/floor/iron{ +/turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) @@ -267,6 +268,9 @@ density = 0; pixel_y = -32 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -275,13 +279,12 @@ /turf/template_noop, /area/template_noop) "hC" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/machinery/door/airlock/grunge{ name = "Break Room" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -306,12 +309,12 @@ /turf/open/floor/asphalt, /area/ruin/thelizardsgas_lavaland) "il" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 1; + filter_types = list(/datum/gas/oxygen) }, +/obj/machinery/duct, +/turf/open/floor/plating/lavaland_atmos, /area/ruin/thelizardsgas_lavaland) "iE" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ @@ -401,7 +404,7 @@ /turf/open/floor/asphalt, /area/ruin/thelizardsgas_lavaland) "lM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on/layer4{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, /turf/open/floor/iron{ @@ -423,7 +426,6 @@ dir = 4 }, /obj/machinery/light/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -497,8 +499,8 @@ "nE" = ( /obj/structure/cable, /obj/effect/spawner/random/trash/deluxe_garbage, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -519,11 +521,9 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "oY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/turf/open/floor/iron/smooth{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/duct, +/turf/closed/wall/r_wall{ + baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/thelizardsgas_lavaland) "po" = ( @@ -542,7 +542,6 @@ charge = 0 }, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -582,10 +581,10 @@ /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "rD" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, -/turf/open/floor/iron/smooth{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/door/airlock/grunge{ + name = "Plasma Hook-Up" }, +/turf/open/floor/plating/lavaland_atmos, /area/ruin/thelizardsgas_lavaland) "rE" = ( /obj/structure/cable, @@ -655,18 +654,17 @@ /area/ruin/thelizardsgas_lavaland) "tk" = ( /obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/machinery/door/airlock/maintenance_hatch, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "tq" = ( /obj/structure/sign/warning/fire/directional/north, -/turf/template_noop, -/area/template_noop) +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "tD" = ( /obj/structure/cable, /turf/open/floor/iron{ @@ -682,6 +680,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -689,7 +688,8 @@ "uf" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/iron, /area/ruin/thelizardsgas_lavaland) "uq" = ( @@ -710,8 +710,9 @@ /area/ruin/thelizardsgas_lavaland) "uB" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/machinery/light_switch/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/duct, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -740,7 +741,9 @@ }, /area/ruin/thelizardsgas_lavaland) "uX" = ( -/obj/machinery/portable_atmospherics/canister, +/obj/machinery/portable_atmospherics/canister{ + connected_port = 1 + }, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "vj" = ( @@ -757,6 +760,7 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, +/obj/machinery/duct, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -778,11 +782,13 @@ "vD" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/item/trash/popcorn/caramel{ pixel_x = -7; pixel_y = 11 }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -795,7 +801,6 @@ /obj/effect/mapping_helpers/apc/cell_10k, /obj/effect/mapping_helpers/apc/unlocked, /obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/flashlight{ pixel_x = 4; pixel_y = 6 @@ -838,15 +843,16 @@ }, /area/ruin/thelizardsgas_lavaland) "xM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/turf/closed/wall{ - baseturfs = /turf/open/floor/plating/lavaland_baseturf +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/open/floor/iron{ + baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "xV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/sign/poster/fluff/lizards_gas_payment/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -857,6 +863,7 @@ /area/icemoon/underground/unexplored) "yb" = ( /obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -866,7 +873,6 @@ /area/icemoon/underground/unexplored) "yy" = ( /obj/structure/sign/poster/contraband/tipper_cream_soda/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/table/reinforced, /obj/item/reagent_containers/condiment/bbqsauce{ pixel_y = 17; @@ -891,6 +897,9 @@ /obj/item/food/bun, /obj/item/food/bun, /obj/item/food/bun, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -904,10 +913,7 @@ /turf/open/floor/asphalt, /area/ruin/thelizardsgas_lavaland) "zo" = ( -/obj/machinery/atmospherics/components/tank/nitrogen{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -961,7 +967,7 @@ /area/ruin/thelizardsgas_lavaland) "Bs" = ( /obj/machinery/light/small/dim/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -994,11 +1000,6 @@ "Cf" = ( /turf/closed/wall/r_wall, /area/ruin/thelizardsgas_lavaland) -"CG" = ( -/obj/structure/fence, -/obj/machinery/portable_atmospherics/canister/oxygen, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors) "CY" = ( /obj/structure/rack, /obj/item/food/candy, @@ -1033,10 +1034,9 @@ }, /area/ruin/thelizardsgas_lavaland) "DL" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1074,7 +1074,6 @@ pixel_x = 3 }, /obj/structure/closet/crate/freezer, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/item/food/cornuto{ pixel_y = -5; pixel_x = -3 @@ -1108,8 +1107,8 @@ /area/ruin/thelizardsgas_lavaland) "FZ" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1150,6 +1149,7 @@ dir = 1 }, /obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1196,7 +1196,6 @@ /obj/item/gun/energy/recharge/kinetic_accelerator/glock, /obj/item/clothing/mask/breath, /obj/item/pickaxe, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/item/tank/internals/emergency_oxygen/double, /obj/item/tank/internals/emergency_oxygen/double, /obj/item/storage/backpack/satchel/science{ @@ -1297,6 +1296,7 @@ id_tag = "gasbathroom"; name = "Bathroom" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1316,11 +1316,11 @@ "Mp" = ( /obj/machinery/door/airlock/external/ruin, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1397,7 +1397,7 @@ /obj/item/reagent_containers/condiment/milk, /obj/item/reagent_containers/condiment/soymilk, /obj/item/reagent_containers/condiment/soymilk, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/iron/freezer{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1525,7 +1525,6 @@ /area/ruin/thelizardsgas_lavaland) "Sq" = ( /obj/structure/sign/poster/official/pda_ad/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/table/reinforced, /obj/item/food/rootbread_peanut_butter_banana{ pixel_y = 12; @@ -1535,13 +1534,16 @@ pixel_x = 2; pixel_y = 2 }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "Su" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1554,16 +1556,21 @@ /area/ruin/thelizardsgas_lavaland) "Ta" = ( /obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/duct, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "Tc" = ( -/obj/structure/cable, -/obj/effect/spawner/structure/window/reinforced/plasma, -/obj/machinery/duct, -/turf/open/floor/plating/lavaland_baseturf, +/obj/structure/reagent_dispensers/plumbed/storage{ + dir = 8; + reagent_id = /datum/reagent/toxin/plasma; + name = "plasma storage tank"; + tank_volume = 2500 + }, +/turf/open/floor/plating/lavaland_atmos, /area/ruin/thelizardsgas_lavaland) "Tk" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, @@ -1578,7 +1585,7 @@ pixel_y = 2; pixel_x = 6 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1587,15 +1594,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/machinery/duct, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "UK" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/iron{ - baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/closed/wall/r_wall{ + baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/thelizardsgas_lavaland) "Vd" = ( @@ -1603,8 +1610,7 @@ /turf/open/floor/asphalt, /area/ruin/thelizardsgas_lavaland) "Vn" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/closed/wall{ baseturfs = /turf/open/floor/plating/lavaland_baseturf }, @@ -1615,14 +1621,11 @@ /area/lavaland/surface/outdoors) "Wg" = ( /obj/structure/sign/poster/official/plasma_effects/directional/east, -/obj/structure/reagent_dispensers/plumbed/storage{ - dir = 8; - reagent_id = /datum/reagent/toxin/plasma; - name = "plasma storage tank"; - tank_volume = 2500 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1635,11 +1638,11 @@ /turf/open/floor/asphalt, /area/ruin/thelizardsgas_lavaland) "WI" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /obj/machinery/door/airlock/grunge{ id_tag = "corpoffice"; name = "Manager's Office" }, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /turf/open/floor/wood/parquet, /area/ruin/thelizardsgas_lavaland) "WL" = ( @@ -1654,23 +1657,22 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "WT" = ( -/obj/machinery/airalarm/directional/west, +/obj/machinery/airalarm/directional/west{ + all_access = 1 + }, /obj/effect/mob_spawn/ghost_role/human/lavaland_gasstation{ dir = 4 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) "WV" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, /obj/structure/railing{ dir = 4 }, @@ -1680,6 +1682,7 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/duct, /turf/open/floor/plating/lavaland_atmos{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1719,7 +1722,6 @@ pixel_x = 1; pixel_y = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer2, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1731,10 +1733,8 @@ "XD" = ( /obj/structure/cable, /obj/machinery/light/small/directional/west, -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1785,9 +1785,12 @@ }, /area/ruin/thelizardsgas_lavaland) "Zt" = ( -/obj/machinery/atmospherics/components/tank/oxygen{ +/obj/machinery/atmospherics/components/unary/portables_connector/layer2{ dir = 8 }, +/obj/machinery/portable_atmospherics/canister/oxygen{ + connected_port = 1 + }, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -2107,13 +2110,13 @@ Tk Tk jo jo -Sh +jo jo jo jo bp jo -jo +Sh jo tK Tk @@ -2134,20 +2137,20 @@ Tk at cB Xb -Tc +Xb Xb cB cB cB Rb -Rb +gQ cB YH Tk Tk -hr -hr -hr +Tk +Tk +Tk hr hr "} @@ -2161,7 +2164,7 @@ Qi cB cB QP -UK +tD Mw qX uG @@ -2201,7 +2204,7 @@ RW RW gt Ra -hr +Tk hr hr "} @@ -2212,10 +2215,10 @@ gd Jp Jp Zo -rD +zo wE CY -il +KS fc vz uq @@ -2228,7 +2231,7 @@ gW nJ gt IF -hr +Tk hr hr "} @@ -2242,7 +2245,7 @@ gn DL hC cf -gQ +cf FZ Su FZ @@ -2255,13 +2258,13 @@ bL sk gt IF -hr +Tk hr hr "} (18,1,1) = {" cB -xM +wE wE wE wE @@ -2282,7 +2285,7 @@ sk sk gt GV -hr +Tk hr hr "} @@ -2290,10 +2293,10 @@ hr cB pB Hq -oY +DL nE XD -bK +DL wE Ao lM @@ -2309,7 +2312,7 @@ vj vj gt GV -hr +Tk hr hr "} @@ -2336,13 +2339,13 @@ RW RW gt Ab -hr +Tk hr hr "} (21,1,1) = {" cB -xM +wE WI Vn cB @@ -2355,7 +2358,7 @@ tD tD KS WZ -tD +xM vD uf WV @@ -2382,9 +2385,10 @@ cB DE cB cB -cB +UK LL -cB +bK +il Tk Tk Tk @@ -2392,7 +2396,6 @@ Tk Tk hr hr -hr "} (23,1,1) = {" cB @@ -2412,8 +2415,8 @@ uM bM gY cB -Tk -Tk +oY +cB Tk Tk hr @@ -2428,7 +2431,7 @@ ID XA cB Tk -CG +Tk ry kT hG @@ -2439,8 +2442,8 @@ ef BN bG cB -Tk -Tk +Tc +rD Tk hr hr @@ -2466,8 +2469,8 @@ cB cB cB cB -hr -hr +cB +cB hr hr hr diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 39138e8c13d..1a853bf8c40 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -1138,13 +1138,6 @@ desc = "A rainbow card, promoting fun in a 'business proper' sense!" icon_state = "card_rainbow" -/obj/item/card/id/advanced/lizardgas - name = "Lizard Gas Employee Card" - desc = "A rainbow ID card, promoting fun in a 'business proper' sense!" - icon_state = "card_rainbow" - trim = /datum/id_trim/away/lizardgas - wildcard_slots = WILDCARD_LIMIT_GREY - /obj/item/card/id/advanced/silver name = "silver identification card" desc = "A silver card which shows honour and dedication." diff --git a/modular_zubbers/code/game/objects/items/cards_ids.dm b/modular_zubbers/code/game/objects/items/cards_ids.dm index b09bf85a1c1..9bc403afa22 100644 --- a/modular_zubbers/code/game/objects/items/cards_ids.dm +++ b/modular_zubbers/code/game/objects/items/cards_ids.dm @@ -17,3 +17,10 @@ inhand_icon_state = "korven" lefthand_file = 'modular_zubbers/icons/mob/inhands/equipment/idcards_lefthand.dmi' righthand_file = 'modular_zubbers/icons/mob/inhands/equipment/idcards_righthand.dmi' + +/obj/item/card/id/advanced/lizardgas + name = "Lizard Gas Employee Card" + desc = "A rainbow ID card, promoting fun in a 'business proper' sense!" + icon_state = "card_rainbow" + trim = /datum/id_trim/away/lizardgas + wildcard_slots = WILDCARD_LIMIT_GREY From bbd2d9a6da0d003df61ad96fb9e08a64d8d3941b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 3 Feb 2025 23:24:21 +0000 Subject: [PATCH 009/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2800.yml | 4 ---- html/changelogs/AutoChangeLog-pr-2907.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2922.yml | 4 ---- html/changelogs/AutoChangeLog-pr-2987.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3027.yml | 10 ---------- html/changelogs/archive/2025-02.yml | 19 +++++++++++++++++++ 6 files changed, 19 insertions(+), 28 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2800.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2907.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2922.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2987.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3027.yml diff --git a/html/changelogs/AutoChangeLog-pr-2800.yml b/html/changelogs/AutoChangeLog-pr-2800.yml deleted file mode 100644 index 13d8860747c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2800.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xXPawnStarrXx" -delete-after: True -changes: - - qol: "made orefruits produce sheets as cores, instead of lame objects, letting them be inserted into a silo." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2907.yml b/html/changelogs/AutoChangeLog-pr-2907.yml deleted file mode 100644 index 67271fd8fce..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2907.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "xXPawnStarrXx" -delete-after: True -changes: - - rscadd: "Added two new pods; Xenoarch and triage" - - bugfix: "fixed the robotic repair kit in the large medical pod from being empty." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2922.yml b/html/changelogs/AutoChangeLog-pr-2922.yml deleted file mode 100644 index fc5cfd74aa9..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2922.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - balance: "Eye blur from lasers is capped at maximum of 20 seconds." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2987.yml b/html/changelogs/AutoChangeLog-pr-2987.yml deleted file mode 100644 index 4841e2ed7f5..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2987.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "MosleyTheMalO" -delete-after: True -changes: - - config: "Makes vore defines into configs" - - bugfix: "makes the down button available again" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3027.yml b/html/changelogs/AutoChangeLog-pr-3027.yml deleted file mode 100644 index e0336466b98..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3027.yml +++ /dev/null @@ -1,10 +0,0 @@ -author: "Rathen Ivanonv" -delete-after: True -changes: - - rscadd: "Added more supplies/gear to Gas Station Attendant Ghost Role" - - rscadd: "Added I.D/Bank Account to Gas Station Attendant Ghost Role" - - rscadd: "Added an additional spawn to Gas Station Attendant Ghost Role" - - rscadd: "Added a Regal Rat spawn to Lavaland/an additional one to Ice Moon" - - rscadd: "Many more beneficial changes to the Gas Station Attendant Ghost Role" - - map: "Overhauled Lavaland/Ice Moon Gas Station with three new areas" - - balance: "Removed Laser Musket from Gas Station Ghost Role, replaced with PKA Pistols" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 5858ad7773f..05938ed8fb7 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -45,3 +45,22 @@ - bugfix: Persistence recycler can now be escaped. - bugfix: stopped on of the persistence turrets from getting dunked in lava every shift. +2025-02-03: + Arturlang: + - balance: Eye blur from lasers is capped at maximum of 20 seconds. + MosleyTheMalO: + - config: Makes vore defines into configs + - bugfix: makes the down button available again + Rathen Ivanonv: + - rscadd: Added more supplies/gear to Gas Station Attendant Ghost Role + - rscadd: Added I.D/Bank Account to Gas Station Attendant Ghost Role + - rscadd: Added an additional spawn to Gas Station Attendant Ghost Role + - rscadd: Added a Regal Rat spawn to Lavaland/an additional one to Ice Moon + - rscadd: Many more beneficial changes to the Gas Station Attendant Ghost Role + - map: Overhauled Lavaland/Ice Moon Gas Station with three new areas + - balance: Removed Laser Musket from Gas Station Ghost Role, replaced with PKA Pistols + xXPawnStarrXx: + - qol: made orefruits produce sheets as cores, instead of lame objects, letting + them be inserted into a silo. + - rscadd: Added two new pods; Xenoarch and triage + - bugfix: fixed the robotic repair kit in the large medical pod from being empty. From 27d8e4dc5f020398d66280efa90026972eadab77 Mon Sep 17 00:00:00 2001 From: shellspeed1 <46614774+shellspeed1@users.noreply.github.com> Date: Mon, 3 Feb 2025 15:49:24 -0800 Subject: [PATCH 010/120] Deletes old version of persistence map that exists in the files but is unused (#3050) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …by accident ## About The Pull Request What it says on the tin, deletes an extra unused map file. ## Why It's Good For The Game Artur told me too. ## Proof Of Testing I compiled the code and everything started alright despite the stupid lightswitch runtimes I should look into fixing because people keep using the lightswitch off map helper.
Screenshots/Videos
## Changelog :cl: del: Removed unused map file. /:cl: --- .../bubberstation/new syndicate base.tgm | 13946 ---------------- 1 file changed, 13946 deletions(-) delete mode 100644 _maps/RandomRuins/SpaceRuins/bubberstation/new syndicate base.tgm diff --git a/_maps/RandomRuins/SpaceRuins/bubberstation/new syndicate base.tgm b/_maps/RandomRuins/SpaceRuins/bubberstation/new syndicate base.tgm deleted file mode 100644 index 13fa3a09004..00000000000 --- a/_maps/RandomRuins/SpaceRuins/bubberstation/new syndicate base.tgm +++ /dev/null @@ -1,13946 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ab" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/textured, -/area/space) -"ac" = ( -/obj/machinery/computer/atmos_control/nocontrol/incinerator{ - dir = 4; - id_tag = "syndiship_turbine"; - atmos_chambers = list("syndiship_turbine") - }, -/obj/machinery/button/door/directional/west{ - id = "turbine_vent"; - name = "Turbine Vent"; - req_access = list("syndicate") - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"ae" = ( -/obj/structure/closet/generic/wall{ - pixel_x = 32 - }, -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/space/basic, -/turf/open/floor/iron/white/small, -/area/space) -"ag" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/wood/large, -/area/space) -"al" = ( -/obj/structure/table/wood, -/obj/structure/towel_bin{ - pixel_y = -10; - pixel_x = -1 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"am" = ( -/obj/machinery/atmospherics/miner/oxygen, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/door/window/survival_pod/left/directional/east{ - name = "Atmos Access Hatch" - }, -/turf/open/floor/engine/o2, -/area/space) -"an" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/red, -/area/space) -"at" = ( -/obj/effect/turf_decal/siding/dark/corner{ - dir = 8 - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/machinery/door/airlock/science/glass{ - name = "Research Wing" - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/smooth_large, -/area/space) -"au" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/door/airlock/engineering/glass{ - name = "Turbine Room"; - id_tag = syndiengibolt" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/machinery/door/poddoor/shutters/window{ - id = "syndiengishutters" - }, -/turf/open/floor/iron/dark/smooth_large, -/area/space) -"ax" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 6 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/smartfridge/disks, -/obj/item/storage/box/disks_plantgene, -/turf/open/floor/stone, -/area/space) -"az" = ( -/obj/machinery/netpod, -/turf/open/floor/iron/dark/small, -/area/space) -"aD" = ( -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/protolathe/interdyne, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/turf/open/floor/iron/textured, -/area/space) -"aE" = ( -/obj/structure/bed/double/pod, -/obj/effect/spawner/random/bedsheet/any/double, -/turf/open/floor/carpet/stellar, -/area/space) -"aH" = ( -/obj/machinery/syndicatebomb/empty, -/turf/open/floor/circuit/red/anim, -/area/space) -"aJ" = ( -/obj/machinery/conveyor/auto{ - dir = 1; - id = "syndirecycle" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"aL" = ( -/obj/structure/closet/secure_closet/interdynefob/munitions_locker, -/obj/item/ammo_box/magazine/smgm45/empty, -/obj/item/ammo_box/magazine/smgm45/empty, -/turf/open/floor/mineral/plastitanium, -/area/space) -"aN" = ( -/obj/structure/window/green_glass_pane, -/obj/structure/curtain/cloth/fancy, -/turf/open/space/basic, -/area/space) -"aR" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium, -/area/space) -"aS" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/showroomfloor, -/area/space) -"aT" = ( -/obj/machinery/time_clock/directional/south, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"aU" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/yellow/line, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"aW" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/large, -/area/space) -"aY" = ( -/obj/machinery/light/cold/directional/north, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"aZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"ba" = ( -/obj/machinery/computer/operating, -/obj/machinery/smartfridge/organ{ - pixel_y = 32; - density = 0 - }, -/turf/open/floor/iron/white/small, -/area/space) -"bb" = ( -/obj/effect/turf_decal/siding/green{ - dir = 1 - }, -/obj/machinery/door/window/survival_pod/left/directional/north{ - name = "Virology Airlock"; - req_access = list("syndicate") - }, -/turf/open/floor/iron/dark, -/area/space) -"be" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/top/middle, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"bi" = ( -/obj/machinery/button/door/directional/west{ - id = "syndimining"; - name = "Blast Doors"; - req_access = list("syndicate") - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/mining_weather_monitor/directional/south, -/turf/open/floor/mineral/plastitanium, -/area/space) -"bk" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"bl" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"bn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/red, -/area/space) -"bo" = ( -/obj/structure/rack/shelf, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/pickaxe, -/obj/item/suit_voucher, -/obj/item/mining_voucher, -/obj/item/storage/belt/mining/vendor, -/obj/item/clothing/glasses/meson/night, -/turf/open/floor/iron/colony/texture{ - icon_state = "colony_grey" - }, -/area/space) -"bq" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"br" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/destructive_scanner, -/turf/open/floor/iron/textured, -/area/space) -"bu" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/side, -/area/space) -"bw" = ( -/obj/machinery/exodrone_launcher, -/obj/item/fuel_pellet, -/obj/item/exodrone, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium, -/area/space) -"by" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/machinery/status_display/department_balance{ - credits_account = "INT"; - name = "dauntless budget display"; - pixel_y = 30; - default_logo = "synd" - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"bA" = ( -/turf/closed/wall/r_wall/syndicate, -/area/space) -"bB" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"bC" = ( -/obj/effect/spawner/xmastree, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"bF" = ( -/turf/open/misc/grass/jungle/station, -/area/space) -"bH" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating/reinforced, -/area/space) -"bL" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"bM" = ( -/obj/machinery/biogenerator, -/obj/item/reagent_containers/cup/beaker/large, -/turf/open/misc/grass/jungle/station, -/area/space) -"bN" = ( -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"bO" = ( -/obj/structure/closet/secure_closet/ds2atmos{ - anchorable = 0; - anchored = 1 - }, -/obj/item/mod/module/visor/meson{ - pixel_y = -9 - }, -/obj/item/analyzer{ - pixel_y = 10 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"bQ" = ( -/turf/open/floor/wood, -/area/space) -"bR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"bS" = ( -/obj/machinery/vending/cigarette/syndicate{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_x = 28 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"bY" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/processor{ - pixel_x = 1; - pixel_y = 10 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"bZ" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "dauntbar_w" - }, -/obj/machinery/door/poddoor{ - id = syndi_bitrunning - }, -/obj/item/airbag/immediate_arm, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"cb" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/large, -/area/space) -"ch" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/white/diagonal, -/area/space) -"cj" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/forging/billow, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"cp" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/iron/dark/small, -/area/space) -"cq" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/space) -"ct" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/space) -"cv" = ( -/obj/machinery/shower/directional/south{ - name = "emergency shower" - }, -/obj/effect/turf_decal/siding/thinplating{ - dir = 10 - }, -/obj/structure/drain, -/turf/open/floor/noslip/tram, -/area/space) -"cz" = ( -/obj/structure/sign/poster/contraband/c20r/directional/north, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"cA" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"cC" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"cE" = ( -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/component_printer, -/obj/machinery/cell_charger_multi/wall_mounted/directional/north, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 - }, -/turf/open/floor/iron/textured, -/area/space) -"cI" = ( -/obj/structure/closet/crate/trashcart/laundry, -/obj/effect/spawner/random/trash/janitor_supplies, -/obj/item/mop, -/turf/open/floor/iron/dark/small, -/area/space) -"cK" = ( -/obj/structure/frame/machine/secured{ - anchored = 0 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"cN" = ( -/obj/machinery/mass_driver/trash{ - dir = 1; - id = "synditrashgun" - }, -/obj/structure/fans/tiny, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/space) -"cO" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/stockparts/deluxe{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"cQ" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8; - icon_state = "siding_plain_end" - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"cR" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/iron/dark/small, -/area/space) -"cS" = ( -/obj/machinery/vending/cigarette/syndicate{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_y = 32 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"cU" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/turf/open/floor/iron/white, -/area/space) -"cV" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"cW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/portable_atmospherics/canister/plasma, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"cX" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/space) -"cY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/rnd/server/interdyne, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"cZ" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/space) -"da" = ( -/obj/structure/sign/poster/contraband/babel_device/directional/east, -/turf/open/floor/mineral/plastitanium, -/area/space) -"db" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/pipe_dispenser{ - pixel_x = -3 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"dc" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/lunchbox/safetymoth, -/turf/open/floor/iron/white, -/area/space) -"de" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/small, -/area/space) -"dg" = ( -/obj/structure/sign/poster/official/moth_piping/directional/east, -/turf/open/floor/plating/reinforced, -/area/space) -"di" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/space) -"dj" = ( -/obj/structure/sign/warning/no_smoking/directional/west, -/turf/open/floor/iron/textured, -/area/space) -"dt" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/diagonal, -/area/space) -"du" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/segment, -/turf/open/floor/mineral/plastitanium, -/area/space) -"dx" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/textured, -/area/space) -"dA" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/structure/railing/wooden_fencing{ - dir = 8 - }, -/mob/living/basic/chicken, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"dB" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/space) -"dC" = ( -/obj/effect/turf_decal/stripes/blue/line{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/space) -"dD" = ( -/obj/structure/table/wood, -/obj/item/kirbyplants/random, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"dF" = ( -/obj/structure/reagent_anvil, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"dG" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/space) -"dH" = ( -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/circuit_imprinter/offstation, -/obj/structure/sign/poster/contraband/self_ai_liberation/directional/north, -/turf/open/floor/iron/textured, -/area/space) -"dI" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/oven/range, -/turf/open/floor/iron/white, -/area/space) -"dK" = ( -/obj/machinery/light/cold/directional/east, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/plating/reinforced, -/area/space) -"dM" = ( -/obj/machinery/limbgrower/fullupgrade, -/turf/open/floor/iron/white/small, -/area/space) -"dO" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"dT" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/space) -"dU" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/space) -"dV" = ( -/obj/structure/closet/crate, -/obj/item/reagent_containers/cup/bowl, -/obj/effect/spawner/random/contraband/prison, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/reagent_containers/cup/bowl, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/kitchen/fork/plastic, -/obj/item/storage/box/drinkingglasses, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/kitchen/spoon/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/knife/plastic, -/obj/item/kitchen/rollingpin, -/obj/item/storage/box/drinkingglasses, -/obj/effect/turf_decal/bot_white, -/obj/effect/turf_decal/siding{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/item/reagent_containers/cup/soup_pot, -/obj/item/plate/oven_tray, -/turf/open/floor/mineral/titanium/white, -/area/space) -"dY" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/fermenting_barrel, -/turf/open/floor/stone, -/area/space) -"ea" = ( -/obj/machinery/computer/exoscanner_control{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ec" = ( -/obj/machinery/door/airlock/security/old/glass{ - name = "General Population Access" - }, -/obj/effect/turf_decal/stripes/red/full, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "dauntless-sec" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ee" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 9 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/bag/chemistry, -/obj/item/storage/box/beakers/bluespace, -/obj/structure/sign/warning/no_smoking/directional/west, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"ef" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "interdynebarbers"; - spawn_list = list(/obj/structure/window/reinforced/plasma/plastitanium) - }, -/turf/open/misc/grass/jungle/station, -/area/space) -"eg" = ( -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/space) -"eh" = ( -/obj/machinery/computer/crew/syndie{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/cybersun_six_hundred/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ek" = ( -/obj/structure/toilet{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/space) -"ep" = ( -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium, -/area/space) -"es" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 6 - }, -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"ew" = ( -/obj/structure/closet/generic/wall{ - pixel_x = -32 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/item/modular_computer/pda/syndicate, -/turf/open/floor/wood/large, -/area/space) -"eA" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/bottom/left, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"eH" = ( -/obj/structure/safe/floor, -/obj/item/construction/rcd/arcd/mattermanipulator, -/obj/item/blueprints/golem, -/obj/item/book/granter/crafting_recipe/trash_cannon, -/turf/open/floor/iron/terracotta/small, -/area/space) -"eK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/space) -"eM" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"eN" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/noslip/tram, -/area/space) -"eO" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"eP" = ( -/obj/effect/turf_decal/stripes/blue/line, -/turf/open/floor/iron/dark, -/area/space) -"eR" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"eS" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/siding/dark, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/diagonal, -/area/space) -"eU" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 4 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"eZ" = ( -/obj/machinery/vending/barbervend{ - onstation = 0; - onstation_override = 1; - pixel_y = 32 - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"fd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/carpet/donk, -/area/space) -"fe" = ( -/obj/effect/turf_decal/tile/dark_red/half, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/space) -"ff" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/top/right, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"fh" = ( -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/cyborgrecharger, -/turf/open/floor/iron/textured, -/area/space) -"fk" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"fl" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/bottom/middle, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"ft" = ( -/obj/structure/drain, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/small, -/area/space) -"fv" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"fw" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"fx" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/spawner/random/food_or_drink/donkpockets, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"fA" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"fB" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"fC" = ( -/obj/structure/flora/rock/icy, -/turf/open/lava/plasma/ice_moon, -/area/space) -"fD" = ( -/obj/machinery/washing_machine, -/obj/machinery/duct, -/turf/open/floor/iron/white/small, -/area/space) -"fF" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/item/radio/intercom/directional/east{ - name = "Interview room intercom"; - broadcasting = 1; - freerange = 1; - freqlock = 1; - frequency = 1241; - canhear_range = 1; - desc = "Surely no one is listening in!"; - pixel_x = 0; - pixel_y = 24 - }, -/turf/open/floor/iron/dark/textured_corner, -/area/space) -"fG" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/structure/railing/wooden_fencing{ - dir = 8 - }, -/mob/living/basic/cow, -/turf/open/misc/grass/jungle/station, -/area/space) -"fH" = ( -/obj/machinery/door/airlock/multi_tile/metal{ - dir = 1 - }, -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium, -/area/space) -"fJ" = ( -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/mineral/plastitanium, -/area/space) -"fK" = ( -/obj/structure/sink/kitchen/directional/south, -/turf/open/misc/grass/jungle/station, -/area/space) -"fN" = ( -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"fP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/red, -/area/space) -"fQ" = ( -/obj/machinery/light/cold/directional/east, -/obj/item/radio/intercom/command/directional/east, -/obj/machinery/computer/security/dauntless{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red{ - icon_state = "plastitanium" - }, -/area/space) -"fU" = ( -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"fV" = ( -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark/small, -/area/space) -"fY" = ( -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"gb" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/chair/sofa/corp{ - color = "#DE3A3A"; - dir = 1 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/carpet/red, -/area/space) -"gd" = ( -/obj/structure/safe/floor, -/obj/item/stack/spacecash/c10000, -/obj/item/card/emag, -/obj/item/reagent_containers/heroinbrick{ - desc = "A brick of stimulants meant for use by Tiger Cooperative agents. It seems this one's just a brittle block of heroin."; - name = "Tiger Coop stimulant brick" - }, -/obj/item/storage/box/syndie_kit/chameleon/ghostcafe{ - desc = "A sleek, sturdy box."; - name = "Chameleon Kit" - }, -/obj/machinery/status_display/department_balance{ - credits_account = "INT"; - name = "dauntless budget display"; - pixel_y = 30; - default_logo = "synd" - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ge" = ( -/obj/structure/reagent_dispensers/plumbed{ - dir = 8 - }, -/turf/open/floor/noslip, -/area/space) -"gh" = ( -/obj/structure/chair/comfy/shuttle/tactical, -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"gi" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/trimline/dark_red/filled/line, -/obj/structure/cable, -/turf/open/floor/carpet/royalblack, -/area/space) -"gp" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/hoop{ - dir = 4; - pixel_x = -12 - }, -/turf/open/floor/iron/showroomfloor, -/area/space) -"gq" = ( -/turf/open/floor/iron/stairs, -/area/space) -"gv" = ( -/obj/structure/chair/office/light{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"gw" = ( -/obj/structure/bed/double{ - dir = 1 - }, -/obj/item/bedsheet/syndie/double{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/space) -"gy" = ( -/obj/item/market_uplink/blackmarket, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/paper{ - default_raw_text = "

SSV Dauntless Cargo Guide

The SSV Dauntless has made a corporate deal with Gorlex Industries to test out their new 1100mm rail cannon reverse engineered off the 1500mm delivery system that Nanotrasen utilizes.

Please note, if at all the base has fallen into the wrong hands, it is required that these boards are to be destroyed as it contains our cryptography private seeds.

All cargo goods are logged and maintained, any misuse of funds will be traced back to agent, and will be reprimanded.

  • Express Supply Console Computer
  • Install into a computer frame and print a beacon. Wrench the beacon down in a clear area (and ideally away from explosive goods).
  • Ancient Powerator
  • This is used to generate credits for orders. Ideally used to consume excess power from an upgraded turbine.
  • Bounty Pad
  • A quantum pad that teleports any materials of value into our black market vendors. Credits sold is deposited instantaneously into the SSV Dauntless account.
  • Bounty Control Terminal
  • This is used to activate the bounty pad to sell goods. Install into a computer frame and link the bounty pad using a multi-tool.

Please note: Physical money can be directly sent to our black market vendors to be exchanged into credits.

"; - name = "paper- 'SSV Dauntless Cargo Guide'" - }, -/turf/open/floor/noslip/tram, -/area/space) -"gA" = ( -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"gC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"gF" = ( -/obj/machinery/door/airlock/highsecurity, -/turf/open/floor/mineral/plastitanium, -/area/space) -"gG" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/stone, -/area/space) -"gK" = ( -/obj/machinery/computer/arcade/minesweeper{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/space) -"gM" = ( -/obj/structure/chair/sofa/corner/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"gN" = ( -/turf/open/floor/iron/colony/texture, -/area/space) -"gR" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/wood/parquet, -/area/space) -"gS" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"gT" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"gV" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/monkeycubes/syndicate{ - pixel_y = 5 - }, -/obj/item/storage/box/monkeycubes/syndicate{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/iron/textured, -/area/space) -"gX" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/sign/poster/official/there_is_no_gas_giant/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/space) -"hb" = ( -/obj/machinery/button/polarizer{ - name = "Hanger doors"; - id = "syndihanger"; - pixel_x = 24 - }, -/turf/open/floor/iron/colony/bolts, -/area/space) -"hc" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"hh" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/conveyor/auto{ - id = "syndicargo" - }, -/obj/structure/plasticflaps, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"hi" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"hk" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/wood/large, -/area/space) -"hm" = ( -/obj/effect/mapping_helpers/dead_body_placer, -/obj/machinery/harvester, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"hn" = ( -/obj/structure/table/wood, -/obj/structure/bedsheetbin/basket, -/obj/structure/sign/poster/contraband/blasto_detergent/directional/west, -/turf/open/floor/iron/white/small, -/area/space) -"hp" = ( -/obj/machinery/vending/deforest_medvend{ - pixel_x = 30; - onstation = 0; - density = 0 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/space) -"hr" = ( -/obj/structure/sign/warning/radiation/directional/east, -/obj/structure/emergency_shield/cult/weak{ - desc = "A low energy shield used to protect a ship from various fauna attacks." - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"hs" = ( -/obj/machinery/suit_storage_unit/industrial/syndicatemining, -/turf/open/floor/iron/colony/texture{ - icon_state = "colony_grey" - }, -/area/space) -"ht" = ( -/obj/structure/chair/comfy/carp, -/obj/machinery/firealarm/directional/north, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"hu" = ( -/obj/structure/sauna_oven, -/turf/open/floor/iron/terracotta/small, -/area/space) -"hw" = ( -/obj/machinery/computer/records/medical/syndie{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/space) -"hy" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"hA" = ( -/obj/structure/cable, -/obj/structure/fireaxecabinet/mechremoval/directional/north, -/turf/open/floor/iron/recharge_floor, -/area/space) -"hF" = ( -/obj/machinery/atmospherics/miner/carbon_dioxide, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/door/window/survival_pod/left/directional/east{ - name = "Atmos Access Hatch" - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"hG" = ( -/obj/structure/sign/painting/large/library{ - pixel_y = 30 - }, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"hI" = ( -/obj/structure/noticeboard/directional/north, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/item/paper{ - default_raw_text = "

SSV Dauntless Landing Report

The SSV Dauntless has successfully landed itself near active Nanotrasen installations. Engine shutdown in progress...

Active syndicate operatives have been transferred over to the target NT workplace and are NOT to be interacted with under any circumstances, unless Syndicate Command allows it. While it's inevitable for Nanotrasen miners to stumble into the ship, detection by wider Nanotrasen facilities will result in this being the Dauntless' last mission. It is critical you maintain opperational security. Keep her safe. Permission to monitor their activities is granted and heavily suggested.

Stay winning.

"; - name = "paper- 'SSV Dauntless Landing Report'" - }, -/obj/item/paper/monitorkey{ - pixel_x = -6 - }, -/obj/item/paper/fluff/jobs/engineering/frequencies{ - pixel_x = 4 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"hJ" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/computer/quantum_console{ - dir = 4 - }, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/dark/small, -/area/space) -"hL" = ( -/obj/machinery/atmospherics/components/unary/bluespace_sender, -/turf/open/floor/plating/reinforced, -/area/space) -"hM" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"hN" = ( -/obj/structure/sign/painting/eldritch/vines{ - pixel_y = -30 - }, -/obj/structure/cable, -/turf/open/floor/iron/dark, -/area/space) -"hO" = ( -/obj/item/crowbar/power/syndicate, -/obj/item/crowbar/power/syndicate{ - pixel_y = 5 - }, -/obj/item/crowbar/power/syndicate{ - pixel_y = 10 - }, -/obj/structure/rack/shelf, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"hP" = ( -/obj/machinery/button/door/directional/west{ - id = "syndihanger"; - name = "Docking Port Blast Doors"; - req_access = list("syndicate"); - pixel_x = 0; - pixel_y = 21 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"hQ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/monitored/incinerator_input{ - dir = 1; - chamber_id = "dauntless_turbine" - }, -/turf/open/floor/engine, -/area/space) -"hR" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/side{ - dir = 4 - }, -/area/space) -"hT" = ( -/obj/machinery/biogenerator/food_replicator, -/obj/structure/curtain/cloth{ - color = "#333333" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"hV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"hW" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/autolathe/hacked, -/turf/open/floor/iron/textured, -/area/space) -"hX" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/iron/textured, -/area/space) -"if" = ( -/obj/item/toy/basketball, -/turf/open/floor/iron/showroomfloor, -/area/space) -"ig" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/door/window/survival_pod/left/directional/south{ - req_access = list("syndicate") - }, -/obj/machinery/door/window/survival_pod/left/directional/north{ - req_access = list("syndicate_leader") - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ii" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plating/reinforced, -/area/space) -"il" = ( -/obj/structure/fireplace, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/obj/item/stack/sheet/mineral/wood/fifty, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"im" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"iq" = ( -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"ir" = ( -/obj/structure/chair/sofa/bench/right{ - dir = 8 - }, -/obj/structure/closet/generic/wall{ - pixel_x = 32 - }, -/turf/open/floor/iron/white/small, -/area/space) -"iv" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"iw" = ( -/obj/machinery/smartfridge/food, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"ix" = ( -/obj/structure/fans/tiny/forcefield, -/obj/machinery/door/poddoor{ - id = "syndimining" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"iy" = ( -/obj/machinery/computer/arcade/battle{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/space) -"iz" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"iB" = ( -/obj/structure/rack/shelf, -/obj/item/clothing/glasses/meson/night, -/obj/item/suit_voucher, -/obj/item/tank/internals/emergency_oxygen/double, -/obj/item/pickaxe, -/obj/item/mining_voucher, -/obj/item/storage/belt/mining/vendor, -/turf/open/floor/iron/colony/texture{ - icon_state = "colony_grey" - }, -/area/space) -"iC" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/corner, -/area/space) -"iD" = ( -/obj/structure/fans/tiny/forcefield{ - dir = 4 - }, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 4 - }, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 8 - }, -/obj/machinery/door/poddoor{ - id = "syndihanger"; - name = "Docking Port Blast Doors" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"iE" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/ecto_sniffer, -/turf/open/floor/iron/textured, -/area/space) -"iG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/warning/electric_shock/directional/south, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"iH" = ( -/obj/machinery/xenoarch/digger, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/stone, -/area/space) -"iO" = ( -/obj/machinery/mineral/stacking_unit_console{ - pixel_y = 32; - id = "syndistack" - }, -/obj/machinery/mineral/stacking_machine{ - id = "syndistack" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"iP" = ( -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/mineral/plastitanium, -/area/space) -"iQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8; - external_pressure_bound = 140; - name = "server vent"; - pressure_checks = 0 - }, -/obj/structure/sign/departments/xenobio/directional/north, -/turf/open/floor/circuit/telecomms, -/area/space) -"iS" = ( -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"iU" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/door/window/survival_pod/left/directional/north{ - req_access = list("syndicate") - }, -/obj/machinery/door/window/survival_pod/left/directional/south{ - req_access = list("syndicate_leader") - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"iZ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/conveyor/auto{ - id = "syndicargo" - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ja" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/restraints/handcuffs/cable/zipties, -/obj/item/book/manual/wiki/infections{ - pixel_y = 7 - }, -/obj/item/storage/box/syringes, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/turf/open/floor/iron/dark, -/area/space) -"jc" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/door/airlock/vault{ - name = "Vault"; - id_tag = "syndiship_vault" - }, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/locked, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"je" = ( -/obj/effect/turf_decal/vg_decals/atmos/oxygen, -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible/layer2{ - dir = 4 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"jg" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"ji" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"jk" = ( -/obj/structure/toilet{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/space) -"jm" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"jn" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/machinery/camera/autoname/directional/east{ - network = list("dauntless"); - pixel_y = 8 - }, -/turf/open/floor/iron/dark, -/area/space) -"ju" = ( -/obj/machinery/computer/crew/syndie{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/item/radio/intercom/directional/east{ - name = "two-way prisoner intercom"; - freerange = 1; - freqlock = 1; - frequency = 1245; - pixel_x = 0; - pixel_y = -30 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"jv" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"jw" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/stone, -/area/space) -"jy" = ( -/obj/machinery/suit_storage_unit/industrial/bloodredsuit{ - req_access = list("syndicate") - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"jB" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "dauntless_interrogation" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"jC" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/coffeemaker, -/turf/open/floor/mineral/plastitanium, -/area/space) -"jE" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"jF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"jH" = ( -/obj/machinery/air_sensor{ - chamber_id = "syndiship_turbine" - }, -/turf/open/floor/engine, -/area/space) -"jI" = ( -/obj/structure/closet/secure_closet/interdynefob/sa_locker{ - req_access = list("syndicate_leader") - }, -/obj/effect/turf_decal/siding/dark, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/item/modular_computer/pda/syndicate, -/turf/open/floor/carpet/red, -/area/space) -"jK" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/machinery/computer/cryopod/interdyne/directional/west, -/turf/open/floor/iron/white/small, -/area/space) -"jO" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/stone, -/area/space) -"jP" = ( -/obj/machinery/power/turbine/inlet_compressor{ - dir = 8 - }, -/turf/open/floor/engine, -/area/space) -"jQ" = ( -/obj/machinery/vending/security/noaccess{ - onstation = 0; - density = 0; - onstation_override = 1; - pixel_x = 30 - }, -/obj/machinery/suit_storage_unit/industrial/bloodredsuit{ - req_access = list("syndicate") - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"jS" = ( -/obj/structure/closet/l3closet/virology{ - name = "level 1 biohazard gear closet" - }, -/obj/item/clothing/shoes/galoshes, -/obj/item/tank/internals/oxygen, -/obj/item/clothing/mask/gas/glass, -/obj/item/healthanalyzer, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/machinery/door/window/survival_pod/left/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/space) -"jW" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"jY" = ( -/obj/machinery/vending/security/noaccess{ - onstation = 0; - density = 0; - onstation_override = 1; - pixel_y = 32 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/recharger, -/turf/open/floor/mineral/plastitanium, -/area/space) -"jZ" = ( -/obj/machinery/modular_computer/preset/engineering{ - dir = 8 - }, -/obj/machinery/button/door/directional/south{ - id = "turbine_shutters"; - name = "Turbine Shutters"; - req_access = list("syndicate") - }, -/turf/open/floor/wood, -/area/space) -"kf" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 9 - }, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"kg" = ( -/obj/structure/closet/secure_closet/interdynefob/welding_supplies, -/obj/machinery/light/cold/directional/south, -/obj/structure/sign/poster/official/safety_eye_protection/directional/south, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/item/weldingtool/hugetank, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"kh" = ( -/turf/open/floor/iron/dark/small, -/area/space) -"ki" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/mob_spawn/ghost_role/human/dauntless/syndicate/enginetech{ - dir = 1 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"kj" = ( -/obj/item/etherealballdeployer, -/obj/structure/table/wood/fancy/red, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/space) -"km" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/item/folder/syndicate{ - pixel_x = 5 - }, -/obj/item/clothing/glasses/sunglasses{ - pixel_y = 7; - pixel_x = 8 - }, -/obj/item/flashlight/lamp{ - pixel_x = -6; - pixel_y = 2 - }, -/turf/open/floor/wood/tile, -/area/space) -"kn" = ( -/obj/machinery/hydroponics/constructable/fullupgrade, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/turf/open/misc/grass/jungle/station, -/area/space) -"kr" = ( -/obj/machinery/door/airlock/security/old/glass{ - name = "General Population" - }, -/obj/effect/turf_decal/stripes/red/full, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "dauntless-sec" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/machinery/scanner_gate, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ks" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"ku" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"kv" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/door/window/survival_pod/left/directional/north{ - name = "Robotics Airlock"; - req_access = list("syndicate") - }, -/obj/structure/rack/shelf, -/obj/item/ai_module/reset/purge{ - pixel_y = -5 - }, -/obj/item/ai_module/core/full/dauntless{ - pixel_y = 3 - }, -/obj/item/ai_module/supplied/freeform{ - pixel_y = 11 - }, -/turf/open/floor/iron/textured, -/area/space) -"kw" = ( -/obj/machinery/plumbing/synthesizer/water_synth, -/turf/open/floor/noslip, -/area/space) -"ky" = ( -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"kA" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 10 - }, -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/obj/structure/cable, -/turf/open/floor/carpet/royalblack, -/area/space) -"kC" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/chair/sofa/corp/right{ - color = "#DE3A3A"; - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/space) -"kG" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/holopad, -/turf/open/floor/carpet/royalblack, -/area/space) -"kH" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 4 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"kK" = ( -/obj/structure/reagent_crafting_bench, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"kM" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/iron/white/small, -/area/space) -"kR" = ( -/obj/machinery/stasis{ - dir = 8 - }, -/obj/structure/sign/warning/no_smoking/directional/east, -/obj/effect/turf_decal/siding/thinplating{ - color = "#464d5b"; - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/space) -"kS" = ( -/obj/structure/drain/big, -/obj/structure/chair/office/tactical, -/turf/open/floor/iron/white/small, -/area/space) -"kY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/vending/cigarette/syndicate{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_y = 28 - }, -/turf/open/floor/carpet/red, -/area/space) -"la" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/noticeboard/directional/north, -/obj/machinery/computer/rdconsole, -/turf/open/floor/iron/textured, -/area/space) -"lb" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/reagentgrinder{ - pixel_y = 5 - }, -/turf/open/floor/iron/white/small, -/area/space) -"le" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, -/turf/open/floor/plating/reinforced, -/area/space) -"lf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"lh" = ( -/obj/structure/safe/floor, -/turf/open/floor/carpet/purple, -/area/space) -"li" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"ln" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/toolbox/syndicate{ - pixel_y = 5 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/textured, -/area/space) -"lp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"lr" = ( -/obj/structure/chair/office/tactical, -/turf/open/floor/stone, -/area/space) -"lt" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"lw" = ( -/obj/machinery/door/poddoor{ - id = "syndicatesauna" - }, -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/item/airbag/immediate_arm, -/obj/structure/cable, -/turf/open/floor/plating, -/area/space) -"lz" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/turf/open/floor/carpet/donk, -/area/space) -"lA" = ( -/obj/structure/closet/generic/wall{ - pixel_y = -32 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"lD" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/hoop{ - dir = 8; - pixel_x = 12 - }, -/turf/open/floor/iron/showroomfloor, -/area/space) -"lF" = ( -/obj/item/toy/figure/syndie{ - pixel_x = 3 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"lJ" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"lK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"lM" = ( -/obj/machinery/door/window/survival_pod/left/directional/east{ - req_access = list("syndicate") - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"lN" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/coffeemaker, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/space) -"lS" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"lZ" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/obj/machinery/jukebox{ - req_access = list("syndicate"); - anchored = 0 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"ma" = ( -/obj/machinery/duct, -/turf/open/floor/iron/dark/small, -/area/space) -"mc" = ( -/turf/closed/mineral/random/volcanic, -/area/space) -"md" = ( -/obj/machinery/door/airlock/highsecurity, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"me" = ( -/obj/effect/spawner/random/maintenance/two, -/obj/structure/closet/crate, -/obj/effect/spawner/random/engineering/tool, -/obj/item/t_scanner, -/obj/item/storage/toolbox/syndicate{ - pixel_y = 5 - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/obj/item/pointman_broken, -/turf/open/floor/mineral/plastitanium, -/area/space) -"mg" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "interdynebarbers"; - spawn_list = list(/obj/structure/window/reinforced/plasma/plastitanium) - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"mq" = ( -/obj/structure/chair/sofa/corp{ - color = "#DE3A3A" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/space) -"mt" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/medipens{ - pixel_x = 4; - pixel_y = 13 - }, -/obj/item/healthanalyzer, -/obj/item/clothing/neck/stethoscope{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/effect/turf_decal/siding/thinplating{ - color = "#464d5b"; - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/space) -"mv" = ( -/obj/machinery/recycler, -/obj/machinery/conveyor/auto{ - dir = 1; - id = "syndirecycle" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"mx" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/junction, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"my" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "dauntbar_w" - }, -/obj/machinery/door/poddoor{ - id = "syndihanger" - }, -/obj/item/airbag/immediate_arm, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"mz" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/atmospherics/pipe/layer_manifold/dark/visible{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"mB" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/green, -/area/space) -"mC" = ( -/obj/machinery/byteforge, -/obj/machinery/button/door/directional/west{ - desc = "Bitrunning shutters"; - id = "syndi_bitrunning" - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"mI" = ( -/obj/structure/railing/wooden_fencing/gate{ - dir = 1 - }, -/obj/structure/railing/wooden_fencing{ - dir = 4 - }, -/turf/open/misc/grass/jungle/station, -/area/space) -"mJ" = ( -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/iron/dark/small, -/area/space) -"mM" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = list("syndicate") - }, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/food/meat/slab, -/obj/item/circuitboard/machine/dish_drive, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"mN" = ( -/obj/effect/turf_decal/siding/green{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/space) -"mO" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"mR" = ( -/obj/effect/spawner/random/bureaucracy/folder, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/effect/spawner/random/bureaucracy/folder{ - pixel_x = 7; - pixel_y = 8 - }, -/obj/item/storage/briefcase/secure/white{ - pixel_y = 13 - }, -/obj/structure/table/wood/fancy/red, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/space) -"mS" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/siding/dark/corner, -/turf/open/floor/iron/white/diagonal, -/area/space) -"mT" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/turf/open/floor/wood/large, -/area/space) -"mU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/dark/textured_corner{ - dir = 1 - }, -/area/space) -"mX" = ( -/obj/effect/mob_spawn/ghost_role/human/dauntless/syndicate/brigoff, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/sign/painting/library{ - pixel_y = 30 - }, -/turf/open/floor/carpet/red, -/area/space) -"mY" = ( -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/showroomfloor, -/area/space) -"mZ" = ( -/obj/structure/chair/plastic{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/space) -"nc" = ( -/obj/structure/dresser, -/obj/item/sign/flag/syndicate{ - pixel_x = -7; - pixel_y = 13 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/turf/open/floor/wood/large, -/area/space) -"nd" = ( -/obj/structure/rack/shelf, -/obj/item/melee/baton/telescopic{ - pixel_y = 10; - pixel_x = 3 - }, -/obj/item/melee/baton/telescopic{ - pixel_x = 9; - pixel_y = 10 - }, -/obj/item/melee/baton/telescopic{ - pixel_x = -3; - pixel_y = 10 - }, -/obj/item/melee/energy/sword/saber/red{ - pixel_x = 4 - }, -/obj/item/melee/energy/sword/saber/red{ - pixel_x = -2 - }, -/obj/item/melee/energy/sword/saber/red{ - pixel_x = 10 - }, -/obj/item/melee/energy/sword/saber/purple{ - pixel_x = 16 - }, -/obj/structure/sign/poster/contraband/energy_swords/directional/west, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"nf" = ( -/obj/effect/turf_decal/stripes/red/line, -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium, -/area/space) -"nh" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/space) -"ni" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/modular_computer/laptop/preset/syndicate, -/turf/open/floor/wood/parquet, -/area/space) -"nk" = ( -/obj/machinery/status_display/department_balance{ - credits_account = "INT"; - name = "dauntless budget display"; - pixel_y = 30; - default_logo = "synd" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"nn" = ( -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/mechfab/interdyne, -/turf/open/floor/iron/textured, -/area/space) -"no" = ( -/obj/machinery/light/cold/directional/east, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"nu" = ( -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/obj/structure/table/wood/fancy/red, -/obj/item/reagent_containers/cup/glass/mug, -/turf/open/floor/carpet/donk, -/area/space) -"nw" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/grandfatherclock, -/turf/open/floor/wood/parquet, -/area/space) -"nz" = ( -/obj/structure/chair/office/tactical, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"nA" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"nB" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/middle/middle, -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"nG" = ( -/obj/machinery/xenoarch/recoverer, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/stone, -/area/space) -"nH" = ( -/obj/machinery/power/portagrav, -/turf/open/floor/plating/reinforced, -/area/space) -"nK" = ( -/mob/living/basic/lizard/tegu{ - name = "Entertains-The-Hostages" - }, -/obj/structure/bed/dogbed, -/obj/machinery/space_heater/wall_mounted/directional/north, -/obj/machinery/duct, -/turf/open/misc/grass/jungle/station, -/area/space) -"nL" = ( -/obj/structure/sign/poster/contraband/syndicate_pistol/directional/west, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"nN" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/stone, -/area/space) -"nP" = ( -/obj/structure/lattice/catwalk/mining, -/turf/open/lava/plasma/ice_moon, -/area/space) -"nS" = ( -/obj/structure/lattice/catwalk/mining, -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ - pixel_x = 8; - pixel_y = 16 - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"nT" = ( -/obj/structure/closet/crate/secure/engineering{ - name = "emergency engineering crate" - }, -/obj/item/flatpacked_machine, -/obj/item/flatpacked_machine/fuel_generator, -/obj/item/flatpacked_machine/hydro_synth, -/obj/item/flatpacked_machine/organics_ration_printer, -/obj/item/flatpacked_machine/sustenance_machine, -/obj/item/flatpacked_machine/water_synth, -/obj/item/stack/sheet/mineral/plasma{ - amount = 10 - }, -/obj/item/construction/plumbing/engineering, -/obj/item/construction/plumbing, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"nU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/carpet/red, -/area/space) -"nV" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/door/airlock/engineering/glass{ - name = "Turbine Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "rad_shutters" - }, -/obj/structure/fans/tiny, -/turf/open/floor/iron/dark/smooth_large, -/area/space) -"nX" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/sign/poster/contraband/ambrosia_vulgaris/directional/north, -/turf/open/misc/grass/jungle/station, -/area/space) -"nY" = ( -/obj/structure/bed/double/pod, -/obj/effect/spawner/random/bedsheet/any/double, -/turf/open/floor/wood/large, -/area/space) -"nZ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/fountainpens, -/obj/item/paper_bin/carbon{ - pixel_y = 3 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ob" = ( -/obj/structure/shipping_container/interdyne{ - pixel_x = -17; - pixel_y = 15 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"oe" = ( -/obj/structure/sink/kitchen/directional/west{ - pixel_x = 18 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"of" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/carpet/purple, -/area/space) -"oh" = ( -/obj/structure/shipping_container/donk_co{ - desc = "A standard-measure shipping container for bulk transport of goods. This one is from Donk Co. and so could be carrying just about anything- although it seems this one is overflowing with little Syndicate Figurines, known for being sold at a Loss."; - pixel_x = -17; - pixel_y = 15 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"oi" = ( -/obj/machinery/oven/range_frontier, -/turf/open/floor/mineral/plastitanium, -/area/space) -"oj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/chair/sofa/corp/right{ - color = "#DE3A3A"; - dir = 1 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ - dir = 6 - }, -/turf/open/floor/carpet/red, -/area/space) -"ok" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ol" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 9 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"on" = ( -/obj/structure/emergency_shield/cult/weak{ - desc = "A low energy shield used to protect a ship from various fauna attacks." - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"oo" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/xenoarch/tape_measure, -/obj/item/xenoarch/handheld_scanner, -/obj/structure/noticeboard/directional/north, -/turf/open/floor/stone, -/area/space) -"ov" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/mob_spawn/ghost_role/human/space_dauntless/syndicate/stationmed{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/space) -"ow" = ( -/obj/effect/turf_decal/siding/dark, -/obj/machinery/door/window/survival_pod/left/directional/south{ - req_access = list("syndicate") - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/white/small, -/area/space) -"oz" = ( -/obj/machinery/hydroponics/constructable, -/turf/open/misc/grass/jungle/station, -/area/space) -"oC" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/carpet/donk, -/area/space) -"oI" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/transfer_valve{ - pixel_x = -4 - }, -/obj/item/transfer_valve{ - pixel_x = 8 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"oM" = ( -/obj/structure/lattice/catwalk/mining, -/obj/machinery/button/door/directional/north{ - id = syndiengibolt"; - name = "Engineering Airlock Bolt"; - pixel_x = 24; - pixel_y = 8 - }, -/obj/machinery/button/door/directional/north{ - id = syndiengibolt"; - name = "Engineering Airlock Bolt"; - pixel_x = 24; - pixel_y = -8 - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"oO" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/part_replacer, -/obj/item/storage/box/stockparts/deluxe{ - pixel_y = 10; - pixel_x = 4 - }, -/obj/item/storage/box/stockparts/deluxe{ - pixel_x = 10 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 6 - }, -/turf/open/floor/iron/textured, -/area/space) -"oP" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/effect/turf_decal/vg_decals/numbers/three, -/turf/open/floor/engine, -/area/space) -"oQ" = ( -/obj/machinery/barsign/directional/south, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"oR" = ( -/obj/structure/chair/office/tactical{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/space) -"oS" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/dark, -/area/space) -"oT" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "syndicargo" - }, -/turf/open/floor/noslip/tram, -/area/space) -"oU" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/weightmachine, -/turf/open/floor/mineral/plastitanium, -/area/space) -"oV" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 1 - }, -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/destructive_analyzer, -/turf/open/floor/iron/textured, -/area/space) -"oW" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 2 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/research_paper, -/turf/open/floor/iron/textured, -/area/space) -"oY" = ( -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/machinery/computer/libraryconsole/bookmanagement{ - pixel_y = 7 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/dark/small, -/area/space) -"oZ" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark/corner, -/turf/open/floor/stone, -/area/space) -"pb" = ( -/obj/machinery/button{ - pixel_y = 28; - name = "Janitor's closet"; - id = "syndicatejanitor" - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -1; - pixel_y = 3 - }, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 6 - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 3; - pixel_y = 3 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"pd" = ( -/obj/structure/dresser, -/turf/open/floor/carpet/purple, -/area/space) -"pf" = ( -/obj/structure/table/wood, -/obj/item/radio/intercom/directional/east{ - name = "Interview room intercom"; - broadcasting = 1; - freerange = 1; - freqlock = 1; - frequency = 1241; - canhear_range = 1; - desc = "Surely no one is listening in!"; - pixel_x = 0; - pixel_y = -1 - }, -/turf/open/floor/wood/tile, -/area/space) -"pi" = ( -/turf/open/floor/carpet/purple, -/area/space) -"pj" = ( -/turf/open/floor/plating/elevatorshaft, -/area/space) -"pk" = ( -/obj/structure/table/wood/fancy/red, -/obj/machinery/fax{ - fax_name = "Unknown Syndicate Fax Liason"; - name = "Syndicate Company Representative Fax Machine"; - syndicate_network = 1 - }, -/turf/open/floor/wood/large, -/area/space) -"pm" = ( -/obj/machinery/computer{ - desc = "A console meant to communicate with Syndicate upper command. This one seems to be busy processing flight calculations since you last saw it..."; - icon_keyboard = "tech_key"; - icon_screen = "comm"; - name = "syndicate communications console"; - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"po" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plating/reinforced, -/area/space) -"pp" = ( -/obj/machinery/holopad, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/wood/large, -/area/space) -"pr" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/reagent_dispensers/servingdish, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/white, -/area/space) -"ps" = ( -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/stairs{ - dir = 8 - }, -/area/space) -"pv" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/carpet/stellar, -/area/space) -"pC" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible/layer2{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"pE" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"pF" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/white/diagonal, -/area/space) -"pG" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/space) -"pI" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/space) -"pJ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/biogenerator/medstation/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/chem_dispenser/drinks/beer{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/space) -"pL" = ( -/obj/structure/filingcabinet, -/turf/open/floor/iron/dark, -/area/space) -"pM" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = list("syndicate") - }, -/obj/effect/spawner/random/food_or_drink/donkpockets{ - pixel_x = -8; - pixel_y = -4 - }, -/obj/item/reagent_containers/condiment/flour, -/obj/item/reagent_containers/condiment/flour, -/obj/item/storage/fancy/egg_box, -/obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_x = 12 - }, -/obj/item/reagent_containers/condiment/rice, -/obj/item/reagent_containers/condiment/sugar, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/soymilk, -/obj/item/reagent_containers/condiment/soymilk, -/obj/item/choice_beacon/ingredient, -/obj/item/choice_beacon/ingredient, -/obj/item/storage/box/beakers{ - pixel_x = -4; - pixel_y = -2 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"pO" = ( -/obj/structure/chair/sofa/corp/left{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"pQ" = ( -/obj/structure/chair/sofa/middle/maroon, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"pR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/purple, -/area/space) -"pU" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"pV" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/syndicate_medical/directional/north, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"pW" = ( -/obj/machinery/button/door/directional/west{ - id = "syndihanger"; - name = "Docking Port Blast Doors"; - req_access = list("syndicate"); - pixel_x = 0; - pixel_y = -24 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"pX" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/stone, -/area/space) -"pZ" = ( -/turf/open/floor/carpet/stellar, -/area/space) -"qc" = ( -/obj/effect/turf_decal/siding/white{ - dir = 10 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on, -/turf/open/floor/iron/dark, -/area/space) -"qd" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"qe" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"qf" = ( -/obj/structure/fans/tiny, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ql" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/cutting_board, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"qm" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"qn" = ( -/obj/structure/sign/warning/no_smoking/directional/east, -/obj/structure/fans/tiny, -/turf/open/floor/plating/reinforced, -/area/space) -"qo" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"qr" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/structure/sign/poster/contraband/lamarr/directional/south, -/turf/open/floor/carpet/purple, -/area/space) -"qv" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/sign/poster/contraband/kudzu/directional/west, -/turf/open/floor/stone, -/area/space) -"qz" = ( -/obj/item/flashlight/lamp/green{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/structure/table/wood/fancy/red, -/turf/open/floor/carpet/red, -/area/space) -"qC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 1 - }, -/obj/structure/fireplace, -/obj/item/stack/sheet/mineral/wood/fifty, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"qF" = ( -/obj/item/radio/intercom/command/directional/east, -/obj/machinery/computer/camera_advanced/syndie{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"qG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/space) -"qK" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"qM" = ( -/obj/machinery/button/ignition/incinerator{ - id = "syndiship_igniter"; - pixel_y = -25; - pixel_x = 8; - name = "Ignition" - }, -/obj/machinery/button/door/directional{ - id = "syndiship_turbine_lock"; - pixel_y = -25; - pixel_x = -8; - name = "Turbine Bolt Control"; - normaldoorcontrol = 1; - specialfunctions = 4; - req_access = list("syndicate") - }, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"qQ" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/cable, -/obj/machinery/portable_atmospherics/canister/anesthetic_mix, -/turf/open/floor/iron/dark, -/area/space) -"qS" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/space) -"qT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/carpet/red, -/area/space) -"qW" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/biogenerator/foodricator, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"qX" = ( -/obj/structure/cargo_shelf, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"qZ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8 - }, -/obj/effect/turf_decal/vg_decals/atmos/oxygen, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"ra" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"rb" = ( -/obj/structure/cargo_shelf, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/effect/mapping_helpers/airalarm/tlv_cold_room, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"rc" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/chair/comfy/carp, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/purple, -/area/space) -"re" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/vg_decals/numbers/five, -/turf/open/floor/engine, -/area/space) -"rg" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"rj" = ( -/obj/effect/mob_spawn/ghost_role/human/dauntless/command/masteratarms, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/sign/painting/library{ - pixel_y = 30 - }, -/turf/open/floor/carpet/red, -/area/space) -"rk" = ( -/obj/machinery/dryer{ - pixel_y = 25 - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/small, -/area/space) -"rp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/iron/dark/small, -/area/space) -"rq" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/mineral/plastitanium, -/area/space) -"rr" = ( -/obj/structure/cable, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"rs" = ( -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/stone, -/area/space) -"rv" = ( -/obj/structure/fireplace, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"rz" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/purple, -/area/space) -"rI" = ( -/obj/machinery/door/window/survival_pod/left/directional/south{ - req_access = list("syndicate"); - name = "Turbine Access" - }, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"rJ" = ( -/obj/structure/bodycontainer/morgue{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"rM" = ( -/obj/effect/turf_decal/tile/dark_red{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/space) -"rN" = ( -/obj/machinery/vending/donksnack{ - onstation = 0; - onstation_override = 1; - pixel_x = 32; - density = 0 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"rP" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/test_tube_rack, -/obj/item/reagent_containers/dropper{ - pixel_y = -6 - }, -/turf/open/floor/iron/dark, -/area/space) -"rQ" = ( -/obj/structure/fans/tiny/forcefield{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/corner, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 4 - }, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 8 - }, -/obj/machinery/door/poddoor{ - id = "syndihanger"; - name = "Docking Port Blast Doors" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"rS" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer2{ - dir = 6 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"rT" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/closet/generic/wall{ - pixel_y = -32 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"rU" = ( -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"rV" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/chem_dispenser/drinks{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/space) -"rW" = ( -/obj/structure/punching_bag, -/obj/item/reagent_containers/cup/glass/waterbottle{ - pixel_x = 11 - }, -/turf/open/floor/iron/white/small, -/area/space) -"sj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/safe/floor, -/turf/open/floor/carpet/stellar, -/area/space) -"sl" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/plating/reinforced, -/area/space) -"sn" = ( -/obj/machinery/chem_master/condimaster, -/obj/machinery/smartfridge/chemistry{ - density = 0; - pixel_x = 32 - }, -/turf/open/floor/iron/white, -/area/space) -"so" = ( -/obj/machinery/photocopier, -/turf/open/floor/iron/dark, -/area/space) -"sq" = ( -/obj/effect/turf_decal/siding/thinplating{ - dir = 6 - }, -/obj/structure/sink/directional/south, -/obj/machinery/vending/syndichem{ - pixel_x = 30; - onstation = 0; - onstation_override = 1 - }, -/turf/open/floor/noslip/tram, -/area/space) -"sr" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/carpet/royalblack, -/area/space) -"su" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 4 - }, -/obj/machinery/vending/games{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_x = 28 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"sy" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/machinery/door/window/survival_pod/left/directional/north{ - name = "Genetics Airlock"; - req_access = list("syndicate") - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/space) -"sF" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"sI" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/sign/poster/official/periodic_table/directional/west, -/obj/machinery/chem_heater/withbuffer, -/turf/open/floor/iron/white/small, -/area/space) -"sJ" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/floor/stone, -/area/space) -"sK" = ( -/obj/structure/railing/wooden_fencing/gate{ - dir = 1 - }, -/obj/structure/railing/wooden_fencing{ - dir = 8 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"sL" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/structure/bed/double/pod, -/obj/effect/spawner/random/bedsheet/any/double, -/turf/open/floor/carpet/purple, -/area/space) -"sN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/wood/large, -/area/space) -"sP" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/canvas/drawingtablet, -/turf/open/floor/carpet/red, -/area/space) -"sT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"sU" = ( -/obj/effect/turf_decal/vg_decals/atmos/plasma, -/obj/machinery/atmospherics/components/binary/valve/digital{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"sZ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/lipstick/syndie, -/obj/item/lipstick/hypnosyndie{ - pixel_y = -3; - pixel_x = -3 - }, -/obj/item/lipstick/quantum{ - pixel_x = 9; - pixel_y = 4 - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"ta" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 9 - }, -/turf/open/floor/iron/showroomfloor, -/area/space) -"td" = ( -/obj/structure/chair/sofa/corp, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"te" = ( -/obj/structure/cargo_shelf, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/noslip/tram, -/area/space) -"th" = ( -/obj/structure/reagent_water_basin, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"ti" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/turf/open/floor/iron/showroomfloor, -/area/space) -"tj" = ( -/obj/structure/sink/kitchen/directional/east, -/obj/machinery/duct, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"tk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/turf/open/floor/iron/colony/texture{ - icon_state = "colony_grey" - }, -/area/space) -"tl" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/wood/large, -/area/space) -"tn" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"tq" = ( -/obj/structure/chair/sofa/bench/right, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"ts" = ( -/obj/machinery/atmospherics/components/unary/portables_connector{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"tu" = ( -/turf/open/floor/noslip/tram, -/area/space) -"tz" = ( -/obj/structure/bed/double/pod{ - dir = 1 - }, -/obj/item/bedsheet/medical/double{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/space) -"tB" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"tC" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/vg_decals/numbers/four, -/obj/machinery/camera/autoname/directional/west{ - network = list("dauntless_xeno"); - pixel_y = -23 - }, -/turf/open/floor/engine, -/area/space) -"tD" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/green, -/area/space) -"tF" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"tJ" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"tM" = ( -/obj/machinery/computer/cryopod/interdyne/directional/south, -/obj/machinery/cryopod{ - dir = 1 - }, -/turf/open/floor/iron/dark/small, -/area/space) -"tN" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/storage/photo_album/syndicate{ - pixel_x = 8; - pixel_y = 5 - }, -/obj/item/camera{ - pixel_x = -9; - pixel_y = 6 - }, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"tP" = ( -/turf/open/floor/iron/white/small, -/area/space) -"tR" = ( -/obj/machinery/light/small/directional/west, -/obj/machinery/computer/turbine_computer{ - mapping_id = "dauntless_turbine"; - dir = 4 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"tT" = ( -/obj/structure/closet/secure_closet/interdynefob/brig_officer_locker, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/red, -/area/space) -"tV" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/xenoarch/scanner, -/turf/open/floor/stone, -/area/space) -"tW" = ( -/obj/machinery/atmospherics/components/binary/tank_compressor, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"tY" = ( -/obj/structure/chair/sofa/left/maroon{ - dir = 4 - }, -/turf/open/floor/carpet/purple, -/area/space) -"tZ" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/turf/open/floor/iron/textured, -/area/space) -"ub" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/space) -"ui" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/cable, -/obj/machinery/power/smes/full, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"uj" = ( -/obj/machinery/portable_atmospherics/canister/bz, -/turf/open/floor/iron/textured, -/area/space) -"uk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/floor/engine/co2, -/area/space) -"ul" = ( -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/circuit_imprinter/offstation, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/textured, -/area/space) -"up" = ( -/obj/structure/sink/kitchen/directional/east, -/turf/open/floor/iron/terracotta/small, -/area/space) -"ur" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ut" = ( -/obj/structure/chair/sofa/right/maroon{ - dir = 4 - }, -/turf/open/floor/carpet/purple, -/area/space) -"uD" = ( -/obj/structure/bed/double/pod{ - dir = 1 - }, -/obj/effect/spawner/random/bedsheet/any/double{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"uE" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/toolbox/syndicate{ - pixel_y = 5 - }, -/obj/machinery/cell_charger_multi/wall_mounted/directional/north, -/turf/open/floor/iron/textured, -/area/space) -"uF" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/wood/large, -/area/space) -"uH" = ( -/obj/machinery/monkey_recycler, -/turf/open/floor/iron/textured, -/area/space) -"uI" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 2; - icon_state = "siding_plain_end" - }, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"uK" = ( -/obj/machinery/research/anomaly_refinery, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"uL" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"uM" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/towel_bin, -/turf/open/floor/iron/white/small, -/area/space) -"uQ" = ( -/turf/open/lava/plasma/ice_moon, -/area/space) -"uR" = ( -/obj/structure/dresser, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"uV" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"uW" = ( -/obj/structure/railing/wooden_fencing{ - dir = 1 - }, -/obj/structure/railing/wooden_fencing{ - dir = 8 - }, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"vb" = ( -/obj/structure/sign/poster/official/moth_piping/directional/north, -/turf/open/floor/plating/reinforced, -/area/space) -"vc" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/turf/open/floor/wood, -/area/space) -"vd" = ( -/obj/structure/closet/secure_closet/dauntless/munitions_locker, -/turf/open/floor/mineral/plastitanium, -/area/space) -"vg" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 1 - }, -/turf/open/floor/engine, -/area/space) -"vh" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/reagentgrinder{ - pixel_y = 6 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/turf/open/floor/iron/textured, -/area/space) -"vi" = ( -/obj/machinery/atmospherics/miner/plasma, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/door/window/survival_pod/left/directional/east{ - name = "Atmos Access Hatch" - }, -/turf/open/floor/engine/plasma, -/area/space) -"vj" = ( -/obj/structure/reagent_dispensers/water_cooler, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/space) -"vl" = ( -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/wood, -/area/space) -"vp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/bed/double, -/obj/item/bedsheet/syndie/double, -/obj/effect/spawner/random/entertainment/plushie_delux, -/turf/open/floor/carpet/red, -/area/space) -"vr" = ( -/obj/machinery/xenoarch/researcher, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/stone, -/area/space) -"vs" = ( -/obj/structure/extinguisher_cabinet/directional/north, -/obj/item/card/id/advanced/prisoner/ds2{ - pixel_y = 8; - trim = /datum/id_trim/syndicom/skyrat/ds2/prisoner - }, -/obj/item/card/id/advanced/prisoner/ds2{ - pixel_y = 4; - trim = /datum/id_trim/syndicom/skyrat/ds2/prisoner - }, -/obj/item/card/id/advanced/prisoner/ds2, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/mineral/plastitanium, -/area/space) -"vt" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/sign/painting/library{ - pixel_y = 30 - }, -/obj/item/modular_computer/laptop/preset/syndicate, -/turf/open/floor/mineral/plastitanium, -/area/space) -"vu" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/sink/kitchen/directional/east, -/turf/open/floor/iron/white, -/area/space) -"vx" = ( -/turf/open/floor/engine, -/area/space) -"vz" = ( -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/space_heater, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer2, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"vA" = ( -/obj/machinery/computer/order_console/mining/interdyne, -/turf/open/floor/mineral/plastitanium, -/area/space) -"vB" = ( -/obj/structure/mop_bucket/janitorialcart, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"vC" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/wood/large, -/area/space) -"vF" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/reagent_containers/cup/glass/mug, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"vH" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/turf/open/misc/grass/jungle/station, -/area/space) -"vL" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/firingpins/syndicate, -/obj/item/storage/box/firingpins/syndicate{ - pixel_x = -2; - pixel_y = 6 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"vM" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/plantgenes, -/turf/open/floor/stone, -/area/space) -"vO" = ( -/obj/structure/safe/floor, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/purple, -/area/space) -"vP" = ( -/obj/structure/chair/sofa/bench, -/obj/structure/chair/sofa/bench, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"vQ" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/obj/machinery/chem_master, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/sign/poster/official/moth_meth/directional/north, -/turf/open/floor/iron/white/small, -/area/space) -"vU" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/royalblack, -/area/space) -"vW" = ( -/obj/machinery/button/polarizer{ - name = "Barber Windows"; - id = "interdynebarbers"; - pixel_x = 24 - }, -/obj/structure/cable, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"vZ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/xenoarch/brush, -/obj/item/xenoarch/hammer/cm1, -/obj/item/xenoarch/hammer/cm10, -/obj/item/xenoarch/hammer/cm2, -/obj/item/xenoarch/hammer/cm3, -/obj/item/xenoarch/hammer/cm4, -/obj/item/xenoarch/hammer/cm5, -/obj/item/xenoarch/hammer/cm6, -/obj/item/storage/belt/utility/xenoarch, -/turf/open/floor/stone, -/area/space) -"wc" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/space) -"wg" = ( -/obj/structure/fireplace, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"wh" = ( -/obj/machinery/mineral/stacking_machine{ - id_tag = "dauntless" - }, -/obj/structure/fans/tiny, -/turf/open/floor/plating/reinforced, -/area/space) -"wi" = ( -/obj/effect/turf_decal/vg_decals/radiation, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"wk" = ( -/obj/machinery/power/turbine/core_rotor{ - dir = 8; - mapping_id = "dauntless_turbine" - }, -/obj/structure/cable, -/turf/open/floor/engine, -/area/space) -"wl" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/microwave{ - pixel_y = 28 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"wo" = ( -/obj/structure/chair/comfy/shuttle/tactical, -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"wq" = ( -/obj/structure/closet/generic/wall{ - pixel_x = -32 - }, -/obj/item/modular_computer/pda/syndicate, -/turf/open/floor/carpet/donk, -/area/space) -"wt" = ( -/obj/structure/closet/secure_closet/interdynefob/cl_locker, -/turf/open/floor/wood/large, -/area/space) -"wv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"wy" = ( -/obj/machinery/button/door/directional/west{ - id = "syndimining"; - name = "Blast Doors"; - req_access = list("syndicate"); - pixel_x = 0; - pixel_y = -24 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"wz" = ( -/obj/machinery/shower/directional/west, -/obj/structure/drain, -/turf/open/floor/noslip, -/area/space) -"wA" = ( -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 9 - }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/obj/structure/hedge, -/obj/structure/sign/painting/library{ - pixel_x = -30 - }, -/obj/structure/sign/painting/large/library{ - pixel_y = 30 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"wC" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/carpet/stellar, -/area/space) -"wD" = ( -/obj/machinery/duct, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"wH" = ( -/obj/item/toy/figure/syndie{ - pixel_x = -5 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"wI" = ( -/obj/structure/chair/sofa/corp/right{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"wJ" = ( -/obj/structure/sign/painting/library{ - pixel_y = 30 - }, -/obj/structure/table/wood/fancy/red, -/obj/item/stamp/denied{ - pixel_x = 8; - pixel_y = 6 - }, -/obj/item/stamp{ - pixel_x = 8; - pixel_y = 1 - }, -/obj/item/paper_bin/carbon{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/pen/fountain/captain{ - name = "Liason's fountain pen"; - pixel_y = 5 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/space) -"wL" = ( -/obj/structure/closet/crate/hydroponics, -/obj/item/paper/guides/jobs/hydroponics, -/obj/item/seeds/onion, -/obj/item/seeds/garlic, -/obj/item/seeds/potato, -/obj/item/seeds/tomato, -/obj/item/seeds/carrot, -/obj/item/seeds/grass, -/obj/item/seeds/ambrosia, -/obj/item/seeds/wheat, -/obj/item/seeds/pumpkin, -/obj/effect/spawner/random/contraband/prison, -/obj/item/seeds/tower, -/obj/item/seeds/tobacco, -/obj/item/reagent_containers/cup/watering_can, -/obj/item/cultivator, -/obj/item/plant_analyzer, -/obj/item/secateurs, -/obj/item/shovel/spade, -/obj/item/seeds/chili, -/obj/item/seeds/pumpkin, -/obj/item/seeds/coffee, -/obj/effect/spawner/random/food_or_drink/seed_rare, -/obj/effect/spawner/random/food_or_drink/seed_rare, -/obj/effect/spawner/random/food_or_drink/seed_rare, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/obj/effect/spawner/random/food_or_drink/seed, -/turf/open/misc/grass/jungle/station, -/area/space) -"wM" = ( -/obj/machinery/sleeper/syndie/fullupgrade{ - dir = 8 - }, -/obj/machinery/biogenerator/medstation/directional/east, -/obj/effect/turf_decal/siding/thinplating{ - color = "#464d5b"; - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/space) -"wO" = ( -/obj/machinery/modular_computer/preset/curator{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"wQ" = ( -/obj/structure/bed/dogbed, -/mob/living/basic/pet/fox{ - name = "Rhials"; - faction = list("neutral","Syndicate") - }, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"wR" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/jumbo_bar/directional/south, -/turf/open/floor/mineral/plastitanium, -/area/space) -"wS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"wT" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/duct, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"wU" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/conveyor/auto{ - dir = 10; - id = "syndicargo" - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"wV" = ( -/obj/structure/closet/l3closet/janitor, -/obj/item/soap/syndie, -/obj/item/clothing/shoes/galoshes, -/turf/open/floor/mineral/plastitanium, -/area/space) -"wW" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/effect/turf_decal/tile/dark_red{ - dir = 1 - }, -/obj/machinery/door/window/survival_pod/left/directional/east{ - name = "Slime Pacification Chamber" - }, -/turf/open/floor/engine, -/area/space) -"xa" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"xb" = ( -/obj/machinery/computer/arcade/orion_trail{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/space) -"xd" = ( -/obj/structure/filingcabinet, -/obj/item/folder/syndicate/red, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"xe" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/gun_maintenance_supplies, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"xf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east{ - dir = 6 - }, -/turf/open/floor/carpet/red, -/area/space) -"xi" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/chair/sofa/corp/left{ - color = "#DE3A3A"; - dir = 4 - }, -/obj/effect/spawner/random/entertainment/plushie, -/turf/open/floor/iron/dark, -/area/space) -"xm" = ( -/obj/machinery/food_cart, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"xq" = ( -/obj/machinery/status_display/door_timer{ - id = "Syndicate Cell"; - name = "Syndicate Holding Cell"; - pixel_y = 32; - req_access = list("syndicate") - }, -/obj/machinery/computer/security/dauntless{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/space) -"xr" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 8 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"xs" = ( -/obj/structure/chair/office/tactical{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/space) -"xu" = ( -/obj/structure/chair/sofa/bench, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"xw" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 10 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/stone, -/area/space) -"xx" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/turf_decal/tile/dark_red/full, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"xy" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/duct, -/turf/open/floor/stone, -/area/space) -"xz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/vending/wardrobe/chef_wardrobe{ - pixel_x = -28; - density = 0; - onstation = 0; - onstation_override = 1 - }, -/obj/structure/cable, -/turf/open/floor/carpet/green, -/area/space) -"xC" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"xE" = ( -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"xK" = ( -/obj/item/toy/mecha/mauler{ - pixel_y = 16 - }, -/obj/item/toy/mecha/deathripley{ - pixel_x = -16; - pixel_y = 8 - }, -/obj/item/toy/figure/syndie, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/mineral/plastitanium, -/area/space) -"xL" = ( -/turf/open/floor/iron/textured, -/area/space) -"xM" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/effect/turf_decal/siding/thinplating/dark, -/turf/open/floor/stone, -/area/space) -"xN" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/dark/small, -/area/space) -"xR" = ( -/turf/open/floor/iron/showroomfloor, -/area/space) -"xS" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/kirbyplants/random{ - pixel_y = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"xU" = ( -/obj/machinery/computer/monitor{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"xV" = ( -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/space) -"xW" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/cup/glass/mug, -/obj/item/kirbyplants/random, -/turf/open/floor/wood/large, -/area/space) -"xX" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"yb" = ( -/obj/structure/safe/floor, -/obj/item/radio/headset/interdyne/command, -/turf/open/floor/carpet/red, -/area/space) -"yd" = ( -/obj/machinery/smartfridge/chemistry, -/turf/open/floor/iron/white, -/area/space) -"yi" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/space) -"yj" = ( -/obj/structure/safe/floor, -/obj/item/implanter/interdyne, -/obj/item/implanter/interdyne, -/obj/item/implanter/interdyne, -/obj/item/implanter/interdyne, -/obj/item/sign/flag/syndicate{ - pixel_x = -3; - pixel_y = 6 - }, -/obj/item/radio/headset/interdyne, -/turf/open/floor/carpet/red, -/area/space) -"yk" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"yl" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/colony/bolts, -/area/space) -"ym" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"yo" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ys" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/door/window/survival_pod/left/directional/east, -/turf/open/floor/iron/white/small, -/area/space) -"yt" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/mob/living/carbon/human/species/monkey, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"yv" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"yw" = ( -/obj/structure/disposalpipe/trunk, -/turf/open/floor/mineral/plastitanium, -/area/space) -"yx" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/bucket/wooden{ - pixel_x = -9; - pixel_y = 7 - }, -/obj/item/stack/sheet/mineral/wood/fifty, -/turf/open/floor/iron/terracotta/small, -/area/space) -"yy" = ( -/turf/open/floor/stone, -/area/space) -"yB" = ( -/obj/structure/disposalpipe/trunk, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/mineral/plastitanium, -/area/space) -"yC" = ( -/obj/machinery/light/cold/directional/north, -/turf/open/floor/plating/reinforced, -/area/space) -"yD" = ( -/obj/machinery/door/airlock/security/old/glass{ - name = "General Population Access" - }, -/obj/effect/turf_decal/stripes/red/full, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "dauntless-sec" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"yE" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/forging/hammer, -/obj/item/forging/tongs, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"yF" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"yG" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"yH" = ( -/obj/structure/bed/double{ - dir = 1 - }, -/obj/item/bedsheet/hos/double{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/carpet/red, -/area/space) -"yI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 8 - }, -/obj/structure/sign/painting/library{ - pixel_x = -30 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"yJ" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/middle/left, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"yK" = ( -/obj/structure/chair/comfy/shuttle/tactical{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"yL" = ( -/obj/machinery/door/poddoor{ - id = syndi_bitrunning - }, -/obj/structure/fans/tiny/forcefield, -/turf/open/floor/mineral/plastitanium, -/area/space) -"yN" = ( -/obj/machinery/light/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/tile/dark_red{ - dir = 4 - }, -/turf/open/floor/engine, -/area/space) -"yT" = ( -/obj/machinery/button/door/directional/west{ - id = "syndihanger"; - name = "Docking Port Blast Doors"; - req_access = list("syndicate"); - pixel_x = 24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/effect/spawner/random/structure/crate, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/plating/reinforced, -/area/space) -"yW" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/north, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"zd" = ( -/obj/machinery/duct, -/turf/open/floor/iron/white/small, -/area/space) -"zi" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/weightmachine/weightlifter, -/turf/open/floor/mineral/plastitanium, -/area/space) -"zj" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/space) -"zk" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"zl" = ( -/obj/machinery/door/airlock/multi_tile/metal{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"zm" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/turf/open/floor/iron/dark/small, -/area/space) -"zn" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"zo" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/turf/open/floor/stone, -/area/space) -"zp" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium, -/area/space) -"zr" = ( -/obj/structure/drain, -/turf/open/floor/iron/white/small, -/area/space) -"zs" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/fancy/cigarettes/cigpack_syndicate{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/lighter/skull, -/obj/machinery/pollution_scrubber, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 9 - }, -/turf/open/floor/wood/large, -/area/space) -"zt" = ( -/obj/structure/fans/tiny, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"zv" = ( -/obj/machinery/duct, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/dark/small, -/area/space) -"zw" = ( -/obj/structure/table/wood, -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/iron/colony/texture{ - icon_state = "colony_white" - }, -/area/space) -"zz" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/turf/open/floor/plating/reinforced, -/area/space) -"zD" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/item/reagent_containers/cup/maunamug, -/turf/open/floor/carpet/donk, -/area/space) -"zF" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/obj/machinery/biogenerator/medstation/directional/south, -/turf/open/misc/grass/jungle/station, -/area/space) -"zG" = ( -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/plating/reinforced, -/area/space) -"zI" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/trimline/dark_red/filled/line, -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"zK" = ( -/obj/structure/chair/sofa/corp/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"zN" = ( -/obj/structure/closet/crate/medical, -/obj/item/storage/backpack/duffelbag/syndie/surgery, -/obj/machinery/door/window/survival_pod/left/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/item/survivalcapsule/chemistry, -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/turf/open/floor/iron/dark, -/area/space) -"zP" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"zS" = ( -/obj/machinery/hydroponics/constructable/fullupgrade, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/misc/grass/jungle/station, -/area/space) -"zV" = ( -/obj/structure/table/optable, -/obj/machinery/defibrillator_mount/charging{ - pixel_y = 24 - }, -/obj/item/defibrillator/loaded, -/turf/open/floor/iron/white/small, -/area/space) -"zX" = ( -/obj/structure/disposalpipe/trunk, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"Aa" = ( -/obj/structure/closet/secure_closet/interdynefob/armory_gear_locker, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ae" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/barricade, -/obj/item/storage/barricade, -/obj/item/storage/box/handcuffs, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Af" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "turbine_shutters" - }, -/obj/item/airbag/immediate_arm, -/turf/open/floor/plating, -/area/space) -"Ak" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/royalblue, -/area/space) -"Am" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"Ao" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "turbine_shutters" - }, -/obj/machinery/atmospherics/pipe/smart/simple/dark{ - dir = 6 - }, -/obj/item/airbag/immediate_arm, -/turf/open/floor/plating, -/area/space) -"Ap" = ( -/obj/structure/bed/double/pod, -/obj/effect/spawner/random/bedsheet/any/double, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/purple, -/area/space) -"Aq" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Ar" = ( -/obj/machinery/computer/piratepad_control/syndiepad{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/noslip/tram, -/area/space) -"As" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ay" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/mineral/titanium/white, -/area/space) -"Az" = ( -/obj/machinery/door/airlock/security/old/glass{ - name = "General Population" - }, -/obj/effect/turf_decal/stripes/red/full, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "dauntless-sec" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/scanner_gate, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"AA" = ( -/obj/machinery/computer/pandemic, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/iron/dark, -/area/space) -"AH" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/space) -"AQ" = ( -/obj/structure/chair/sofa/corp/corner, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"AR" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/turf/open/floor/iron/showroomfloor, -/area/space) -"AS" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"AU" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/textured, -/area/space) -"AX" = ( -/obj/effect/turf_decal/siding/wood, -/obj/item/encryptionkey/syndicate, -/obj/structure/safe, -/obj/item/bombcore/syndicate/large, -/obj/item/radio/headset/interdyne/command, -/turf/open/floor/carpet/red, -/area/space) -"AZ" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/tile/dark_red, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/space) -"Bb" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Bl" = ( -/obj/machinery/computer/apc_control/away{ - dir = 1 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Bn" = ( -/obj/structure/closet/crate/secure/engineering, -/obj/effect/spawner/random/techstorage/data_disk{ - pixel_x = -5 - }, -/obj/effect/spawner/random/techstorage/data_disk{ - pixel_x = -5 - }, -/obj/item/storage/box/stockparts/deluxe{ - pixel_x = 3; - pixel_y = -4 - }, -/obj/item/circuitboard/machine/rtg/advanced{ - pixel_y = 5 - }, -/obj/item/circuitboard/machine/rtg/advanced{ - pixel_y = 5 - }, -/obj/item/circuitboard/machine/rtg/advanced{ - pixel_y = 5 - }, -/obj/item/circuitboard/machine/rtg/advanced{ - pixel_y = 5 - }, -/obj/item/vending_refill/hotdog, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Bo" = ( -/obj/structure/chair/sofa/corp/left{ - color = "#DE3A3A"; - dir = 4 - }, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"Bp" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"Bq" = ( -/obj/machinery/door/poddoor{ - id = "syndimed" - }, -/obj/structure/fans/tiny/forcefield, -/turf/open/floor/plating/reinforced, -/area/space) -"Br" = ( -/obj/structure/sink/directional/east, -/obj/structure/mirror/directional/west, -/turf/open/floor/iron/dark/small, -/area/space) -"Bt" = ( -/obj/structure/closet/secure_closet/interdynefob/mod_locker, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Bv" = ( -/obj/machinery/vending/dorms{ - onstation_override = 1; - onstation = 0; - pixel_y = -32 - }, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/iron/white/small, -/area/space) -"By" = ( -/turf/open/floor/mineral/titanium/white, -/area/space) -"Bz" = ( -/obj/structure/sign/poster/contraband/interdyne_gene_clinics/directional/south, -/obj/effect/turf_decal/siding/green{ - dir = 8 - }, -/obj/item/infuser_book, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/dark, -/area/space) -"BC" = ( -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblack, -/area/space) -"BE" = ( -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"BG" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"BI" = ( -/obj/machinery/telecomms/relay/preset, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/hacking_guide/directional/south, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"BL" = ( -/obj/structure/lattice/catwalk/mining, -/obj/machinery/exoscanner, -/turf/open/lava/plasma/ice_moon, -/area/space) -"BP" = ( -/obj/machinery/newscaster/directional/north, -/obj/structure/bed/dogbed, -/mob/living/basic/pet/syndifox{ - faction = list("neutral","Syndicate") - }, -/turf/open/floor/wood/parquet, -/area/space) -"BR" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"BT" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/autopsy_scanner, -/obj/item/healthanalyzer{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"BW" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red{ - icon_state = "plastitanium" - }, -/area/space) -"BY" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"Cb" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/flora/bush/generic/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"Cc" = ( -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Cd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ce" = ( -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"Co" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_y = 9; - pixel_x = 11 - }, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_y = 15; - pixel_x = 11 - }, -/obj/item/knife{ - pixel_y = 3; - pixel_x = 6 - }, -/obj/item/kitchen/rollingpin{ - pixel_x = -9; - pixel_y = 4 - }, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"Cq" = ( -/obj/effect/turf_decal/tile/dark_red/full, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Cr" = ( -/obj/structure/flora/biolumi/flower/weaklight, -/turf/open/misc/grass/jungle/station, -/area/space) -"Cv" = ( -/obj/machinery/piratepad/syndiepad, -/turf/open/floor/noslip/tram, -/area/space) -"Cy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"CH" = ( -/obj/structure/flora/bush/lavendergrass/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"CI" = ( -/obj/structure/frame/machine/secured, -/obj/item/circuitboard/machine/module_duplicator, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 5 - }, -/turf/open/floor/iron/textured, -/area/space) -"CN" = ( -/obj/structure/rack/shelf, -/obj/item/pickaxe, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/item/construction/rcd/loaded, -/turf/open/floor/mineral/plastitanium, -/area/space) -"CP" = ( -/obj/structure/chair/sofa/corp/right{ - color = "#DE3A3A"; - dir = 8 - }, -/turf/open/floor/wood/parquet, -/area/space) -"CQ" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"CR" = ( -/obj/structure/chair/sofa/bench/left, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"CU" = ( -/obj/machinery/light/cold/directional/north, -/turf/open/floor/mineral/plastitanium, -/area/space) -"CV" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 2 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"CW" = ( -/obj/machinery/computer/order_console/bitrunning{ - pixel_x = 32; - density = 0 - }, -/turf/open/floor/iron/dark/small, -/area/space) -"CX" = ( -/obj/machinery/ammo_workbench/unlocked, -/obj/item/disk/ammo_workbench/advanced, -/turf/open/floor/mineral/plastitanium, -/area/space) -"CY" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/dish_drive/bullet, -/turf/open/floor/mineral/plastitanium, -/area/space) -"CZ" = ( -/obj/machinery/door/window/survival_pod/left/directional/south{ - req_access = list("syndicate") - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Db" = ( -/obj/structure/closet/generic/wall{ - pixel_x = 32 - }, -/obj/effect/mob_spawn/ghost_role/human/dauntless/prisoner{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Dc" = ( -/turf/open/floor/iron/terracotta/small, -/area/space) -"Dg" = ( -/obj/structure/closet/crate/freezer{ - name = "imported ingredient freezer" - }, -/obj/item/reagent_containers/condiment/vinegar{ - pixel_x = -3; - pixel_y = 11 - }, -/obj/item/reagent_containers/condiment/yoghurt{ - pixel_x = 6; - pixel_y = 5 - }, -/obj/item/reagent_containers/condiment/cornmeal{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/food/canned/jellyfish{ - pixel_x = 5 - }, -/obj/item/food/canned/desert_snails{ - pixel_x = -3; - pixel_y = 1 - }, -/obj/item/food/canned/tomatoes, -/obj/item/food/canned/tuna{ - pixel_x = -6; - pixel_y = -5 - }, -/obj/item/food/canned/pine_nuts{ - pixel_x = 10; - pixel_y = -9 - }, -/obj/item/food/fishmeat/moonfish{ - pixel_y = -11 - }, -/obj/item/food/fishmeat/moonfish{ - pixel_y = -8 - }, -/obj/item/food/fishmeat/moonfish{ - pixel_y = -5 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"Dh" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Dj" = ( -/obj/structure/sign/poster/contraband/free_key/directional/south, -/obj/structure/chair/comfy/carp{ - dir = 1 - }, -/turf/open/floor/wood/large, -/area/space) -"Dl" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Do" = ( -/obj/machinery/power/turbine/turbine_outlet{ - dir = 8 - }, -/turf/open/floor/engine, -/area/space) -"Dv" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/chem_dispenser, -/turf/open/floor/iron/white/small, -/area/space) -"Dw" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/space) -"Dz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/dresser, -/turf/open/floor/carpet/red, -/area/space) -"DF" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 8 - }, -/obj/item/laser_pointer/upgraded{ - pixel_y = 10 - }, -/obj/item/flashlight/lamp{ - pixel_x = -6; - pixel_y = 2 - }, -/obj/item/paper_bin{ - pixel_y = 4 - }, -/obj/item/pen{ - pixel_y = 4 - }, -/turf/open/floor/wood/tile, -/area/space) -"DG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium, -/area/space) -"DI" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"DJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/effect/mob_spawn/ghost_role/human/dauntless/command/admiral{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/space) -"DL" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/biogenerator/foodricator, -/turf/open/floor/mineral/plastitanium, -/area/space) -"DO" = ( -/obj/structure/chair/comfy/carp{ - dir = 8 - }, -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/turf/open/floor/carpet/donk, -/area/space) -"DQ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/cup/glass/mug, -/turf/open/floor/wood, -/area/space) -"DS" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/recharger, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/space) -"DT" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 2 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/aicard/syndie, -/turf/open/floor/iron/textured, -/area/space) -"DU" = ( -/obj/machinery/mineral/ore_redemption/offstation, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"DV" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"DX" = ( -/obj/machinery/vending/engivend{ - skyrat_products = list(/obj/item/clothing/glasses/meson/engine = 5, /obj/item/construction/rcd/loaded = 0, /obj/item/storage/pouch/material = 2, /obj/item/storage/bag/construction = 2); - onstation = 0; - onstation_override = 1 - }, -/obj/machinery/light/cold/directional/north, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Ea" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/corner{ - dir = 4 - }, -/area/space) -"Eb" = ( -/obj/machinery/duct, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"Ed" = ( -/obj/machinery/button/door/directional/north{ - id = "syndicatesauna"; - name = "Sauna Window Shutters"; - pixel_y = 0; - pixel_x = 24 - }, -/turf/open/floor/noslip, -/area/space) -"Ee" = ( -/obj/structure/fireplace, -/turf/open/floor/carpet/purple, -/area/space) -"Ef" = ( -/obj/machinery/mineral/stacking_unit_console{ - pixel_x = -32 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Em" = ( -/obj/machinery/button/door/directional/south{ - id = "turbine_shutters"; - name = "Turbine Shutters"; - req_access = list("syndicate") - }, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"En" = ( -/obj/machinery/door/poddoor/shutters/window{ - id = "syndicatejanitor" - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Eo" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/space) -"Ep" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Eq" = ( -/obj/structure/cable, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"Es" = ( -/obj/effect/turf_decal/siding/green{ - dir = 9 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/iron/dark, -/area/space) -"Et" = ( -/obj/effect/turf_decal/stripes/blue/line, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/space) -"Eu" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Ev" = ( -/obj/machinery/button/door/directional/west{ - pixel_y = 8; - id = "syndieng_windows"; - name = "Window Shutters"; - req_access = list("syndicate") - }, -/obj/machinery/button/door/directional/west{ - id = "rad_shutters"; - name = "Radiation Shutters"; - pixel_y = -8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/disposal/bin, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Ew" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/machinery/disposal/delivery_chute{ - dir = 4; - name = "disposals chute"; - pixel_x = 5 - }, -/obj/structure/plasticflaps, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Ey" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/space) -"EA" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 2 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/textured, -/area/space) -"EC" = ( -/obj/structure/bed/double/pod, -/obj/effect/spawner/random/bedsheet/any/double, -/obj/structure/closet/generic/wall{ - pixel_x = 32 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"ED" = ( -/obj/machinery/button/door/directional/west{ - id = "syndimining"; - name = "Blast Doors"; - req_access = list("syndicate") - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"EE" = ( -/obj/machinery/computer/exodrone_control_console{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"EF" = ( -/obj/structure/bed/double/pod, -/obj/effect/spawner/random/bedsheet/any/double, -/turf/open/floor/carpet/donk, -/area/space) -"EG" = ( -/obj/structure/lattice/catwalk/mining, -/obj/structure/chair/plastic{ - dir = 8; - pixel_y = 6; - pixel_x = 4 - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"EK" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"EQ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/stellar, -/area/space) -"ER" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/carpet/royalblue, -/area/space) -"ES" = ( -/obj/structure/chair/stool/bar/directional/south, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"ET" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"EU" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/machinery/door/window/survival_pod/left/directional/south, -/obj/machinery/duct, -/turf/open/misc/grass/jungle/station, -/area/space) -"EV" = ( -/obj/machinery/seed_extractor, -/turf/open/misc/grass/jungle/station, -/area/space) -"EW" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"EZ" = ( -/obj/structure/chair/sofa/bench/corner, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"Fb" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/condiment/peppermill{ - pixel_x = 2 - }, -/obj/item/reagent_containers/condiment/saltshaker{ - pixel_x = -8; - pixel_y = 5 - }, -/obj/item/book/manual/chef_recipes, -/obj/item/reagent_containers/condiment/enzyme, -/turf/open/floor/mineral/titanium/white, -/area/space) -"Fh" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/tattoo_kit{ - pixel_y = 4 - }, -/obj/item/fur_dyer, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"Fj" = ( -/obj/machinery/suit_storage_unit{ - mask_type = /obj/item/clothing/mask/gas/syndicate; - mod_type = /obj/item/mod/control/pre_equipped/traitor_elite; - storage_type = /obj/item/tank/jetpack/oxygen/harness; - req_access = list("syndicate_leader") - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/red, -/area/space) -"Fl" = ( -/obj/machinery/vending/hotdog{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_x = 30 - }, -/turf/open/floor/iron/stairs, -/area/space) -"Fm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/chair/office/tactical{ - dir = 4 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"Fn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/chair/comfy/carp{ - dir = 4 - }, -/turf/open/floor/carpet/red, -/area/space) -"Ft" = ( -/obj/machinery/mineral/ore_redemption/offstation, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Fu" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer2, -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Fw" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"Fz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/sign/poster/contraband/waffle_corp_rifles/directional/east, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/space) -"FC" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/carpet/royalblack, -/area/space) -"FD" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/vg_decals/numbers/six, -/turf/open/floor/engine, -/area/space) -"FF" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/disposalpipe/trunk, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/mineral/plastitanium, -/area/space) -"FI" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"FK" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/side{ - dir = 1 - }, -/area/space) -"FL" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "dauntbar_w" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Bar Shutters" - }, -/obj/item/airbag/immediate_arm, -/turf/open/floor/plating/reinforced, -/area/space) -"FM" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/junction{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"FP" = ( -/obj/structure/fermenting_barrel, -/turf/open/floor/iron/dark/small, -/area/space) -"FR" = ( -/obj/structure/chair/comfy/carp, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"FS" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/closet/secure_closet/interdynefob/maa_locker, -/turf/open/floor/carpet/red, -/area/space) -"FT" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"FV" = ( -/obj/structure/dresser, -/obj/item/sign/flag/syndicate{ - pixel_x = -7; - pixel_y = 13 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/red, -/area/space) -"FW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"FX" = ( -/obj/item/bodybag/environmental/prisoner/syndicate{ - pixel_y = 20; - pixel_x = -8 - }, -/obj/machinery/recharger, -/obj/item/bodybag/environmental/prisoner/syndicate{ - pixel_y = 20; - pixel_x = -4 - }, -/obj/item/bodybag/environmental/prisoner/syndicate{ - pixel_y = 20 - }, -/obj/item/bodybag/environmental/prisoner/syndicate{ - pixel_y = 20; - pixel_x = 6 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = 3; - pixel_y = 10 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = -6; - pixel_y = 7 - }, -/obj/item/crowbar/red, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/sign/poster/contraband/revolver/directional/east, -/turf/open/floor/carpet/red, -/area/space) -"FY" = ( -/obj/machinery/light/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/space) -"FZ" = ( -/obj/machinery/vending/medical/syndicate_access/cybersun{ - desc = "An advanced vendor that dispenses medical drugs, both recreational and medicinal. It's said to have been salvaged from an old decommissioned Cybersun Cruiser."; - name = "\improper SyndiMed ++"; - onstation = 0; - onstation_override = 1; - pixel_x = 30 - }, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/space) -"Gb" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/turf/open/floor/wood/large, -/area/space) -"Gd" = ( -/turf/closed/wall/r_wall/syndicate/nodiagonal, -/area/space) -"Ge" = ( -/turf/open/floor/iron/colony/bolts, -/area/space) -"Gk" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Gm" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 4 - }, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/stone, -/area/space) -"Gp" = ( -/obj/structure/closet/secure_closet/interdynefob/electrical_supplies, -/obj/item/clothing/shoes/magboots/syndie, -/obj/item/clothing/shoes/magboots/syndie{ - pixel_y = 8 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Gq" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/machinery/portable_atmospherics/canister/miasma, -/turf/open/floor/iron/dark, -/area/space) -"Gr" = ( -/obj/machinery/button/door/directional/north{ - id = "syndiship_vault"; - specialfunctions = 4; - normaldoorcontrol = 1; - name = "Vault Bolt Control"; - req_access = list("syndicate") - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Gv" = ( -/obj/structure/cargo_shelf, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/noslip/tram, -/area/space) -"Gx" = ( -/obj/effect/mob_spawn/ghost_role/human/dauntless/prisoner{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Gz" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/plating/reinforced, -/area/space) -"GB" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ - dir = 1; - volume_rate = 200 - }, -/turf/open/floor/engine, -/area/space) -"GC" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - initialize_directions = 4; - dir = 4 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"GF" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"GO" = ( -/obj/structure/sign/painting/library{ - pixel_y = 30 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/structure/safe/floor, -/obj/item/book/granter/crafting_recipe/donk_secret_recipe, -/turf/open/floor/carpet/donk, -/area/space) -"GP" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"GS" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/toy/plush/abductor/agent, -/turf/open/floor/mineral/plastitanium, -/area/space) -"GY" = ( -/obj/machinery/skill_station, -/turf/open/floor/iron/white/small, -/area/space) -"GZ" = ( -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Hc" = ( -/obj/structure/sign/poster/contraband/arc_slimes/directional/north, -/turf/open/floor/iron/textured, -/area/space) -"Hd" = ( -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/table/wood/fancy/red, -/turf/open/floor/carpet/red, -/area/space) -"He" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/book/manual/wiki/ordnance, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"Hf" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/griddle/frontier_tabletop, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Hh" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/space) -"Hk" = ( -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 5 - }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 - }, -/obj/structure/hedge, -/turf/open/floor/carpet/royalblack, -/area/space) -"Hn" = ( -/obj/structure/chair/stool{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/space) -"Ho" = ( -/obj/structure/reagent_forge, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"Hq" = ( -/obj/structure/closet/crate, -/obj/item/skillchip/job/engineer, -/obj/item/skillchip/job/chef, -/obj/item/skillchip/job/janitor, -/obj/item/skillchip/job/psychology, -/obj/item/skillchip/job/roboticist, -/obj/item/skillchip/brainwashing, -/obj/item/storage/box/skillchips, -/obj/item/storage/box/skillchips, -/obj/item/skillchip/job/psychology, -/obj/item/skillchip/job/roboticist, -/obj/item/skillchip/job/janitor, -/obj/item/skillchip/job/miner, -/obj/item/skillchip/entrails_reader, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"Hs" = ( -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Hu" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/modular_computer/laptop/preset/syndicate, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Hv" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Hx" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ - dir = 9 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"Hz" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "dauntless_interrogation" - }, -/obj/item/airbag/immediate_arm, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"HA" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/bed/maint, -/turf/open/floor/iron/white/small, -/area/space) -"HB" = ( -/obj/machinery/door/poddoor{ - id = "synditrashgun" - }, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"HD" = ( -/obj/structure/chair/sofa/bench{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/space) -"HI" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"HK" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 4 - }, -/turf/open/floor/engine, -/area/space) -"HL" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/plating/reinforced, -/area/space) -"HM" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/space) -"HN" = ( -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white/small, -/area/space) -"HU" = ( -/obj/structure/weightmachine/weightlifter, -/turf/open/floor/iron/white/small, -/area/space) -"HV" = ( -/obj/structure/sign/poster/official/moth_epi/directional/south, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"Ia" = ( -/obj/structure/curtain, -/obj/machinery/duct, -/turf/open/floor/iron/white/small, -/area/space) -"Ii" = ( -/obj/item/sequence_scanner, -/obj/item/storage/belt/medical/paramedic, -/obj/item/clothing/suit/toggle/labcoat/hospitalgown, -/obj/structure/closet/secure_closet/interdynefob/medical, -/obj/item/circular_saw/field_medic, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/item/modular_computer/pda/syndicate, -/turf/open/floor/carpet/royalblue, -/area/space) -"Ij" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 10 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"In" = ( -/obj/effect/mob_spawn/ghost_role/human/dauntless/syndicate/miningoff, -/turf/open/floor/carpet/stellar, -/area/space) -"Ir" = ( -/obj/machinery/cell_charger_multi/wall_mounted/directional/north, -/turf/open/floor/plating/reinforced, -/area/space) -"Is" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood/large, -/area/space) -"It" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/machinery/camera/autoname/directional/west{ - network = list("dauntless_xeno") - }, -/turf/open/floor/engine, -/area/space) -"Iu" = ( -/turf/open/floor/plating/reinforced, -/area/space) -"Iv" = ( -/obj/item/clothing/shoes/workboots/mining, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/structure/closet/generic/wall{ - pixel_y = 32 - }, -/obj/item/modular_computer/pda/syndicate, -/turf/open/floor/carpet/stellar, -/area/space) -"Iz" = ( -/obj/structure/safe/floor, -/obj/item/storage/hypospraykit/cmo/combat, -/obj/item/implanter/interdyne, -/obj/item/implanter/interdyne, -/obj/item/implanter/interdyne, -/turf/open/floor/carpet/royalblue, -/area/space) -"IC" = ( -/obj/machinery/smartfridge/extract/preloaded{ - density = 0 - }, -/turf/open/floor/iron/textured, -/area/space) -"IG" = ( -/obj/machinery/atmospherics/miner/nitrogen, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/machinery/door/window/survival_pod/left/directional/east{ - name = "Atmos Access Hatch" - }, -/turf/open/floor/engine/n2, -/area/space) -"IH" = ( -/obj/structure/plant_tank, -/turf/open/floor/mineral/plastitanium, -/area/space) -"IO" = ( -/obj/structure/chair/comfy/carp{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/space) -"IS" = ( -/obj/machinery/computer{ - desc = "A console meant to allow modifications to IDs. There's a chameleon ID stuck inside and no one has been able to pull it out..."; - icon_keyboard = "syndie_key"; - icon_screen = "explosive"; - name = "syndicate access change console"; - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"IX" = ( -/obj/structure/closet/secure_closet/medical1{ - req_access = list("syndicate") - }, -/obj/item/reagent_containers/spray/cleaner{ - pixel_x = 7; - pixel_y = -9 - }, -/obj/item/book/manual/wiki/chemistry{ - pixel_x = -4 - }, -/obj/item/clothing/glasses/science{ - pixel_x = -4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/royalblue, -/area/space) -"Je" = ( -/obj/structure/cable, -/obj/structure/closet/cardboard, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Ji" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/siding/thinplating{ - color = "#464d5b"; - dir = 9 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white/small, -/area/space) -"Jj" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/door/airlock/engineering/glass{ - name = "Turbine Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "rad_shutters" - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Jn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/carpet/purple, -/area/space) -"Jo" = ( -/mob/living/basic/mining_drone/interdyne{ - name = "Molly" - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Jp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/clipboard, -/obj/item/stamp{ - pixel_x = 10 - }, -/obj/item/stamp/denied{ - pixel_x = -10 - }, -/turf/open/floor/noslip/tram, -/area/space) -"Jq" = ( -/obj/machinery/suit_storage_unit/industrial/bloodredsuit{ - req_access = list("syndicate") - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Jr" = ( -/obj/structure/chair/comfy/carp{ - dir = 1 - }, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"Jt" = ( -/obj/machinery/door/airlock/hatch{ - name = "Turbine Mix"; - id_tag = "syndiship_turbine_lock" - }, -/obj/structure/fans/tiny, -/obj/effect/mapping_helpers/airlock/locked, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/machinery/atmospherics/pipe/layer_manifold/green/visible, -/turf/open/floor/engine, -/area/space) -"Ju" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Jw" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/posialert/directional/south, -/obj/item/mmi/posibrain/sphere, -/turf/open/floor/iron/textured, -/area/space) -"Jz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/chair/sofa/corp/left{ - color = "#DE3A3A"; - dir = 1 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south{ - dir = 10 - }, -/turf/open/floor/carpet/red, -/area/space) -"JC" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/backpack/duffelbag/deforest_medkit/stocked, -/obj/effect/turf_decal/siding/thinplating{ - color = "#464d5b"; - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/space) -"JI" = ( -/obj/machinery/light_switch/directional/south, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/turf/open/floor/carpet/red, -/area/space) -"JJ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/red, -/area/space) -"JM" = ( -/obj/effect/turf_decal/stripes, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"JN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"JP" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/atmospherics/pipe/layer_manifold/cyan{ - dir = 8 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"JR" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/corner{ - dir = 1 - }, -/area/space) -"JS" = ( -/obj/structure/moisture_trap, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"JU" = ( -/obj/structure/cable, -/obj/structure/sign/poster/contraband/free_drone/directional/north, -/turf/open/floor/iron/textured, -/area/space) -"JX" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ke" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"Ki" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood/stairs, -/area/space) -"Kk" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"Kn" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/red, -/area/space) -"Ko" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"Kw" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/machinery/griddle, -/turf/open/floor/iron/white, -/area/space) -"Kx" = ( -/obj/structure/closet/secure_closet/freezer/kitchen/all_access, -/obj/item/food/breadslice/plain, -/obj/item/food/breadslice/plain, -/obj/item/food/breadslice/plain, -/obj/item/food/grown/potato, -/obj/item/food/grown/potato, -/obj/effect/spawner/random/contraband/permabrig_weapon, -/obj/item/food/grown/onion, -/obj/item/food/grown/onion, -/obj/item/storage/box/ingredients/random, -/obj/item/storage/box/ingredients/random, -/obj/effect/turf_decal/bot_white, -/obj/item/storage/box/ingredients/carnivore, -/obj/item/storage/box/ingredients/wildcard, -/obj/item/storage/fancy/egg_box, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/mineral/titanium/white, -/area/space) -"Kz" = ( -/obj/machinery/button/polarizer{ - name = "Hanger doors"; - id = "syndihanger"; - pixel_x = 24 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"KA" = ( -/obj/machinery/computer/security/dauntless{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"KB" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/backpack/duffelbag/synth_treatment_kit/trauma/advanced, -/obj/machinery/vending/wallmed/directional/north{ - onstation = 0; - onstation_override = 1 - }, -/turf/open/floor/iron/white/small, -/area/space) -"KC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/plant_tank, -/turf/open/floor/carpet/red, -/area/space) -"KE" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"KF" = ( -/obj/machinery/computer/message_monitor{ - dir = 8 - }, -/obj/machinery/computer/message_monitor{ - dir = 8 - }, -/obj/item/radio/intercom/command/directional/east, -/turf/open/floor/mineral/plastitanium/red{ - icon_state = "plastitanium" - }, -/area/space) -"KG" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/ballistic/shotgun/riot/sol/evil{ - pixel_y = 10 - }, -/obj/item/gun/ballistic/shotgun/riot/sol/evil{ - pixel_y = 10 - }, -/obj/item/gun/ballistic/shotgun/riot/sol/evil{ - pixel_y = 10 - }, -/obj/item/gun/ballistic/automatic/pistol/suppressed, -/obj/item/gun/ballistic/automatic/pistol/suppressed, -/obj/item/gun/ballistic/automatic/pistol/suppressed, -/obj/item/gun/ballistic/automatic/pistol/suppressed, -/obj/item/gun/ballistic/automatic/pistol/suppressed, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"KH" = ( -/obj/machinery/dryer{ - pixel_y = 25 - }, -/turf/open/floor/iron/white/small, -/area/space) -"KL" = ( -/obj/structure/bed/double/pod{ - dir = 1 - }, -/obj/effect/spawner/random/bedsheet/any/double{ - dir = 4 - }, -/obj/machinery/vending/security/noaccess{ - onstation = 0; - density = 0; - onstation_override = 1; - pixel_y = 32 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/red, -/area/space) -"KN" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"KO" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/obj/machinery/holopad, -/turf/open/floor/iron/cafeteria, -/area/space) -"KP" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/space) -"KR" = ( -/obj/machinery/photocopier, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"KU" = ( -/obj/machinery/vending/hydronutrients{ - onstation = 0; - onstation_override = 1; - pixel_x = -28; - can_astar_pass = 1; - density = 0 - }, -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"KW" = ( -/obj/structure/flora/bush/sparsegrass/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"KY" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"Lc" = ( -/obj/machinery/fax{ - fax_name = "Unknown Syndicate Fax"; - name = "SSV Dauntless Fax Machine"; - syndicate_network = 1 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ld" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Lh" = ( -/turf/open/floor/iron/white, -/area/space) -"Li" = ( -/obj/machinery/computer/cargo/express/interdyne{ - dir = 4 - }, -/turf/open/floor/noslip/tram, -/area/space) -"Lj" = ( -/obj/structure/sign/poster/contraband/busty_backdoor_xeno_babes_6/directional/north, -/obj/structure/table/wood, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/dark/textured_corner{ - dir = 8 - }, -/area/space) -"Ll" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/noslip/tram, -/area/space) -"Ln" = ( -/obj/structure/chair/office/tactical, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/dark, -/area/space) -"Lp" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/sink/kitchen/directional/west{ - pixel_x = 18 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/wood/large, -/area/space) -"Lt" = ( -/obj/machinery/duct, -/obj/structure/sink/kitchen/directional/west, -/obj/structure/mirror/directional/east, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white/small, -/area/space) -"Lx" = ( -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/door/window/survival_pod/left/directional/east{ - name = "Atmos Access Hatch" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"LM" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/bluespace_vendor/directional/east, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"LN" = ( -/obj/machinery/computer/mech_bay_power_console{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"LQ" = ( -/obj/effect/spawner/random/medical/medkit{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/effect/spawner/random/medical/supplies{ - pixel_y = 3 - }, -/obj/effect/spawner/random/medical/medkit{ - pixel_x = -6; - pixel_y = -3 - }, -/obj/effect/spawner/random/medical/medkit, -/obj/effect/spawner/random/medical/medkit, -/obj/item/storage/medkit/regular{ - pixel_x = 3; - pixel_y = 1 - }, -/obj/item/storage/medkit/advanced{ - pixel_x = -2; - pixel_y = 8 - }, -/obj/structure/rack/shelf, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/door/window/survival_pod/left/directional/west, -/obj/effect/turf_decal/siding/white{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/space) -"LS" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/reagentgrinder, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/mineral/titanium/white, -/area/space) -"LU" = ( -/obj/structure/sign/painting/large/library{ - pixel_y = 30 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"LW" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/obj/structure/sign/painting/library{ - pixel_y = 30 - }, -/turf/open/floor/carpet/stellar, -/area/space) -"LY" = ( -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer2{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Ma" = ( -/obj/machinery/computer/mecha{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"Mb" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/middle/right, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Mf" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 8 - }, -/obj/item/clothing/shoes/sneakers/crimson, -/obj/item/clothing/under/rank/prisoner/syndicate, -/obj/item/clothing/under/rank/prisoner/syndicate{ - pixel_y = 4 - }, -/obj/item/clothing/under/rank/prisoner/syndicate{ - pixel_y = 8 - }, -/obj/item/clothing/shoes/sneakers/crimson{ - pixel_x = -4 - }, -/obj/item/clothing/shoes/sneakers/crimson{ - pixel_x = 4 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Mg" = ( -/obj/machinery/duct, -/turf/open/floor/iron/white, -/area/space) -"Mh" = ( -/obj/machinery/smartfridge/drying, -/turf/open/floor/iron/white, -/area/space) -"Mi" = ( -/obj/effect/mob_spawn/ghost_role/human/dauntless/prisoner{ - dir = 8 - }, -/obj/structure/closet/generic/wall{ - pixel_x = 32 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Mm" = ( -/obj/effect/turf_decal/tile/holiday, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"Mn" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white/small, -/area/space) -"Mo" = ( -/obj/machinery/duct, -/turf/open/floor/mineral/titanium/white, -/area/space) -"Mq" = ( -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/trimline/dark_red/filled/line, -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/obj/structure/cable, -/turf/open/floor/carpet/royalblack, -/area/space) -"Mr" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/teargas{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/storage/box/handcuffs{ - pixel_y = 3 - }, -/obj/item/storage/box/flashbangs{ - pixel_x = -3 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"My" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/plating/reinforced, -/area/space) -"Mz" = ( -/obj/structure/dresser, -/obj/item/sign/flag/syndicate{ - pixel_x = -7; - pixel_y = 13 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/obj/machinery/incident_display/delam/directional/north, -/turf/open/floor/wood, -/area/space) -"MA" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/yjunction{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"MC" = ( -/obj/effect/spawner/random/structure/crate, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"MD" = ( -/obj/effect/turf_decal/siding/thinplating/dark/end, -/obj/structure/cable, -/turf/open/floor/stone, -/area/space) -"MF" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/carpet/purple, -/area/space) -"MG" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/book/manual/ripley_build_and_repair{ - pixel_x = -5 - }, -/obj/item/book/manual/wiki/robotics_cyborgs{ - pixel_x = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"MK" = ( -/turf/open/floor/wood/large, -/area/space) -"MM" = ( -/obj/item/encryptionkey/syndicate, -/obj/structure/safe/floor, -/obj/item/storage/box/syndie_kit/chameleon/ghostcafe{ - desc = "A sleek, sturdy box."; - name = "Chameleon Kit" - }, -/obj/structure/sign/painting/library{ - pixel_y = 30 - }, -/obj/item/disk/design_disk/long_range_pda, -/turf/open/floor/wood/large, -/area/space) -"MN" = ( -/obj/machinery/door/airlock/engineering/glass{ - name = "Engineering Bay" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"MQ" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"MR" = ( -/obj/structure/cable, -/obj/machinery/button/door/directional/north{ - id = "rad_shutters"; - name = "Radiation Shutters"; - pixel_x = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"MS" = ( -/obj/structure/aquarium/donkfish, -/turf/open/floor/carpet/donk, -/area/space) -"MU" = ( -/obj/structure/fans/tiny, -/turf/open/floor/plating/reinforced, -/area/space) -"MW" = ( -/obj/structure/chair/office/tactical{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/space) -"Nb" = ( -/obj/machinery/light/cold/directional/north, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Nf" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/effect/turf_decal/vg_decals/numbers/one, -/turf/open/floor/engine, -/area/space) -"Nh" = ( -/obj/structure/cargo_shelf, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/noslip/tram, -/area/space) -"Ni" = ( -/obj/machinery/duct, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Nj" = ( -/obj/structure/closet/crate/secure/gear{ - req_access = list("syndicate"); - anchored = 1 - }, -/obj/item/clothing/glasses/night, -/obj/item/storage/belt/military, -/obj/item/storage/belt/military, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/mask/gas/syndicate, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/shoes/combat, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/under/syndicate/combat, -/obj/item/clothing/gloves/combat, -/obj/item/clothing/gloves/combat, -/obj/item/card/id/advanced/chameleon, -/obj/item/card/id/advanced/chameleon, -/obj/item/card/id/advanced/chameleon, -/obj/item/radio/headset/interdyne, -/obj/item/radio/headset/interdyne, -/obj/item/radio/headset/interdyne, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Nk" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/atmospherics/pipe/layer_manifold/yellow{ - dir = 4 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Nl" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/pen/red{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/pen/fountain{ - pixel_x = 10 - }, -/obj/item/clothing/gloves/cargo_gauntlet{ - pixel_y = 2 - }, -/obj/item/hand_labeler, -/turf/open/floor/noslip/tram, -/area/space) -"Nm" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Nn" = ( -/obj/machinery/mech_bay_recharge_port{ - dir = 8 - }, -/obj/structure/cable, -/turf/open/floor/iron/textured, -/area/space) -"Np" = ( -/obj/structure/cargo_shelf, -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/turf/open/floor/noslip/tram, -/area/space) -"Nr" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Nt" = ( -/obj/structure/chair/sofa/corner/maroon, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"Nu" = ( -/obj/structure/chair/sofa/corp/right{ - color = "#DE3A3A" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/red, -/area/space) -"Nv" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/machinery/duct, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Nw" = ( -/obj/machinery/button/polarizer{ - id = "dauntbar_s"; - name = "Bar Shutters"; - pixel_y = 40; - pixel_x = 8 - }, -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/button/polarizer{ - id = "dauntbar_w"; - name = "Bar Windows"; - pixel_y = 40; - pixel_x = -8 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood/large, -/area/space) -"Nx" = ( -/obj/machinery/ntnet_relay, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/grey_tide/directional/south, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Ny" = ( -/obj/structure/plant_tank, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"NA" = ( -/obj/structure/closet/crate/wooden, -/obj/item/choice_beacon/music, -/obj/item/choice_beacon/music, -/obj/item/choice_beacon/music, -/obj/item/disk{ - desc = "A cheap, plastic hard-disk labelled 'good tunes to assault ops to'. It looks disused... wait, is that a 'THE WEAPONIZED' logo?"; - icon_state = "nucleardisk"; - name = "dat fukken disk" - }, -/obj/item/vending_refill/wardrobe/syndie_wardrobe, -/obj/item/binoculars, -/obj/item/computer_disk/syndicate/camera_app, -/obj/item/computer_disk/syndicate/camera_app, -/obj/item/computer_disk/syndicate/camera_app, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"NE" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/statuebust/hippocratic/evil, -/turf/open/floor/wood/large, -/area/space) -"NI" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/corner{ - dir = 8 - }, -/area/space) -"NJ" = ( -/obj/machinery/bluespace_miner, -/turf/open/floor/plating/reinforced, -/area/space) -"NO" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/disposal/delivery_chute{ - dir = 4; - name = "disposals chute"; - pixel_x = 5 - }, -/turf/open/floor/noslip/tram, -/area/space) -"NQ" = ( -/obj/structure/cable, -/obj/machinery/button/door/directional/north{ - id = syndiengibolt"; - name = "Engineering Airlock Bolt"; - pixel_x = -8 - }, -/obj/machinery/button/door/directional/north{ - id = "syndiengishutters"; - name = "Engineering exterior access lock"; - pixel_x = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"NS" = ( -/obj/effect/turf_decal/stripes/red/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/corner, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"NX" = ( -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"NZ" = ( -/obj/machinery/button/door/directional/west{ - id = "syndimed"; - name = "Blast Doors"; - req_access = list("syndicate"); - pixel_x = 0; - pixel_y = 24 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"Oa" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Ob" = ( -/obj/structure/emergency_shield/cult/weak{ - desc = "A low energy shield used to protect a ship from various fauna attacks." - }, -/obj/structure/emergency_shield/cult/weak{ - desc = "A low energy shield used to protect a ship from various fauna attacks." - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"Oc" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Od" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Oe" = ( -/obj/item/reagent_containers/cup/maunamug, -/obj/structure/table/wood/fancy/red, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/wood/large, -/area/space) -"Of" = ( -/obj/machinery/photocopier/gratis, -/turf/open/floor/wood/large, -/area/space) -"Om" = ( -/obj/structure/sign/poster/contraband/donk_co/directional/west, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/cup/glass/mug, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Oo" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/reagent_dispensers/wall/virusfood/directional/west, -/obj/machinery/reagentgrinder, -/obj/item/stack/sheet/mineral/gold{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/plasma{ - amount = 5 - }, -/obj/item/stack/sheet/mineral/uranium/five, -/turf/open/floor/iron/dark, -/area/space) -"Op" = ( -/obj/structure/chair/comfy/carp, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"Oq" = ( -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/beebox, -/obj/item/honey_frame, -/obj/item/honey_frame, -/obj/item/honey_frame, -/obj/item/queen_bee, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/misc/grass/jungle/station, -/area/space) -"Or" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/vending/dinnerware{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_y = 32 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"Os" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/top/left, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Ow" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/punching_bag, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ox" = ( -/obj/item/storage/box/aquarium_props, -/obj/structure/aquarium/donkfish, -/turf/open/floor/wood/parquet, -/area/space) -"Oy" = ( -/obj/machinery/vending/drugs{ - name = "\improper SyndiDrug Plus"; - onstation = 0; - onstation_override = 1; - density = 0; - pixel_x = 30 - }, -/obj/effect/turf_decal/siding/white{ - dir = 6 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/dark, -/area/space) -"Oz" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/item/reagent_containers/cup/glass/mug, -/turf/open/floor/carpet/purple, -/area/space) -"OD" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/space) -"OG" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/reagentgrinder{ - pixel_y = 11; - pixel_x = -1 - }, -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"ON" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/cup/glass/shaker{ - pixel_x = -6; - pixel_y = -7 - }, -/obj/item/reagent_containers/cup/rag, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/space) -"OO" = ( -/obj/structure/cable, -/turf/open/floor/iron/dark/textured_edge{ - dir = 8 - }, -/area/space) -"OV" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/donk, -/area/space) -"OW" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/sign/flag/syndicate/directional/north, -/turf/open/floor/iron/showroomfloor, -/area/space) -"OX" = ( -/obj/structure/closet/generic/wall{ - pixel_x = 32 - }, -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/space/basic, -/turf/open/floor/iron/white/small, -/area/space) -"OZ" = ( -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/wood/large, -/area/space) -"Pc" = ( -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/spawner/random/food_or_drink/refreshing_beverage, -/turf/open/floor/iron/dark/small, -/area/space) -"Pe" = ( -/obj/machinery/vending/clothing{ - onstation = 0; - onstation_override = 1; - pixel_x = -28; - density = 0 - }, -/obj/structure/chair/sofa/bench/right{ - dir = 4 - }, -/obj/machinery/vending/autodrobe/all_access{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_y = -32 - }, -/turf/open/floor/iron/white/small, -/area/space) -"Pf" = ( -/obj/structure/chair/office/tactical{ - dir = 4 - }, -/obj/structure/sign/poster/abductor/ayylian/directional/north, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Pi" = ( -/obj/structure/lattice/catwalk/mining, -/obj/structure/railing{ - dir = 8 - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"Pj" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Pl" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 6 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"Pp" = ( -/obj/structure/sign/poster/contraband/moffuchis_pizza/directional/east, -/obj/structure/chair/comfy/carp, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"Pt" = ( -/obj/effect/turf_decal/tile/dark_red/half{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/engine, -/area/space) -"Pu" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"PA" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 8 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/sink/kitchen/directional/east, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/misc/grass/jungle/station, -/area/space) -"PB" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/multitool/circuit, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/obj/structure/sign/poster/contraband/hacking_guide/directional/south, -/turf/open/floor/iron/textured, -/area/space) -"PC" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble, -/area/space) -"PD" = ( -/obj/machinery/light/cold/directional/north, -/obj/structure/flatpack_cart, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"PE" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/iron/textured, -/area/space) -"PH" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"PK" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/general/hidden, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"PM" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 9 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"PN" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 1; - external_pressure_bound = 120; - name = "server vent" - }, -/obj/machinery/door/window/survival_pod/left/directional/south{ - name = "Slime Euthanization Chamber"; - req_access = list("syndicate") - }, -/turf/open/floor/circuit/telecomms, -/area/space) -"PO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"PQ" = ( -/obj/structure/bed/double/pod{ - dir = 1 - }, -/obj/item/bedsheet/cosmos/double{ - dir = 1 - }, -/turf/open/floor/wood, -/area/space) -"PW" = ( -/obj/structure/railing/wooden_fencing{ - dir = 1 - }, -/obj/structure/railing/wooden_fencing{ - dir = 4 - }, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"PY" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/rack/shelf, -/obj/item/borg/upgrade/syndicate_access/dauntless, -/obj/item/borg/upgrade/syndicate_access/dauntless, -/obj/item/borg/upgrade/syndicate_access/dauntless, -/obj/machinery/door/window/survival_pod/left/directional/north{ - name = "Robotics Airlock"; - req_access = list("syndicate") - }, -/turf/open/floor/iron/textured, -/area/space) -"Qa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 4 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"Qd" = ( -/mob/living/basic/bot/medbot/stationary{ - faction = list("Syndicate"); - req_one_access = list("syndicate"); - name = "Insurgent Care"; - radio_channel = "Syndicate"; - radio_key = /obj/item/encryptionkey/syndicate - }, -/turf/open/floor/iron/white/small, -/area/space) -"Qe" = ( -/obj/structure/fireplace, -/turf/open/floor/iron/terracotta/diagonal, -/area/space) -"Qf" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/dark/textured_corner{ - dir = 4 - }, -/area/space) -"Qi" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 6 - }, -/obj/structure/cable, -/turf/open/floor/plating/reinforced, -/area/space) -"Ql" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/hairbrush/tactical, -/obj/item/scissors, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"Qm" = ( -/obj/machinery/icecream_vat, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"Qn" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Qr" = ( -/obj/structure/hedge, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"Qs" = ( -/obj/structure/kitchenspike, -/obj/item/knife/butcher, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"Qt" = ( -/obj/machinery/biogenerator, -/turf/open/floor/plating/reinforced, -/area/space) -"Qu" = ( -/obj/machinery/vending/boozeomat/syndicate_access{ - onstation = 0; - onstation_override = 1 - }, -/obj/structure/curtain/cloth{ - color = "#333333" - }, -/turf/open/floor/plating/reinforced, -/area/space) -"Qy" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Qz" = ( -/obj/effect/turf_decal/skyrat_decals/syndicate/bottom/right, -/obj/effect/turf_decal/siding/dark/corner, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"QA" = ( -/obj/structure/fireplace, -/turf/open/floor/mineral/plastitanium, -/area/space) -"QC" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/turf/open/floor/engine, -/area/space) -"QG" = ( -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/wood/tile, -/area/space) -"QI" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"QJ" = ( -/obj/structure/mirror/directional/north, -/obj/structure/chair/comfy/barber_chair{ - dir = 1 - }, -/turf/open/floor/iron/kitchen/herringbone, -/area/space) -"QK" = ( -/obj/machinery/bluespace_miner, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/plating/reinforced, -/area/space) -"QL" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/surgery_tray/full/advanced, -/turf/open/floor/iron/white/small, -/area/space) -"QM" = ( -/obj/machinery/door/window/survival_pod/left/directional/south{ - req_access = list("syndicate"); - name = "Syndicate Holding Cell"; - id = "Syndicate Cell" - }, -/obj/machinery/duct, -/turf/open/floor/iron/white/small, -/area/space) -"QN" = ( -/obj/structure/chair/office/light{ - dir = 8 - }, -/turf/open/floor/iron/textured, -/area/space) -"QO" = ( -/turf/open/floor/mineral/plastitanium, -/area/space) -"QQ" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/plating/reinforced, -/area/space) -"QR" = ( -/obj/structure/chair/sofa/corp, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/carpet/royalblack, -/area/space) -"QV" = ( -/obj/structure/chair/comfy/beige, -/turf/open/floor/iron/dark/small, -/area/space) -"QW" = ( -/obj/effect/spawner/liquids_spawner/shoulders, -/turf/open/floor/iron/pool/cobble/side{ - dir = 8 - }, -/area/space) -"QY" = ( -/obj/structure/closet/secure_closet/hydroponics{ - req_access = null - }, -/obj/item/construction/plumbing, -/obj/item/cultivator, -/obj/item/shovel/spade, -/obj/item/plant_analyzer, -/obj/item/gun/energy/floragun, -/obj/item/geneshears, -/obj/item/hatchet, -/obj/item/secateurs, -/obj/item/bee_smoker, -/obj/item/clothing/head/utility/beekeeper_head, -/obj/item/clothing/suit/utility/beekeeper_suit, -/obj/structure/flora/bush/flowers_yw/style_random, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/item/seeds/kudzu, -/obj/effect/spawner/random/food_or_drink/seed_rare, -/obj/effect/spawner/random/food_or_drink/seed_rare, -/obj/effect/spawner/random/food_or_drink/seed_rare, -/turf/open/misc/grass/jungle/station, -/area/space) -"QZ" = ( -/obj/item/storage/toolbox/fishing, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/machinery/fishing_portal_generator, -/turf/open/floor/iron/white, -/area/space) -"Rb" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Rc" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/microwave/frontier_printed, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Rd" = ( -/obj/machinery/duct, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"Rj" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/structure/railing/wooden_fencing{ - dir = 4 - }, -/obj/structure/flora/bush/flowers_br/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"Rm" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/siding/thinplating{ - color = "#464d5b"; - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/space) -"Rn" = ( -/obj/structure/cargo_shelf, -/obj/structure/sign/poster/official/carwo_magazine/directional/east, -/turf/open/floor/noslip/tram, -/area/space) -"Ro" = ( -/obj/machinery/computer{ - desc = "A console meant to allow modifications to IDs. There's a chameleon ID stuck inside and no one has been able to pull it out..."; - icon_keyboard = "syndie_key"; - icon_screen = "explosive"; - name = "syndicate access change console"; - dir = 1 - }, -/obj/item/paper{ - default_raw_text = "

DS2 Corporate Report

The SSV Dauntless has successfully landed itself near active Nanotrasen installations. Engine shutdown in progress...

The Syndicate welcomes you onboard, Corporate Liaison. It is deeply suggested you help our crew via informing them of their corporate investors' goal and to help maintain cohesion. The ship is jointy ran, afterall. Don't hurt yourself now, and stay winning.

"; - name = "paper- 'SSV Dauntless Corporate Report'" - }, -/turf/open/floor/wood/large, -/area/space) -"Rr" = ( -/obj/structure/lattice/catwalk/mining, -/obj/structure/railing, -/turf/open/lava/plasma/ice_moon, -/area/space) -"Rs" = ( -/obj/machinery/button/door/directional/north{ - id = "syndicatesauna"; - name = "Sauna Window Shutters"; - pixel_y = -24 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood/large, -/area/space) -"Rv" = ( -/obj/structure/rack/gunrack, -/obj/item/gun/microfusion/mcr01/syndie, -/obj/item/gun/microfusion/mcr01/syndie, -/obj/item/gun/microfusion/mcr01/syndie, -/obj/item/gun/microfusion/mcr01/syndie, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Rw" = ( -/obj/machinery/suit_storage_unit/industrial/hauler, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ry" = ( -/turf/open/floor/carpet/donk, -/area/space) -"RB" = ( -/obj/machinery/button/door/directional/west{ - id = "syndihanger"; - name = "Docking Port Blast Doors"; - req_access = list("syndicate"); - pixel_x = 24 - }, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"RC" = ( -/obj/machinery/button/door/directional/north{ - id = "rad_shutters"; - name = "Radiation Shutters" - }, -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped/layer2, -/turf/open/floor/plating/reinforced, -/area/space) -"RH" = ( -/obj/structure/sign/warning/engine_safety/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/space) -"RI" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/turf/open/floor/engine/n2o, -/area/space) -"RJ" = ( -/obj/structure/cable, -/obj/machinery/power/smes/full, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"RN" = ( -/obj/machinery/computer/camera_advanced/xenobio{ - dir = 4; - networks = list("dauntless_xeno") - }, -/turf/open/floor/iron/textured, -/area/space) -"RO" = ( -/obj/structure/noticeboard/directional/north, -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating/reinforced, -/area/space) -"RP" = ( -/obj/structure/cable, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/dark, -/area/space) -"RV" = ( -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/purple/filled/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/textured, -/area/space) -"RX" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/carpet/red, -/area/space) -"Sa" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/structure/bed/double/pod, -/obj/effect/spawner/random/bedsheet/any/double, -/turf/open/floor/carpet/green, -/area/space) -"Sb" = ( -/obj/machinery/atmospherics/pipe/smart/simple/pink/visible{ - dir = 6 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"Sc" = ( -/obj/effect/turf_decal/siding/dark, -/turf/open/floor/iron/white/diagonal, -/area/space) -"Sg" = ( -/obj/structure/table/wood/fancy/red, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/space) -"Sj" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron/textured, -/area/space) -"Sl" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/processor, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/mineral/titanium/white, -/area/space) -"Sm" = ( -/obj/structure/sink/kitchen/directional/south, -/turf/open/floor/mineral/titanium/white, -/area/space) -"Sr" = ( -/obj/machinery/dna_scannernew, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/obj/effect/turf_decal/siding/green{ - dir = 5 - }, -/turf/open/floor/iron/dark, -/area/space) -"Sw" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 15 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Sy" = ( -/obj/item/gun/ballistic/automatic/sniper_rifle/modular/syndicate, -/obj/item/gun/ballistic/rifle/sniper_rifle, -/obj/structure/guncase{ - req_access = list("syndicate") - }, -/obj/item/ammo_box/magazine/sniper_rounds/marksman, -/obj/item/ammo_box/magazine/sniper_rounds/marksman, -/obj/item/ammo_box/magazine/sniper_rounds/marksman, -/obj/item/ammo_box/magazine/sniper_rounds/marksman, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"SA" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/turf/open/floor/wood/parquet, -/area/space) -"SB" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/diagonal, -/area/space) -"SC" = ( -/obj/machinery/button/door/directional/south{ - specialfunctions = 4; - id = "syndiship_vault"; - normaldoorcontrol = 1; - name = "Vault Bolt Control"; - req_access = list("syndicate") - }, -/obj/structure/closet/crate/goldcrate, -/obj/item/stack/sheet/mineral/plasma{ - amount = 10 - }, -/obj/item/stack/sheet/glass/fifty{ - pixel_y = 9 - }, -/obj/item/stack/sheet/iron/fifty, -/obj/item/stack/sheet/mineral/diamond{ - amount = 5 - }, -/obj/item/stack/sheet/bluespace_crystal{ - amount = 5 - }, -/obj/item/stack/sheet/mineral/gold{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/uranium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/titanium{ - amount = 10 - }, -/obj/item/stack/sheet/mineral/silver{ - amount = 10 - }, -/obj/item/stack/sheet/plastic/five, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"SD" = ( -/obj/structure/closet/secure_closet/interdynefob/robotics, -/obj/item/clothing/suit/toggle/labcoat/skyrat/rd, -/obj/item/clothing/suit/hooded/wintercoat/science/rd, -/obj/item/clothing/suit/toggle/labcoat/interdyne, -/obj/item/clothing/suit/toggle/labcoat/interdyne, -/obj/item/clothing/suit/toggle/labcoat/interdyne, -/obj/item/computer_disk/ordnance, -/obj/item/computer_disk/ordnance, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/modular_computer/pda/syndicate, -/turf/open/floor/carpet/purple, -/area/space) -"SF" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/book/granter/crafting_recipe/dusting/rebarxbowsyndie_ammo, -/turf/open/floor/mineral/plastitanium, -/area/space) -"SG" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/effect/turf_decal/vg_decals/numbers/two, -/turf/open/floor/engine, -/area/space) -"SH" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"SI" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/paper/fluff/xenoarch_guide, -/obj/item/storage/bag/xenoarch, -/turf/open/floor/stone, -/area/space) -"SJ" = ( -/obj/structure/lattice/catwalk/mining, -/obj/structure/railing{ - dir = 10 - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"SK" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/textured, -/area/space) -"SL" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"SM" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 9 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/stone, -/area/space) -"SN" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer2{ - dir = 9 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"SO" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/obj/machinery/chem_mass_spec, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/turf/open/floor/iron/white/small, -/area/space) -"SP" = ( -/obj/machinery/computer/order_console/cook/interdyne{ - dir = 1 - }, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"SW" = ( -/obj/machinery/computer/camera_advanced/syndie{ - dir = 1 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 6 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"SY" = ( -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/pen{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/dark/small, -/area/space) -"Ta" = ( -/obj/effect/landmark/navigate_destination, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Tb" = ( -/obj/structure/emergency_shield/cult/weak{ - desc = "A low energy shield used to protect a ship from various fauna attacks." - }, -/obj/structure/billboard/donk_n_go, -/turf/open/lava/plasma/ice_moon, -/area/space) -"Tc" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Td" = ( -/obj/item/storage/box/aquarium_props, -/obj/structure/aquarium/crab, -/turf/open/floor/wood/parquet, -/area/space) -"Ti" = ( -/obj/structure/closet/secure_closet/brig{ - id = "Syndicate Cell"; - name = "Syndicate Cell locker"; - req_one_access = null; - req_access = list("syndicate") - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Tk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Tm" = ( -/obj/effect/turf_decal/stripes, -/obj/machinery/door/airlock/engineering/glass{ - name = "Turbine Room" - }, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "rad_shutters" - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Tn" = ( -/obj/structure/chair/comfy/shuttle/tactical{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"To" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Tq" = ( -/obj/structure/table/wood/fancy/red, -/obj/item/reagent_containers/cup/glass/mug, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"Tr" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/stone, -/area/space) -"Ts" = ( -/obj/effect/turf_decal/vg_decals/atmos/nitrogen, -/obj/machinery/atmospherics/pipe/smart/simple/yellow/visible/layer2{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"Tt" = ( -/obj/structure/weightmachine, -/turf/open/floor/iron/white/small, -/area/space) -"Tv" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/structure/window/reinforced/survival_pod/spawner/directional/north, -/mob/living/carbon/human/species/monkey, -/obj/structure/flora/bush/flowers_yw/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"Tx" = ( -/obj/structure/lattice/catwalk/mining, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Tz" = ( -/obj/effect/mob_spawn/ghost_role/human/dauntless/syndicate/researcher{ - dir = 8 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/carpet/purple, -/area/space) -"TB" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/iron/textured, -/area/space) -"TC" = ( -/obj/structure/plasticflaps, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"TD" = ( -/obj/structure/safe/floor, -/obj/item/firelance, -/obj/item/storage/box/syndie_kit/imp_microbomb, -/obj/item/storage/box/syndie_kit/imp_microbomb, -/obj/item/radio/headset/interdyne/command, -/turf/open/floor/carpet/red, -/area/space) -"TE" = ( -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"TF" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/atmospherics/pipe/layer_manifold/brown{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"TG" = ( -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"TH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/iron/terracotta/small, -/area/space) -"TJ" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer2, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"TQ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 10 - }, -/obj/machinery/cell_charger_multi, -/turf/open/floor/iron/textured, -/area/space) -"TR" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/chem_dispenser/frontier_appliance, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/mineral/titanium/white, -/area/space) -"TW" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction/flip{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"TX" = ( -/obj/structure/closet/radiation, -/obj/item/mod/module/rad_protection, -/obj/item/mod/module/rad_protection, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"TY" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/white/small, -/area/space) -"Ua" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/turf/open/floor/iron/dark/small, -/area/space) -"Uc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Ud" = ( -/obj/machinery/light/directional/north, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, -/turf/open/floor/circuit/telecomms, -/area/space) -"Uf" = ( -/obj/machinery/computer/apc_control/away{ - dir = 8 - }, -/turf/open/floor/wood, -/area/space) -"Um" = ( -/obj/structure/cable, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Un" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/structure/cable, -/turf/open/floor/carpet/purple, -/area/space) -"Uo" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Uq" = ( -/obj/machinery/vending/wardrobe/syndie_wardrobe{ - onstation = 0; - onstation_override = 1; - pixel_x = -28; - density = 0 - }, -/obj/structure/chair/sofa/bench{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/space) -"Ur" = ( -/obj/machinery/atmospherics/miner/n2o, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/door/window/survival_pod/left/directional/east{ - name = "Atmos Access Hatch" - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Us" = ( -/turf/open/floor/iron/kitchen/diagonal, -/area/space) -"Uu" = ( -/obj/structure/table/wood/fancy/red, -/obj/effect/spawner/random/food_or_drink/pizzaparty{ - loot = list(/obj/item/pizzabox/margherita = 2, /obj/item/pizzabox/meat = 2, /obj/item/pizzabox/mushroom = 2, /obj/item/pizzabox/pineapple = 2, /obj/item/pizzabox/vegetable = 2) - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"Uv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/cable, -/obj/structure/chair/comfy/carp{ - dir = 4 - }, -/turf/open/floor/carpet/green, -/area/space) -"Uw" = ( -/obj/machinery/atmospherics/pipe/smart/simple/dark{ - dir = 4 - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Uy" = ( -/obj/machinery/door/poddoor{ - id = "turbine_vent" - }, -/turf/open/floor/engine, -/area/space) -"UC" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/clothing/head/utility/chefhat, -/obj/item/storage/belt/military/snack, -/turf/open/floor/iron/white, -/area/space) -"UD" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/gas_miner_beacons/syndicate{ - pixel_x = 7; - pixel_y = -4 - }, -/obj/item/storage/box/gas_miner_beacons/syndicate{ - pixel_x = -7; - pixel_y = -4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"UE" = ( -/turf/open/floor/iron/dark/textured_edge{ - dir = 4 - }, -/area/space) -"UF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/sign/poster/contraband/atmosia_independence/directional/south, -/turf/open/floor/iron/terracotta/small, -/area/space) -"UH" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/atmospherics/pipe/layer_manifold/pink{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"UI" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/taperecorder, -/obj/item/paper_bin{ - pixel_x = -5; - pixel_y = 6 - }, -/turf/open/floor/mineral/plastitanium/red{ - icon_state = "plastitanium" - }, -/area/space) -"UJ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/machinery/chem_dispenser/frontier_appliance, -/obj/structure/cable, -/obj/machinery/duct, -/turf/open/floor/wood/large, -/area/space) -"UN" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "turbine_shutters" - }, -/turf/open/floor/plating, -/area/space) -"UP" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer2{ - dir = 4 - }, -/obj/structure/cable, -/obj/machinery/power/terminal{ - dir = 1 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"UQ" = ( -/obj/structure/aquarium/prefilled, -/obj/item/storage/box/aquarium_props, -/turf/open/floor/wood/parquet, -/area/space) -"UR" = ( -/obj/effect/turf_decal/siding/dark, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"US" = ( -/obj/machinery/smartfridge/drinks, -/obj/structure/curtain/cloth{ - color = "#333333" - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"UT" = ( -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/wood/tile, -/area/space) -"UU" = ( -/obj/structure/cable, -/turf/open/floor/catwalk_floor/iron_smooth, -/area/space) -"UW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"UY" = ( -/obj/structure/closet/secure_closet/freezer/meat{ - req_access = list("syndicate") - }, -/obj/item/storage/fancy/egg_box, -/obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/condiment/flour, -/obj/item/reagent_containers/condiment/flour, -/obj/item/reagent_containers/condiment/enzyme{ - pixel_x = 12 - }, -/obj/item/reagent_containers/condiment/rice, -/obj/item/reagent_containers/condiment/sugar, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/soymilk, -/obj/item/reagent_containers/condiment/soymilk, -/obj/item/choice_beacon/ingredient, -/obj/item/toy/figure/chef, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"Ve" = ( -/turf/open/floor/noslip, -/area/space) -"Vf" = ( -/obj/machinery/door/window/survival_pod/left/directional/south{ - req_access = list("syndicate") - }, -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/iron/white, -/area/space) -"Vh" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "syndirecycle" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/obj/machinery/computer/pod/old/mass_driver_controller/chapelgun{ - pixel_x = -24; - id = "synditrashgun" - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Vj" = ( -/obj/structure/tank_holder/anesthetic, -/obj/machinery/anesthetic_machine, -/turf/open/floor/iron/white/small, -/area/space) -"Vk" = ( -/obj/machinery/smartfridge/food, -/obj/structure/curtain/cloth{ - color = "#333333" - }, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Vm" = ( -/obj/item/circuitboard/machine/ore_silo, -/obj/structure/frame/machine/secured, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Vo" = ( -/obj/structure/bodycontainer/morgue{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Vp" = ( -/obj/machinery/deepfryer, -/turf/open/floor/iron/white, -/area/space) -"Vs" = ( -/obj/machinery/bookbinder, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Vt" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 - }, -/obj/structure/fermenting_barrel, -/turf/open/floor/stone, -/area/space) -"Vu" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/south, -/turf/open/floor/circuit/telecomms, -/area/space) -"Vw" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 2 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/experi_scanner, -/turf/open/floor/iron/textured, -/area/space) -"Vx" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium{ - polarizer_id = "interdynebarbers"; - spawn_list = list(/obj/structure/window/reinforced/plasma/plastitanium) - }, -/obj/structure/flora/bush/flowers_br, -/turf/open/misc/grass/jungle/station, -/area/space) -"Vy" = ( -/obj/machinery/door/poddoor{ - id = "syndihanger" - }, -/obj/structure/fans/tiny/forcefield, -/turf/open/floor/mineral/plastitanium, -/area/space) -"VA" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 5 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/seed_extractor, -/turf/open/misc/grass/jungle/station, -/area/space) -"VB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"VC" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/carpet/red, -/area/space) -"VD" = ( -/obj/item/reagent_containers/cup/glass/trophy/gold_cup{ - pixel_y = 6; - desc = "To the loss of a beloved sister ship. May you rest peacefully beneath the ice."; - name = "DS-2 Memorial Trophy" - }, -/obj/structure/table/wood/fancy/red, -/turf/open/floor/wood/large, -/area/space) -"VG" = ( -/obj/effect/turf_decal/vg_decals/atmos/carbon_dioxide, -/turf/open/floor/plating/reinforced, -/area/space) -"VJ" = ( -/obj/machinery/processor/slime, -/turf/open/floor/iron/textured, -/area/space) -"VN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/layer2{ - dir = 1 - }, -/turf/open/floor/engine{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"VQ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/carpet/royalblue, -/area/space) -"VR" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark_red/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/carpet/royalblack, -/area/space) -"VS" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/junction{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Wa" = ( -/obj/structure/chair/sofa/corp/left{ - color = "#DE3A3A" - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/carpet/red, -/area/space) -"Wd" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/plating/reinforced, -/area/space) -"We" = ( -/obj/structure/chair/comfy/carp{ - dir = 1 - }, -/obj/machinery/vending/autodrobe/all_access{ - onstation = 0; - onstation_override = 1; - density = 0; - pixel_y = -32 - }, -/turf/open/floor/carpet/donk, -/area/space) -"Wh" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners{ - dir = 8 - }, -/turf/open/floor/iron/cafeteria, -/area/space) -"Wi" = ( -/obj/effect/turf_decal/stripes, -/obj/effect/mapping_helpers/airlock/access/all/syndicate/general, -/obj/effect/mapping_helpers/airlock/cutaiwire, -/obj/machinery/door/poddoor/shutters/radiation/preopen{ - id = "rad_shutters" - }, -/obj/machinery/door/airlock/vault, -/obj/structure/fans/tiny/forcefield, -/turf/closed/wall/r_wall/syndicate/cruiser, -/area/space) -"Wm" = ( -/obj/machinery/smartfridge/chemistry/virology/preloaded{ - pixel_x = -32 - }, -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/storage/box/monkeycubes, -/turf/open/floor/iron/dark, -/area/space) -"Wn" = ( -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/hidden/layer2{ - dir = 5 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"Wo" = ( -/obj/machinery/gibber, -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"Wp" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"Wu" = ( -/obj/machinery/netpod, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Wv" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Ww" = ( -/obj/machinery/atmospherics/pipe/smart/simple/supply/visible/layer2, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"WB" = ( -/obj/machinery/duct, -/obj/structure/cable, -/turf/open/floor/wood/large, -/area/space) -"WC" = ( -/obj/structure/chair/sofa/bench/left{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/space) -"WG" = ( -/obj/machinery/plate_press, -/obj/item/stack/license_plates/empty/fifty, -/turf/open/floor/iron/dark/small, -/area/space) -"WH" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"WM" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold/supply/visible/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"WN" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/mineral/plastitanium, -/area/space) -"WP" = ( -/obj/structure/mecha_wreckage/mauler{ - anchored = 1; - desc = "A prized relic from the recent attack upon the Dauntless, the only mech to survive intact. Attached to the chest plate is a commemoration plaque that reads: 'Lest we forget our fallen agents.'" - }, -/turf/open/floor/carpet/donk, -/area/space) -"WS" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/stone, -/area/space) -"WW" = ( -/obj/structure/sign/warning/chem_diamond/directional/east, -/obj/structure/emergency_shield/cult/weak{ - desc = "A low energy shield used to protect a ship from various fauna attacks." - }, -/turf/open/lava/plasma/ice_moon, -/area/space) -"WX" = ( -/turf/open/floor/carpet/red, -/area/space) -"WZ" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"Xb" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 10 - }, -/turf/open/floor/iron/showroomfloor, -/area/space) -"Xd" = ( -/obj/machinery/iv_drip, -/obj/machinery/biogenerator/medstation/directional/east, -/turf/open/floor/iron/white/small, -/area/space) -"Xf" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Xg" = ( -/obj/effect/turf_decal/siding/thinplating/dark, -/obj/machinery/biogenerator/organic_printer, -/obj/effect/turf_decal/siding/thinplating/dark/end, -/turf/open/floor/stone, -/area/space) -"Xh" = ( -/obj/structure/sink/directional/east, -/obj/machinery/vending/wardrobe/jani_wardrobe{ - onstation = 0; - onstation_override = 1; - pixel_y = -28 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Xk" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/mod/construction/broken_core{ - pixel_x = -2; - pixel_y = -6 - }, -/obj/item/mod/construction/broken_core{ - pixel_x = -2; - pixel_y = -6 - }, -/obj/item/mod/core/standard, -/obj/item/pai_card, -/turf/open/floor/iron/textured, -/area/space) -"Xm" = ( -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/carpet/purple, -/area/space) -"Xt" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/carpet/donk, -/area/space) -"Xv" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/machinery/atmospherics/components/trinary/mixer{ - dir = 8 - }, -/turf/open/floor/plating/reinforced, -/area/space) -"XA" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/machinery/chem_dispenser/mutagensaltpeter, -/turf/open/misc/grass/jungle/station, -/area/space) -"XB" = ( -/obj/machinery/grill, -/turf/open/floor/iron/white, -/area/space) -"XE" = ( -/obj/effect/turf_decal/vg_decals/atmos/nitrous_oxide, -/turf/open/floor/plating/reinforced, -/area/space) -"XF" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"XI" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/pipe_dispenser{ - pixel_x = -3 - }, -/obj/item/rpd_upgrade/unwrench, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"XK" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/effect/spawner/random/mod/maint, -/obj/effect/spawner/random/mod/maint, -/obj/effect/spawner/random/mod/maint, -/obj/machinery/airalarm/directional/south, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/textured, -/area/space) -"XP" = ( -/obj/machinery/igniter{ - id = "syndiship_igniter" - }, -/turf/open/floor/engine, -/area/space) -"XQ" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/reagent_containers/cup/maunamug, -/turf/open/floor/wood/large, -/area/space) -"XR" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/obj/machinery/door/poddoor{ - id = "syndieng_windows" - }, -/obj/item/airbag/immediate_arm, -/turf/open/floor/plating/reinforced, -/area/space) -"XS" = ( -/obj/structure/toilet{ - pixel_y = 13; - dir = 8 - }, -/turf/open/floor/iron/white/small, -/area/space) -"XT" = ( -/obj/structure/safe/floor, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/obj/item/book/granter/crafting_recipe/death_sandwich, -/obj/item/book/granter/crafting_recipe/combat_baking, -/obj/item/book/manual/chef_recipes, -/obj/item/book/granter/crafting_recipe/cooking_sweets_101, -/turf/open/floor/mineral/plastitanium, -/area/space) -"XW" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west{ - dir = 10 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/wood/parquet, -/area/space) -"XY" = ( -/obj/machinery/button/polarizer{ - name = "Hanger doors"; - id = "syndihanger"; - pixel_x = -24 - }, -/turf/open/floor/iron/colony/bolts, -/area/space) -"Ya" = ( -/obj/effect/spawner/structure/window/reinforced/plasma/plastitanium, -/turf/open/floor/plating/reinforced, -/area/space) -"Yb" = ( -/obj/structure/cable, -/obj/machinery/duct, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/airlock/security/old/glass{ - name = "Brig" - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"Yf" = ( -/obj/structure/sign/poster/contraband/syndiemoth/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Yh" = ( -/obj/item/key/janitor, -/obj/vehicle/ridden/janicart, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Yj" = ( -/obj/structure/sign/poster/timeclock_psa/directional/east, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Ym" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood/fancy/black, -/obj/item/phone, -/turf/open/floor/carpet/red, -/area/space) -"Yn" = ( -/obj/structure/chair/comfy/carp{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Yt" = ( -/obj/machinery/dna_infuser, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/siding/green{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/space) -"Yu" = ( -/obj/machinery/washing_machine, -/turf/open/floor/iron/white/small, -/area/space) -"Yw" = ( -/obj/structure/shipping_container/cybersun{ - pixel_x = -17; - pixel_y = 15 - }, -/turf/open/floor/plating/elevatorshaft, -/area/space) -"YB" = ( -/obj/machinery/shower/directional/west, -/obj/structure/drain, -/obj/item/soap/syndie, -/turf/open/floor/noslip, -/area/space) -"YC" = ( -/obj/structure/table/wood, -/obj/structure/towel_bin{ - pixel_y = -10; - pixel_x = -1 - }, -/turf/open/floor/iron/white/small, -/area/space) -"YD" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/stasis{ - dir = 8 - }, -/obj/effect/turf_decal/siding/thinplating{ - color = "#464d5b"; - dir = 5 - }, -/turf/open/floor/iron/white/small, -/area/space) -"YE" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/space) -"YG" = ( -/obj/structure/chair/comfy/carp{ - dir = 4 - }, -/obj/structure/bookcase/random{ - pixel_y = -32 - }, -/obj/structure/cable, -/turf/open/floor/carpet/donk, -/area/space) -"YH" = ( -/turf/open/floor/iron/dark, -/area/space) -"YJ" = ( -/obj/structure/sign/poster/contraband/gorlex_recruitment/directional/north, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"YM" = ( -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/obj/machinery/quantum_server, -/turf/open/floor/iron/dark/small, -/area/space) -"YN" = ( -/obj/effect/turf_decal/siding/thinplating/dark{ - dir = 9 - }, -/obj/machinery/vending/hydroseeds{ - onstation = 0; - onstation_override = 1; - pixel_x = -28; - can_astar_pass = 1; - density = 0 - }, -/obj/structure/window/reinforced/plasma/spawner/directional/north, -/obj/structure/flora/bush/flowers_pp/style_random, -/turf/open/misc/grass/jungle/station, -/area/space) -"YO" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/structure/closet/generic/wall{ - pixel_x = 32 - }, -/obj/item/modular_computer/pda/syndicate, -/turf/open/floor/carpet/green, -/area/space) -"YP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/suit_storage_unit/interdyne, -/turf/open/floor/carpet/royalblue, -/area/space) -"YQ" = ( -/obj/machinery/button/polarizer{ - name = "Hanger doors"; - id = "syndihanger"; - pixel_x = -24 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/red/line, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"YU" = ( -/obj/structure/filingcabinet, -/obj/item/folder/syndicate/red, -/obj/item/paper{ - default_raw_text = "

SSV Dauntless Cargo Guide

The SSV Dauntless has made a corporate deal with Gorlex Industries to test out their new 1100mm rail cannon reverse engineered off the 1500mm delivery system that Nanotrasen utilizes.

Please note, if at all the base has fallen into the wrong hands, it is required that these boards are to be destroyed as it contains our cryptography private seeds.

All cargo goods are logged and maintained, any misuse of funds will be traced back to agent, and will be reprimanded.

  • Express Supply Console Computer
  • Install into a computer frame and print a beacon. Wrench the beacon down in a clear area (and ideally away from explosive goods).
  • Ancient Powerator
  • This is used to generate credits for orders. Ideally used to consume excess power from an upgraded turbine.
  • Bounty Pad
  • A quantum pad that teleports any materials of value into our black market vendors. Credits sold is deposited instantaneously into the SSV Dauntless account.
  • Bounty Control Terminal
  • This is used to activate the bounty pad to sell goods. Install into a computer frame and link the bounty pad using a multi-tool.

Please note: Physical money can be directly sent to our black market vendors to be exchanged into credits.

"; - name = "paper- 'SSV Dauntless Cargo Guide'" - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"YW" = ( -/turf/open/floor/iron/kitchen_coldroom/freezerfloor, -/area/space) -"YX" = ( -/obj/machinery/holopad, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"YZ" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer/on{ - dir = 4; - initialize_directions = 4; - name = "euthanization chamber freezer" - }, -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/textured, -/area/space) -"Za" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/wood/large, -/area/space) -"Zd" = ( -/obj/structure/fireplace, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/item/stack/sheet/mineral/wood/fifty, -/turf/open/floor/iron/terracotta/small, -/area/space) -"Zh" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"Zi" = ( -/obj/structure/disposaloutlet{ - dir = 1 - }, -/obj/machinery/conveyor/auto{ - dir = 1; - id = "syndirecycle" - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/west, -/turf/open/floor/plating/reinforced, -/area/space) -"Zj" = ( -/obj/machinery/bluespace_vendor/directional/west, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Zl" = ( -/obj/machinery/computer/security/telescreen/entertainment/directional/east, -/obj/structure/table/wood/fancy/red, -/obj/effect/spawner/random/food_or_drink/dinner, -/turf/open/floor/glass/reinforced/plasma/icemoon, -/area/space) -"Zn" = ( -/obj/machinery/cryo_cell{ - dir = 4 - }, -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/space) -"Zo" = ( -/obj/structure/chair/sofa/corp/right{ - color = "#DE3A3A"; - dir = 4 - }, -/turf/open/floor/wood/parquet, -/area/space) -"Zq" = ( -/obj/machinery/duct, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white/small, -/area/space) -"Zs" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/iron/white, -/area/space) -"Zv" = ( -/obj/effect/turf_decal/trimline/purple/filled/line{ - dir = 4 - }, -/obj/machinery/airalarm/directional/east, -/obj/effect/mapping_helpers/airalarm/syndicate_access, -/turf/open/floor/iron/textured, -/area/space) -"Zy" = ( -/obj/item/tape/random, -/obj/item/tape/random, -/obj/item/tape/random, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/mineral/plastitanium, -/area/space) -"Zz" = ( -/obj/structure/sign/painting/large/library{ - pixel_y = 30 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/space) -"ZB" = ( -/obj/structure/table/reinforced/plastitaniumglass, -/obj/item/slime_extract/grey{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/slime_extract/grey, -/obj/item/slime_extract/grey{ - pixel_x = 2; - pixel_y = -2 - }, -/turf/open/floor/iron/textured, -/area/space) -"ZC" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ZF" = ( -/obj/item/toy/mecha/darkgygax{ - pixel_y = 16 - }, -/obj/item/toy/figure/syndie, -/obj/structure/table/reinforced/plastitaniumglass, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ZG" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ZH" = ( -/obj/structure/reagent_dispensers/watertank, -/obj/structure/cable, -/turf/open/floor/catwalk_floor/titanium, -/area/space) -"ZI" = ( -/obj/structure/table/wood/fancy/black, -/obj/item/sign/flag/syndicate{ - pixel_x = 3; - pixel_y = 6 - }, -/obj/item/flashlight/lamp/green{ - pixel_x = -6; - pixel_y = 4 - }, -/obj/item/stamp/syndicate{ - pixel_y = -4; - pixel_x = 9 - }, -/obj/item/stamp/denied{ - pixel_y = -4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/turf/open/floor/carpet/red, -/area/space) -"ZJ" = ( -/obj/machinery/computer/monitor{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/space) -"ZO" = ( -/obj/structure/chair/sofa/corp/left{ - color = "#DE3A3A"; - dir = 8 - }, -/turf/open/floor/wood/parquet, -/area/space) -"ZP" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/catwalk_floor/colony_fabricator, -/area/space) -"ZQ" = ( -/obj/effect/turf_decal/vg_decals/atmos/nitrogen, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ - dir = 8 - }, -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/structure/window/reinforced/plasma/spawner/directional/south, -/turf/open/floor/engine/n2, -/area/space) -"ZS" = ( -/obj/machinery/computer/scan_consolenew{ - dir = 8 - }, -/obj/structure/window/reinforced/survival_pod/spawner/directional/east, -/obj/effect/turf_decal/siding/green{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/space) -"ZT" = ( -/obj/machinery/button/door/directional/west{ - id = "syndimining"; - name = "Blast Doors"; - req_access = list("syndicate"); - pixel_x = 0; - pixel_y = 24 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/red/line{ - dir = 8 - }, -/turf/open/floor/engine/hull{ - initial_gas_mix = "LAVALAND_ATMOS" - }, -/area/space) -"ZY" = ( -/obj/structure/chair/office/tactical, -/turf/open/floor/mineral/plastitanium, -/area/space) - -(1,1,1) = {" -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -"} -(2,1,1) = {" -mc -mc -mc -mc -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -mc -mc -mc -"} -(3,1,1) = {" -mc -mc -mc -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -on -on -on -on -on -on -on -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -mc -mc -"} -(4,1,1) = {" -mc -mc -uQ -uQ -uQ -uQ -uQ -uQ -on -on -on -on -on -on -on -on -on -uQ -uQ -on -uQ -uQ -uQ -on -on -on -on -on -gA -gA -gA -gA -gA -gA -gA -on -uQ -uQ -uQ -uQ -on -on -on -on -on -on -on -on -uQ -uQ -uQ -uQ -uQ -on -on -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -mc -"} -(5,1,1) = {" -mc -uQ -uQ -uQ -uQ -uQ -uQ -on -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -on -gA -nP -nP -nP -gA -gA -gA -gA -gA -gA -gA -Ee -tY -ut -qr -gA -on -on -on -on -on -gA -gA -XR -XR -XR -XR -gA -gA -nS -Pi -SJ -on -hr -gA -gA -on -uQ -WW -on -on -on -on -on -uQ -uQ -uQ -uQ -mc -"} -(6,1,1) = {" -mc -uQ -uQ -uQ -on -on -on -on -gA -EV -oz -oz -oz -bM -gA -uD -uR -gA -gA -gA -ZT -ra -wy -gA -gA -It -Nf -QC -tC -gA -pi -iS -iS -Xm -gA -gA -gA -gA -gA -gA -gA -DX -WH -XI -cO -UD -Ev -gA -EG -oM -Rr -gA -gA -gA -gA -gA -uQ -gA -gA -gA -gA -gA -gA -on -uQ -uQ -uQ -mc -"} -(7,1,1) = {" -mc -uQ -uQ -on -gA -gA -gA -gA -gA -fK -CH -bF -CH -zF -gA -fU -fU -gA -gA -gA -ix -ix -ix -gA -gA -Ey -cX -qS -FY -gA -vO -iS -iS -SD -PK -ky -uK -tW -ky -Fw -gA -qd -Cc -Cc -Cc -Cc -Zh -gA -gA -gA -au -gA -gA -tR -ac -gA -Uy -gA -gA -gA -gA -gA -Cq -JM -on -uQ -uQ -mc -"} -(8,1,1) = {" -mc -uQ -uQ -on -gA -zK -wI -NX -gA -nK -KW -wL -bF -CH -fU -iv -Db -gA -hs -ED -Cy -Cy -Cy -bi -gA -QC -SG -QC -re -gA -sL -pd -MF -Tz -gA -cS -ky -ky -zP -bB -fv -qd -Cc -Cc -Cc -Cc -Zh -qd -ZH -gA -NQ -xE -Gz -Iu -Iu -QQ -Do -gA -Mz -DQ -PQ -vc -gA -gA -on -uQ -uQ -mc -"} -(9,1,1) = {" -mc -uQ -uQ -on -gA -td -sr -BC -gA -rp -Eo -Eo -Eo -Ua -gA -gA -gA -gA -iB -QO -QO -QO -QO -CN -gA -Ey -cX -qS -cX -gA -gA -gA -bL -gA -gA -UU -UU -UU -pE -UU -gA -Cc -Cc -Cc -Cc -Cc -EK -Cc -XF -gA -MR -Iu -xE -xE -xE -rI -wk -gA -Bp -tB -tB -UF -gA -gA -on -uQ -uQ -mc -"} -(10,1,1) = {" -mc -uQ -uQ -on -gA -QR -sr -BC -gA -ma -QV -oY -kh -kh -aN -uR -uD -gA -bo -QO -QO -PH -QO -vA -gA -QC -oP -QC -FD -gA -cE -gv -dG -PB -gA -Kk -He -oI -pE -ts -TC -Cc -Cc -Cc -Cc -Cc -EK -Cc -wi -Tm -wi -Iu -qM -gA -UN -Gd -jP -gA -Zd -Dc -eH -ki -gA -gA -on -fC -uQ -mc -"} -(11,1,1) = {" -mc -uQ -uQ -on -gA -AQ -pO -FC -gA -ma -kh -Pc -kh -kh -fU -iv -Mi -gA -hs -Jo -QO -Pj -QO -Ft -gA -Ey -cX -qS -cX -gA -CI -Zv -Hh -ln -gA -gA -gA -gA -at -gA -gA -aY -Cc -Cc -Cc -Cc -EK -Cc -Gp -gA -GC -Iu -xE -Jt -vx -VN -XP -Af -TH -lp -Fm -rT -gA -gA -on -uQ -uQ -mc -"} -(12,1,1) = {" -mc -uQ -uQ -on -gA -wg -ks -PO -kh -ma -QV -SY -kh -kh -gA -gA -gA -gA -gA -gA -QO -Pj -QO -db -gA -AZ -HK -HK -yN -gA -gA -gA -bL -gA -gA -nn -dj -xL -yi -fh -gA -Cc -Cc -Cc -Cc -Cc -EK -Cc -kg -gA -dO -Iu -xE -Ao -hQ -jH -vx -Af -bQ -vl -Uf -jZ -gA -gA -on -uQ -uQ -mc -"} -(13,1,1) = {" -mc -uQ -uQ -on -gA -Hn -Hn -Hn -gA -zv -kh -kh -kh -kh -tM -gA -In -pZ -pv -gA -QO -JN -WN -Nm -gA -fe -GB -vx -vg -gA -la -Pu -dG -TQ -gA -uE -xL -xL -yi -XK -NS -Cc -Cc -Cc -Cc -Cc -EK -Cc -TX -gA -yC -Iu -Em -Uw -Af -Af -Af -Gd -nV -gA -gA -gA -gA -gA -on -uQ -uQ -mc -"} -(14,1,1) = {" -mc -uQ -uQ -on -gA -xb -gK -iy -gA -ma -zm -iw -TR -Sl -gA -gA -Iv -sj -wC -Ki -As -bN -gA -gA -gA -rM -Pt -Pt -wW -gA -br -xL -yi -Vw -gA -dH -xL -xL -yi -fh -aU -Cc -Cc -Cc -Cc -Cc -EK -qd -wi -Jj -wi -Qi -eO -Xv -Iu -Iu -Iu -zG -Iu -hL -po -ii -gA -gA -on -uQ -uQ -mc -"} -(15,1,1) = {" -mc -uQ -on -gA -gA -gA -gA -gA -gA -zv -kh -Ay -Sm -By -Rc -gA -LW -aE -EQ -gA -Uo -wR -gA -uj -qK -IC -VJ -RN -xL -gA -oV -xL -yi -oW -gA -TB -xL -xL -yi -PY -gA -Nb -Cc -Cc -Cc -Cc -EK -qd -Jq -gA -Iu -eU -Sb -Hx -Iu -Iu -Iu -Iu -Iu -Iu -Iu -Iu -gA -gA -on -uQ -uQ -mc -"} -(16,1,1) = {" -mc -uQ -on -gA -cR -Br -cR -gA -WG -ma -kh -Ay -Mo -By -oi -gA -gA -gA -gA -gA -TG -zl -gA -Hc -xL -AU -QN -gV -Sj -EW -RV -AH -hX -dx -ab -hX -SK -SK -PE -kv -gA -Cc -Cc -Cc -Cc -Cc -EK -qd -bO -gA -vb -eU -gC -Iu -Iu -Iu -Iu -Iu -Iu -Iu -Iu -Iu -gA -gA -on -uQ -uQ -mc -"} -(17,1,1) = {" -mc -uQ -on -gA -KH -zd -tP -gA -WG -ma -kh -Fb -Mo -By -Hf -gA -Rd -QM -Ni -Ni -Nv -ym -gA -YZ -xL -xL -xL -xL -yi -gA -hW -yi -xL -EA -gA -JU -xL -xL -xL -Xk -gA -Cc -Cc -Cc -Cc -Cc -EK -rS -vz -cV -RC -Wn -gC -Iu -Iu -Iu -Iu -Iu -Iu -Iu -Iu -Iu -gA -gA -on -uQ -uQ -mc -"} -(18,1,1) = {" -mc -uQ -on -gA -wD -fD -zd -ma -ma -ma -ma -Mo -Mo -By -DL -gA -XS -HA -Ti -yw -du -wT -gA -Ud -PN -xL -xL -xL -yi -gA -aD -yi -xL -DT -gA -hA -xL -xs -xL -Jw -gA -Cc -Cc -Cc -Bb -LM -Nr -CQ -nT -gA -Ts -je -sU -XE -VG -Iu -dK -Iu -Iu -Iu -Iu -Iu -gA -gA -on -uQ -uQ -mc -"} -(19,1,1) = {" -mc -uQ -on -gA -Ia -uM -Ia -gA -cI -ma -kh -dV -LS -Kx -gA -gA -gA -gA -xq -ju -gA -ym -gA -iQ -Vu -vh -ZB -uH -tn -gA -ul -pI -tZ -oO -gA -Nn -LN -MG -Ma -iE -gA -PD -no -Cc -EK -gA -gA -LY -gA -gA -Nk -JP -UH -TF -mz -Ya -gA -Iu -Iu -Iu -Iu -Iu -gA -gA -on -uQ -uQ -mc -"} -(20,1,1) = {" -mc -uQ -on -gA -wz -gA -wz -gA -FP -ma -kh -HU -rW -Tt -gA -vs -Mf -gA -Oa -nz -DS -ym -gA -gA -gA -gA -gA -gA -gA -gA -gA -bL -qm -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -MN -gA -RJ -UP -Bn -gA -ZQ -qZ -cW -RI -uk -zz -gA -Iu -Iu -Iu -Iu -Iu -gA -gA -on -uQ -uQ -mc -"} -(21,1,1) = {" -mc -uQ -on -gA -gA -gA -gA -gA -gA -ma -kh -kh -kh -mJ -Az -Rb -fJ -ec -fU -fU -Qn -ym -lK -QO -QO -zp -QO -QO -QO -QO -dB -bL -TG -lK -zp -QO -QO -QO -QO -QO -Zj -RH -zp -dB -sT -wS -ui -UP -BI -gA -IG -am -vi -Ur -hF -Lx -gA -Iu -Iu -Iu -Iu -Iu -gA -gA -on -uQ -uQ -mc -"} -(22,1,1) = {" -mc -uQ -uQ -on -on -gA -uR -DV -fU -ma -kh -kh -kh -xN -Gd -CU -QO -Gd -YJ -fU -FF -ok -AS -Uo -Uo -Uo -Uo -Uo -Uo -Uo -ur -bL -TG -AS -Uo -Uo -Uo -Uo -Uo -Uo -Uo -Uo -Uo -ur -iG -gA -RJ -UP -Nx -gA -MU -MU -qn -MU -MU -MU -Wi -Iu -Iu -dg -Iu -nH -gA -gA -on -uQ -uQ -mc -"} -(23,1,1) = {" -mc -uQ -uQ -on -on -gA -EC -Gx -aN -ma -fV -cZ -fV -cp -kr -Fu -nf -yD -zn -hi -Yb -mx -Gk -Gk -Gk -Gk -Gk -Gk -Gk -yo -fA -hM -Hv -Hv -Hv -Hv -Hv -Hv -Hv -Hv -Hv -Hv -Hv -Hv -WM -gT -Ww -SN -cY -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -on -uQ -uQ -mc -"} -(24,1,1) = {" -mc -uQ -on -gA -gA -gA -gA -gA -gA -kh -kh -YM -gA -gA -gA -fv -gA -gA -sT -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -ku -bR -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -Zz -ZG -Um -Um -Um -gA -gA -YN -KU -Cb -PA -SM -jO -qv -MD -fv -ep -xz -Uv -Om -gA -on -uQ -uQ -mc -"} -(25,1,1) = {" -mc -uQ -on -gA -QG -QG -QG -RP -TG -kh -kh -hJ -gA -mC -fU -rU -gA -KL -nU -Kn -gA -FV -yH -VC -gA -Vm -Yf -YU -gA -ku -VB -gA -ZF -IS -eh -xU -xS -gA -Fj -Dz -gw -ZI -gA -BG -ZP -tJ -MM -ew -vC -gA -VA -vH -vH -EU -xy -xM -uW -dA -gA -XT -mB -tD -Sw -gA -on -uQ -uQ -mc -"} -(26,1,1) = {" -mc -uQ -on -gA -km -pf -DF -dT -gA -kh -kh -kh -my -rU -rU -rU -gA -mX -yb -cq -gA -rj -TD -FS -gA -gd -aH -QO -jc -ku -VB -gA -xK -QO -yK -QO -nZ -gA -DJ -WX -WX -Ym -gA -BG -VS -gA -Ny -qG -XQ -gA -XA -bF -fY -Oq -zo -xM -mI -Rj -gA -Qe -YO -Sa -Hu -gA -on -uQ -uQ -mc -"} -(27,1,1) = {" -mc -uQ -on -gA -UT -UT -UT -hN -gA -CW -az -az -bZ -Wu -iv -DU -gA -tT -FX -eK -gA -qT -fP -Fz -gA -xd -aR -SC -gA -Gr -VB -gA -BW -PM -Ju -gh -ZJ -gA -kY -WX -WX -AX -gA -LU -pC -im -cb -pp -Dj -gA -nX -fY -bF -QY -zo -oZ -nN -Xg -gA -gA -gA -gA -gA -gA -on -uQ -uQ -mc -"} -(28,1,1) = {" -mc -uQ -on -gA -so -jn -pL -dT -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -sT -gA -gA -gA -gA -gA -gA -gA -ku -UW -gF -ol -Os -yJ -eA -Bl -gA -bn -zj -xf -jI -gA -BG -ZP -gA -nc -nY -mT -gA -kn -bF -fN -zS -zo -rs -sK -fG -gA -xm -Qs -Wo -Qm -gA -on -uQ -uQ -mc -"} -(29,1,1) = {" -mc -uQ -on -gA -gA -Hz -Hz -fv -gA -gA -NJ -Iu -QK -HL -Iu -Iu -Iu -gA -Sy -nd -Rv -Od -KG -gA -jY -CX -SF -CY -gA -cz -eM -GP -hI -be -nB -fl -UR -md -yF -Eu -lS -Cr -gA -BG -hc -gA -gA -gA -gA -gA -kn -fN -fY -zS -zo -rs -PW -Rj -gA -Dg -YW -YW -pM -gA -on -uQ -uQ -mc -"} -(30,1,1) = {" -mc -uQ -uQ -on -bA -fF -Dw -OO -Qf -gA -le -Iu -QQ -xE -Iu -Iu -Iu -gA -Nj -iS -iS -iS -Mr -gA -Oa -fU -fU -KA -gA -ku -FW -gF -jm -ff -Mb -Qz -SW -gA -nw -SA -XW -gR -gA -LU -ZP -gA -GO -wq -WP -gA -kn -bF -bF -zS -zo -jw -gG -xw -gA -rb -YW -YW -UY -gA -on -uQ -uQ -mc -"} -(31,1,1) = {" -mc -uQ -uQ -on -bA -Lj -UE -UE -mU -gA -sl -Iu -My -xE -Iu -Iu -Iu -gA -Ae -iS -iS -iS -hV -rq -Ld -YX -fU -ZY -ig -ku -VB -gA -Zy -jm -tF -wo -pm -gA -BP -iS -Bo -Zo -gA -BG -cC -im -Xt -Ry -MS -gA -kn -Ko -fN -zS -dY -Tr -yy -vM -gA -qX -YW -YW -mM -gA -on -uQ -uQ -mc -"} -(32,1,1) = {" -mc -uQ -on -gA -gA -gA -gA -gA -bL -gA -iO -MU -Iu -xE -Iu -Iu -Iu -gA -Bt -iS -iS -iS -xe -gA -WZ -fU -fU -iP -gA -ku -VB -gA -by -QO -Tn -QO -jC -gA -cQ -iS -tN -ni -gA -BG -ZP -gA -oC -Ry -We -gA -kn -fN -Ko -zS -Vt -Gm -sJ -ax -gA -qX -rr -rr -SP -gA -on -uQ -uQ -mc -"} -(33,1,1) = {" -mc -uQ -on -BL -gA -bw -gX -GS -bL -gA -Iu -Iu -Iu -xE -Iu -Iu -Iu -gA -hO -jy -QI -jQ -vL -gA -xS -vd -aL -Aa -gA -ku -VB -gA -UI -fQ -qF -KF -Lc -gA -il -uI -CP -ZO -gA -LU -ZP -gA -lz -EF -zD -gA -FL -FL -FL -FL -gA -KE -Qt -iw -gA -gA -zt -gA -gA -gA -on -uQ -uQ -mc -"} -(34,1,1) = {" -mc -uQ -on -Tx -gA -Pf -QO -CZ -bL -gA -gA -gA -gA -fv -gA -gA -gA -gA -gA -gA -bL -gA -gA -gA -gA -gA -gA -gA -gA -Oc -Uc -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -MQ -mO -gA -gA -gA -gA -gA -Nw -UJ -ON -lN -Qu -yk -Us -Us -vu -eg -eg -Lh -HM -gA -Tb -uQ -uQ -mc -"} -(35,1,1) = {" -mc -uQ -on -BL -gA -ea -EE -yB -KN -im -im -im -GF -im -im -im -im -im -im -im -TW -im -qo -fw -fw -nL -fw -fw -fw -Qy -Ep -Ep -Ep -FM -Ep -Ep -Ep -Ep -Ep -Ep -Ep -Ep -Ep -FM -gS -xX -ET -ET -Wh -FI -ct -iS -iS -tl -fw -rg -yG -ji -YE -ub -di -di -pr -xx -on -uQ -uQ -mc -"} -(36,1,1) = {" -mc -uQ -on -gA -gA -gA -gA -gA -gA -gA -gA -gA -Wv -DI -Cy -Cy -Cy -Cy -Cy -Cy -Cy -ZC -KE -TG -DI -Cy -Cy -Cy -Cy -Cy -Cy -Cy -ZC -BR -DI -Cy -Cy -Cy -Cy -Cy -Cy -Cy -ZC -BR -DI -gA -ht -jg -jg -zk -kj -iS -iS -pJ -gA -OG -ql -Us -dI -dc -Lh -Lh -XB -xx -on -uQ -uQ -mc -"} -(37,1,1) = {" -mc -uQ -uQ -on -gA -gA -Vh -Ef -DG -Uo -Cd -im -bk -lK -QO -QO -QO -QO -aR -QO -QO -dB -KE -TG -lK -QO -QO -QO -aR -QO -QO -QO -dB -BR -lK -QO -QO -QO -QO -da -QO -aR -dB -BR -oQ -gA -Tq -jg -KO -zk -Sg -iS -iS -rV -gA -Or -Eb -Us -pG -Zs -Lh -Lh -QZ -gA -on -uQ -uQ -mc -"} -(38,1,1) = {" -mc -uQ -uQ -uQ -nP -HB -cN -aJ -mv -aJ -Zi -jv -bL -lK -gA -gA -gA -gA -gA -gA -gA -gA -KE -qm -gA -gA -gA -gA -gA -gA -gA -gA -gA -ps -gA -gA -gA -gA -gA -gA -gA -gA -gA -BR -lK -gA -FR -jg -TJ -ES -Oe -Lp -uF -zs -gA -wl -oe -Us -pG -Zs -Lh -Lh -Mh -gA -on -uQ -uQ -mc -"} -(39,1,1) = {" -mc -uQ -on -gA -gA -gA -jB -wh -jB -jB -jB -gA -bL -lK -gA -oo -vZ -iH -gA -ee -sI -Dv -kf -dt -Am -ja -Wm -Oo -gA -ta -gp -Xb -vj -xC -jF -gA -wA -vU -yI -xr -yI -kA -gA -BR -lK -FL -Qr -bC -jg -lZ -gA -Td -UQ -Ox -gA -Co -fx -Us -Kw -Zs -Lh -Lh -Vp -Cq -on -uQ -uQ -mc -"} -(40,1,1) = {" -mc -uQ -on -gA -NA -fv -Je -fv -fv -MC -uL -gA -bL -AS -gA -tV -yy -vr -gA -lb -kS -ow -bl -pU -Sc -sy -OD -YH -gA -nh -xR -mY -dB -KE -zi -gA -Ce -aZ -Nu -qz -Jz -Mq -gA -BR -lK -FL -gM -kH -jg -jg -gq -Op -vF -Jr -Vk -Us -Us -Us -pG -Lh -mZ -gA -gA -gA -on -uQ -uQ -mc -"} -(41,1,1) = {" -mc -uQ -on -gA -Ho -dF -Wp -qe -qe -fk -CV -im -MA -im -hy -WS -lr -SI -gA -vQ -ys -SO -Ij -mS -KY -Gq -AA -rP -gA -aS -if -mY -dB -KE -Ow -gA -qC -kG -mq -sP -gb -gi -fv -BR -lK -FL -pQ -Uu -jg -jg -gq -Mm -iS -iS -US -Us -bY -qW -UC -sn -cU -gA -on -on -uQ -uQ -uQ -mc -"} -(42,1,1) = {" -mc -uQ -on -gA -yE -pj -Iu -pj -Yw -bH -bL -gA -gA -gA -gA -pX -yy -nG -gA -cv -Mg -yd -jW -Sc -Ji -JC -mt -Qd -gA -OW -xR -mY -dB -KE -oU -gA -hG -aZ -Wa -Hd -oj -zI -gA -BR -lK -FL -Nt -lJ -bS -rN -Fl -Pp -Zl -Jr -hT -Us -gA -gA -gA -gA -gA -gA -gA -gA -on -uQ -uQ -mc -"} -(43,1,1) = {" -mc -uQ -on -gA -cj -pj -Iu -pj -pj -bH -Dl -gA -cK -gA -gA -gA -gA -gA -gA -sq -xV -Vf -jW -Sc -dC -tP -tP -HV -gA -nh -xR -mY -zw -eR -fB -gA -Hk -VR -su -Qa -Qa -es -gA -BR -AS -gA -FL -FL -gA -gA -gA -gA -gA -gA -gA -gA -gA -me -Ge -Ge -yl -XY -Vy -YQ -uQ -uQ -uQ -mc -"} -(44,1,1) = {" -mc -uQ -on -gA -kK -th -Iu -pj -pj -bH -bL -Ar -Cv -Li -gA -KB -QL -Vj -gA -gA -gA -gA -pV -Sc -YD -wM -kR -Rm -gA -AR -lD -ti -gA -gA -KE -gA -gA -gA -gA -KR -wO -Vs -gA -jE -Ep -Ep -Ep -FM -Ep -Ep -Ep -FM -im -im -im -SH -fH -JX -gN -gN -gN -gN -yL -bq -uQ -uQ -uQ -mc -"} -(45,1,1) = {" -mc -uQ -on -gA -Ir -Iu -Iu -Iu -Iu -bH -bL -eN -Ll -gy -gA -BT -tP -tP -gA -Zn -qQ -qc -Pl -ch -gA -gA -gA -gA -gA -gA -gA -gA -gA -Hq -Zq -KP -Uq -Pe -gA -gA -gA -gA -gA -bL -DI -Cy -ZC -BR -DI -Cy -ZC -TE -DI -Yj -ZC -SL -WN -iz -gN -gN -gN -gN -Vy -bq -uQ -uQ -uQ -mc -"} -(46,1,1) = {" -mc -uQ -on -gA -nk -Iu -Iu -Iu -Iu -bH -bL -Jp -Nl -NO -gA -zV -tP -tP -tP -YH -YH -eP -xa -pF -Tv -lM -yt -gA -hu -up -yx -al -gA -GY -Zq -zr -tP -Mn -gA -Yu -hn -jK -gA -bL -tk -gA -gA -BR -gA -gA -gA -TE -gA -gA -dB -cA -gA -To -Ge -Ge -Ge -hb -Vy -Kz -uQ -uQ -uQ -mc -"} -(47,1,1) = {" -mc -uQ -on -gA -RO -Iu -Iu -Iu -Wd -bH -wv -hh -iZ -wU -gA -ba -Xd -dM -gA -hp -FZ -Oy -Ke -Sc -Es -mN -Bz -gA -tq -WB -WB -Is -qf -de -wc -ft -de -de -fw -kM -zr -tP -gA -Wv -Tk -En -Yh -Tc -Xh -gA -eZ -BE -tj -ef -dB -bL -gA -gA -gA -gA -gA -gA -gA -gA -on -uQ -uQ -mc -"} -(48,1,1) = {" -mc -uQ -on -gA -pj -wH -Iu -pj -pj -bH -TG -Np -Gv -Gv -gA -gA -gA -gA -gA -gA -gA -gA -SB -Sc -bb -oR -YH -gA -CR -iS -iS -Rs -gA -YC -ir -ae -ae -OX -gA -TY -Lt -Bv -gA -bL -Tk -En -vB -uV -Nm -gA -QJ -Eq -Ql -ef -dB -wv -im -sN -iq -iq -MK -VD -gA -on -uQ -uQ -uQ -mc -"} -(49,1,1) = {" -mc -uQ -on -gA -pj -oh -Iu -pj -ob -bH -TG -eN -tu -oT -gA -Gb -tz -hk -gA -oS -xi -kC -SB -Sc -Sr -ZS -Yt -gA -iq -iS -iS -ag -gA -gA -gA -gA -gA -gA -gA -Hs -gA -gA -gA -bL -gA -gA -pb -GZ -wV -gA -yW -Eq -Fh -mg -dB -aT -gA -mR -MK -MK -MK -Ro -gA -on -on -uQ -uQ -mc -"} -(50,1,1) = {" -mc -uQ -on -gA -pj -pj -Iu -pj -pj -bH -TG -Nh -Rn -te -gA -IX -ov -ER -gA -Ln -YH -eP -yv -eS -sF -sF -Ew -gA -tq -iS -iS -MK -Ve -JR -QW -QW -NI -gA -ek -HN -jk -gA -zX -fd -YG -gA -gA -Hs -gA -gA -vW -Eq -sZ -Vx -Xf -fv -iU -IO -OZ -gA -MK -gA -gA -gA -gA -on -uQ -mc -"} -(51,1,1) = {" -mc -uQ -on -gA -pj -lF -Iu -pj -pj -bH -TG -Rw -gA -gA -gA -YP -Iz -VQ -aW -dU -dU -Et -lt -pF -fU -Ta -fU -gA -vP -iS -iS -MK -Ve -FK -PC -PC -bu -gA -rk -zd -zd -gA -Qe -OV -nu -gA -kw -Hs -kw -gA -gA -fv -gA -gA -gA -gA -gA -wJ -MK -Aq -Ce -Fn -RX -KC -gA -on -uQ -mc -"} -(52,1,1) = {" -mc -uQ -on -gA -gA -yT -nA -nA -nA -BY -RB -gA -gA -on -gA -Ii -MW -Ak -gA -jS -LQ -zN -li -FT -rJ -hm -Vo -gA -xu -iS -iS -MK -Ve -FK -PC -PC -bu -gA -Ia -dD -Ia -gA -Ce -OV -DO -gA -ge -JS -ge -gA -ep -Un -rc -Oz -Yn -gA -wt -qG -MK -lf -rv -JJ -yj -an -gA -on -uQ -mc -"} -(53,1,1) = {" -mc -uQ -uQ -on -gA -gA -iD -iD -iD -rQ -gA -gA -on -on -gA -NE -hw -xW -gA -gA -gA -gA -Bq -Bq -gA -gA -gA -gA -EZ -HD -HD -WC -Ed -iC -hR -hR -Ea -gA -YB -gA -YB -gA -gA -gA -gA -gA -kw -Dh -kw -gA -QA -pR -lh -rz -lA -gA -pk -Za -Of -HI -wQ -bn -vp -JI -gA -on -uQ -mc -"} -(54,1,1) = {" -mc -uQ -uQ -uQ -on -Tx -hP -ra -ra -pW -Tx -on -uQ -on -gA -gA -gA -gA -gA -on -on -gA -NZ -ra -gA -on -on -gA -lw -lw -lw -lw -Um -lw -lw -lw -lw -gA -gA -gA -gA -gA -on -on -on -gA -gA -gA -gA -gA -vt -Ap -of -Jn -IH -gA -gA -gA -gA -gA -gA -gA -gA -gA -gA -on -uQ -mc -"} -(55,1,1) = {" -mc -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -on -on -on -Ob -on -uQ -uQ -on -uQ -uQ -on -uQ -uQ -on -on -on -on -on -on -on -on -on -on -on -on -on -on -on -uQ -uQ -uQ -on -on -on -on -gA -gA -gA -gA -gA -gA -gA -gA -on -on -on -on -on -on -on -on -uQ -uQ -mc -"} -(56,1,1) = {" -mc -mc -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -fC -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -on -on -on -on -on -on -on -on -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -mc -"} -(57,1,1) = {" -mc -mc -mc -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -mc -mc -mc -mc -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -uQ -mc -mc -mc -"} -(58,1,1) = {" -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -mc -"} From 9c9daa5ffd5a76f7942cbc3be23f04d35dd945e6 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Feb 2025 00:49:48 +0100 Subject: [PATCH 011/120] Automatic changelog for PR #3050 [ci skip] --- html/changelogs/AutoChangeLog-pr-3050.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3050.yml diff --git a/html/changelogs/AutoChangeLog-pr-3050.yml b/html/changelogs/AutoChangeLog-pr-3050.yml new file mode 100644 index 00000000000..bac6505f2ec --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3050.yml @@ -0,0 +1,4 @@ +author: "shellspeed1" +delete-after: True +changes: + - rscdel: "Removed unused map file." \ No newline at end of file From 9517365e0a496e4ef98da08999541d2909deaf40 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 4 Feb 2025 23:21:35 +0000 Subject: [PATCH 012/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3050.yml | 4 ---- html/changelogs/archive/2025-02.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3050.yml diff --git a/html/changelogs/AutoChangeLog-pr-3050.yml b/html/changelogs/AutoChangeLog-pr-3050.yml deleted file mode 100644 index bac6505f2ec..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3050.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "shellspeed1" -delete-after: True -changes: - - rscdel: "Removed unused map file." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 05938ed8fb7..c3016087e99 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -64,3 +64,6 @@ them be inserted into a silo. - rscadd: Added two new pods; Xenoarch and triage - bugfix: fixed the robotic repair kit in the large medical pod from being empty. +2025-02-04: + shellspeed1: + - rscdel: Removed unused map file. From acd6b6a3ca59041de3cde77b4f11129022f1d8f3 Mon Sep 17 00:00:00 2001 From: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com> Date: Thu, 6 Feb 2025 01:08:18 +0000 Subject: [PATCH 013/120] Fixes a seed path. (#3053) ## About The Pull Request When I changed it, so the joke in the names of "Agbergine" and "Aubergine" were better aligned with the materials, I forgot that sandfruits produced "Aubergine" seeds, which meant they completely skipped silver and shortened progression to diamonds. ## Why It's Good For The Game Don't get to diamond seeds as quickly and silver seeds are actually accessible outside of xenobio silvers and seed mesh. ![image](https://github.com/user-attachments/assets/8aa94421-1f99-4321-8455-3dae648f18c4) ## Changelog :cl: fix: fixed seed pathing so silver's weren't skipped with the rockfruit mutations. /:cl: --- modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm b/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm index 8ec39c17887..0e0236a2525 100644 --- a/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm +++ b/modular_zubbers/code/modules/hydroponics/code/grown/rocks.dm @@ -105,7 +105,7 @@ plantname = "Sandfruits" product = /obj/item/food/grown/shell/sand mutatelist = list(/obj/item/seeds/uraniberry, - /obj/item/seeds/aubergine, + /obj/item/seeds/agbergine, /obj/item/seeds/ferrotuber, /obj/item/seeds/adamapple) reagents_add = list(/datum/reagent/consumable/nutriment = 0.1, From 24a02bff20a77b19576a2ea360b22a2b6749d23f Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 6 Feb 2025 02:08:42 +0100 Subject: [PATCH 014/120] Automatic changelog for PR #3053 [ci skip] --- html/changelogs/AutoChangeLog-pr-3053.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3053.yml diff --git a/html/changelogs/AutoChangeLog-pr-3053.yml b/html/changelogs/AutoChangeLog-pr-3053.yml new file mode 100644 index 00000000000..7f68358f0c4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3053.yml @@ -0,0 +1,4 @@ +author: "xXPawnStarrXx" +delete-after: True +changes: + - bugfix: "fixed seed pathing so silver's weren't skipped with the rockfruit mutations." \ No newline at end of file From 4d1b4f1872ac8178e67e3b3b262ef2a3a770ea29 Mon Sep 17 00:00:00 2001 From: Sebastionate <51052308+Sebastionate@users.noreply.github.com> Date: Wed, 5 Feb 2025 20:22:59 -0600 Subject: [PATCH 015/120] Lizard Gas Update (#3056) ## About The Pull Request Following an issue with Miners and other Lavaland/Icemoon roles ransacking the Gas station of its mats if no attendants spawn in, I've opted to add blastdoors/shutters, along with warning notes to IC'ly notify folk that this is a Ghost Role and should be left undisturbed. Said notes do not use OOC language in doing so, and simply inform the reader that "hey there are people cryosleeping inside, please dont rob this place" Also I added some things I left out in the original overhaul by mistake -Added Privacy Shutters to all exterior windows, controllable by a Button in the Break/Spawn Room -Added Blast-Doors to all exterior Airlocks, controllable by a Button in the Break/Spawn Room -Added 2x 'Veteran Lizard Gas Beret' to Locker, a Purple, renamed/desc'd Badged Beret -Added 2x 'Lizard Gas Apron' to Locker, a Purple, renamed/desc'd Apron -Added an Inducer to spawn room, in case late-round joiners spawn in the Gas Station while it has run out of power. -Added 2x Insulated Gloves to Locker, in case they need to alter their doors in case of broken APC/Other reasons the power may be out and not restorable *(And the doors are still Bolted.)* -Added Colony Core Replicator Board to `Abandoned Storehouse`. This was meant to be added to the other flatpacked Colony machines, all it allows is for clothes/medicine/food to be printed out of Organic material. -Fixed: The Button in the Manager's Office was not correctly set to Bolt the door, and instead controlled the Restroom's door. Fixed that. ## Why It's Good For The Game Keeps people from ransacking the Ghost Role location before it's spawned/let's people know that it's a Ghost role and shouldn't be tampered with. The Locker Additions are primarily quality of life/fluff adds, but the tools added have little impact/are generally useful to have. ## Proof Of Testing Purely a minor map change. Ran locally. No additional Run-Time errors. --- .../icemoon_surface_gas_bubber.dmm | 149 ++++++++++++++++-- .../lavaland_surface_gas_bubber.dmm | 117 ++++++++++++-- 2 files changed, 242 insertions(+), 24 deletions(-) diff --git a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm index e1be5253587..5f9b1196634 100644 --- a/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm +++ b/_maps/RandomRuins/IceRuins/bubberstation/icemoon_surface_gas_bubber.dmm @@ -23,12 +23,20 @@ }, /area/ruin/powered/lizard_gas) "ap" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + pixel_x = 0; + pixel_y = 0; + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/structure/fans/tiny, /obj/machinery/duct, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -45,6 +53,9 @@ "bZ" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/cable, +/obj/machinery/door/poddoor/shutters{ + id = "lizardshutters" + }, /turf/open/floor/plating, /area/ruin/powered/lizard_gas) "cb" = ( @@ -124,7 +135,7 @@ /turf/open/misc/asteroid/snow/icemoon, /area/icemoon/underground/unexplored) "dv" = ( -/obj/structure/bonfire/prelit, +/obj/structure/bonfire, /turf/open/floor/plating/snowed/smoothed/icemoon, /area/icemoon/underground/unexplored) "dD" = ( @@ -175,6 +186,9 @@ /area/icemoon/underground/unexplored) "ea" = ( /obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/door/poddoor/shutters{ + id = "lizardshutters" + }, /turf/open/floor/plating/lavaland_baseturf, /area/ruin/powered/lizard_gas) "es" = ( @@ -389,6 +403,10 @@ pixel_x = 0; pixel_y = 0 }, +/obj/item/inducer{ + pixel_x = 0; + pixel_y = 8 + }, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -403,6 +421,10 @@ pixel_x = 7; pixel_y = 5 }, +/obj/item/circuitboard/machine/biogenerator/food_replicator{ + pixel_x = -4; + pixel_y = -8 + }, /turf/open/floor/wood/lavaland, /area/icemoon/underground/unexplored) "iO" = ( @@ -668,6 +690,26 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) +"sY" = ( +/obj/structure/cable, +/obj/machinery/button/door/directional/east{ + id = "lizardshutters"; + pixel_x = 24; + pixel_y = 7; + name = "Privacy Shutters" + }, +/obj/machinery/button/door/directional/east{ + pixel_x = 24; + pixel_y = -3; + name = "Entrance Doorbolts"; + id = "lizardgasbolt"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/iron/smooth{ + baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface + }, +/area/ruin/powered/lizard_gas) "tk" = ( /obj/machinery/rnd/production/circuit_imprinter/offstation{ name = "Gas Station Imprinter" @@ -679,6 +721,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, /obj/machinery/duct, +/obj/machinery/door/poddoor/shutters{ + id = "lizardshutters" + }, /turf/open/floor/iron, /area/ruin/powered/lizard_gas) "tB" = ( @@ -824,6 +869,9 @@ "yo" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/door/poddoor/shutters{ + id = "lizardshutters" + }, /turf/open/floor/plating/lavaland_baseturf, /area/ruin/powered/lizard_gas) "yp" = ( @@ -883,7 +931,8 @@ /area/ruin/powered/lizard_gas) "zc" = ( /obj/machinery/airalarm/directional/west{ - all_access = 1 + all_access = 1; + req_access = null }, /obj/effect/mob_spawn/ghost_role/human/lavaland_gasstation{ dir = 4 @@ -892,6 +941,13 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/powered/lizard_gas) +"zh" = ( +/obj/item/paper{ + default_raw_text = "Please do not steal materials/machinery from this shed, as they are direly useful to the Employees of The Lizard Gas-- whom are currently Cryosleeping and may wake up soon!

-General Manager, Ra'Tahul Rekinov"; + name = "IMPORTANT NOTE!" + }, +/turf/open/floor/plating/snowed/smoothed/icemoon, +/area/icemoon/underground/unexplored) "zv" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, @@ -927,7 +983,7 @@ /obj/machinery/button/door/directional/west{ specialfunctions = 4; normaldoorcontrol = 1; - id = "gasbathroom"; + id = "corpooffice"; name = "Door Bolt Control" }, /turf/open/floor/wood/parquet, @@ -1014,6 +1070,14 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/hidden, /turf/open/floor/asphalt, /area/ruin/powered/lizard_gas) +"CA" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/pink/hidden, +/obj/item/paper{ + name = "IMPORTANT NOTE!"; + default_raw_text = "Hello traveller! If you are reading this and the Blastdoors/Shutters are currently active, that means we are CLOSED! Please do not disturb our Lizard Gas team members or their materials as they are currently Cyrosleeping inside.

-General Manager, Ra'Tahul Rekinov" + }, +/turf/open/floor/asphalt, +/area/ruin/powered/lizard_gas) "CM" = ( /obj/structure/cable, /obj/structure/railing, @@ -1100,12 +1164,20 @@ /turf/open/floor/plating/snowed/icemoon, /area/icemoon/underground/unexplored) "Ec" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + pixel_x = 0; + pixel_y = 0; + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1288,10 +1360,16 @@ /turf/open/floor/wood/parquet, /area/ruin/powered/lizard_gas) "IN" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizard-gas-back" }, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1305,11 +1383,19 @@ }, /area/ruin/powered/lizard_gas) "Ja" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "lizardgasbolt"; + pixel_x = 0; + pixel_y = 0 + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/structure/fans/tiny, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1320,6 +1406,13 @@ baseturfs = /turf/open/floor/plating/lavaland_baseturf }, /area/ruin/powered/lizard_gas) +"Je" = ( +/obj/item/paper{ + default_raw_text = "Please do not steal materials from this crate, as they are direly useful to the Employees of The Lizard Gas-- whom are currently Cryosleeping and may wake up soon!

-General Manager, Ra'Tahul Rekinov"; + name = "IMPORTANT NOTE!" + }, +/turf/open/floor/plating/snowed/smoothed/icemoon, +/area/icemoon/underground/unexplored) "Kv" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, @@ -1342,8 +1435,10 @@ /area/icemoon/underground/unexplored) "Lb" = ( /obj/machinery/door/airlock/grunge{ - name = "Plasma Hook-Up" + name = "Plasma Hook-Up"; + id_tag = "lizardgasbolt" }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/plating/icemoon, /area/ruin/powered/lizard_gas) "Ll" = ( @@ -1684,6 +1779,26 @@ name = "lizard gas satchel"; desc = "Useful for holding work materials." }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/suit/apron/chef/colorable_apron{ + greyscale_colors = "#8e1dd6"; + name = "Lizard Gas Apron"; + desc = "A purple apron imprinted with the signature little green lizard of Lizard Gas! This cute outfit is surely reflected by its underpaid drop-out wearer." + }, +/obj/item/clothing/suit/apron/chef/colorable_apron{ + greyscale_colors = "#8e1dd6"; + name = "Lizard Gas Apron"; + desc = "A purple apron imprinted with the signature little green lizard of Lizard Gas! This cute outfit is surely reflected by its underpaid drop-out wearer." + }, +/obj/item/clothing/head/beret/science/rd{ + desc = "A beret awarded to team members who have lasted a full year or more under the employment of the Lizard Gas brand! A pizza party is sure to be held on their anniversary."; + name = "Veteran Lizard Gas Beret" + }, +/obj/item/clothing/head/beret/science/rd{ + desc = "A beret awarded to team members who have lasted a full year or more under the employment of the Lizard Gas brand! A pizza party is sure to be held on their anniversary."; + name = "Veteran Lizard Gas Beret" + }, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1722,11 +1837,19 @@ }, /area/ruin/powered/lizard_gas) "Vb" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + pixel_x = 0; + pixel_y = 0; + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/machinery/duct, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1899,7 +2022,7 @@ DU Ll Ey gP -Vw +zh Bv Gr Vw @@ -2143,7 +2266,7 @@ Gr Gr Gr Vw -Vw +Je Bv MK MK @@ -2152,7 +2275,7 @@ MK MK MK VR -MK +CA cx MK Vw @@ -2275,7 +2398,7 @@ Gr (17,1,1) = {" gm Uo -OR +sY TM DD dD diff --git a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm index f8ddb3b1270..794c7b20525 100644 --- a/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm +++ b/_maps/RandomRuins/LavaRuins/bubberstation/lavaland_surface_gas_bubber.dmm @@ -203,6 +203,10 @@ pixel_x = 0; pixel_y = 0 }, +/obj/item/inducer{ + pixel_x = 0; + pixel_y = 8 + }, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -239,13 +243,26 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) +"gP" = ( +/obj/item/paper{ + default_raw_text = "Please do not steal materials from this crate, as they are direly useful to the Employees of The Lizard Gas-- whom are currently Cryosleeping and may wake up soon!

-General Manager, Ra'Tahul Rekinov"; + name = "IMPORTANT NOTE!" + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "gQ" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/structure/fans/tiny, /obj/machinery/duct, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -290,7 +307,7 @@ }, /area/ruin/thelizardsgas_lavaland) "hG" = ( -/obj/structure/bonfire/prelit, +/obj/structure/bonfire, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors) "hM" = ( @@ -323,7 +340,7 @@ /obj/machinery/button/door/directional/west{ specialfunctions = 4; normaldoorcontrol = 1; - id = "gasbathroom"; + id = "corpooffice"; name = "Door Bolt Control" }, /turf/open/floor/wood/parquet, @@ -625,6 +642,10 @@ pixel_x = -5; pixel_y = 4 }, +/obj/item/circuitboard/machine/biogenerator/food_replicator{ + pixel_x = -4; + pixel_y = -8 + }, /turf/open/floor/wood/lavaland, /area/icemoon/underground/unexplored) "sk" = ( @@ -690,6 +711,9 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /obj/machinery/duct, +/obj/machinery/door/poddoor/shutters{ + id = "lizardshutters" + }, /turf/open/floor/iron, /area/ruin/thelizardsgas_lavaland) "uq" = ( @@ -730,6 +754,26 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) +"uH" = ( +/obj/structure/cable, +/obj/machinery/button/door/directional/east{ + id = "lizardshutters"; + pixel_x = 24; + pixel_y = 7; + name = "Privacy Shutters" + }, +/obj/machinery/button/door/directional/east{ + pixel_x = 24; + pixel_y = -3; + name = "Entrance Doorbolts"; + id = "lizardgasbolt"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/iron/smooth{ + baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface + }, +/area/ruin/thelizardsgas_lavaland) "uM" = ( /obj/machinery/light/directional/north, /obj/structure/closet/crate/bin, @@ -756,11 +800,17 @@ }, /area/ruin/thelizardsgas_lavaland) "vw" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/machinery/duct, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1025,10 +1075,16 @@ /turf/open/floor/asphalt, /area/ruin/thelizardsgas_lavaland) "DE" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizard-gas-back" }, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1206,6 +1262,16 @@ name = "lizard gas satchel"; desc = "Useful for holding work materials." }, +/obj/item/clothing/head/beret/science/rd{ + desc = "A beret awarded to team members who have lasted a full year or more under the employment of the Lizard Gas brand! A pizza party is sure to be held on their anniversary."; + name = "Veteran Lizard Gas Beret" + }, +/obj/item/clothing/head/beret/science/rd{ + desc = "A beret awarded to team members who have lasted a full year or more under the employment of the Lizard Gas brand! A pizza party is sure to be held on their anniversary."; + name = "Veteran Lizard Gas Beret" + }, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1313,14 +1379,27 @@ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, /area/ruin/thelizardsgas_lavaland) +"Me" = ( +/obj/item/paper{ + default_raw_text = "Please do not steal materials/machinery from this shed, as they are direly useful to the Employees of The Lizard Gas-- whom are currently Cryosleeping and may wake up soon!

-General Manager, Ra'Tahul Rekinov"; + name = "IMPORTANT NOTE!" + }, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors) "Mp" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "lizardgasbolt" + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1444,6 +1523,9 @@ "Qi" = ( /obj/effect/spawner/structure/window/reinforced/plasma, /obj/structure/cable, +/obj/machinery/door/poddoor/shutters{ + id = "lizardshutters" + }, /turf/open/floor/plating, /area/ruin/thelizardsgas_lavaland) "QP" = ( @@ -1485,11 +1567,17 @@ }, /area/ruin/thelizardsgas_lavaland) "Rb" = ( -/obj/machinery/door/airlock/external/ruin, +/obj/machinery/door/airlock/external/ruin{ + id_tag = "lizardgasbolt" + }, /obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ cycle_id = "lizardgas_lavaland_entrance" }, /obj/structure/fans/tiny, +/obj/machinery/door/poddoor{ + id = "lizardshutters" + }, +/obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/iron/smooth{ baseturfs = /turf/open/misc/asteroid/basalt/lava_land_surface }, @@ -1521,6 +1609,10 @@ "Sh" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/pink/hidden, /obj/machinery/duct, +/obj/item/paper{ + name = "IMPORTANT NOTE!"; + default_raw_text = "Hello traveller! If you are reading this and the Blastdoors/Shutters are currently active, that means we are CLOSED! Please do not disturb our Lizard Gas team members or their materials as they are currently Cyrosleeping inside.

-General Manager, Ra'Tahul Rekinov" + }, /turf/open/floor/asphalt, /area/ruin/thelizardsgas_lavaland) "Sq" = ( @@ -1663,7 +1755,7 @@ /area/ruin/thelizardsgas_lavaland) "WT" = ( /obj/machinery/airalarm/directional/west{ - all_access = 1 + req_access = null }, /obj/effect/mob_spawn/ghost_role/human/lavaland_gasstation{ dir = 4 @@ -1697,6 +1789,9 @@ "Xb" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/door/poddoor/shutters{ + id = "lizardshutters" + }, /turf/open/floor/plating/lavaland_baseturf, /area/ruin/thelizardsgas_lavaland) "Xj" = ( @@ -1862,7 +1957,7 @@ Yl ck Li lm -Tk +Me Tk hr hr @@ -1917,7 +2012,7 @@ yl Yl yl jc -Tk +gP hr hr hr @@ -2238,7 +2333,7 @@ hr (17,1,1) = {" cB IG -gd +uH Bf Is gn From 684b58a368c3d6b27bd874f580db96f13a507c3a Mon Sep 17 00:00:00 2001 From: xXPawnStarrXx <53197594+xXPawnStarrXx@users.noreply.github.com> Date: Thu, 6 Feb 2025 22:38:14 +0000 Subject: [PATCH 016/120] Shadekin digitigrade legs (#3058) ## About The Pull Request I always thought it was odd that a species that was of similar origin to vupakanin, had plantigrade legs. (When all their concepts clearly were digi) So I set out to fix that. ## Why It's Good For The Game ~~paw fetishists?~~ For more thematic customisation of a expectedly digitigrade species without the requirement of prosthetics. ## Proof Of Testing
Screenshots/Videos ![image](https://github.com/user-attachments/assets/90d8c517-1aa9-43ee-939e-5eba5208eb6e) ![image](https://github.com/user-attachments/assets/6a0b8620-5750-454e-a39c-606f40ecc90c)
## Changelog :cl: add: Added digilegs for shadekin. /:cl: --- .../carbon/human/species_types/shadekin.dm | 3 +++ .../bodyparts/species_parts/misc_bodyparts.dm | 14 ++++++++++++++ .../mob/species/human_parts_greyscale.dmi | Bin 3084 -> 8631 bytes 3 files changed, 17 insertions(+) diff --git a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm b/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm index 8a06d29ee96..f89945e97a8 100644 --- a/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm +++ b/modular_zubbers/code/modules/mob/living/carbon/human/species_types/shadekin.dm @@ -8,6 +8,7 @@ mutanteyes = /obj/item/organ/internal/eyes/shadekin mutant_bodyparts = list() changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | ERT_SPAWN | RACE_SWAP | SLIME_EXTRACT + digitigrade_customization = DIGITIGRADE_OPTIONAL bodypart_overrides = list( BODY_ZONE_HEAD = /obj/item/bodypart/head/shadekin, BODY_ZONE_CHEST = /obj/item/bodypart/chest/shadekin, @@ -29,6 +30,7 @@ ) species_language_holder = /datum/language_holder/shadekin + /datum/species/shadekin/create_pref_unique_perks() var/list/to_add = list() @@ -53,6 +55,7 @@ "tail" = list("Shadekin", TRUE), "snout" = list("None", FALSE), "ears" = list("Shadekin", TRUE), + "legs" = list("Normal Legs", TRUE), ) /datum/species/shadekin/randomize_features() diff --git a/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index 459dc66201a..f3887498b08 100644 --- a/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -38,6 +38,20 @@ brute_modifier = 1.2 burn_modifier = 1.2 +/obj/item/bodypart/leg/left/digitigrade + icon_greyscale = BODYPART_ICON_BUBBER + limb_id = BODYPART_ID_DIGITIGRADE + bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE + footprint_sprite = FOOTPRINT_SPRITE_PAWS + footstep_type = FOOTSTEP_MOB_CLAW + +/obj/item/bodypart/leg/right/digitigrade + icon_greyscale = BODYPART_ICON_BUBBER + limb_id = BODYPART_ID_DIGITIGRADE + bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE + footprint_sprite = FOOTPRINT_SPRITE_PAWS + footstep_type = FOOTSTEP_MOB_CLAW + // MUTANT HUMAN PART OVERRIDES - HEMOPHAGE AND HUMANOID SPRITE OVERRIDES// /obj/item/bodypart/head/mhuman diff --git a/modular_zubbers/icons/mob/species/human_parts_greyscale.dmi b/modular_zubbers/icons/mob/species/human_parts_greyscale.dmi index 269eb63e0147c033b8178cfc62cd8b50bc4813b2..9a79c5c5feaf7420c6285eaad8792867cd1f6a6c 100644 GIT binary patch literal 8631 zcmb_?XHZk$)_w?G5(pw79TWjYsz{L*KokTN1Vy^iJJJP02LX|$C{3Cupdbh+EhO|_ zrH9@-p@%>S`5%Axf8P)9r}xg>51GuI*?acct32y@);ck|5AQ=SuwMXyKu}GMyN^L2 zGG5>ZqM-twFo_ja0)L(U2G6|i+IU)dIK1?7aB~HLUVZxT9!1|I4vAP@y8hYc{@IV4 zh0Ggp3%)ne945ciJ-~HJBHOxDycp+or2P8L)s1Ia-;J49A1H+=PWyZ75=M;Q2x3B- z%O@X%!s(lT;h%#cRx5v=RX;9ed^=($5P1!kXZq%~4)tQ)Nt?{x8D(Qsa)@SPV#CDC zu;7f>759cFFA=1&yy-++m8f=hXVTUtMb}BFey=SvZi7{B}`iJU^(tLZ+}_b z2(n%JUL1SOfd<7yUoy7hoHqi2c)w}hRWW$=X**NP+3Y@Bd%OEPfnLJ$7eCqfgD`*yOB}mDAnjK!unwk+fo(iyAF(r`Rmte27q%g81%r?0pYIOAJ ztvh!d)6>(P*>;0AhOc`bW6esH3eW9)h+`S1;KSW!20<4W7hKB_(`^b>PtOX)lf&7b z)>u~B2X2&!PhXbX^>aJ9ArMp2psoDth0utsEbbfaPLyAy-;0=3j#EYHG-T_lq(aff z#F!XbPu!MKS93<-2&tzen5U=jpk3&uqgJHnU~_Y`EvDQ?`tk|l^w6Oqi0E&DPS4Hd zyCp9E{G*tKYdFIcfv{8W7N{ZIkr9~F_*KPrwq|30;g-!$zXMy(t#OIZO@=W3ao%zJ zS2PWP<+i&|mYDu^%n~;2>kTJDHpLaet--xu5@FVMveIQ{gq3jUmm+F*$0pd?x~1-* zPhMrq0_h`S^xN^ny!x*Da&y$7uP5=;`(P$u=Z_EypCtX$dVAux?cPGGZRfjdxU-sz z7el1r=IcA=-S8vjip~0&B^F+d(g+_|Vpz`HqffGpANLp~)LHAjnU5X^*4jp?!6T=txnX6_;t~kW)F@&M(tqUj@c-^4gFz`n)vnW*LaE0 z=a$qyLts-DR|aS1C+Iqm|_8+CLB7=LsDCq~JF= zLq9k>>ozel;lZFS^$}jOi>d~YqB%BlOO>S= zRKT{pnS}2nb8~*UYV?~If37Yn(=ZP0Vtp?8S{R#4Q2{4K-?HoD_o{hzpw`wb!rK$( zZY55~2)LY-4us9JiEll@Oq8t4Tc!?X zY1=$^P=!7c8JeDUDVXgH$?{uCn;P1ok0blL-A1PFU`jB5&hK1rrdTkRLW4$60&~;u zV5L_-+vv+PC}6$2y#^VSnjsOeKZ(GJpZS1`+*SLF8n1!Xj8NJ{*cJA_%cTBZ#a`n- zTG&CA>evu=IE>?2HX?%dzVt)ix;W{aJwd7{km)PQQa9&zFUBt_Y`S?+)>38ct_ z=zT+Ctp7VKZo2I{Q|BPVZ{>Tp1W2+>ROop5$Trs!T|B9YPArv&xORVK zK8i=W`=dw&R04HMRmAK3f@u;TB8Fc&n3BU48&&k|?*1gA9Y=0d_#ZhU#eDVk-?Oo? zm3hy1Q;(1YBT7g>TnZ+8UWNN80C4=KJJ*uTa+YV%ISi_Stl0UoXmL82vNe0M#1M=R z|J|sMw?OQvbKqrMr{-vhwq9Pt0WeE)lkt{+t~j5;K;s;rpp%nZ!G#T@q}xJkOM!ui zm*;`19FZg>Hk5mR_WX7ltK&pwB|^>XgQmZvy=WyBe9qLf@LT@S;)2`*Vr|BGy7mJx z#96%d^)422yqgGUV)}KUg}JMWj4#aSKyn`T-TMW{UE^ z4S-O`Vy5SL=c6E1>4jEwQMjQ+;K)s*@)lceYkn&$E1z&#$-LF<;2AAU z(YZ387qP&`dD}h6t#0o%V2?*H+A;qA{_g~{5rej`ht=6R7!GeAkM;oB^#G0gU5XLr zW`-|&G9!pbV|q$EkUK4nVNOsY zbQVv_sqYto7b-d^Z#-hp!o_U+wp~$GX+@SXoXtO2`?jjj^8aHimz@_wWd-k1*q%m? zp@*0knZYB$)u-+B(u3NcvF$k8^9A2)-jAP9-EH`4=3eAc$h9tOMV33aq1Gy&L7`^< zNe9uuinu_w{BZfo-DE|a-(CQX0cnLhLur#Ilr+x}Y;W$r{*iVb{_x9hd~D-T|&IbQn_--A{;|PM4T--cy=kX zccDCi81LmrDN&FX6pW(wIl9{dh{N2CS=vX@C4q|W=T8@WOH|gR#^3Xt%~9hHfao&J z2pZzTpN`eL1`~SSf|^GfOkPOvuAa6~fU=cO*RDownD@nkPqYY``}l3QU?*~Mm&@jXIcH{a+48>e>h3yU>j{;mrwN9n zp}6l9g{C=?j-UohahAZy+WjCF%-e`ocQk9GVn+&WIp>rVab+Yp@1iUASG?{Yhk;g~ zJl*hc_5D_v@1%7#EJTBbZzGahL*T!H+W)H#+;b%}uJv*loSNcvWy+_r0+@w)mu-7I z*Np=LT>D~184-5UaSaY2#Dl*WK7_$^W-Wc+k}Q5!7KX~*FqQ`5=i$^xv4tU6Yzu#x z=G!*heS?RhWR^^Ka8{Px<4H-3NTx4h?d;4x-Oes9KQ<*W;Txw%o8F2mUZI!ySzLN5%(hIAFGbo>@!Fl4JFL;D>F1l-a@Jb-ha z1I3o#%*@QEbQehfF@$#fEd>SVa{vJ!AiCfXdU|?+?i4XQ6MK%l&+hg!Rc;oo!JqQ0 zsjF)%7^E@%0IM~}tr&%u`yXwj40*^keC*t*Cn@bbN%@1v%aRw_T3R;UG_QNMaKQG( zXo1Yf-X_3Wvh`A{O?aXc#2!F+T*Zs|rbu(nbo#^-ar>UE`QHtsRoSDCFZs7bSz>f7 z4W#I6YM%qI=61(#-@4p;^JzseDM&wJ`g&}KmKe&q3K}#Y$@-UB7b*3{ilI}dgR0}X zABsh{))TkgR))XnOW)h{+rr^+6ne;4dsote=PPu}SB^HvZgJShbILW9r`4W*`WWd# z0`PYMY;;goWE_oO1nKPH#;y9$4Z1%r0YEX8d zZ#i|z{$OZpYwNk1pkOJe;i&kr(w1f6)~n-bUnX{TtE}+waP1S;bJc;dF}rrCjN6Pe zJ=dKU{(EMDwxjMx8zZ;_z(+nIDTOtg zk#A;Gf-cJmq7j|;y7b=Gdq94aDvf!b#JS#M{_pXZ|CI^<86%2wsFFFu<6jMqj@qvD zXS?-fD_ab4j{*Xsb1^~L)pe@+#VLW%tHz)>{E`q6#jA<=`667-a|NxyJ`l@P{mAwI)cLDM zw>MKhg$@p@e_H%3>845LO{2dEGdTF}i_JR-1VSOq^lxru&|8+j%I|o#EH=61J)r0S*;5&dJSPiTild$g=(zhf9~D zqxDH@VUZ^LTj0K{fce>}z?o$%6df^ojJyXg>LijMRoM2HTSh6i-LcY6eEu&sXaMac z;I@m3tW@z=T$ZRmikdlwXWKBYf50z~D}6OQC*K_XQ32iE7%6(&>~|dFku$H)GS11y zmMeeh*G<5Q^k0_Ukk84<$yY{yn0WPi5X84f$zs;ECf3p)W-DbDn;|R3ZOonTWjFMEmGTLzFqyLDBR#s>cR#hf(9 z)7o2Hz55# zK&Iao5fN#mYGd0~MBraG@roPKu<7&7wXYlQoa}GXCzX7Elj~KyY2od&qPp-d!cTSb-yCrl}nDW+N>invWr&) zT`x?;=-M;hWadkWYkd~4EBudEl%f&&zfqAqSMV>}-gIlAFcPLaIAmP4rQK$Fu&F9o z1dA#@PZa#ib-Fg9;J|L@A+C{heq3)oQ|IR+2%fFPw!dK(erMDDvFx@hfE-QIH#-{| z;NmJkzLv!?05{3qqSF&|L~{fIYBOe%kI{XXw%v}9#GrgOkgSj-DYO-Zdfo^QV1TVE zN=jP#I?+&8%90}KSSJ*}RSQN-Iy9Jswm=G2AZwYvGZMbosj}?AoxzSh2kU5RFL)wTEsF;?Atzgib`0nIhO9=$HLXvc4UkZ55s z48tR<1C*f8#99VWeflBKe!9HuPLlTDqz1R(s-5*Y*nzkBvl`SKF~~(t#$I zTA2}bIZi27-i|xA#$&l_E{-PyThqdhV2OLs`y+LZVH#vP-Xkd`mAo}oGgOVKeZ(x9$n)(M#YZ%#Va}$EU%emzj+zF;yxv&+&6fY}7=pcahuBC{^Xe9EGnxm<=r5A6PE$@y>iKzLQB2F#tKa- z6fiSZVwQ25*nn&9MeVWEu?K5Zp(^KFZ#fLPkGsyZGWiPy zmp>{cFMPa;Z~9T+l_mC`q3#oJ1jwY%b(9q$Y?fmzmhVJt4=m2H7n`@RJq zOcNtUM@Ov(M+-LUOH0M70&U<>3OcTea0FKRa=TM0YUMV0Ly%A6P@ssBtz zO4rC_SyEy)c_u2F2SeG2-id5MGjRz02tHRV4W!i#-^;l)EO>k{@M+0x+_7SMC5)m_?(VUiGJ|h1KRgNou&)ZB#5AE^!gr5 zt4qG<+1pFxoiiJ-Q;rI8HD8B|#nm5-q`y#qumaa$J;_*W+}`&N~o>Fl_%F!8BkeN}HUKn?@ulmVx|O4f z@fDx$G50c3RgQ|ezIwi5k88*34rxc>5qjj;cAoAe)syh)^2ui0;o+;_rmbkvzvKA|XUF0jiE9QDyuv&p5=T{kWsuxWhtB?FpS$0PB;tUBQ8 zIwM{*m^Ik+CD0uTA3m~6iVHQ~un^AmY``xao@1P6V?kN0pim1_R)M@ z*^5Z$*^z)e{hX{I%6#{5(t6zE4ON;AHX(wS_Xs zQFa=?9D-5u7PYbfvRRJ^k3ggZC*7?wm&g%)_V9rn$x@$RBDFK(EuCQP5E-p5Gt4=+ z-Q=zWAN?C2Jx6|iICE2>a)nM=3U_kzNkniicgKpeBop%~-%Hn(QX%gokzkAdmd|fv zz4{UrcN|k**t4U-<@)j1_yE_g?aj?tC1`fw#cK?X>f`)Y*t3`;LZi^8G%;$>@TeSy*QCO!K?#%2+_1@@~D z?>$Yc|9tB3pQ(06V%mToeysld1JJ>5E4HXd>-KkS@9b2`QvgadRV-*PHgex3AI|lU z<8^;sb~a!aAn$sLcG^{MI4OTQuS(!jwi?gwtd`_eLVT!~FDbIq%N{SfL2l`mUy$X$ zkp&&xK(Ri)4$zs(eK%mnP|pNY@02#xb;Xpoev)->D*B-oMSl$#C7lhs1sr3cPgy9k zdH+OV&7@RN> z{1$V*L!x`z%L(Afi1(t84XG_GAM1P_1Ba#%vFz}h(c~MvUbYvJGr7OEv^LuWTTB&2 zD{m)|L7`B}*&CzYt#3fkoL?L);F4FYV&-q(`3>MZaF(Zu*Q^z)AqqIkM9KRv0o|W3 z+Eo@<`1(6#w9BgmPPuo^Q`Kb?Y6egh3;s{aU(NFT7YAM0RT$f@yx~>qW0CSzp{m@=N&!8N-8GFN~mWHAe?S{w&eUmCZ&H#azC)gG_jsbE@_M`Jks`0^!c zi{*v#>??Yr9NzU&hs|+1wez701|P`&!C@aF^`deeg8rVJaCXBnYE(eXlzH0Vr2jm#QeF6+9MM9iF?kv;)?}!J z<_Rp%Z{hO>WNo`@wsHs4xSB5zyob-+LA0MOu-1z!17rB@0KKqTvq=1w$>r<-Y|V9( z5(U+Lpr!8FW&5YAUP@_0XMNmCuaBo(BK1d}ZgsifdCVUL(lLpS&0kcRbNC_fB?d@S M{o&mb)#qXV50nkIjQ{`u literal 3084 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 From 67729e1874f202f08f9250c40e39ddb3e33be97c Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 6 Feb 2025 23:38:39 +0100 Subject: [PATCH 017/120] Automatic changelog for PR #3058 [ci skip] --- html/changelogs/AutoChangeLog-pr-3058.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3058.yml diff --git a/html/changelogs/AutoChangeLog-pr-3058.yml b/html/changelogs/AutoChangeLog-pr-3058.yml new file mode 100644 index 00000000000..b32d263b650 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3058.yml @@ -0,0 +1,4 @@ +author: "xXPawnStarrXx" +delete-after: True +changes: + - rscadd: "Added digilegs for shadekin." \ No newline at end of file From c3397188293fba231a2564d0aa8f38665ee7cf58 Mon Sep 17 00:00:00 2001 From: nevimer <77420409+nevimer@users.noreply.github.com> Date: Thu, 6 Feb 2025 18:23:08 -0500 Subject: [PATCH 018/120] fix shadekin digi legs (#3059) ## About The Pull Request fixes shadekin digi legs ## Why It's Good For The Game shadekin ## Proof Of Testing ![dreamseeker_BYVJN7F3Dg](https://github.com/user-attachments/assets/d772f7c5-b396-40e3-8761-471641ed85b1) ## Changelog :cl: fix: fixed shadekin digi legs /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- .../bodyparts/species_parts/misc_bodyparts.dm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm b/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm index f3887498b08..d9c76ab390c 100644 --- a/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm +++ b/modular_zubbers/code/modules/surgery/bodyparts/species_parts/misc_bodyparts.dm @@ -31,26 +31,30 @@ limb_id = SPECIES_SHADEKIN brute_modifier = 1.2 burn_modifier = 1.2 + digitigrade_type = /obj/item/bodypart/leg/left/digitigrade/shadekin /obj/item/bodypart/leg/right/shadekin icon_greyscale = BODYPART_ICON_BUBBER limb_id = SPECIES_SHADEKIN brute_modifier = 1.2 burn_modifier = 1.2 + digitigrade_type = /obj/item/bodypart/leg/right/digitigrade/shadekin -/obj/item/bodypart/leg/left/digitigrade +/obj/item/bodypart/leg/left/digitigrade/shadekin icon_greyscale = BODYPART_ICON_BUBBER limb_id = BODYPART_ID_DIGITIGRADE - bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE footprint_sprite = FOOTPRINT_SPRITE_PAWS footstep_type = FOOTSTEP_MOB_CLAW + brute_modifier = 1.2 + burn_modifier = 1.2 -/obj/item/bodypart/leg/right/digitigrade +/obj/item/bodypart/leg/right/digitigrade/shadekin icon_greyscale = BODYPART_ICON_BUBBER limb_id = BODYPART_ID_DIGITIGRADE - bodyshape = BODYSHAPE_HUMANOID | BODYSHAPE_DIGITIGRADE footprint_sprite = FOOTPRINT_SPRITE_PAWS footstep_type = FOOTSTEP_MOB_CLAW + brute_modifier = 1.2 + burn_modifier = 1.2 // MUTANT HUMAN PART OVERRIDES - HEMOPHAGE AND HUMANOID SPRITE OVERRIDES// From 43d623c3f863ae20f412b76fddd203e385349efb Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 7 Feb 2025 00:23:35 +0100 Subject: [PATCH 019/120] Automatic changelog for PR #3059 [ci skip] --- html/changelogs/AutoChangeLog-pr-3059.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3059.yml diff --git a/html/changelogs/AutoChangeLog-pr-3059.yml b/html/changelogs/AutoChangeLog-pr-3059.yml new file mode 100644 index 00000000000..89d31d8d123 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3059.yml @@ -0,0 +1,4 @@ +author: "nevimer" +delete-after: True +changes: + - bugfix: "fixed shadekin digi legs" \ No newline at end of file From 0854af3e214888b47d0a8ca117136d7a7ef7435f Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 6 Feb 2025 23:23:47 +0000 Subject: [PATCH 020/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3053.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3058.yml | 4 ---- html/changelogs/archive/2025-02.yml | 4 ++++ 3 files changed, 4 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3053.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3058.yml diff --git a/html/changelogs/AutoChangeLog-pr-3053.yml b/html/changelogs/AutoChangeLog-pr-3053.yml deleted file mode 100644 index 7f68358f0c4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3053.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xXPawnStarrXx" -delete-after: True -changes: - - bugfix: "fixed seed pathing so silver's weren't skipped with the rockfruit mutations." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3058.yml b/html/changelogs/AutoChangeLog-pr-3058.yml deleted file mode 100644 index b32d263b650..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3058.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xXPawnStarrXx" -delete-after: True -changes: - - rscadd: "Added digilegs for shadekin." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index c3016087e99..b49dd9b3c58 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -67,3 +67,7 @@ 2025-02-04: shellspeed1: - rscdel: Removed unused map file. +2025-02-06: + xXPawnStarrXx: + - bugfix: fixed seed pathing so silver's weren't skipped with the rockfruit mutations. + - rscadd: Added digilegs for shadekin. From 1de4381b441976aeebd3c60e15e19f26909d395b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 7 Feb 2025 23:21:11 +0000 Subject: [PATCH 021/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3059.yml | 4 ---- html/changelogs/archive/2025-02.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3059.yml diff --git a/html/changelogs/AutoChangeLog-pr-3059.yml b/html/changelogs/AutoChangeLog-pr-3059.yml deleted file mode 100644 index 89d31d8d123..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3059.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nevimer" -delete-after: True -changes: - - bugfix: "fixed shadekin digi legs" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index b49dd9b3c58..e7dd717afcf 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -71,3 +71,6 @@ xXPawnStarrXx: - bugfix: fixed seed pathing so silver's weren't skipped with the rockfruit mutations. - rscadd: Added digilegs for shadekin. +2025-02-07: + nevimer: + - bugfix: fixed shadekin digi legs From 1d0e335d4e8214308e14d6f554730ff08e7f4599 Mon Sep 17 00:00:00 2001 From: ABoxFaux <116041393+ABoxFaux@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:38:58 +0000 Subject: [PATCH 022/120] Makes slimepeople take brute damage from the nitrogen breather quirk (#3064) ## About The Pull Request This makes slimepeople take brute damage (equivalent to the regular non-slime toxin damage) from the nitrogen breather quirk. ## Why It's Good For The Game Right now, a nitrogen-breathing slimeperson can disable their internals (with the regular station atmosphere) and use the TOX damage from breathing in oxygen to regain high amounts of blood passively for zero quirk points. With this, breathing exclusively nitrogen is now encouraged for nitrogen breathing slimes. ## Proof Of Testing Tested, worked, and compiled on a localhost. ## Changelog :cl: balance: Slimepeople with the nitrogen breather quirk now no longer take toxin damage from breathing oxygen, instead taking an equal amount of brute damage. /:cl: --- .../modules/customization/modules/surgery/organs/vox.dm | 8 ++++++++ .../code/datums/quirks/neutral_quirks/lungs.dm | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/modular_skyrat/modules/customization/modules/surgery/organs/vox.dm b/modular_skyrat/modules/customization/modules/surgery/organs/vox.dm index 1c552c32cc6..ef329024cc2 100644 --- a/modular_skyrat/modules/customization/modules/surgery/organs/vox.dm +++ b/modular_skyrat/modules/customization/modules/surgery/organs/vox.dm @@ -18,3 +18,11 @@ cold_level_3_threshold = 0 organ_flags = ORGAN_ROBOTIC +/obj/item/organ/internal/lungs/nitrogen/slime_lungs + name = "nitrogen-based vacuole" + desc = "Traditional slimeperson lungs. These ones run off nitrogen." + icon_state = "lungs-plasma" + + oxy_damage_type = BRUTE + oxy_breath_dam_min = 6 + oxy_breath_dam_max = 20 diff --git a/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm b/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm index d6bab35cbe0..d13edca54f0 100644 --- a/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm +++ b/modular_zubbers/code/datums/quirks/neutral_quirks/lungs.dm @@ -83,6 +83,11 @@ lungs_typepath = /obj/item/organ/internal/lungs/nitrogen breath_type = "nitrogen" +/datum/quirk/equipping/lungs/nitrogen/add(client/client_source) + if(isjellyperson(quirk_holder)) + lungs_typepath = /obj/item/organ/internal/lungs/nitrogen/slime_lungs + . = ..() + /datum/quirk/equipping/lungs/nitrogen/on_equip_item(obj/item/equipped, success) . = ..() var/mob/living/carbon/carbon_holder = quirk_holder From 5e98fe651d9ed046e227351c58e0e91553ffe611 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Feb 2025 01:39:22 +0100 Subject: [PATCH 023/120] Automatic changelog for PR #3064 [ci skip] --- html/changelogs/AutoChangeLog-pr-3064.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3064.yml diff --git a/html/changelogs/AutoChangeLog-pr-3064.yml b/html/changelogs/AutoChangeLog-pr-3064.yml new file mode 100644 index 00000000000..50ac9dc88df --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3064.yml @@ -0,0 +1,4 @@ +author: "ABoxFaux" +delete-after: True +changes: + - balance: "Slimepeople with the nitrogen breather quirk now no longer take toxin damage from breathing oxygen, instead taking an equal amount of brute damage." \ No newline at end of file From 188e44bb12756e6913b301680ab45aab77ad1d22 Mon Sep 17 00:00:00 2001 From: Roxy <75404941+TealSeer@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:02:36 -0600 Subject: [PATCH 024/120] Fix crystallizer pipe connectors missing (#89345) ## About The Pull Request Fixed a visual bug wherein the crystallizer wouldn't show the two pipe connectors it has when there was no pipe connected to them. | Before | After | --------|-------- | ![image](https://github.com/user-attachments/assets/b34ac8b2-88e8-4431-98e0-8d7b916a5914) | ![image](https://github.com/user-attachments/assets/ce6f4017-1470-4545-b866-df480041fc80) | ## Why It's Good For The Game Bug fix is nice ## Changelog :cl: fix: Fixed the crystallizer missing pipe connectors /:cl: --- .../machinery/components/gas_recipe_machines/crystallizer.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm index b5cc7c628df..e06b3b52458 100644 --- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm +++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm @@ -71,7 +71,6 @@ /obj/machinery/atmospherics/components/binary/crystallizer/update_overlays() . = ..() - cut_overlays() var/mutable_appearance/pipe_appearance1 = mutable_appearance('icons/obj/pipes_n_cables/pipe_underlays.dmi', "intact_[dir]_[piping_layer]", layer = GAS_SCRUBBER_LAYER) pipe_appearance1.color = COLOR_LIME var/mutable_appearance/pipe_appearance2 = mutable_appearance('icons/obj/pipes_n_cables/pipe_underlays.dmi', "intact_[REVERSE_DIR(dir)]_[piping_layer]", layer = GAS_SCRUBBER_LAYER) From 4cd95fb055342f6976e5a15c2d343cb116e3f1f3 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 8 Feb 2025 23:22:25 +0000 Subject: [PATCH 025/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3064.yml | 4 ---- html/changelogs/archive/2025-02.yml | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3064.yml diff --git a/html/changelogs/AutoChangeLog-pr-3064.yml b/html/changelogs/AutoChangeLog-pr-3064.yml deleted file mode 100644 index 50ac9dc88df..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3064.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ABoxFaux" -delete-after: True -changes: - - balance: "Slimepeople with the nitrogen breather quirk now no longer take toxin damage from breathing oxygen, instead taking an equal amount of brute damage." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index e7dd717afcf..095c1705c17 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -74,3 +74,7 @@ 2025-02-07: nevimer: - bugfix: fixed shadekin digi legs +2025-02-08: + ABoxFaux: + - balance: Slimepeople with the nitrogen breather quirk now no longer take toxin + damage from breathing oxygen, instead taking an equal amount of brute damage. From 257e37562691986b590a8a8dbb2413091f355d8a Mon Sep 17 00:00:00 2001 From: Odairu <39929315+Odairu@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:57:20 -0500 Subject: [PATCH 026/120] FIXES SHADEKIN TAILS AGAIN BECAUSE I GUESS THEY BROKE AGAIN (Or my fix never worked, works on my machine moment) (#3069) ## About The Pull Request Title https://github.com/Bubberstation/Bubberstation/pull/1982 ## Why It's Good For The Game SPRITE FIXING ## Proof Of Testing ![image](https://github.com/user-attachments/assets/9a812f95-4ace-4986-88e9-a6c24e54ced2)
Screenshots/Videos
## Changelog :cl: image: filled in nullspace on shadekin tail BEHIND sprite /:cl: --- ...shot_humanoids__datum_species_shadekin.png | Bin 1430 -> 1433 bytes modular_zubbers/icons/customization/tails.dmi | Bin 10105 -> 11668 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_shadekin.png b/code/modules/unit_tests/screenshots/screenshot_humanoids__datum_species_shadekin.png index 2224c3bdab9bcb83940b026ff98f52f633f6b905..e90c493bfc4a553f244f8ddc784f4384b0648084 100644 GIT binary patch delta 665 zcmV;K0%rY|3z-YBG64ZnvoitV0e`aeC9yW+187H-Zg%{j=U99u-`RC6wqlfbfFJLF@{QcLj z_w$8a&h#Y9FXw@uFImn$-rqkyKH297J^4SJOG$?#GdUYEB@K?PwYRpclz+HCU8o9Q z3IEq!H0-w-Og1B z1I_sJ!ArVf%x>d2ci_04q|bVz(@s5@-J@MqkdHfq;Ry?Kw5}Z&PsZ-;+9r6pAEqPj z>SagrUSKeJRzrok0fvoJ4u1r=^HR(w3|$oN@W%YJ!~~Enkir4tDzLYMD~iR0!O*c& z%y`aq0LO&po?|fo4n2Rpr?Sza+ZHCDQ9wR?yAN9ml#jOEHW>x@Zi{Xf5{aw{Q1ZB_ zTTCfrTVN^TBQ^v=8xt8lmM<$9Y(LzpAdHj3qJm}+2voqP07?jhz<>M@$o#3FhFb!G zR&~osj?6z{guN|*nK#jlFo!sngudcYVa}I^P}rkKCrQgQL`$n$%mv;ZkFR-OLHO6> zk=DGl656_zr0Cq1y^sFyTuk)4qxxMaH9}jF@6n92l|Lz91R|TP?37GGWr-gG zO7avp^9O~PxTMu(Ie#TX#FR!-J1y=LD5$kcBu(XGLk6y^xo7tYFptGj4D-gY{|Y}V z(I&XQS3q+H0}zyn_k=kd=uPw~K3)2RmUP(?xS%0TXGRa_6<)wj*7^IdU+?D& zyPWAsmS4^TKVPz(eZ0Sae0;Lc4|?){IG2(RM`m(1VoDkuTWfD^St)UUx_?j=z7qbg zyJ*;V`DM&~>BfAO@b_=tvXaJrqV5(b*_ z=YyAY!i~`k%{|9p{vCS$dQWAeMYkOEF=z#7Arhgf=EJdMsa7FxY;$RY4dhg+&F;AP}g4O#ze;27&n@kbn78KMl780BHyDKXDfeFzz9S(S=lL>gvt^>1eD|{ zZsrdPF>y(&%W_JFh<_=Kq;^`|Cs0spl}MV($A%1CS98zq6JQ>Tr5NUoVgD6=R-#RC zeXoG#3FP|AxY4 woFTRr&~Wg%hCinnVm(IlUl*8WgzNYZ3NvW}iFK9000000Ne4wvM6N<$f_6qWLjV8( diff --git a/modular_zubbers/icons/customization/tails.dmi b/modular_zubbers/icons/customization/tails.dmi index a0cb6317748524f305a7f246f0765115c854416a..b4e12275c63c067c0e90b8ad1e94f2a49d417e01 100644 GIT binary patch literal 11668 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 literal 10105 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 Date: Sun, 9 Feb 2025 21:57:45 +0100 Subject: [PATCH 027/120] Automatic changelog for PR #3069 [ci skip] --- html/changelogs/AutoChangeLog-pr-3069.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3069.yml diff --git a/html/changelogs/AutoChangeLog-pr-3069.yml b/html/changelogs/AutoChangeLog-pr-3069.yml new file mode 100644 index 00000000000..dd80b755bbf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3069.yml @@ -0,0 +1,4 @@ +author: "Odairu" +delete-after: True +changes: + - image: "filled in nullspace on shadekin tail BEHIND sprite" \ No newline at end of file From 7ba4fdab3232925bd0cebb031c185f8a1d8f98f1 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 9 Feb 2025 23:22:30 +0000 Subject: [PATCH 028/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3069.yml | 4 ---- html/changelogs/archive/2025-02.yml | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3069.yml diff --git a/html/changelogs/AutoChangeLog-pr-3069.yml b/html/changelogs/AutoChangeLog-pr-3069.yml deleted file mode 100644 index dd80b755bbf..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3069.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Odairu" -delete-after: True -changes: - - image: "filled in nullspace on shadekin tail BEHIND sprite" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 095c1705c17..a290d101975 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -78,3 +78,6 @@ ABoxFaux: - balance: Slimepeople with the nitrogen breather quirk now no longer take toxin damage from breathing oxygen, instead taking an equal amount of brute damage. +2025-02-09: + Odairu: + - image: filled in nullspace on shadekin tail BEHIND sprite From 11804158a89fc6e3d721fc8b9a43e583154c4adb Mon Sep 17 00:00:00 2001 From: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Sun, 9 Feb 2025 22:42:01 -0800 Subject: [PATCH 029/120] Replaces The Clown storyteller with The House (Adminbus storyteller) (#2999) ## About The Pull Request While The House will set weights to one still, it'll be running on the fragile ruleset (Medium to low chaos) The catch, admins are given the opportunity to drive the admin bus straight into the station. The house now runs the show. ## Why It's Good For The Game I was told by multiple admins that they used Clown as the dedicated adminbus storyteller. Now I'll make it official, slow down clown, and give admins the opportunity to take over. The goal is to make it feel more like a coin flip then just hyper chaos every round. ## Proof Of Testing works. ## Changelog :cl: add: Replaces The Clown with The House which sets weights to 1, but spawns stuff at a slower pace, and allows the adminbus to come. fix: Voidwalker properly spawns on the ghostset now. /:cl: --- .../event_defines/ghostset/voidwalker.dm | 2 +- .../event_defines/major/major_overrides.dm | 4 --- .../tellers/storyteller_6_clown.dm | 25 ------------------- .../tellers/storyteller_6_house.dm | 16 ++++++++++++ tgstation.dme | 2 +- 5 files changed, 18 insertions(+), 31 deletions(-) delete mode 100644 modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_clown.dm create mode 100644 modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm diff --git a/modular_zubbers/code/modules/storyteller/event_defines/ghostset/voidwalker.dm b/modular_zubbers/code/modules/storyteller/event_defines/ghostset/voidwalker.dm index 5e36b107d18..1749afcd729 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/ghostset/voidwalker.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/ghostset/voidwalker.dm @@ -11,7 +11,7 @@ category = EVENT_CATEGORY_ENTITIES description = "A Void Walker that drags people out of the station and into the abyss" map_flags = EVENT_SPACE_ONLY - + tags = list(TAG_COMBAT, TAG_SPOOKY, TAG_SPACE) track = EVENT_TRACK_GHOSTSET /datum/round_event/ghost_role/void_walker diff --git a/modular_zubbers/code/modules/storyteller/event_defines/major/major_overrides.dm b/modular_zubbers/code/modules/storyteller/event_defines/major/major_overrides.dm index 8e31ece8143..fb3e7a3b7ff 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/major/major_overrides.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/major/major_overrides.dm @@ -62,10 +62,6 @@ track = EVENT_TRACK_MAJOR tags = list(TAG_COMBAT) -/datum/round_event_control/voidwalker - track = EVENT_TRACK_MAJOR - tags = list(TAG_COMBAT, TAG_SPOOKY, TAG_SPACE) - /datum/round_event_control/cme track = EVENT_TRACK_MAJOR tags = list(TAG_DESTRUCTIVE, TAG_COMMUNAL, TAG_CHAOTIC) diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_clown.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_clown.dm deleted file mode 100644 index 35e88873eb0..00000000000 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_clown.dm +++ /dev/null @@ -1,25 +0,0 @@ -/datum/storyteller/clown - name = "Clown (Highest Chaos)" - desc = "The Clown will try to create the most events and antagonists out of all the storytellers without care for their weight. \ - As such this storyteller is hell and is likely to end the round prematurely. It is the most chaotic of all." - welcome_text = "Honkmother save us for no one else can" - - track_data = /datum/storyteller_data/tracks/clown - votable = FALSE - - population_min = 50 - antag_divisor = 4 - storyteller_type = STORYTELLER_TYPE_INTENSE - -/datum/storyteller_data/tracks/clown - threshold_mundane = 700 - threshold_moderate = 1600 - threshold_major = 3200 - threshold_crewset = 1000 - threshold_ghostset = 3200 - -// All the weights are the same to the clown -/datum/storyteller/clown/calculate_weights(track) - for(var/datum/round_event_control/event as anything in SSgamemode.event_pools[track]) - if(event.weight) - event.calculated_weight = 1 diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm new file mode 100644 index 00000000000..881c3c096ef --- /dev/null +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm @@ -0,0 +1,16 @@ +/datum/storyteller/house + name = "The House (Unpredictable Intensity)" + desc = "The House gives permission for admins to drive the adminbus straight into the station. \ + All weights set to one at Medium - Low intensity." + welcome_text = "The House now runs the show..." + track_data = /datum/storyteller_data/tracks/fragile + votable = TRUE + + population_min = 50 + storyteller_type = STORYTELLER_TYPE_INTENSE + +// All the weights are the same to the house +/datum/storyteller/house/calculate_weights(track) + for(var/datum/round_event_control/event as anything in SSgamemode.event_pools[track]) + if(event.weight) + event.calculated_weight = 1 diff --git a/tgstation.dme b/tgstation.dme index 7d9fd61c52e..d6f11f0bc0a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9341,7 +9341,7 @@ #include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_3_default.dm" #include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_4_bomb.dm" #include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_5_gamer.dm" -#include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_6_clown.dm" +#include "modular_zubbers\code\modules\storyteller\storytellers\tellers\storyteller_6_house.dm" #include "modular_zubbers\code\modules\surgery\healing.dm" #include "modular_zubbers\code\modules\surgery\surgery_step.dm" #include "modular_zubbers\code\modules\surgery\tools.dm" From 15e5b52fec40911e861d9d0bc68cbaec4e5bd3d7 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 10 Feb 2025 07:42:26 +0100 Subject: [PATCH 030/120] Automatic changelog for PR #2999 [ci skip] --- html/changelogs/AutoChangeLog-pr-2999.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2999.yml diff --git a/html/changelogs/AutoChangeLog-pr-2999.yml b/html/changelogs/AutoChangeLog-pr-2999.yml new file mode 100644 index 00000000000..bec78a98d7c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2999.yml @@ -0,0 +1,5 @@ +author: "StrangeWeirdKitten" +delete-after: True +changes: + - rscadd: "Replaces The Clown with The House which sets weights to 1, but spawns stuff at a slower pace, and allows the adminbus to come." + - bugfix: "Voidwalker properly spawns on the ghostset now." \ No newline at end of file From b644a1d0a13a0d787b8124732a4106d81d682dbc Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 10 Feb 2025 23:23:10 +0000 Subject: [PATCH 031/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2999.yml | 5 ----- html/changelogs/archive/2025-02.yml | 5 +++++ 2 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2999.yml diff --git a/html/changelogs/AutoChangeLog-pr-2999.yml b/html/changelogs/AutoChangeLog-pr-2999.yml deleted file mode 100644 index bec78a98d7c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2999.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "StrangeWeirdKitten" -delete-after: True -changes: - - rscadd: "Replaces The Clown with The House which sets weights to 1, but spawns stuff at a slower pace, and allows the adminbus to come." - - bugfix: "Voidwalker properly spawns on the ghostset now." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index a290d101975..1ceccbb84e3 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -81,3 +81,8 @@ 2025-02-09: Odairu: - image: filled in nullspace on shadekin tail BEHIND sprite +2025-02-10: + StrangeWeirdKitten: + - rscadd: Replaces The Clown with The House which sets weights to 1, but spawns + stuff at a slower pace, and allows the adminbus to come. + - bugfix: Voidwalker properly spawns on the ghostset now. From 69cafff1b3bb3c31a68f6c13408027a1447034c9 Mon Sep 17 00:00:00 2001 From: Odairu <39929315+Odairu@users.noreply.github.com> Date: Mon, 10 Feb 2025 20:15:53 -0500 Subject: [PATCH 032/120] THE CULTENNING - brings bloodcult to an acceptable state part 1 of my 3 part plan (#3025) ## About The Pull Request Upon being converted to cult while mind-shielded, a pop up option will come up with the option to be gibbed and turn into a shade, or to simply die/be husked while still dropping a soul shard that's offered to ghosts. ## Why It's Good For The Game The main complaint cult gets is that security/other mindshielded players get denied the ability to play as their character upon being sacrificed, you have now been granted free will as to what happens. ## Proof Of Testing ![image](https://github.com/user-attachments/assets/1240d8e5-95f4-46b9-bdc3-b4f342eac520)
Screenshots/Videos
## Changelog :cl: balance: cult no longer gibs mindshields /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- .../~~bubber_defines/traits/declarations.dm | 3 ++ code/_globalvars/traits/_traits.dm | 1 + code/_globalvars/traits/admin_tooling.dm | 1 + code/modules/antagonists/cult/runes.dm | 35 +++++++++++++++---- .../modules/antagonists/wizard/soulstone.dm | 13 +++++++ tgstation.dme | 1 + 6 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 modular_zubbers/code/modules/antagonists/wizard/soulstone.dm diff --git a/code/__DEFINES/~~bubber_defines/traits/declarations.dm b/code/__DEFINES/~~bubber_defines/traits/declarations.dm index 31dc4193e6c..4c562e5747f 100644 --- a/code/__DEFINES/~~bubber_defines/traits/declarations.dm +++ b/code/__DEFINES/~~bubber_defines/traits/declarations.dm @@ -33,3 +33,6 @@ // makes the mob immune to crusher marks even if they are within the required mob size #define TRAIT_CRUSHER_MARK_IMMUNE "crusher_mark_immune" +// makes it so cult cannot get another blood stone from this mob +#define TRAIT_HAS_BEEN_CULT_SACRIFICED "has_been_cult_sacrificed" + diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index a0d68661edd..974278b8b80 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -281,6 +281,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS, "TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED, "TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED, + "TRAIT_HAS_BEEN_CULT_SACRIFICED" = TRAIT_HAS_BEEN_CULT_SACRIFICED, //Bubber edit "TRAIT_HAS_BEEN_KIDNAPPED" = TRAIT_HAS_BEEN_KIDNAPPED, "TRAIT_HAS_CRANIAL_FISSURE" = TRAIT_HAS_CRANIAL_FISSURE, "TRAIT_HATED_BY_DOGS" = TRAIT_HATED_BY_DOGS, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 07f95d1463a..cfccfe8284d 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -128,6 +128,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_GUN_NATURAL" = TRAIT_GUN_NATURAL, "TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED, "TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED, + "TRAIT_HAS_BEEN_CULT_SACRIFICED" = TRAIT_HAS_BEEN_CULT_SACRIFICED, //Bubber edit "TRAIT_HATED_BY_DOGS" = TRAIT_HATED_BY_DOGS, "TRAIT_HEAVY_DRINKER" = TRAIT_HEAVY_DRINKER, "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER, diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 8fb661fd432..3ed6d15e97b 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -390,12 +390,35 @@ structure_check() searches for nearby cultist structures required for the invoca sacrificial.investigate_log("has been sacrificially dusted by the cult.", INVESTIGATE_DEATHS) sacrificial.dust(TRUE, FALSE, TRUE) else if (sacrificial) - var/obj/item/soulstone/stone = new(loc) - if(sacrificial.mind && !HAS_TRAIT(sacrificial, TRAIT_SUICIDED)) - stone.capture_soul(sacrificial, invokers[1], forced = TRUE) - playsound(sacrificial, 'sound/effects/magic/disintegrate.ogg', 100, TRUE) - sacrificial.investigate_log("has been sacrificially gibbed by the cult.", INVESTIGATE_DEATHS) - sacrificial.gib(DROP_ALL_REMAINS) + //BUBBER EDIT BEGIN: removes force gib from cult + if(!HAS_TRAIT(sacrificial, TRAIT_HAS_BEEN_CULT_SACRIFICED)) + ADD_TRAIT(sacrificial, TRAIT_HAS_BEEN_CULT_SACRIFICED, MAGIC_TRAIT) + var/obj/item/soulstone/stone = new(loc) + + var/shard_choice = tgui_alert( + user = sacrificial, + message = "Do you wish to become a soul shard for the cult, selecting yes will gib you and you will play as a soul shard, selecting no will husk you and your body will stay intact.", + title = "Choose your fate", + buttons = list("Decline", "Accept"), + timeout = 10 SECONDS, + autofocus = TRUE + ) + if(shard_choice == "Accept") + if(sacrificial.mind && !HAS_TRAIT(sacrificial, TRAIT_SUICIDED)) + stone.capture_soul(sacrificial, invokers[1], forced = TRUE) + playsound(sacrificial, 'sound/effects/magic/disintegrate.ogg', 100, TRUE) + sacrificial.investigate_log("has been sacrificially gibbed by the cult.", INVESTIGATE_DEATHS) + sacrificial.gib(DROP_ALL_REMAINS) + else + sacrificial.death(FALSE) + sacrificial.become_husk(BURN) + sacrificial.investigate_log("has been sacrificially husked by the cult.", INVESTIGATE_DEATHS) + stone.capture_ghost(sacrificial, invokers[1]) + else + sacrificial.death(FALSE) + sacrificial.become_husk(BURN) + sacrificial.investigate_log("has been sacrificially husked by the cult.", INVESTIGATE_DEATHS) + //BUBBER EDIT END try_spawn_sword() // after sharding and gibbing, which potentially dropped a null rod diff --git a/modular_zubbers/code/modules/antagonists/wizard/soulstone.dm b/modular_zubbers/code/modules/antagonists/wizard/soulstone.dm new file mode 100644 index 00000000000..8cc06acfda1 --- /dev/null +++ b/modular_zubbers/code/modules/antagonists/wizard/soulstone.dm @@ -0,0 +1,13 @@ +/obj/item/soulstone/proc/capture_ghost(mob/living/carbon/victim, user) + var/mob/chosen_one = SSpolling.poll_ghosts_for_target( + check_jobban = ROLE_CULTIST, + poll_time = 20 SECONDS, + checked_target = src, + ignore_category = POLL_IGNORE_SHADE, + alert_pic = /mob/living/basic/shade, + jump_target = src, + role_name_text = "a shade", + chat_text_border_icon = /mob/living/basic/shade, + ) + on_poll_concluded(user, victim, chosen_one) + return TRUE //it'll probably get someone ;) diff --git a/tgstation.dme b/tgstation.dme index d6f11f0bc0a..71885af112f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8927,6 +8927,7 @@ #include "modular_zubbers\code\modules\antagonists\wizard\events_removal.dm" #include "modular_zubbers\code\modules\antagonists\wizard\events_rework.dm" #include "modular_zubbers\code\modules\antagonists\wizard\grand_finale_removal.dm" +#include "modular_zubbers\code\modules\antagonists\wizard\soulstone.dm" #include "modular_zubbers\code\modules\arcades\assets\arcade.dm" #include "modular_zubbers\code\modules\arcades\code\loot\arcade_weights_classic.dm" #include "modular_zubbers\code\modules\arcades\code\loot\arcade_weights_mechanical.dm" From 0d03fc619b1356de4e0fe8f70cfa816da95b4057 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 11 Feb 2025 02:16:17 +0100 Subject: [PATCH 033/120] Automatic changelog for PR #3025 [ci skip] --- html/changelogs/AutoChangeLog-pr-3025.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3025.yml diff --git a/html/changelogs/AutoChangeLog-pr-3025.yml b/html/changelogs/AutoChangeLog-pr-3025.yml new file mode 100644 index 00000000000..44b3482c01d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3025.yml @@ -0,0 +1,4 @@ +author: "Odairu" +delete-after: True +changes: + - balance: "cult no longer gibs mindshields" \ No newline at end of file From 2543d885486ddf263f7f7055b3c1e82155bbb3ee Mon Sep 17 00:00:00 2001 From: ArrisFairburne Date: Tue, 11 Feb 2025 04:03:45 -0500 Subject: [PATCH 034/120] Punch Clock PDA Application/Modular Console (#2900) ## About The Pull Request Adds a new NTOS application to the game: "Plexagon Punch Clock", which functions similarly to the time clock in cryo. Using the app, crew members can clock out wherever they want. This will also create a locked briefcase containing certain job-related items; this can be unlocked by the player once they return to the shift, or by a relevant Command member. For later changes I'd like to be able to have this app be able to clock in/out a user via their DNA imprint. ## Why It's Good For The Game - It's easier to clock out before going for RP/ERP when done with work. - Placing job items in an easily-accessible box means that it's less annoying to return to work after finishing RP/ERP - Convenience ## Proof Of Testing
Screenshots/Videos ![GIF 12-Jan-25 6-22-47 PM](https://github.com/user-attachments/assets/2b90ccb6-a175-4e2a-80c2-bfe717f99358)
## Changelog :cl: ArrisFairburne, LT3 add: Added a new app to clock in and out from any NT OS-compatible device (Plexagon Punch Clock) qol: Your job items are now locked into a box instead of warped to cryo, when clocking out /:cl: --------- Co-authored-by: lessthanthree <83487515+lessthnthree@users.noreply.github.com> Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> --- .../IceBoxStation/Icebox_ntrep_office.dmm | 2 +- .../MetaStation/metastation_ntrep_office.dmm | 2 +- .../NebulaStation/nebulastation_arrivals.dmm | 2 +- .../NebulaStation/nebulastation_corridor.dmm | 2 +- .../NebulaStation/nebulastation_cryo.dmm | 2 +- .../nebulastation_ntrep_office.dmm | 2 +- .../kilostation/kilostation_cryo.dmm | 2 +- .../kilostation/kilostation_ert_bay.dmm | 2 +- .../tramstation/tramstation_ntrep_office.dmm | 2 +- _maps/map_files/BoxStation/BoxStation.dmm | 4 +- _maps/map_files/VoidRaptor/VoidRaptor.dmm | 2 +- _maps/map_files/biodome/biodome.dmm | 4 +- _maps/map_files/generic/CentCom_skyrat_z2.dmm | 2 +- _maps/map_files/moonstation/moonstation.dmm | 10 +- .../birdshot/birdshot_cryo(deprecated).dmm | 2 +- .../templates/birdshot/birdshot_cryo.dmm | 2 +- .../deltastation/deltastation_cryo.dmm | 2 +- .../templates/icebox/icebox_cryo.dmm | 2 +- .../kilostation/kilostation_cryo.dmm | 2 +- .../metastation/metastation_cryo.dmm | 2 +- .../templates/northstar/northstar_cryo.dmm | 2 +- .../tramstation/tramstation_cryo.dmm | 2 +- .../wawastation/wawastation_commons.dmm | 2 +- .../dcs/signals/signals_modular_computer.dm | 1 + code/__DEFINES/~~bubber_defines/jobs.dm | 59 ++++ code/__HELPERS/global_lists.dm | 2 +- .../computers/item/computer.dm | 1 + .../modular_computers/computers/item/pda.dm | 7 +- .../computers/item/computer.dm | 5 +- .../modules/research/designs/misc_designs.dm | 2 + .../modules/research/techweb/all_nodes.dm | 6 - modular_skyrat/modules/cryosleep/code/job.dm | 13 +- .../modules/time_clock/code/console.dm | 207 ------------ .../modules/time_clock/code/console_tgui.dm | 131 -------- .../modules/time_clock/code/mind.dm | 4 - .../modules/time_clock/code/sign.dm | 8 - .../time_clock/icons/machinery/console.dmi | Bin 862 -> 0 bytes .../modules/time_clock/icons/sign.dmi | Bin 978 -> 0 bytes .../effects/effects_system/effect_sparks.dm | 21 ++ .../icons/obj/machines/time_clock.dmi | Bin 0 -> 1106 bytes .../code/off_duty_component.dm | 3 + .../code/plexagon_selfserve.dm | 317 ++++++++++++++++++ .../plexagon_selfserve/code/shame_box.dm | 74 ++++ .../modules/plexagon_selfserve/code/sign.dm | 15 + .../plexagon_selfserve/code/time_clock.dm | 21 ++ .../plexagon_selfserve/icons/shame_box.dmi | Bin 0 -> 473 bytes .../modules/plexagon_selfserve/icons/sign.dmi | Bin 0 -> 1451 bytes tgstation.dme | 11 +- .../tgui/interfaces/NtosSelfServe.tsx | 146 ++++++++ .../Scripts_Bubber/2900_Time_Clock.txt | 1 + 50 files changed, 715 insertions(+), 398 deletions(-) delete mode 100644 modular_skyrat/modules/time_clock/code/console.dm delete mode 100644 modular_skyrat/modules/time_clock/code/console_tgui.dm delete mode 100644 modular_skyrat/modules/time_clock/code/mind.dm delete mode 100644 modular_skyrat/modules/time_clock/code/sign.dm delete mode 100644 modular_skyrat/modules/time_clock/icons/machinery/console.dmi delete mode 100644 modular_skyrat/modules/time_clock/icons/sign.dmi create mode 100644 modular_zubbers/code/game/objects/effects/effects_system/effect_sparks.dm create mode 100644 modular_zubbers/icons/obj/machines/time_clock.dmi rename {modular_skyrat/modules/time_clock => modular_zubbers/modules/plexagon_selfserve}/code/off_duty_component.dm (96%) create mode 100644 modular_zubbers/modules/plexagon_selfserve/code/plexagon_selfserve.dm create mode 100644 modular_zubbers/modules/plexagon_selfserve/code/shame_box.dm create mode 100644 modular_zubbers/modules/plexagon_selfserve/code/sign.dm create mode 100644 modular_zubbers/modules/plexagon_selfserve/code/time_clock.dm create mode 100644 modular_zubbers/modules/plexagon_selfserve/icons/shame_box.dmi create mode 100644 modular_zubbers/modules/plexagon_selfserve/icons/sign.dmi create mode 100644 tgui/packages/tgui/interfaces/NtosSelfServe.tsx create mode 100644 tools/UpdatePaths/Scripts_Bubber/2900_Time_Clock.txt diff --git a/_maps/bubber/automapper/templates/IceBoxStation/Icebox_ntrep_office.dmm b/_maps/bubber/automapper/templates/IceBoxStation/Icebox_ntrep_office.dmm index a53b9c3712e..45b4ae76dcc 100644 --- a/_maps/bubber/automapper/templates/IceBoxStation/Icebox_ntrep_office.dmm +++ b/_maps/bubber/automapper/templates/IceBoxStation/Icebox_ntrep_office.dmm @@ -6,7 +6,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, -/obj/machinery/time_clock/directional/west, +/obj/machinery/modular_computer/preset/time_clock/directional/west, /obj/structure/disposalpipe/trunk{ dir = 1 }, diff --git a/_maps/bubber/automapper/templates/MetaStation/metastation_ntrep_office.dmm b/_maps/bubber/automapper/templates/MetaStation/metastation_ntrep_office.dmm index 1f5c31bf21d..6ffe685f3d0 100644 --- a/_maps/bubber/automapper/templates/MetaStation/metastation_ntrep_office.dmm +++ b/_maps/bubber/automapper/templates/MetaStation/metastation_ntrep_office.dmm @@ -211,7 +211,7 @@ /turf/open/floor/carpet/green, /area/station/command/heads_quarters/nt_rep) "M" = ( -/obj/machinery/time_clock/directional/south, +/obj/machinery/modular_computer/preset/time_clock/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/port) "N" = ( diff --git a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_arrivals.dmm b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_arrivals.dmm index e9378f5bfda..51cf2543d90 100644 --- a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_arrivals.dmm +++ b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_arrivals.dmm @@ -50,7 +50,7 @@ /obj/effect/turf_decal/stripes/corner{ dir = 8 }, -/obj/machinery/time_clock/directional/south, +/obj/machinery/modular_computer/preset/time_clock/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central) "C" = ( diff --git a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_corridor.dmm b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_corridor.dmm index 8d4dcdc5e9d..4651779e186 100644 --- a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_corridor.dmm +++ b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_corridor.dmm @@ -99,7 +99,7 @@ /turf/open/floor/grass/fairy, /area/station/common/cryopods/aux) "u" = ( -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, diff --git a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_cryo.dmm b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_cryo.dmm index c233a7b18d1..2243e84ab01 100644 --- a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_cryo.dmm +++ b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_cryo.dmm @@ -222,7 +222,7 @@ }, /area/station/commons/locker) "X" = ( -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /obj/effect/turf_decal/siding/thinplating_new/dark{ dir = 5 }, diff --git a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_ntrep_office.dmm b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_ntrep_office.dmm index 5ddf9bf053a..fb63b944d2d 100644 --- a/_maps/bubber/automapper/templates/NebulaStation/nebulastation_ntrep_office.dmm +++ b/_maps/bubber/automapper/templates/NebulaStation/nebulastation_ntrep_office.dmm @@ -110,7 +110,7 @@ /turf/open/floor/plating, /area/station/command/heads_quarters/nt_rep) "v" = ( -/obj/machinery/time_clock/directional/south, +/obj/machinery/modular_computer/preset/time_clock/directional/south, /turf/template_noop, /area/station/hallway/primary/central) "w" = ( diff --git a/_maps/bubber/automapper/templates/kilostation/kilostation_cryo.dmm b/_maps/bubber/automapper/templates/kilostation/kilostation_cryo.dmm index d3035bcc07a..a9574027702 100644 --- a/_maps/bubber/automapper/templates/kilostation/kilostation_cryo.dmm +++ b/_maps/bubber/automapper/templates/kilostation/kilostation_cryo.dmm @@ -95,7 +95,7 @@ dir = 1 }, /obj/machinery/camera/directional/east, -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/common/cryopods) diff --git a/_maps/bubber/automapper/templates/kilostation/kilostation_ert_bay.dmm b/_maps/bubber/automapper/templates/kilostation/kilostation_ert_bay.dmm index dfcfda5ec52..0d80052da7b 100644 --- a/_maps/bubber/automapper/templates/kilostation/kilostation_ert_bay.dmm +++ b/_maps/bubber/automapper/templates/kilostation/kilostation_ert_bay.dmm @@ -653,7 +653,7 @@ "nS" = ( /obj/effect/turf_decal/tile/green, /obj/machinery/camera/directional/south, -/obj/machinery/time_clock/directional/south, +/obj/machinery/modular_computer/preset/time_clock/directional/south, /turf/open/floor/iron/dark/corner, /area/station/hallway/primary/fore) "nW" = ( diff --git a/_maps/bubber/automapper/templates/tramstation/tramstation_ntrep_office.dmm b/_maps/bubber/automapper/templates/tramstation/tramstation_ntrep_office.dmm index bcd6ec3f0b0..654ffcd7838 100644 --- a/_maps/bubber/automapper/templates/tramstation/tramstation_ntrep_office.dmm +++ b/_maps/bubber/automapper/templates/tramstation/tramstation_ntrep_office.dmm @@ -167,7 +167,7 @@ /turf/open/floor/carpet/green, /area/station/command/heads_quarters/nt_rep) "u" = ( -/obj/machinery/time_clock, +/obj/machinery/modular_computer/preset/time_clock, /turf/closed/wall, /area/station/command/heads_quarters/nt_rep) "v" = ( diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index bef60ba776e..c7f439c240f 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -39167,7 +39167,7 @@ /turf/open/floor/iron, /area/station/hallway/primary/central) "gBW" = ( -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -56167,7 +56167,7 @@ /obj/effect/turf_decal/tile/green{ dir = 1 }, -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /turf/open/floor/iron/dark, /area/station/common/cryopods) "rkn" = ( diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm index a604de81071..f2fabdf478f 100644 --- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm +++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm @@ -8959,7 +8959,7 @@ /area/station/tcommsat/server) "cHJ" = ( /obj/effect/turf_decal/siding/white, -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /turf/open/floor/iron/dark/smooth_large, /area/station/common/cryopods) "cHR" = ( diff --git a/_maps/map_files/biodome/biodome.dmm b/_maps/map_files/biodome/biodome.dmm index e704ef1708e..3c9aba206b0 100644 --- a/_maps/map_files/biodome/biodome.dmm +++ b/_maps/map_files/biodome/biodome.dmm @@ -55617,7 +55617,7 @@ /obj/effect/turf_decal/trimline/brown/line{ dir = 8 }, -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /obj/machinery/light/directional/east, /turf/open/floor/iron, /area/station/hallway/primary/central/aft) @@ -70621,7 +70621,7 @@ /turf/open/floor/iron/dark, /area/station/hallway/primary/aft) "yhC" = ( -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /turf/open/floor/carpet/executive, /area/station/commons/locker) "yhE" = ( diff --git a/_maps/map_files/generic/CentCom_skyrat_z2.dmm b/_maps/map_files/generic/CentCom_skyrat_z2.dmm index 0b569b3357f..c1a5071250f 100644 --- a/_maps/map_files/generic/CentCom_skyrat_z2.dmm +++ b/_maps/map_files/generic/CentCom_skyrat_z2.dmm @@ -4738,7 +4738,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, -/obj/machinery/time_clock/directional/west, +/obj/machinery/modular_computer/preset/time_clock/directional/west, /turf/open/floor/iron/white, /area/centcom/interlink) "bGk" = ( diff --git a/_maps/map_files/moonstation/moonstation.dmm b/_maps/map_files/moonstation/moonstation.dmm index 0a39aa196e2..bc65ca80f66 100644 --- a/_maps/map_files/moonstation/moonstation.dmm +++ b/_maps/map_files/moonstation/moonstation.dmm @@ -28053,7 +28053,7 @@ dir = 8 }, /obj/effect/landmark/atmospheric_sanity/ignore_area, -/obj/machinery/time_clock/directional/west, +/obj/machinery/modular_computer/preset/time_clock/directional/west, /turf/open/floor/iron/showroomfloor, /area/station/terminal/cryo) "hHF" = ( @@ -40920,7 +40920,7 @@ /area/ruin/unpowered/ash_walkers) "lkQ" = ( /obj/machinery/computer/cryopod/directional/east, -/obj/machinery/time_clock/directional/south, +/obj/machinery/modular_computer/preset/time_clock/directional/south, /obj/effect/turf_decal/tile/green/anticorner/contrasted, /obj/item/kirbyplants/random, /turf/open/floor/iron/showroomfloor, @@ -72212,7 +72212,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -72895,7 +72895,7 @@ /area/station/tcommsat/computer) "uaR" = ( /obj/machinery/computer/cryopod/directional/east, -/obj/machinery/time_clock/directional/south, +/obj/machinery/modular_computer/preset/time_clock/directional/south, /obj/effect/turf_decal/tile/green/anticorner/contrasted, /obj/item/kirbyplants/random, /turf/open/floor/iron/showroomfloor, @@ -76533,7 +76533,7 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, -/obj/machinery/time_clock/directional/west, +/obj/machinery/modular_computer/preset/time_clock/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark/corner{ dir = 1 diff --git a/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo(deprecated).dmm b/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo(deprecated).dmm index 5a33e0657ec..1ecccf5d0ba 100644 --- a/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo(deprecated).dmm +++ b/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo(deprecated).dmm @@ -138,7 +138,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/siding/thinplating_new/light/end, /obj/machinery/light/directional/north, -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /turf/open/floor/iron/dark, /area/station/common/cryopods) "Y" = ( diff --git a/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo.dmm b/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo.dmm index 8572568a290..c68baf643ba 100644 --- a/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo.dmm +++ b/_maps/skyrat/automapper/templates/birdshot/birdshot_cryo.dmm @@ -13,7 +13,7 @@ /obj/effect/turf_decal/siding/thinplating_new/light{ dir = 1 }, -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /obj/machinery/cryopod, /obj/machinery/light/warm/directional/north, /turf/open/floor/iron/dark, diff --git a/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm b/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm index e2ade1d4387..145b8ae8bdc 100644 --- a/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm @@ -4,7 +4,7 @@ /area/station/commons/fitness/recreation) "d" = ( /obj/effect/turf_decal/siding/white, -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /turf/open/floor/iron/dark, /area/station/commons/fitness/recreation) "e" = ( diff --git a/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm b/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm index 46d36b10347..540cdada384 100644 --- a/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm +++ b/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm @@ -42,7 +42,7 @@ dir = 9 }, /obj/machinery/light/directional/east, -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /turf/open/floor/iron/dark, /area/station/common/cryopods) "k" = ( diff --git a/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm b/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm index 4a343890ab1..c55a3d57ca8 100644 --- a/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm @@ -95,7 +95,7 @@ dir = 1 }, /obj/machinery/camera/directional/east, -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, /area/station/common/cryopods) diff --git a/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm b/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm index 54bc572e412..fd353542e13 100644 --- a/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm @@ -30,7 +30,7 @@ /area/station/common/cryopods) "p" = ( /obj/effect/turf_decal/siding/white, -/obj/machinery/time_clock/directional/north, +/obj/machinery/modular_computer/preset/time_clock/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/common/cryopods) diff --git a/_maps/skyrat/automapper/templates/northstar/northstar_cryo.dmm b/_maps/skyrat/automapper/templates/northstar/northstar_cryo.dmm index e77449ea97b..87c3cce8450 100644 --- a/_maps/skyrat/automapper/templates/northstar/northstar_cryo.dmm +++ b/_maps/skyrat/automapper/templates/northstar/northstar_cryo.dmm @@ -368,7 +368,7 @@ /area/station/commons/vacant_room/commissary) "zq" = ( /obj/machinery/computer/cryopod/directional/south, -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /turf/open/floor/iron/dark, /area/station/common/cryopods) "Ao" = ( diff --git a/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm b/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm index 94883b8e91e..01ba5181ac9 100644 --- a/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm @@ -246,7 +246,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 }, -/obj/machinery/time_clock/directional/west, +/obj/machinery/modular_computer/preset/time_clock/directional/west, /turf/open/floor/iron/dark, /area/station/common/cryopods) "M" = ( diff --git a/_maps/skyrat/automapper/templates/wawastation/wawastation_commons.dmm b/_maps/skyrat/automapper/templates/wawastation/wawastation_commons.dmm index 68e53ffc220..c57e2b8fe55 100644 --- a/_maps/skyrat/automapper/templates/wawastation/wawastation_commons.dmm +++ b/_maps/skyrat/automapper/templates/wawastation/wawastation_commons.dmm @@ -539,7 +539,7 @@ /turf/open/floor/carpet/purple, /area/station/service/library) "rI" = ( -/obj/machinery/time_clock/directional/east, +/obj/machinery/modular_computer/preset/time_clock/directional/east, /obj/effect/turf_decal/bot_blue, /obj/machinery/computer/cryopod/directional/south, /turf/open/floor/iron/dark/textured_large, diff --git a/code/__DEFINES/dcs/signals/signals_modular_computer.dm b/code/__DEFINES/dcs/signals/signals_modular_computer.dm index dd325e41984..055bdd4d176 100644 --- a/code/__DEFINES/dcs/signals/signals_modular_computer.dm +++ b/code/__DEFINES/dcs/signals/signals_modular_computer.dm @@ -16,6 +16,7 @@ /// From /obj/item/modular_computer/proc/InsertID: (inserting_id, user) #define COMSIG_MODULAR_COMPUTER_INSERTED_ID "comsig_computer_inserted_id" +#define COMSIG_MODULAR_COMPUTER_REMOVED_ID "comsig_computer_removed_id" // BUBBER EDIT ADDITION - Signal on ID removal /// From /datum/computer_file/program/on_start: (user) #define COMSIG_COMPUTER_PROGRAM_START "computer_program_start" diff --git a/code/__DEFINES/~~bubber_defines/jobs.dm b/code/__DEFINES/~~bubber_defines/jobs.dm index dd273bbb553..611d28b39f5 100644 --- a/code/__DEFINES/~~bubber_defines/jobs.dm +++ b/code/__DEFINES/~~bubber_defines/jobs.dm @@ -20,3 +20,62 @@ #define JOB_BLACKSMITH "Blacksmith" #define JOB_DISPLAY_ORDER_BLACKSMITH 48 + +/// Time after clocking out before you can clock in again +#define TIMECLOCK_COOLDOWN 5 MINUTES + +/// What items do we want to remove from the person clocking out? +#define SELF_SERVE_RETURN_ITEMS list( \ + /obj/item/melee/baton/security, \ + /obj/item/melee/baton/security/loaded, \ + /obj/item/melee/baton/telescopic, \ + /obj/item/melee/baton, \ + /obj/item/assembly/flash/handheld, \ + /obj/item/gun/energy/disabler, \ + /obj/item/megaphone/command, \ + /obj/item/door_remote/captain, \ + /obj/item/door_remote/chief_engineer, \ + /obj/item/door_remote/research_director, \ + /obj/item/door_remote/head_of_security, \ + /obj/item/door_remote/quartermaster, \ + /obj/item/door_remote/chief_medical_officer, \ + /obj/item/door_remote/civilian, \ + /obj/item/circuitboard/machine/techfab/department/engineering, \ + /obj/item/circuitboard/machine/techfab/department/service, \ + /obj/item/circuitboard/machine/techfab/department/security, \ + /obj/item/circuitboard/machine/techfab/department/medical, \ + /obj/item/circuitboard/machine/techfab/department/cargo, \ + /obj/item/circuitboard/machine/techfab/department/science, \ + /obj/item/blueprints, \ + /obj/item/pipe_dispenser/bluespace, \ + /obj/item/mod/control/pre_equipped/advanced, \ + /obj/item/clothing/shoes/magboots/advance, \ + /obj/item/shield/riot/tele, \ + /obj/item/storage/belt/security/full, \ + /obj/item/gun/energy/e_gun/hos, \ + /obj/item/pinpointer/nuke, \ + /obj/item/gun/energy/e_gun, \ + /obj/item/storage/toolbox/guncase/skyrat/pistol/trappiste_small_case/skild, \ + /obj/item/storage/belt/sabre, \ + /obj/item/mod/control/pre_equipped/magnate, \ + /obj/item/mod/control/pre_equipped/blueshield, \ + /obj/item/clothing/suit/armor/vest/warden, \ + /obj/item/clothing/glasses/hud/security/sunglasses, \ + /obj/item/clothing/gloves/krav_maga/sec, \ + /obj/item/clothing/suit/armor/vest/alt/sec, \ + /obj/item/storage/belt/holster/detective/full, \ + /obj/item/reagent_containers/spray/pepper, \ + /obj/item/detective_scanner, \ + /obj/item/gun/ballistic/revolver/c38/detective, \ + /obj/item/mod/control/pre_equipped/security, \ + /obj/item/mod/control/pre_equipped/safeguard, \ + /obj/item/gun/energy/cell_loaded/medigun/cmo, \ + /obj/item/defibrillator/compact/loaded, \ + /obj/item/storage/hypospraykit/cmo/preloaded, \ + /obj/item/mod/control/pre_equipped/rescue, \ + /obj/item/gun/ballistic/rifle/boltaction/sporterized, \ + /obj/item/clothing/glasses/hud/gun_permit/sunglasses, \ + /obj/item/card/id/departmental_budget/car, \ + /obj/item/clothing/suit/armor/reactive/teleport, \ + /obj/item/mod/control/pre_equipped/research, \ +) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index e9973e6f671..3dd1f955537 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -188,7 +188,7 @@ GLOBAL_LIST_INIT(WALLITEMS_INTERIOR, typecacheof(list( /obj/machinery/status_display, /obj/machinery/ticket_machine, /obj/machinery/turretid, - /obj/machinery/time_clock, //SKYRAT EDIT TIME CLOCK + /obj/machinery/modular_computer/preset/time_clock, // BUBBER EDIT ADDITION - Punch Clock /obj/machinery/barsign, /obj/structure/extinguisher_cabinet, /obj/structure/fireaxecabinet, diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index de13d846230..9c505bfdc30 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -319,6 +319,7 @@ computer_id_slot.forceMove(drop_location()) computer_id_slot = null + SEND_SIGNAL(src, COMSIG_MODULAR_COMPUTER_REMOVED_ID, computer_id_slot, user) // BUBBER EDIT ADDITION - Signal on ID removal if(!silent && !isnull(user)) to_chat(user, span_notice("You remove the card from the card slot.")) diff --git a/code/modules/modular_computers/computers/item/pda.dm b/code/modules/modular_computers/computers/item/pda.dm index 2691c91275c..28fdc1049e2 100644 --- a/code/modules/modular_computers/computers/item/pda.dm +++ b/code/modules/modular_computers/computers/item/pda.dm @@ -38,10 +38,11 @@ /datum/computer_file/program/messenger, /datum/computer_file/program/nt_pay, /datum/computer_file/program/notepad, - // SKYRAT EDIT ADDITION START + /datum/computer_file/program/crew_manifest, + // BUBBER EDIT ADDITION START /datum/computer_file/program/maintenance/camera, // Adds camera to all base tablets - // SKRAT EDIT ADDITION END - /datum/computer_file/program/crew_manifest + /datum/computer_file/program/crew_self_serve, // Crew Self Serve + // BUBBER EDIT ADDITION END ) ///List of items that can be stored in a PDA var/static/list/contained_item = list( diff --git a/modular_skyrat/master_files/code/modules/modular_computers/computers/item/computer.dm b/modular_skyrat/master_files/code/modules/modular_computers/computers/item/computer.dm index 5a072fd075b..f1bfbb6331b 100644 --- a/modular_skyrat/master_files/code/modules/modular_computers/computers/item/computer.dm +++ b/modular_skyrat/master_files/code/modules/modular_computers/computers/item/computer.dm @@ -1,3 +1,6 @@ +// Extended PDA cells to compensate for increased round length /obj/item/modular_computer - // Extended PDA cell to compensate for increased round length + internal_cell = /obj/item/stock_parts/power_store/cell/upgraded + +/obj/item/modular_computer/processor internal_cell = /obj/item/stock_parts/power_store/cell/upgraded diff --git a/modular_skyrat/master_files/code/modules/research/designs/misc_designs.dm b/modular_skyrat/master_files/code/modules/research/designs/misc_designs.dm index 4d199f07931..d168d7a9e17 100644 --- a/modular_skyrat/master_files/code/modules/research/designs/misc_designs.dm +++ b/modular_skyrat/master_files/code/modules/research/designs/misc_designs.dm @@ -62,6 +62,7 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +/* /datum/design/time_clock_frame name = "Time Clock Frame" desc = "A frame for a time clock console, contains all of the parts needed to build a new time clock" @@ -76,6 +77,7 @@ RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, ) departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE +*/ /datum/design/vox_gas_filter name = "Vox Gas Filter" diff --git a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm index d79ec08dbac..36f3542343e 100644 --- a/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm +++ b/modular_skyrat/master_files/code/modules/research/techweb/all_nodes.dm @@ -143,12 +143,6 @@ ////////////////////////Computer tech//////////////////////// -/datum/techweb_node/consoles/New() - design_ids += list( - "time_clock_frame", - ) - return ..() - /datum/techweb_node/hud/New() design_ids += list( "health_hud_prescription", diff --git a/modular_skyrat/modules/cryosleep/code/job.dm b/modular_skyrat/modules/cryosleep/code/job.dm index f7d9af2c6d0..97d268b181c 100644 --- a/modular_skyrat/modules/cryosleep/code/job.dm +++ b/modular_skyrat/modules/cryosleep/code/job.dm @@ -1,19 +1,26 @@ /datum/controller/subsystem/job/proc/FreeRole(rank) if(!rank) + stack_trace("FreeRole called to free job slot with no rank specified") return - job_debug("Freeing role: [rank]") var/datum/job/job = get_job(rank) if(!job) + stack_trace("FreeRole could not map rank [rank] to a job slot") return FALSE + log_econ("Modifying job slots of [job.title]. Existing slots: [job.current_positions]/[job.total_positions] New slots: [max(0, job.current_positions - 1)]/[job.total_positions]") job.current_positions = max(0, job.current_positions - 1) /// Used for clocking back in, re-claiming the previously freed role. Returns false if no slot is available. /datum/controller/subsystem/job/proc/OccupyRole(rank) if(!rank) + stack_trace("OccupyRole called to free job slot with no rank specified") return FALSE - job_debug("Occupying role: [rank]") var/datum/job/job = get_job(rank) - if(!job || job.current_positions >= job.total_positions) + if(!job) + stack_trace("FreeRole could not map rank [rank] to a job slot") return FALSE + if(job.current_positions >= job.total_positions) + log_econ("Modifying job slots of [job.title] failed due to no job slot being available. Current slots: [job.current_positions]/[job.total_positions]") + return FALSE + log_econ("Modifying job slots of [job.title]. Existing slots: [job.current_positions]/[job.total_positions] New slots: [job.current_positions + 1]/[job.total_positions]") job.current_positions = job.current_positions + 1 return TRUE diff --git a/modular_skyrat/modules/time_clock/code/console.dm b/modular_skyrat/modules/time_clock/code/console.dm deleted file mode 100644 index 791ad16cff2..00000000000 --- a/modular_skyrat/modules/time_clock/code/console.dm +++ /dev/null @@ -1,207 +0,0 @@ -#define CLOCK_IN_COOLDOWN 15 MINUTES - -/obj/machinery/time_clock - name = "time clock" - desc = "Allows employees to clock in and out of their jobs" - icon = 'modular_skyrat/modules/time_clock/icons/machinery/console.dmi' - icon_state = "timeclock" - density = FALSE - - ///What ID card is currently inside? - var/obj/item/card/id/inserted_id - ///What trim is applied to inserted IDs? - var/target_trim = /datum/id_trim/job/assistant - - //These variables are the same as the ones that the cryopods use to make annoucements - ///The radio that is used to announce when someone clocks in and clocks out. - var/obj/item/radio/headset/radio = /obj/item/radio/headset/silicon/pai - ///The channel that the radio broadcasts on. - var/announcement_channel = null - /// What alert level do we need to start preforming job checks at? - var/job_check_alert_level = SEC_LEVEL_RED - -MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/time_clock, 28) - -/obj/machinery/time_clock/Initialize(mapload) - . = ..() - radio = new radio(src) - -/obj/machinery/time_clock/Destroy() - . = ..() - if(inserted_id) - inserted_id.forceMove(drop_location()) - - if(radio) - QDEL_NULL(radio) - -/obj/machinery/time_clock/update_overlays() - . = ..() - if(machine_stat & (NOPOWER|BROKEN)) - return FALSE - - if(!inserted_id) - . += "[icon_state]_r_idle" - . += "[icon_state]_l_idle" - - else - . += "[icon_state]_r_card" - . += "[icon_state]_l_card" - -/obj/machinery/time_clock/attackby(obj/item/used_item, mob/user) - if(!istype(used_item, /obj/item/card/id)) - return ..() - - if(inserted_id) - to_chat(user, span_warning("There is already an ID card present!")) - return FALSE - - if(!user.transferItemToLoc(used_item)) - to_chat(user, span_warning("You are unable to put [used_item] inside of the [src]!")) - return FALSE - - inserted_id = used_item - update_appearance() - update_static_data_for_all_viewers() - to_chat(user, span_boldwarning("Before clocking out, please return any piece of job gear that is important or limited to your workplace.")) - - if(important_job_check()) - if(SSsecurity_level.get_current_level_as_number() >= job_check_alert_level) - to_chat(user, span_boldwarning("You are unable to clock out at the current alert level.")) - eject_inserted_id(user) - return FALSE - - if(tgui_alert(user, "You are a member of security and/or command, make sure that you ahelp before clocking out. If you decide to clock back in later, you will need to go to the Head of Personnel. Do you wish to continue?", "[src]", list("Yes", "No")) != "Yes") - eject_inserted_id(user) - return FALSE - - playsound(src, 'sound/machines/terminal/terminal_insert_disc.ogg', 50, FALSE) - return TRUE - -/obj/machinery/time_clock/click_alt(mob/user) - if(!eject_inserted_id(user)) - return CLICK_ACTION_BLOCKING - - return CLICK_ACTION_SUCCESS - -///Ejects the ID stored inside of the parent machine, if there is one. -/obj/machinery/time_clock/proc/eject_inserted_id(mob/recepient) - if(!inserted_id || !recepient) - return FALSE - - inserted_id.forceMove(drop_location()) - recepient.put_in_hands(inserted_id) - - inserted_id = FALSE - update_appearance() - update_static_data_for_all_viewers() - playsound(src, 'sound/machines/terminal/terminal_eject.ogg', 50, FALSE) - - return TRUE - -///Clocks out the currently inserted ID Card -/obj/machinery/time_clock/proc/clock_out() - if(!inserted_id) - return FALSE - - var/datum/component/off_duty_timer/timer_component = inserted_id.AddComponent(/datum/component/off_duty_timer, CLOCK_IN_COOLDOWN) - if(important_job_check()) - timer_component.hop_locked = TRUE - log_admin("[inserted_id.registered_name] clocked out as a head of staff and/or command") - - var/current_assignment = inserted_id.assignment - var/datum/id_trim/job/current_trim = inserted_id.trim - var/datum/job/clocked_out_job = current_trim.job - SSjob.FreeRole(clocked_out_job.title) - - radio.talk_into(src, "[inserted_id.registered_name], [current_assignment] has gone off-duty.", announcement_channel) - update_static_data_for_all_viewers() - - SSid_access.apply_trim_to_card(inserted_id, target_trim, TRUE) - inserted_id.assignment = "Off-Duty " + current_assignment - inserted_id.update_label() - - GLOB.manifest.modify(inserted_id.registered_name, inserted_id.assignment, inserted_id.get_trim_assignment()) - return TRUE - -///Clocks the currently inserted ID Card back in -/obj/machinery/time_clock/proc/clock_in() - if(!inserted_id) - return FALSE - - if(id_cooldown_check()) - return FALSE - - var/datum/component/off_duty_timer/id_component = inserted_id.GetComponent(/datum/component/off_duty_timer) - if(!id_component) - return FALSE - - var/datum/job/clocked_in_job = id_component.stored_trim.job - if(!SSjob.OccupyRole(clocked_in_job.title)) - say("[capitalize(clocked_in_job.title)] has no free slots available, unable to clock in!") - return FALSE - - - SSid_access.apply_trim_to_card(inserted_id, id_component.stored_trim.type, TRUE) - inserted_id.assignment = id_component.stored_assignment - - radio.talk_into(src, "[inserted_id.registered_name], [inserted_id.assignment] has returned to duty.", announcement_channel) - GLOB.manifest.modify(inserted_id.registered_name, inserted_id.assignment, inserted_id.get_trim_assignment()) - - qdel(id_component) - inserted_id.update_label() - update_static_data_for_all_viewers() - - return TRUE - -///Is the job of the inserted ID being worked by a job that in an important department? If so, this proc will return TRUE. -/obj/machinery/time_clock/proc/important_job_check() - if(!inserted_id) - return FALSE - - var/datum/id_trim/job/current_trim = inserted_id.trim - var/datum/job/clocked_in_job = current_trim.job - if((/datum/job_department/command in clocked_in_job.departments_list) || (/datum/job_department/security in clocked_in_job.departments_list)) - return TRUE - - return FALSE - -///Is the inserted ID on cooldown? returns TRUE if the ID has a cooldown -/obj/machinery/time_clock/proc/id_cooldown_check() - if(!inserted_id) - return FALSE - - var/datum/component/off_duty_timer/id_component = inserted_id.GetComponent(/datum/component/off_duty_timer) - if(!id_component) - return FALSE - - if(id_component.hop_locked) - return TRUE - - if(!id_component.on_cooldown) - return FALSE - - return TRUE - -///Is the inserted ID off-duty? Returns true if the ID is off-duty -/obj/machinery/time_clock/proc/off_duty_check() - if(!inserted_id) - return FALSE - - var/datum/component/off_duty_timer/id_component = inserted_id.GetComponent(/datum/component/off_duty_timer) - if(!id_component) - return FALSE - - return TRUE - -/obj/item/wallframe/time_clock - name = "time clock frame" - desc = "Contains all of the parts needed to assemble a wall-mounted time clock" - icon_state = "unanchoredstatusdisplay" - result_path = /obj/machinery/time_clock - pixel_shift = 28 - custom_materials = list( - /datum/material/iron = SHEET_MATERIAL_AMOUNT, - /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, - ) - -#undef CLOCK_IN_COOLDOWN diff --git a/modular_skyrat/modules/time_clock/code/console_tgui.dm b/modular_skyrat/modules/time_clock/code/console_tgui.dm deleted file mode 100644 index 3548accf753..00000000000 --- a/modular_skyrat/modules/time_clock/code/console_tgui.dm +++ /dev/null @@ -1,131 +0,0 @@ -///What items do we want to remove from the person clocking out? -#define TIME_CLOCK_RETURN_ITEMS list( \ - /obj/item/melee/baton/security, \ - /obj/item/melee/baton/security/loaded, \ - /obj/item/melee/baton/telescopic, \ - /obj/item/melee/baton, \ - /obj/item/assembly/flash/handheld, \ - /obj/item/gun/energy/disabler, \ - /obj/item/megaphone/command, \ - /obj/item/door_remote/captain, \ - /obj/item/door_remote/chief_engineer, \ - /obj/item/door_remote/research_director, \ - /obj/item/door_remote/head_of_security, \ - /obj/item/door_remote/quartermaster, \ - /obj/item/door_remote/chief_medical_officer, \ - /obj/item/door_remote/civilian, \ - /obj/item/circuitboard/machine/techfab/department/engineering, \ - /obj/item/circuitboard/machine/techfab/department/service, \ - /obj/item/circuitboard/machine/techfab/department/security, \ - /obj/item/circuitboard/machine/techfab/department/medical, \ - /obj/item/circuitboard/machine/techfab/department/cargo, \ - /obj/item/circuitboard/machine/techfab/department/science, \ - /obj/item/blueprints, \ - /obj/item/pipe_dispenser/bluespace, \ - /obj/item/mod/control/pre_equipped/advanced, \ - /obj/item/clothing/shoes/magboots/advance, \ - /obj/item/shield/riot/tele, \ - /obj/item/storage/belt/security/full, \ - /obj/item/gun/energy/e_gun/hos, \ - /obj/item/pinpointer/nuke, \ - /obj/item/gun/energy/e_gun, \ - /obj/item/storage/toolbox/guncase/skyrat/pistol/trappiste_small_case/skild, \ - /obj/item/storage/belt/sabre, \ - /obj/item/mod/control/pre_equipped/magnate, \ - /obj/item/mod/control/pre_equipped/blueshield, \ - /obj/item/clothing/suit/armor/vest/warden, \ - /obj/item/clothing/glasses/hud/security/sunglasses, \ - /obj/item/clothing/gloves/krav_maga/sec, \ - /obj/item/clothing/suit/armor/vest/alt/sec, \ - /obj/item/storage/belt/holster/detective/full, \ - /obj/item/reagent_containers/spray/pepper, \ - /obj/item/detective_scanner, \ - /obj/item/gun/ballistic/revolver/c38/detective, \ - /obj/item/mod/control/pre_equipped/security, \ - /obj/item/mod/control/pre_equipped/safeguard, \ - /obj/item/gun/energy/cell_loaded/medigun/cmo, \ - /obj/item/defibrillator/compact/loaded, \ - /obj/item/storage/hypospraykit/cmo/preloaded, \ - /obj/item/mod/control/pre_equipped/rescue, \ - /obj/item/gun/ballistic/rifle/boltaction/sporterized, \ - /obj/item/clothing/glasses/hud/gun_permit/sunglasses, \ - /obj/item/card/id/departmental_budget/car, \ - /obj/item/clothing/suit/armor/reactive/teleport, \ - /obj/item/mod/control/pre_equipped/research, \ -) - - -/obj/machinery/time_clock/ui_interact(mob/user, datum/tgui/ui) - . = ..() - if(machine_stat & (NOPOWER|BROKEN)) - return - - add_fingerprint(user) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "TimeClock", name) - ui.open() - - -/obj/machinery/time_clock/ui_state(mob/user) - return GLOB.conscious_state - -/obj/machinery/time_clock/ui_static_data(mob/user) - var/data = list() - data["inserted_id"] = inserted_id - data["station_alert_level"] = SSsecurity_level.get_current_level_as_text() - data["clock_status"] = off_duty_check() - - if(inserted_id) - data["id_holder_name"] = inserted_id.registered_name - data["id_job_title"] = inserted_id.assignment - - return data - -/obj/machinery/time_clock/ui_data(mob/user) - var/data = list() - data["current_time"] = station_time_timestamp() - - if(inserted_id) - data["insert_id_cooldown"] = id_cooldown_check() - - return data - -/obj/machinery/time_clock/ui_act(action, list/params) - . = ..() - if(.) - return - - switch(action) - if("clock_in_or_out") - if(off_duty_check()) - if(!(clock_in())) - return - log_admin("[key_name(usr)] clocked in as \an [inserted_id.assignment].") - - var/datum/mind/user_mind = usr.mind - if(user_mind) - user_mind.clocked_out_of_job = FALSE - - else - log_admin("[key_name(usr)] clocked out as \an [inserted_id.assignment].") - clock_out() - var/mob/living/carbon/human/human_user = usr - //skyrat edit begin - clocking out another person's ID no longer steals your items - if(inserted_id.registered_account.account_holder == human_user.real_name) - if(human_user) - human_user.return_items_to_console(TIME_CLOCK_RETURN_ITEMS) - - var/datum/mind/user_mind = usr.mind - if(user_mind) - user_mind.clocked_out_of_job = TRUE - //skyrat edit end - if(important_job_check()) - message_admins("[key_name(usr)] has clocked out as a head of staff. [ADMIN_JMP(src)]") - - playsound(src, 'sound/machines/ping.ogg', 50, FALSE) - - if("eject_id") - eject_inserted_id(usr) - -#undef TIME_CLOCK_RETURN_ITEMS diff --git a/modular_skyrat/modules/time_clock/code/mind.dm b/modular_skyrat/modules/time_clock/code/mind.dm deleted file mode 100644 index 244b699f2fc..00000000000 --- a/modular_skyrat/modules/time_clock/code/mind.dm +++ /dev/null @@ -1,4 +0,0 @@ -/datum/mind - /// Is our mind currently clocked out of their job? - var/clocked_out_of_job = FALSE - diff --git a/modular_skyrat/modules/time_clock/code/sign.dm b/modular_skyrat/modules/time_clock/code/sign.dm deleted file mode 100644 index 4c78f94818a..00000000000 --- a/modular_skyrat/modules/time_clock/code/sign.dm +++ /dev/null @@ -1,8 +0,0 @@ -/obj/structure/sign/poster/timeclock_psa - name = "HoP Moth - Time Clock" - desc = "This informational sign uses HoP Mothâ„¢ reminding the viewer to do their part in the station's Enterprise Resource Planning efforts, clocking out before periods of prolonged absence or leisure time." - icon = 'modular_skyrat/modules/time_clock/icons/sign.dmi' - icon_state = "moff-clockout" - anchored = TRUE - -MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/timeclock_psa, 32) diff --git a/modular_skyrat/modules/time_clock/icons/machinery/console.dmi b/modular_skyrat/modules/time_clock/icons/machinery/console.dmi deleted file mode 100644 index 51b0f5446fb8ee43a8f58daea9a116cc97eebcd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 862 zcmV-k1EKthP)V=-0C=2JR&a84 z_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5sU$Nu zH903gIa`T~GbOXA7$|1Q#hF%=n41b=W2%fViqA~RNyVW7XlY7nPGTj9ZK#6*u^O0z z$3P2&dBz4h*bsITlM{Zb15sh`niB(006;YZOi9C zMKk~a0uxC@K~#90?c9q}gD?<4QK-~~sMVJL|5p=Uobx88Vk50CX@^x(e-ifVZKP+9N2L#_XQ399nrGJG8AorEjk z)3F7N>%SbdfUncFe=%Ked#`Dls#g@Z(cUWp00000U|Tc$^V#D~tmpo4Vp9L#%-cQr0*zNq7eI=%_>tNnL9E?R!H zyX?l71@o)@cd?>zEq{f$gj(WG!dLLA<3-nfkM!S%w*Aw_0RR910002&BB4JYzUe<9 z{&-&a)TX<4T}=7``hI-67fTd%(XyEx*5MKY#zexyus=00000006LyY|YoLWNW@|W$6O74UFuv oZ2@g1+ZNDP=-&eX0061J0V*~&_7!D!$^ZZW07*qoM6N<$f^9pC9smFU diff --git a/modular_skyrat/modules/time_clock/icons/sign.dmi b/modular_skyrat/modules/time_clock/icons/sign.dmi deleted file mode 100644 index 7fa733dea1b03391949187865f7fd3fb0f0c9594..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 978 zcmV;@11j&)X zK4pkEPkvrYbYM()V@-T#PlRevh;dYtTS;$SN^@XLcVbL?WKDl&Pl7NeGgn7yT1akO zNpfOLdT39DRYql2M`&G2bYV<*Wln%+PlHfIUsFY7Rz_%ANN-I-T2Mn?Qbl4_MrK$? zYGF)yWKDf$PJ!zfx_kft00DGTPE!Ct=GbNc0041%R9JLGWpiV4X>fFDZ*Bkpc$`yK zaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3K9+ zH$N>+H#sLiIXl0!M2U+tC9|j)C~nBbnO2mTn+jnoE4cc(fQ<(LK*k+JANxj30004r zNkl2ydU zkkMxgR9s>LC!~Q=7q0-QtlVugffK9%S5)%-Rn-b6H6}=_K$KdKEZ1R7>b(*_Uju)v zfMB2B?@~x(Q$Pv^gGpflAwp<#ODkz>ud0?(5kW^MrCr@U)YIG7Zy%`ldfkK8K@AP7 zBXpFGjrd*RqVb79fY06vh^o>_s;b0=v62B09Em7Yi9|5burf8xhcW}R)?0jqXgWVf zzrBeMO#m86Mbo1dl@NwGfO!!tn4cFleQ9}R)#H)trq=QWpc{t4bY>X(`bG>kVGCdz z8by#4pKE7#Z~x%%koO6<3n0!+z~V=VV>scLI0cYJpfkqejOp>S^P%C3%gfl+wa=ds z+}z&5JwS*TiDm>3k5A7pi9|=|>)X2k{`fCG09|fR22jlR^Z)<=07*qoM6N<$g4xZd AUjP6A diff --git a/modular_zubbers/code/game/objects/effects/effects_system/effect_sparks.dm b/modular_zubbers/code/game/objects/effects/effects_system/effect_sparks.dm new file mode 100644 index 00000000000..1a1178de002 --- /dev/null +++ b/modular_zubbers/code/game/objects/effects/effects_system/effect_sparks.dm @@ -0,0 +1,21 @@ +/// A version of sparks for cosmetic purposes that doesn't set things on fire. +/proc/do_harmless_sparks(number, cardinal_only, datum/source) + var/datum/effect_system/spark_spread/quantum/harmless/sparks = new + sparks.set_up(number, cardinal_only, source) + sparks.autocleanup = TRUE + sparks.start() + +/obj/effect/particle_effect/sparks/quantum + light_color = LIGHT_COLOR_DARK_BLUE + +/obj/effect/particle_effect/sparks/quantum/harmless + name = "inert quantum sparks" + +/obj/effect/particle_effect/sparks/quantum/harmless/affect_location(turf/location, just_initialized = FALSE) + return + +/obj/effect/particle_effect/sparks/quantum/harmless/sparks_touched(datum/source, atom/singed) + return + +/datum/effect_system/spark_spread/quantum/harmless + effect_type = /obj/effect/particle_effect/sparks/quantum/harmless diff --git a/modular_zubbers/icons/obj/machines/time_clock.dmi b/modular_zubbers/icons/obj/machines/time_clock.dmi new file mode 100644 index 0000000000000000000000000000000000000000..ebf93332b8164fb84360e2e1e92585a0d89753c0 GIT binary patch literal 1106 zcmV-Y1g-mtP)V=-0C=2JR&a84 z_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DLFr{ zI6o&uGjv12I>ube z3a)-G;Ftjb0SRrbT1lWR0008{Nkl+Sn`J-GgoV&PnK`Nh#R0000@(|V{%fAY}QqmKdKHf#%gX}#%uTh!H~+kk!;>04ul z;da{jbWwC8imv6K(mw?BX0Rb9SU}Z9&6lM5Uj1W$RZXlwx-MG29In3!7(-$O5_L(g zFIod*jaY#+U9PV`2FxtS-k42+FRj~v?=#DBJnibyi~k=_{v2q!+sAWf`7u+KzP8x4 zKc8r$w-GZ<^SV%%4gdfE005`)eQB;rFYNC# zA1LkXJa9g6R)705@^(8;r(V4u;`#mLO&d|>19Gu{f1m;H0<{M3{P#!$C+7nf?to{$ zaOcm*8#v?dAJ_r!0OZgPOfv|@pO=IF{*^m0y+=~#1ETr&vRS~)avV>+dcSf+FYfO% zA1LncGao4J?=v4L?(Z`n0000004RpK_b+ImtiPX1d0!{Ffi!nG+1p%k z^9BD(#jodHpz1EKxcP#=fq2K@K_-R?^C1yXgR<(ru90t5cLnF@q0VO6&zX`JRd<2w^MUUEZtQP3&rE4r-E2Al00000000006yX8>e&nWqU00d>`_LWN%?18{ z{s!zN%;_$h;XQau`m7HzU1g6yZ$h_}@5s;Iz!m;|bO*D)g|6`LV^OV0RB1t Y0ziP5A!zf`umAu607*qoM6N<$g39m>r~m)} literal 0 HcmV?d00001 diff --git a/modular_skyrat/modules/time_clock/code/off_duty_component.dm b/modular_zubbers/modules/plexagon_selfserve/code/off_duty_component.dm similarity index 96% rename from modular_skyrat/modules/time_clock/code/off_duty_component.dm rename to modular_zubbers/modules/plexagon_selfserve/code/off_duty_component.dm index c2f26fb7347..c911dba9aea 100644 --- a/modular_skyrat/modules/time_clock/code/off_duty_component.dm +++ b/modular_zubbers/modules/plexagon_selfserve/code/off_duty_component.dm @@ -7,6 +7,8 @@ var/hop_locked = FALSE ///What was the name of the job the person was working when they clocked out? var/stored_assignment = "" + ///When was this timer added? + var/init_time /datum/component/off_duty_timer/Initialize(cooldown_timer = 0) . = ..() @@ -23,6 +25,7 @@ on_cooldown = TRUE addtimer(CALLBACK(src, PROC_REF(remove_cooldown)), cooldown_timer) + init_time = world.time RegisterSignal(parent, COMSIG_ATOM_ATTACKBY, PROC_REF(attempt_unlock)) /datum/component/off_duty_timer/Destroy(force, silent) diff --git a/modular_zubbers/modules/plexagon_selfserve/code/plexagon_selfserve.dm b/modular_zubbers/modules/plexagon_selfserve/code/plexagon_selfserve.dm new file mode 100644 index 00000000000..61e2305bd0c --- /dev/null +++ b/modular_zubbers/modules/plexagon_selfserve/code/plexagon_selfserve.dm @@ -0,0 +1,317 @@ +/datum/mind + /// Is our mind currently clocked out of their job? + var/clocked_out_of_job = FALSE + +/datum/computer_file/program/crew_self_serve + filename = "plexagonselfserve" + filedesc = "Plexagon Punch Clock" + downloader_category = PROGRAM_CATEGORY_SECURITY + program_open_overlay = "id" + extended_desc = "Allows crew members to remotely punch in or out of their job assignment, giving the impression they have a semblance of control over their lives." + program_flags = PROGRAM_ON_NTNET_STORE + size = 4 + tgui_id = "NtosSelfServe" + program_icon = "id-card" + /// The ID card used to authenticate. + var/obj/item/card/id/authenticated_card + /// The name of the registered user, related to `authenticated_card`. + var/authenticated_user + ///What trim is applied to inserted IDs? + var/target_trim = /datum/id_trim/job/assistant + +/datum/computer_file/program/crew_self_serve/on_start(mob/living/user) + . = ..() + if(!.) + return FALSE + + if(!computer) + stack_trace("[src] is running on a null computer!") + return FALSE + + computer.crew_manifest_update = TRUE + register_signals() + if(computer.computer_id_slot) + authenticate(id_card = computer.computer_id_slot) + + return TRUE + +/datum/computer_file/program/crew_self_serve/kill_program(mob/user) + UnregisterSignal(computer, COMSIG_MODULAR_COMPUTER_INSERTED_ID) + UnregisterSignal(computer, COMSIG_MODULAR_COMPUTER_REMOVED_ID) + return ..() + +/datum/computer_file/program/crew_self_serve/proc/register_signals() + RegisterSignal(computer, COMSIG_MODULAR_COMPUTER_INSERTED_ID, PROC_REF(id_changed)) + RegisterSignal(computer, COMSIG_MODULAR_COMPUTER_REMOVED_ID, PROC_REF(id_changed)) + +/datum/computer_file/program/crew_self_serve/proc/id_changed(source, obj/item/card/id/id_card, mob/user) + SIGNAL_HANDLER + authenticate(id_card = computer.computer_id_slot) + +/** + * Authenticates the program based on the specific ID card. + * + * Arguments: + * * auth_card - The ID card to attempt to authenticate under. + */ +/datum/computer_file/program/crew_self_serve/proc/authenticate(source, obj/item/card/id/id_card) + if(!id_card) + authenticated_card = null + authenticated_user = null + else + authenticated_card = id_card + authenticated_user = "[authenticated_card.name]" + + computer.update_static_data_for_all_viewers() + +/// Clocks out the currently inserted ID Card +/datum/computer_file/program/crew_self_serve/proc/clock_out() + if(!authenticated_card) + return FALSE + + var/important = job_is_CMD_or_SEC() + if(important) + if(tgui_alert(usr, "You are a member of security and/or command, make sure that you ahelp before punching out! If you decide to punch back in later, you will need to go to the Head of Personnel or Head of Security. Do you wish to continue?", "[src]", list("No", "Yes")) != "Yes") + return FALSE + + log_econ("[authenticated_card.registered_name] clocked out from role [authenticated_card.get_trim_assignment()]") + var/datum/component/off_duty_timer/timer_component = authenticated_card.AddComponent(/datum/component/off_duty_timer, TIMECLOCK_COOLDOWN) + if(important) + timer_component.hop_locked = TRUE + log_econ("[authenticated_card.registered_name] job slot [authenticated_card.get_trim_assignment()] has been locked from clocking back in") + message_admins("[ADMIN_LOOKUPFLW(usr)] clocked out from [span_comradio("restricted role")]: [authenticated_card.get_trim_assignment()].") + else + message_admins("[ADMIN_LOOKUPFLW(usr)] clocked out from role: [authenticated_card.get_trim_assignment()].") + + var/current_assignment = authenticated_card.assignment + var/datum/id_trim/job/current_trim = authenticated_card.trim + var/datum/job/clocked_out_job = current_trim.job + SSjob.FreeRole(clocked_out_job.title) + + var/obj/machinery/announcement_system/system = pick(GLOB.announcement_systems) + system.broadcast("[authenticated_card.registered_name], [current_assignment] has gone off-duty.", list()) + computer.update_static_data_for_all_viewers() + + SSid_access.apply_trim_to_card(authenticated_card, target_trim, TRUE) + authenticated_card.assignment = "Off-Duty " + current_assignment + authenticated_card.update_label() + + GLOB.manifest.modify(authenticated_card.registered_name, authenticated_card.assignment, authenticated_card.get_trim_assignment()) + return TRUE + +/// Clocks the currently inserted ID Card back in +/datum/computer_file/program/crew_self_serve/proc/clock_in() + if(!authenticated_card) + return FALSE + + if(id_cooldown_check()) + return FALSE + + var/datum/component/off_duty_timer/id_component = authenticated_card.GetComponent(/datum/component/off_duty_timer) + if(!id_component) + return FALSE + + var/datum/job/clocked_in_job = id_component.stored_trim.job + if(!SSjob.OccupyRole(clocked_in_job.title)) + computer.say("[capitalize(clocked_in_job.title)] has no free slots available, unable to punch in!") + return FALSE + + + SSid_access.apply_trim_to_card(authenticated_card, id_component.stored_trim.type, TRUE) + authenticated_card.assignment = id_component.stored_assignment + + log_econ("[authenticated_card.registered_name] clocked in to role [authenticated_card.get_trim_assignment()]") + message_admins("[ADMIN_LOOKUPFLW(usr)] clocked in to role: [authenticated_card.get_trim_assignment()].") + + var/obj/machinery/announcement_system/system = pick(GLOB.announcement_systems) + system.broadcast("[authenticated_card.registered_name] has returned to assignment [authenticated_card.assignment].", list()) + GLOB.manifest.modify(authenticated_card.registered_name, authenticated_card.assignment, authenticated_card.get_trim_assignment()) + + qdel(id_component) + authenticated_card.update_label() + computer.update_static_data_for_all_viewers() + + return TRUE + +/// Is the job of the inserted ID being worked by a job that in an important department? If so, this proc will return TRUE. +/datum/computer_file/program/crew_self_serve/proc/job_is_CMD_or_SEC() + if(!authenticated_card) + return FALSE + + var/datum/id_trim/job/current_trim = authenticated_card.trim + var/datum/job/clocked_in_job = current_trim.job + if((/datum/job_department/command in clocked_in_job.departments_list) || (/datum/job_department/security in clocked_in_job.departments_list)) + return TRUE + + return FALSE + +/// Is the inserted ID on cooldown? return -1 if invalid ID, 0 if ID is not on cooldown, and remaining time until cooldown ends otherwise. +/datum/computer_file/program/crew_self_serve/proc/id_cooldown_check() + if(!authenticated_card) + return -1 + + var/datum/component/off_duty_timer/id_component = authenticated_card.GetComponent(/datum/component/off_duty_timer) + if(!id_component) + return -1 + + if(!id_component.on_cooldown) + return 0 + + return max(TIMECLOCK_COOLDOWN - (world.time - id_component.init_time), 0) + +/// Returns the remaining time left for the ID, as a minutes:seconds string. +/datum/computer_file/program/crew_self_serve/proc/id_cooldown_minutes_seconds() + var/cooldownTics = id_cooldown_check() + if (cooldownTics == -1) + return "--:--" + + var/cooldownMinutes = num2text(floor(cooldownTics / (1 MINUTES))) + if (length(cooldownMinutes) == 1) + cooldownMinutes = addtext("0", cooldownMinutes) + var/cooldownSeconds = num2text(floor(cooldownTics / (1 SECONDS)) % (60)) + if (length(cooldownSeconds) == 1) + cooldownSeconds = addtext("0", cooldownSeconds) + + return addtext(cooldownMinutes, ":", cooldownSeconds) + +/// Is the inserted ID locked from clocking in? returns TRUE if the ID is locked +/datum/computer_file/program/crew_self_serve/proc/id_locked_check() + if(!authenticated_card) + return FALSE + + var/datum/component/off_duty_timer/id_component = authenticated_card.GetComponent(/datum/component/off_duty_timer) + if(!id_component) + return FALSE + + if(id_component.hop_locked) + return TRUE + + return FALSE + +/// Is the inserted ID off-duty? Returns true if the ID is off-duty +/datum/computer_file/program/crew_self_serve/proc/off_duty_check() + if(!authenticated_card) + return FALSE + + var/datum/component/off_duty_timer/id_component = authenticated_card.GetComponent(/datum/component/off_duty_timer) + if(!id_component) + return FALSE + + return TRUE + +/datum/computer_file/program/crew_self_serve/kill_program(mob/user) + computer.crew_manifest_update = FALSE + if(!isnull(authenticated_card)) + authenticated_card = null + + return ..() + +/// Places any items inside of the `eligible_items` list to a lockbox, to be opened by the player when they clock back in. +/datum/computer_file/program/crew_self_serve/proc/secure_items(mob/living/carbon/human/human_user, list/eligible_items) + var/obj/item/storage/lockbox/timeclock/shame_box = new /obj/item/storage/lockbox/timeclock(get_turf(authenticated_card), authenticated_card) + if(isnull(shame_box) || !istype(shame_box)) + stack_trace("Failed to create lockbox for [authenticated_card.registered_name] trim clock-out.") + return FALSE + + var/list/held_contents = human_user.get_contents() + if(!held_contents) + CRASH("Lockbox secure items: no items found on [authenticated_card.registered_name]. that's probably incorrect!") + + var/list/shamebox_items = list() + for(var/obj/item/found_item in held_contents) + if(!is_type_in_list(found_item, eligible_items)) + continue + human_user.transferItemToLoc(found_item, shame_box, force = TRUE, silent = TRUE) + LAZYADD(shamebox_items, "[found_item.name]") + + if(!length(shame_box.contents)) + qdel(shame_box) + return TRUE + + shame_box.locked_contents = english_list(shamebox_items) + do_harmless_sparks(number = 4, source = shame_box) + to_chat(human_user, span_warning("You feel weight lifted off your shoulders as items are teleported off your body!")) + to_chat(human_user, span_notice("Items moved to lockbox: [shame_box.locked_contents].")) + computer.say( + message = "A service contract between Nanotrasen and Lustwish stipulates that company issued batons, masks, restraints, and other equipment are not to be used for recreational purposes. Employees may purchase recreational provisions from an approved vendor. Your restricted items have been placed in a lockbox to be retrieved after punch in.", + forced = TRUE, + ) + return TRUE + +/datum/computer_file/program/crew_self_serve/ui_act(action, params, datum/tgui/ui, datum/ui_state/state) + . = ..() + switch(action) + if("PRG_change_status") + if(!authenticated_card) + return + + if(off_duty_check()) + if(!authenticated_card) + return + + if(!clock_in()) + return + + var/datum/mind/user_mind = usr.mind + if(user_mind) + user_mind.clocked_out_of_job = FALSE + + computer.update_static_data_for_all_viewers() + playsound(computer, 'sound/machines/ping.ogg', 50, FALSE) + + else + if(!clock_out()) + return + + var/mob/living/carbon/human/human_user = usr + if(human_user) + secure_items(human_user, eligible_items = SELF_SERVE_RETURN_ITEMS) + + var/datum/mind/user_mind = usr.mind + if(user_mind) + user_mind.clocked_out_of_job = TRUE + + computer.update_static_data_for_all_viewers() + playsound(computer, 'sound/machines/ping.ogg', 50, FALSE) + computer.RemoveID(human_user, silent = TRUE) + authenticate(id_card = computer.computer_id_slot) + + return TRUE + + if("PRG_eject_id") + var/mob/living/carbon/human/human_user = usr + if(human_user) + computer.RemoveID(human_user, silent = TRUE) + authenticate(id_card = computer.computer_id_slot) + + return TRUE + +/datum/computer_file/program/crew_self_serve/ui_data(mob/user) + var/list/data = list() + data["authCard"] = authenticated_card ? authenticated_card.name : "-----" + data["authCardHOPLocked"] = id_locked_check() + data["authCardTimeLocked"] = id_cooldown_check() > 0 + data["authCardTimeRemaining"] = id_cooldown_minutes_seconds() + + return data + +/datum/computer_file/program/crew_self_serve/ui_static_data(mob/user) + var/list/data = list() + data["stationAlertLevel"] = SSsecurity_level.get_current_level_as_text() + if(authenticated_card) + data["authIDName"] = authenticated_card.registered_name ? authenticated_card.registered_name : "-----" + data["authIDRank"] = authenticated_card.assignment ? authenticated_card.assignment : "Unassigned" + data["authCardHOPLocked"] = id_locked_check() + data["trimClockedOut"] = off_duty_check() + if(authenticated_card.trim) + var/datum/id_trim/card_trim = authenticated_card.trim + data["trimAssignment"] = card_trim.assignment ? card_trim.assignment : "" + else + data["trimAssignment"] = "" + else + data["authIDName"] = "" + data["authIDRank"] = "" + data["trimClockedOut"] = FALSE + data["trimAssignment"] = "" + + return data diff --git a/modular_zubbers/modules/plexagon_selfserve/code/shame_box.dm b/modular_zubbers/modules/plexagon_selfserve/code/shame_box.dm new file mode 100644 index 00000000000..6feea502046 --- /dev/null +++ b/modular_zubbers/modules/plexagon_selfserve/code/shame_box.dm @@ -0,0 +1,74 @@ +/obj/item/storage/lockbox/timeclock + name = "crew equipment lockbox" + desc = "Holds a crew's restricted equipment while they are temporarily assigned off-duty. A service contract between Nanotrasen and Lustwish stipulates that company issued batons, masks, restraints, and other equipment are not to be used for recreational purposes. Employees may purchase recreational provisions from an approved vendor." + icon = 'modular_zubbers/modules/plexagon_selfserve/icons/shame_box.dmi' + icon_state = "crewbox+l" + icon_locked = "crewbox+l" + icon_closed = "crewbox" + icon_broken = "crewbox+b" + w_class = WEIGHT_CLASS_NORMAL + req_access = list(ACCESS_ALL_PERSONAL_LOCKERS) + /// The ID card associated with the box + var/obj/item/card/id/associated_card + /// A display formatted list of the locked contents + var/locked_contents = null + +/obj/item/storage/lockbox/timeclock/Initialize(mapload, obj/item/card/id/crew_id) + . = ..() + atom_storage.allow_big_nesting = TRUE + atom_storage.max_slots = 99 + atom_storage.max_specific_storage = WEIGHT_CLASS_GIGANTIC + atom_storage.max_total_storage = 99 + if(!isnull(crew_id) || !istype(crew_id)) + associated_card = crew_id + if(associated_card?.registered_name) + name = "[initial(name)] - [associated_card.registered_name]" + +/obj/item/storage/lockbox/timeclock/examine(mob/user) + . = ..() + if(!isnull(locked_contents)) + . += span_notice("The contents label reads: [locked_contents].") + +/obj/item/storage/lockbox/timeclock/can_unlock(mob/living/user, obj/item/card/id/id_card) + . = ..() + if(!.) + to_chat(user, span_warning("[src] can only be unlocked while on-duty or by the HoP, HoS, or Captain!")) + +/// Timeclock boxes can only be opened while the crew member is on duty, or by a command member with the proper access. +/obj/item/storage/lockbox/timeclock/check_access(obj/item/crew_id) + if(isnull(crew_id)) + return FALSE + + var/obj/item/card/id/access_card + if(istype(crew_id, /obj/item/modular_computer/pda)) + var/obj/item/modular_computer/pda/crew_pda = crew_id + access_card = crew_pda.computer_id_slot + else + access_card = crew_id + + if(isnull(access_card)) + return FALSE + if(!istype(access_card)) + return FALSE + if(check_access_list(access_card.GetAccess())) + release_contents() + return TRUE + if(access_card != associated_card) + return FALSE + + var/datum/id_trim/job/current_trim = access_card.trim + if(isnull(current_trim)) + return FALSE + if(istype(current_trim, /datum/id_trim/job/assistant)) + return FALSE + + release_contents() + return TRUE + +/// Timeclock boxes are one time use. When unlocked, release the contents and go away. +/obj/item/storage/lockbox/timeclock/proc/release_contents() + do_harmless_sparks(number = 6, source = src) + emptyStorage() + usr.visible_message(span_notice("[usr] activates the lockbox mechanism, releasing its contents before vanishing in a puff of bluespace smoke!")) + associated_card = null + qdel(src) diff --git a/modular_zubbers/modules/plexagon_selfserve/code/sign.dm b/modular_zubbers/modules/plexagon_selfserve/code/sign.dm new file mode 100644 index 00000000000..4cbae7ac45e --- /dev/null +++ b/modular_zubbers/modules/plexagon_selfserve/code/sign.dm @@ -0,0 +1,15 @@ +/obj/structure/sign/poster/timeclock_psa + name = "HoP Moth - punch clock" + desc = "This informational sign uses HoP Mothâ„¢ reminding the viewer to do their part in the station's Enterprise Resource Planning efforts, punching out before periods of prolonged absence or leisure time." + icon = 'modular_zubbers/modules/plexagon_selfserve/icons/sign.dmi' + icon_state = "moff-clockout" + anchored = TRUE + +/obj/structure/sign/poster/timeclock_psa/Initialize(mapload) + . = ..() + if(prob(30)) + name = "punch clock, punch shit" + icon_state = "punch-clock" + desc = "The informational sign for the punch clock is looking more aggressive than usual today. Better punch out before you punch shit!" + +MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/poster/timeclock_psa, 32) diff --git a/modular_zubbers/modules/plexagon_selfserve/code/time_clock.dm b/modular_zubbers/modules/plexagon_selfserve/code/time_clock.dm new file mode 100644 index 00000000000..f02ae1ad621 --- /dev/null +++ b/modular_zubbers/modules/plexagon_selfserve/code/time_clock.dm @@ -0,0 +1,21 @@ +/obj/machinery/modular_computer/preset/time_clock + name = "punch clock" + desc = "Allows employees to punch in and out of their jobs. Figuratively, not literally... I hope." + icon = 'modular_zubbers/icons/obj/machines/time_clock.dmi' + density = FALSE + light_color = LIGHT_COLOR_DARK_BLUE + starting_programs = list( + /datum/computer_file/program/crew_self_serve, + ) + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/modular_computer/preset/time_clock, 28) + +/obj/machinery/modular_computer/preset/time_clock/Initialize(mapload) + . = ..() + SSticker.OnRoundstart(CALLBACK(src, PROC_REF(setup_starting_software))) + +/obj/machinery/modular_computer/preset/time_clock/proc/setup_starting_software() + var/datum/computer_file/program/crew_self_serve/punch_clock = cpu.find_file_by_name("plexagonselfserve") + cpu.active_program = punch_clock + punch_clock.register_signals() + set_light(light_strength) diff --git a/modular_zubbers/modules/plexagon_selfserve/icons/shame_box.dmi b/modular_zubbers/modules/plexagon_selfserve/icons/shame_box.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8f1ec25a3a51ea393b61747e6dafef0e2c81b033 GIT binary patch literal 473 zcmV;~0Ve*5P)pq||?W>??R;EhT zu!}8NBEGanCu+5IYG1U7e@%GfV*;_&=NiPmCXu>kG9Biufc+k`dJZa6kAz@Id_!_oMzt!2bU! zf!F^C*#9sAY99Ci)c-hvKHUDt3G4xD2|)kj1fc(Mg4I(%{g250Pu6$>s!S2{EmsUi P00000NkvXXu0mjfk!s66 literal 0 HcmV?d00001 diff --git a/modular_zubbers/modules/plexagon_selfserve/icons/sign.dmi b/modular_zubbers/modules/plexagon_selfserve/icons/sign.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0a41293152d1a9c4b2ed56e6b5b18bf36722a70f GIT binary patch literal 1451 zcmV;c1yuTpP)vvY1DlR>|BO`NFmKYi%3sSfMX#XQ4BXCoZ zfm^JDT(B7#8EsOGZ&QzZS)+bhr+{0l5D*Z`rig4(i*Hkobyk^pSDw|mqOXQxf?TaA zC@9vA00{{RYf*`AQjKy{m3&#Gep;wOMqUI21Zhx*ZBmPNR-1WPpLh($TS;+VOLg$v)9~EY?b_6DQ;=~~lyp^? zd03!>T(87|09imjEp%0xcvqc&TB(CwurDt!uX6x2JXE}U0BKN$c2=5vTBW&p09hI;iXs4HO@3xh zf@n{MY*C7LR-GUqAhUG6%{x*I4&+O8X6iBzk*r- z0004WQchCV=-0C=2JR&a84_w-Y6@%7{?OD!tS z%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DK|eYO*c6wKRG+Uv_y%E zGbOXA7$|PY#hF%=n41b=!&MiQ<|Su9l;cvXtl;YB0(J@jsZlC9%b6Ka0008YNklL7Bsi;+P z;+}t`m(^T~eDr5OzI<}c==k;^iwG6i~8~VPKA60(Oq$khUp}cEVCXDWipwR%V0+AQ?_@BB#=D2!LED zrhsx%0O)|LqO1bk?g|$LRB{~2)HbC7@?ojK!>C9z;_I5J2X&_%2gX2S?6KaHpLdsjP05}{LPm19%_VTnM}%(oJ>j+*C*iy+yuA-n;)`YKrt@u*(Fh zQ0CE@LM%W^)&M#6aQYEECbypecuXM8WtIV_{&NP-0!Xqfr({`5J$=^K|9oa<^2N)R z09655$}~V-4^#>L9(eWo4ZH>DB;Oe|fms3|9U+UE0-$*+c=!Ip$4}GK-94Ybe6=iT z`dXSfumXSjU$Bj*)9G)OEXy{`R?XUq9N!&3>_638zW{C7)F)rj_<#Ta002ovPDHLk FV1mF+Wc&aC literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 71885af112f..e1c44c42ebb 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8586,11 +8586,6 @@ #include "modular_skyrat\modules\teshari\code\teshari_bodytype.dm" #include "modular_skyrat\modules\teshari\code\teshari_clothes.dm" #include "modular_skyrat\modules\ticket_counter\code\counter.dm" -#include "modular_skyrat\modules\time_clock\code\console.dm" -#include "modular_skyrat\modules\time_clock\code\console_tgui.dm" -#include "modular_skyrat\modules\time_clock\code\mind.dm" -#include "modular_skyrat\modules\time_clock\code\off_duty_component.dm" -#include "modular_skyrat\modules\time_clock\code\sign.dm" #include "modular_skyrat\modules\title_screen\code\_title_screen_defines.dm" #include "modular_skyrat\modules\title_screen\code\job_traits.dm" #include "modular_skyrat\modules\title_screen\code\new_player.dm" @@ -8803,6 +8798,7 @@ #include "modular_zubbers\code\game\machinery\pipe\construction.dm" #include "modular_zubbers\code\game\objects\effects\landmarks.dm" #include "modular_zubbers\code\game\objects\effects\decals\cleanable.dm" +#include "modular_zubbers\code\game\objects\effects\effects_system\effect_sparks.dm" #include "modular_zubbers\code\game\objects\effects\items\plushes.dm" #include "modular_zubbers\code\game\objects\effects\spawners\random\armory.dm" #include "modular_zubbers\code\game\objects\effects\spawners\random\moonstation_random.dm" @@ -9465,5 +9461,10 @@ #include "modular_zubbers\master_files\skyrat\modules\deforest_medical_items\code\cargo_packs.dm" #include "modular_zubbers\master_files\skyrat\modules\opposing_force\code\opposing_force_subsystem.dm" #include "modular_zubbers\master_files\skyrat\modules\verbs\code\subtle.dm" +#include "modular_zubbers\modules\plexagon_selfserve\code\off_duty_component.dm" +#include "modular_zubbers\modules\plexagon_selfserve\code\plexagon_selfserve.dm" +#include "modular_zubbers\modules\plexagon_selfserve\code\shame_box.dm" +#include "modular_zubbers\modules\plexagon_selfserve\code\sign.dm" +#include "modular_zubbers\modules\plexagon_selfserve\code\time_clock.dm" // END_INCLUDE diff --git a/tgui/packages/tgui/interfaces/NtosSelfServe.tsx b/tgui/packages/tgui/interfaces/NtosSelfServe.tsx new file mode 100644 index 00000000000..ec12f2b98e8 --- /dev/null +++ b/tgui/packages/tgui/interfaces/NtosSelfServe.tsx @@ -0,0 +1,146 @@ +import { capitalizeFirst } from 'common/string'; + +import { useBackend } from '../backend'; +import { Button, NoticeBox, Section, Stack } from '../components'; +import { NtosWindow } from '../layouts'; +import { NTOSData } from '../layouts/NtosWindow'; + +type Data = { + authCard: string; + authCardTimeRemaining: string; + authIDName: string; + authIDRank: string; + hasTrim: boolean; + trimAssignment: string; + stationAlertLevel: string; + trimClockedOut: boolean; + authCardHOPLocked: boolean; + authCardTimeLocked: boolean; + selfServeBlock: boolean; +} & NTOSData; + +export const NtosSelfServe = (props) => { + const { act, data } = useBackend(); + + return ( + + + + + + + + + + ); +}; + +const SelfServePage = (props) => { + const { act, data } = useBackend(); + const { + authCardTimeRemaining, + authIDName, + authIDRank, + authCardHOPLocked, + authCardTimeLocked, + stationAlertLevel, + trimClockedOut, + trimAssignment, + } = data; + + return ( +
+
+ + + Current Assignment: {trimAssignment || '-----'} + + + Job Title: {authIDRank || '-----'} + + + Current Status: {trimClockedOut ? 'Off-Duty' : 'Active Duty'} + + + Station Alert Level: {capitalizeFirst(stationAlertLevel) || '-----'} + + +
+ +
+ + + + + + + +
+
+ + {!trimClockedOut ? ( + + + Before punching out, please return any job gear that is + important or limited to your workplace. + + + While off-duty, any restricted items will be transferred to a + crew equipment lockbox, to be returned upon punching in. + + + ) : ( + '' + )} + {authCardHOPLocked ? ( + + + Assignment Locked! +
+
+ Security and Command members must visit an appropriate Command + member to punch in! +
+
+ ) : authCardTimeLocked ? ( + + + It is too early to return to your assignment! +
+ Time remaining: {authCardTimeRemaining} +
+
+ Please visit the HoP window or your departmental Command member + for an override. +
+
+ ) : ( + '' + )} +
+
+
+ ); +}; diff --git a/tools/UpdatePaths/Scripts_Bubber/2900_Time_Clock.txt b/tools/UpdatePaths/Scripts_Bubber/2900_Time_Clock.txt new file mode 100644 index 00000000000..15bb101e680 --- /dev/null +++ b/tools/UpdatePaths/Scripts_Bubber/2900_Time_Clock.txt @@ -0,0 +1 @@ +/obj/machinery/time_clock : /obj/machinery/modular_computer/preset/time_clock{@OLD} From 2b4f1dbad2e7ef30c7e690873a6132f8aa453d1a Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 11 Feb 2025 10:04:11 +0100 Subject: [PATCH 035/120] Automatic changelog for PR #2900 [ci skip] --- html/changelogs/AutoChangeLog-pr-2900.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2900.yml diff --git a/html/changelogs/AutoChangeLog-pr-2900.yml b/html/changelogs/AutoChangeLog-pr-2900.yml new file mode 100644 index 00000000000..4942aac07ac --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2900.yml @@ -0,0 +1,5 @@ +author: "ArrisFairburne, LT3" +delete-after: True +changes: + - rscadd: "Added a new app to clock in and out from any NT OS-compatible device (Plexagon Punch Clock)" + - qol: "Your job items are now locked into a box instead of warped to cryo, when clocking out" \ No newline at end of file From 2ccf0440d9e75b7b0b9c5542416194fa8f2f833f Mon Sep 17 00:00:00 2001 From: "Col.Rice" <59167966+EliteRiceFarmer@users.noreply.github.com> Date: Tue, 11 Feb 2025 16:06:14 +0700 Subject: [PATCH 036/120] Update barricade.dm (#3061) ## About The Pull Request It's remove the closing/opening delay. I haven't tested but it's just a simple line removal. ## Why It's Good For The Game This is just a minor change that I doubt would be felt much in-game. It's just a niche problem that we usually have during boarders/xenomorphs event where the delay cause more harm than help. ## Changelog :cl: deleted: Removed var/toggle_delay for plasteel barricade. --- modular_skyrat/modules/barricades/code/barricade.dm | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modular_skyrat/modules/barricades/code/barricade.dm b/modular_skyrat/modules/barricades/code/barricade.dm index d15bf93fb86..a7c4b36b965 100644 --- a/modular_skyrat/modules/barricades/code/barricade.dm +++ b/modular_skyrat/modules/barricades/code/barricade.dm @@ -671,8 +671,6 @@ portable_type = /obj/item/quickdeploy/barricade/plasteel ///Either we react with other cades next to us ie when opening or so var/linked = FALSE - ///Open/close delay, for customisation. And because I was asked to - won't customise anything myself. - var/toggle_delay = 2 SECONDS /obj/structure/deployable_barricade/metal/plasteel/crowbar_act(mob/living/user, obj/item/I) switch(build_state) @@ -704,9 +702,6 @@ if(.) return - if(do_after(user, toggle_delay, src)) - toggle_open(null, user) - /obj/structure/deployable_barricade/metal/plasteel/proc/toggle_open(state, mob/living/user) if(state == closed) return From 9fafa66f41dac1ab30d7fe56c15d0e329536e08b Mon Sep 17 00:00:00 2001 From: Alexis Date: Tue, 11 Feb 2025 04:06:41 -0500 Subject: [PATCH 037/120] Makes the jukebox in BoxStation perma accessless (#3070) ## About The Pull Request Does as the title says. ## Why It's Good For The Game It was unusable by anyone due to the way its access was set. ## Proof Of Testing It was a simple map edit, it should work. ## Changelog :cl: map: modified the jukebox in BoxStation's permabrig to be accessless /:cl: --- _maps/map_files/BoxStation/BoxStation.dmm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index c7f439c240f..f60318053e3 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -57315,9 +57315,7 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/command/nuke_storage) "rUx" = ( -/obj/machinery/jukebox{ - req_access = list("bar", "security") - }, +/obj/machinery/jukebox/no_access, /turf/open/floor/wood, /area/station/security/prison) "rUy" = ( From ae6e5385fec5db1c68787f11c9c0fcd068535221 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 11 Feb 2025 10:07:05 +0100 Subject: [PATCH 038/120] Automatic changelog for PR #3070 [ci skip] --- html/changelogs/AutoChangeLog-pr-3070.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3070.yml diff --git a/html/changelogs/AutoChangeLog-pr-3070.yml b/html/changelogs/AutoChangeLog-pr-3070.yml new file mode 100644 index 00000000000..ebbd20052b6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3070.yml @@ -0,0 +1,4 @@ +author: "xPokee" +delete-after: True +changes: + - map: "modified the jukebox in BoxStation's permabrig to be accessless" \ No newline at end of file From 3d530706e9254b1242945956b8981ca99b429121 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 11 Feb 2025 23:23:58 +0000 Subject: [PATCH 039/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2900.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3025.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3070.yml | 4 ---- html/changelogs/archive/2025-02.yml | 10 ++++++++++ 4 files changed, 10 insertions(+), 13 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2900.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3025.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3070.yml diff --git a/html/changelogs/AutoChangeLog-pr-2900.yml b/html/changelogs/AutoChangeLog-pr-2900.yml deleted file mode 100644 index 4942aac07ac..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2900.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "ArrisFairburne, LT3" -delete-after: True -changes: - - rscadd: "Added a new app to clock in and out from any NT OS-compatible device (Plexagon Punch Clock)" - - qol: "Your job items are now locked into a box instead of warped to cryo, when clocking out" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3025.yml b/html/changelogs/AutoChangeLog-pr-3025.yml deleted file mode 100644 index 44b3482c01d..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3025.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Odairu" -delete-after: True -changes: - - balance: "cult no longer gibs mindshields" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3070.yml b/html/changelogs/AutoChangeLog-pr-3070.yml deleted file mode 100644 index ebbd20052b6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3070.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "xPokee" -delete-after: True -changes: - - map: "modified the jukebox in BoxStation's permabrig to be accessless" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 1ceccbb84e3..62257003296 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -86,3 +86,13 @@ - rscadd: Replaces The Clown with The House which sets weights to 1, but spawns stuff at a slower pace, and allows the adminbus to come. - bugfix: Voidwalker properly spawns on the ghostset now. +2025-02-11: + ArrisFairburne, LT3: + - rscadd: Added a new app to clock in and out from any NT OS-compatible device (Plexagon + Punch Clock) + - qol: Your job items are now locked into a box instead of warped to cryo, when + clocking out + Odairu: + - balance: cult no longer gibs mindshields + xPokee: + - map: modified the jukebox in BoxStation's permabrig to be accessless From 78468452a453eb4fb1d7c282ae3d61059b84a12b Mon Sep 17 00:00:00 2001 From: Sebastionate <51052308+Sebastionate@users.noreply.github.com> Date: Wed, 12 Feb 2025 00:26:43 -0600 Subject: [PATCH 040/120] [SEMI-MODULAR] Adds 3 new Infinite Dorm Maps! (#3078) ## About The Pull Request Adds three new awesome Infinite dorms for varying roleplay scenarios and creative environments. -Cultist's Cavern: A spooky cave-like environment populated with an underground spring, a cultist-themed bedroom, a mining hold-out, and general cave flora/decorations around. Spawns a crate of flashlights/flares/hardhats etc to help light the area as this is a darker dorm for lame Heretic/Cult rp. (unoriginal) Also adds a neat little spring however for a more natural swimming hole area instead of hot tubs and pools. -Winter Woods: A cozy little wooden cabin near the edge of a plasma pond of sorts. Very ambient and romantic. Features a campfire, cabin, dark wooded area, and a crate filled with NRI attire. Also features an effect to where it's constantly snowing, the same animated sprite used for light snowstorms. Has a custom area added so that it plays Ice Moon ambience. -Evacuated Station: The Hydroponics Cloning Farm of an evacuated Space Station that _apparently_ got sucked inside of a Void anomaly of sorts. Alarms blaring. Emergency lighting. A deadspace-like environment, or rather what the shuttle leaves behind at the end of a Gamer shift. Features a Bedroom, small engineering lab, damaged flooring and windows, small maintenance path, and a Research Director's Quarters. I had to touch the Modular Herbert Hotel File, similar to what Skyrat did. Those changes are noted with //BUBBER EDIT ADDITION BEGIN - Infinite Dorm Maps Add and //BUBBER EDIT END ## Why It's Good For The Game Infinite dorms are really cool I think ## Proof Of Testing Each were ran locally repeatedly with 0 additional run-time errors.
Screenshots/Videos ![dormaddevacstation](https://github.com/user-attachments/assets/cc1a894f-adc4-419b-b9f0-5a2bd23818d5) ![dormaddprwinterwood](https://github.com/user-attachments/assets/0255078d-d2c2-437d-a18a-934388b5e2e1) ![dormaddcultvcave](https://github.com/user-attachments/assets/5d98cb22-ea68-44fc-adb9-6f87029cbb9c)
## Changelog :cl: map: Added THREE new Infinite Dorms! map: Added 'Cultist's Cavern' Infinite Dorm. map: Added 'Winter Woods' Infinite Dorm. map: Added 'Evacuated Station' Infinite Dorm. /:cl: --- .../ruins/spaceruin_code/hilbertshotel.dm | 23 + .../ghostcafe/code/hilbertshotel_ghost.dm | 26 + .../modules/hotel_rooms/cultcave.dmm | 642 +++++++++ .../modules/hotel_rooms/evacuationstation.dmm | 1237 +++++++++++++++++ .../modules/hotel_rooms/winterwoods.dmm | 646 +++++++++ .../code/game/objects/effects/overlays.dm | 7 + 6 files changed, 2581 insertions(+) create mode 100644 modular_skyrat/modules/hotel_rooms/cultcave.dmm create mode 100644 modular_skyrat/modules/hotel_rooms/evacuationstation.dmm create mode 100644 modular_skyrat/modules/hotel_rooms/winterwoods.dmm create mode 100644 modular_zubbers/code/game/objects/effects/overlays.dm diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm index 7cf3b9b81dd..ddd37d72a8b 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm @@ -20,6 +20,12 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) var/datum/map_template/ghost_cafe_rooms/library/ghost_cafe_rooms_library //Skyrat EDIT END + //BUBBER EDIT ADDITION BEGIN - Infinite Dorm Maps Add + var/datum/map_template/ghost_cafe_rooms/cultcave/ghost_cafe_rooms_cultcave + var/datum/map_template/ghost_cafe_rooms/winterwoods/ghost_cafe_rooms_winterwoods + var/datum/map_template/ghost_cafe_rooms/evacuationstation/ghost_cafe_rooms_evacuationstation + //BUBBER EDIT END + var/datum/map_template/hilbertshotel/hotelRoomTemp var/datum/map_template/hilbertshotel/empty/hotelRoomTempEmpty var/datum/map_template/hilbertshotel/lore/hotelRoomTempLore @@ -44,6 +50,11 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) ghost_cafe_rooms_stationside = new() ghost_cafe_rooms_library = new() //SKYRAT EDIT END + //BUBBER EDIT ADDITION BEGIN - Infinite Dorm Maps Add + ghost_cafe_rooms_cultcave = new() + ghost_cafe_rooms_winterwoods = new() + ghost_cafe_rooms_evacuationstation = new() + //BUBBER EDIT END var/area/currentArea = get_area(src) if(currentArea.type == /area/ruin/space/has_grav/powered/hilbertresearchfacility/secretroom) @@ -197,6 +208,17 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) else if(chosen_room == "Library") load_from = ghost_cafe_rooms_library //SKYRAT EDIT ADDITION END + //BUBBER EDIT ADDITION BEGIN - Infinite Dorm Maps Add + else if(chosen_room == "Cultist's Cavern") + load_from = ghost_cafe_rooms_cultcave + + else if(chosen_room == "Winter Woods") + load_from = ghost_cafe_rooms_winterwoods + + else if(chosen_room == "Evacuated Station") + load_from = ghost_cafe_rooms_evacuationstation + //BUBBER EDIT END + load_from.load(bottom_left) activeRooms["[roomNumber]"] = roomReservation @@ -524,6 +546,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) area_flags = HIDDEN_AREA | NOTELEPORT | UNIQUE_AREA has_gravity = TRUE + /obj/item/abstracthotelstorage anchored = TRUE invisibility = INVISIBILITY_ABSTRACT diff --git a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm index b835cff027c..05198ae0c54 100644 --- a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm +++ b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm @@ -28,3 +28,29 @@ /datum/map_template/ghost_cafe_rooms/library name = "Library" mappath = "modular_skyrat/modules/hotel_rooms/library.dmm" + +/datum/map_template/ghost_cafe_rooms/cultcave + name = "Cultist's Cavern" + mappath = "modular_skyrat/modules/hotel_rooms/cultcave.dmm" + +/datum/map_template/ghost_cafe_rooms/winterwoods + name = "Winter Woods" + mappath = "modular_skyrat/modules/hotel_rooms/winterwoods.dmm" + +/area/misc/winterwoods + name = "Winter Woods" + icon = 'icons/area/areas_ruins.dmi' + icon_state = "hilbertshotel" + requires_power = FALSE + has_gravity = TRUE + area_flags = NOTELEPORT | HIDDEN_AREA + static_lighting = TRUE + ambientsounds = "icemoon" + var/roomnumber = 0 + var/obj/item/hilbertshotel/parentSphere + var/datum/turf_reservation/reservation + var/turf/storageTurf + +/datum/map_template/ghost_cafe_rooms/evacuationstation + name = "Evacuated Station" + mappath = "modular_skyrat/modules/hotel_rooms/evacuationstation.dmm" diff --git a/modular_skyrat/modules/hotel_rooms/cultcave.dmm b/modular_skyrat/modules/hotel_rooms/cultcave.dmm new file mode 100644 index 00000000000..0d7c4cf04fb --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/cultcave.dmm @@ -0,0 +1,642 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ar" = ( +/obj/structure/flora/biolumi/mine/weaklight, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"aC" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/item/flashlight/flare/candle/infinite{ + pixel_x = 8; + pixel_y = 9 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/misc/hilbertshotel) +"aS" = ( +/obj/structure/flora/bush/stalky/style_2, +/turf/open/water{ + planetary_atmos = 0 + }, +/area/misc/hilbertshotel) +"cy" = ( +/obj/structure/flora/rock, +/turf/open/water{ + planetary_atmos = 0 + }, +/area/misc/hilbertshotel) +"dT" = ( +/obj/effect/decal/cleanable/xenoblood/xgibs/body, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"fa" = ( +/obj/effect/decal/remains/xeno, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"gQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"jr" = ( +/obj/effect/decal/cleanable/rubble, +/obj/structure/wall_torch/spawns_lit/directional/west, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"jx" = ( +/turf/open/floor/wood/large{ + invisibility = 1 + }, +/area/misc/hilbertshotel) +"jT" = ( +/obj/effect/decal/cleanable/xenoblood/xgibs/core, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"kh" = ( +/obj/effect/decal/cleanable/blood/old{ + pixel_x = -2; + pixel_y = -1 + }, +/obj/effect/decal/remains/human{ + pixel_x = -4; + pixel_y = 6 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"kD" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/hairbrush/tactical, +/obj/item/serviette_pack, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"kS" = ( +/turf/open/misc/grass/jungle, +/area/misc/hilbertshotel) +"lY" = ( +/obj/effect/decal/cleanable/rubble, +/obj/structure/spacevine, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"mK" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"nA" = ( +/obj/effect/decal/cleanable/dirt/dust{ + pixel_x = 2; + pixel_y = -1 + }, +/obj/effect/decal/remains/human{ + pixel_x = -12; + pixel_y = 9 + }, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"oZ" = ( +/obj/structure/table/wood, +/obj/item/storage/backpack/satchel/flat{ + pixel_x = 0; + pixel_y = 6 + }, +/turf/open/floor/wood/large{ + invisibility = 1 + }, +/area/misc/hilbertshotel) +"pm" = ( +/obj/structure/destructible/cult/item_dispenser/archives/library, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"pv" = ( +/obj/structure/flora/grass/jungle/a/style_4{ + pixel_x = 23; + pixel_y = 0 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"pD" = ( +/obj/structure/flora/grass/jungle/a/style_4{ + pixel_x = 3; + pixel_y = 39 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"tE" = ( +/obj/effect/supplypod_rubble, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"tZ" = ( +/obj/structure/destructible/cult/pants_altar, +/obj/item/toy/toy_dagger, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"uX" = ( +/obj/structure/spacevine, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"wb" = ( +/obj/structure/flora/rock/pile, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"wl" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/mob_spawn/corpse/human/miner, +/obj/effect/spawner/random/decoration/glowstick{ + pixel_x = 10; + pixel_y = 9 + }, +/obj/item/flashlight/lantern/on{ + pixel_x = -10; + pixel_y = 5 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"wu" = ( +/obj/structure/flora/rock, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"wS" = ( +/obj/effect/decal/cleanable/xenoblood, +/obj/structure/closet/crate, +/obj/item/flashlight{ + pixel_x = 3; + pixel_y = -1 + }, +/obj/item/flashlight{ + pixel_x = -5; + pixel_y = -4 + }, +/obj/item/flashlight/flare, +/obj/item/flashlight/flare{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/flashlight/flare{ + pixel_x = 0; + pixel_y = 5 + }, +/obj/item/clothing/head/utility/hardhat/white{ + pixel_x = -2; + pixel_y = 0 + }, +/obj/item/clothing/head/utility/hardhat/white{ + pixel_x = -8; + pixel_y = 1 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"xT" = ( +/obj/structure/spacevine, +/turf/closed/mineral/random/asteroid/rockplanet/labor, +/area/misc/hilbertshotel) +"zY" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/greenglow/ecto, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"Ae" = ( +/obj/structure/flora/rock/style_4, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"AO" = ( +/obj/structure/spacevine, +/turf/open/water{ + planetary_atmos = 0 + }, +/area/misc/hilbertshotel) +"BF" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/rack/wooden, +/obj/item/clothing/glasses/blindfold{ + pixel_x = 1; + pixel_y = 5 + }, +/obj/item/clothing/mask/muzzle, +/obj/item/restraints/handcuffs{ + icon_state = "brass_manacles"; + name = "cultist restraints"; + pixel_x = 0; + pixel_y = -9 + }, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"Dc" = ( +/obj/structure/flora/ocean/glowweed{ + pixel_x = 15; + pixel_y = 12 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"DR" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/rune/apocalypse, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"DX" = ( +/obj/effect/decal/cleanable/rubble, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"Ea" = ( +/obj/structure/mineral_door/wood, +/obj/structure/barricade/wooden/crude, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"EX" = ( +/obj/structure/flora/rock/pile/jungle/large, +/turf/open/misc/grass/jungle, +/area/misc/hilbertshotel) +"Gv" = ( +/obj/effect/decal/cleanable/ash/large{ + pixel_x = -25; + pixel_y = 12 + }, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"Ig" = ( +/turf/closed/mineral/random/asteroid/rockplanet/labor{ + pixel_x = 0; + pixel_y = 0 + }, +/area/misc/hilbertshotel) +"Ix" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/door/morgue, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"Je" = ( +/obj/structure/wall_torch/spawns_lit/directional/north, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"JW" = ( +/obj/structure/bed/double, +/obj/item/bedsheet/cult/double, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood, +/area/misc/hilbertshotel) +"LC" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"Mj" = ( +/turf/closed/indestructible/hoteldoor{ + icon_state = "door_closed"; + icon = 'icons/obj/doors/puzzledoor/default.dmi' + }, +/area/misc/hilbertshotel) +"Mk" = ( +/obj/structure/flora/rock/icy/style_3, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/heretic_rune, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"Np" = ( +/turf/open/water{ + planetary_atmos = 0 + }, +/area/misc/hilbertshotel) +"NX" = ( +/obj/effect/decal/cleanable/xenoblood, +/obj/item/forging/incomplete/pickaxe{ + pixel_x = -12; + pixel_y = -1 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"Oh" = ( +/obj/structure/table/wood, +/obj/effect/spawner/random/food_or_drink/booze{ + pixel_x = -8; + pixel_y = 6 + }, +/obj/effect/spawner/random/food_or_drink/dinner{ + pixel_x = 4; + pixel_y = 5 + }, +/turf/open/floor/wood/large{ + invisibility = 1 + }, +/area/misc/hilbertshotel) +"PK" = ( +/obj/structure/flora/rock/icy/style_2, +/turf/open/misc/grass/jungle, +/area/misc/hilbertshotel) +"QJ" = ( +/obj/structure/dresser, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"SV" = ( +/obj/structure/bed/maint, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"Tu" = ( +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"UU" = ( +/obj/item/crowbar, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"UY" = ( +/obj/item/flashlight/lantern/on{ + pixel_x = 9; + pixel_y = 9 + }, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"Wl" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"WX" = ( +/obj/structure/flora/rock/pile, +/obj/structure/flora/rock/pile/jungle/style_2, +/turf/open/misc/dirt/jungle/dark, +/area/misc/hilbertshotel) +"YW" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/wood/large, +/area/misc/hilbertshotel) +"Zq" = ( +/turf/closed/mineral/random/asteroid/rockplanet/labor, +/area/misc/hilbertshotel) + +(1,1,1) = {" +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +Zq +"} +(2,1,1) = {" +Zq +Zq +Mj +Zq +Zq +Zq +wl +jT +wS +jr +Zq +Zq +Zq +Zq +Zq +"} +(3,1,1) = {" +Zq +Zq +Tu +Tu +Zq +Zq +tE +NX +dT +Tu +Tu +SV +Zq +Zq +Zq +"} +(4,1,1) = {" +Zq +Zq +Je +Tu +DX +Zq +Ig +Ig +Wl +UY +Tu +Tu +Tu +Oh +Zq +"} +(5,1,1) = {" +Zq +Zq +Zq +DX +DX +kh +Ig +Ig +xT +xT +uX +DX +jx +oZ +Zq +"} +(6,1,1) = {" +Zq +Zq +Zq +wu +Tu +Tu +DX +xT +xT +xT +uX +Zq +Zq +Zq +Zq +"} +(7,1,1) = {" +Zq +Zq +Zq +Zq +ar +Tu +Tu +Tu +lY +uX +Tu +Tu +Zq +Zq +Zq +"} +(8,1,1) = {" +Zq +BF +Zq +Zq +DX +Tu +Tu +Tu +xT +zY +Tu +Tu +Ae +Zq +Zq +"} +(9,1,1) = {" +Zq +gQ +Zq +Zq +Zq +Ig +Mk +Tu +Zq +Zq +fa +pv +Tu +wb +Zq +"} +(10,1,1) = {" +Zq +Ix +Zq +Zq +Zq +Ig +Zq +UU +Zq +Zq +Zq +Dc +Tu +pD +Zq +"} +(11,1,1) = {" +Zq +gQ +gQ +gQ +LC +gQ +Ea +Tu +Zq +Zq +Zq +WX +Tu +Tu +Zq +"} +(12,1,1) = {" +Zq +tZ +nA +gQ +DR +gQ +Zq +Zq +Zq +Zq +cy +Np +EX +kS +Zq +"} +(13,1,1) = {" +Zq +pm +Gv +gQ +YW +gQ +Zq +Zq +Zq +aS +Np +Np +Np +PK +Zq +"} +(14,1,1) = {" +Zq +gQ +gQ +gQ +gQ +gQ +Zq +xT +xT +AO +Np +Np +Np +Np +Zq +"} +(15,1,1) = {" +Zq +mK +QJ +JW +aC +kD +Zq +xT +AO +AO +AO +Np +Np +Np +Zq +"} +(16,1,1) = {" +Zq +Zq +Zq +Zq +Zq +Zq +Zq +xT +xT +xT +xT +Zq +Zq +Zq +Zq +"} diff --git a/modular_skyrat/modules/hotel_rooms/evacuationstation.dmm b/modular_skyrat/modules/hotel_rooms/evacuationstation.dmm new file mode 100644 index 00000000000..b8e20542e98 --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/evacuationstation.dmm @@ -0,0 +1,1237 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aj" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/item/storage/box/matches, +/obj/item/cigarette/cigar{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/machinery/firealarm/directional/west{ + soundloop = /datum/looping_sound/firealarm; + appearance_power_state = 0; + is_operational = 0 + }, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"ay" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/spawner/random/trash/moisture_trap, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"aD" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/mob_spawn/corpse/human/scientist, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"aG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/turf/closed/indestructible/titanium, +/area/misc/hilbertshotel) +"bl" = ( +/obj/structure/sign/poster/official/safety_internals/directional/north, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"cA" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/hydroponics/constructable, +/obj/effect/mapping_helpers/broken_machine, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"cK" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/red/dim/directional/south, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"cO" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"dS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"dY" = ( +/obj/machinery/modular_computer/preset/research{ + is_operational = 0; + name = "Research Terminal"; + desc = "A stationary Research computer. This one appears to have been wiped clean and displays an Evactuation order." + }, +/obj/machinery/light/broken/directional/north, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"eM" = ( +/obj/machinery/rnd/production/protolathe/department/science{ + on_station_lathe = 0; + is_operational = 0; + name = "Cloning Lab Lathe" + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"eZ" = ( +/obj/structure/chair/comfy/brown{ + dir = 8 + }, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"fM" = ( +/obj/machinery/firealarm/directional/west{ + soundloop = /datum/looping_sound/firealarm; + appearance_power_state = 0; + is_operational = 0 + }, +/obj/item/flashlight/flare{ + start_on = 1 + }, +/obj/item/crowbar/large, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"gG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/closed/indestructible/hoteldoor{ + icon_state = "closed"; + icon = 'modular_skyrat/modules/aesthetics/airlock/icons/airlocks/station2/glass.dmi'; + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"ia" = ( +/obj/item/wallframe/intercom, +/turf/closed/indestructible/titanium{ + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"jp" = ( +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"jx" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable, +/obj/effect/mapping_helpers/damaged_window, +/obj/effect/mapping_helpers/damaged_window, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"jK" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/light/broken/directional/north, +/obj/machinery/vending/hydronutrients, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"jV" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable, +/obj/effect/mapping_helpers/damaged_window, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"kg" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"kG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/closed/indestructible/titanium{ + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"kJ" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/machinery/light/very_dim/directional/east, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"kX" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/effect/turf_decal/vg_decals/atmos/air, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"lz" = ( +/obj/structure/cable, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"me" = ( +/obj/structure/closet/emcloset{ + anchored = 1 + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"ms" = ( +/obj/structure/sign/departments/engineering/directional/west, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"mv" = ( +/obj/item/melee/baton/security/cattleprod{ + pixel_x = -6; + pixel_y = 6; + preload_cell_type = /obj/item/stock_parts/power_store/cell/hyper + }, +/obj/effect/decal/cleanable/blood/old, +/obj/item/restraints/handcuffs/cable/yellow, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"mH" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/portable_atmospherics/scrubber, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"mL" = ( +/obj/item/paperwork, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"nx" = ( +/obj/structure/cable, +/turf/closed/indestructible/titanium{ + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"nV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"oe" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"oW" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"pz" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/structure/table/wood/shuttle_bar, +/obj/item/flashlight/lamp/green{ + pixel_y = 14 + }, +/obj/item/reagent_containers/cup/glass/flask/gold{ + pixel_x = 6; + pixel_y = 5 + }, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"qg" = ( +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"qm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/open/floor/wood/tile{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"qp" = ( +/obj/structure/bed/double, +/obj/item/bedsheet/hop/double, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"qA" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + anchored = 1 + }, +/obj/machinery/light/red/dim/directional/east, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"rs" = ( +/obj/structure/cable, +/turf/closed/indestructible/reinforced, +/area/misc/hilbertshotel) +"rV" = ( +/obj/machinery/vending/hydroseeds, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"rX" = ( +/obj/structure/closet/crate/internals, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"sH" = ( +/turf/closed/indestructible/hoteldoor{ + icon_state = "closed"; + icon = 'modular_skyrat/modules/aesthetics/airlock/icons/airlocks/station2/glass.dmi'; + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"tb" = ( +/obj/structure/broken_flooring/plating/always_floorplane/directional, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"tY" = ( +/obj/structure/grille/broken, +/turf/open/space/basic, +/area/misc/hilbertshotel) +"ua" = ( +/obj/item/stack/sheet/mineral/titanium{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/mapping_helpers/burnt_floor, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"uG" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/light/red/dim/directional/west, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"uL" = ( +/obj/item/wallframe/light_fixture{ + pixel_x = -7; + pixel_y = 6 + }, +/obj/item/stack/cable_coil/cut, +/obj/item/light/tube/broken, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"uN" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/wood/tile{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"vu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/red/dim/directional/north, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"vI" = ( +/obj/machinery/light/red/dim/directional/west, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"vJ" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/effect/mapping_helpers/damaged_window, +/obj/structure/cable, +/turf/open/indestructible/plating, +/area/misc/hilbertshotel) +"wn" = ( +/obj/structure/closet/firecloset{ + anchored = 1 + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"wr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/obj/machinery/door/firedoor/closed, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"yg" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/wood/tile{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"yT" = ( +/obj/effect/decal/cleanable/blood/splatter, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/item/flashlight, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"yZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/components/tank/air/layer2, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"zG" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Ak" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/open/floor/wood/tile{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Au" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/random/structure/closet_maintenance, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Ax" = ( +/obj/item/wallframe/firecloset, +/turf/closed/indestructible/titanium{ + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"AA" = ( +/obj/structure/filingcabinet, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Bl" = ( +/obj/machinery/power/smes, +/obj/structure/cable, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Bu" = ( +/obj/machinery/door/airlock/rd, +/obj/machinery/door/firedoor/closed, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"BE" = ( +/obj/structure/table/reinforced/plasmarglass, +/obj/machinery/recharger, +/obj/item/paper_bin/carbon{ + pixel_x = -5; + pixel_y = 6 + }, +/obj/structure/cable, +/obj/machinery/light/red/dim/directional/south, +/obj/item/paper{ + pixel_x = 7; + pixel_y = 8; + name = "ATTENTION!"; + default_raw_text = "ATTENTION!

This is a hand-typed letter from Research Director D. Warner. The Hydroponics-Cloning Farm has been engulfed by an unknown Anomaly simply referred to as a 'Void flux'. If you are reading this, and this portion of the station has yet not been safely recovered from whatever depths of presumably the void it resides in, proceed to the Bluespace Network pad down the Eastern Corridor.

-Signed, Research Director D. Warner" + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Cd" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Cq" = ( +/obj/machinery/door/airlock/research, +/obj/machinery/door/firedoor/closed, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"CM" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/door/firedoor/closed, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Dc" = ( +/obj/structure/trash_pile, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"DS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Ed" = ( +/obj/effect/mapping_helpers/broken_floor, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Ew" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/hydroponics/constructable, +/obj/effect/mapping_helpers/broken_machine, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"EB" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Fc" = ( +/obj/structure/closet/l3closet/scientist{ + anchored = 1 + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"FB" = ( +/obj/machinery/light/red/dim/directional/south, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Gq" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/grille/broken, +/obj/structure/cable, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Ht" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/obj/machinery/light/red/dim/directional/south, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"IN" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"IP" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"IY" = ( +/obj/item/crowbar/large, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Jr" = ( +/turf/closed/indestructible/titanium, +/area/misc/hilbertshotel) +"Ju" = ( +/obj/item/clothing/shoes/magboots/advance, +/obj/item/clothing/shoes/magboots/advance{ + pixel_x = 4; + pixel_y = -8 + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Ka" = ( +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"KJ" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/obj/structure/sign/departments/maint/directional/south, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Lo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/engineering, +/obj/machinery/door/firedoor/closed, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Lz" = ( +/obj/structure/dresser, +/turf/open/indestructible/hotelwood{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Mc" = ( +/turf/open/space/basic, +/area/misc/hilbertshotel) +"My" = ( +/obj/item/stack/sheet/mineral/titanium{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/structure/cable, +/turf/closed/indestructible/titanium{ + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"ME" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/reagent_dispensers/watertank, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"MK" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/indestructible/hoteldoor{ + icon_state = "closed"; + icon = 'modular_skyrat/modules/aesthetics/airlock/icons/airlocks/station2/glass.dmi'; + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"Nb" = ( +/obj/item/stack/rods{ + amount = 8 + }, +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable, +/obj/effect/mapping_helpers/damaged_window, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Oe" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/effect/mapping_helpers/damaged_window, +/turf/open/indestructible/plating, +/area/misc/hilbertshotel) +"PC" = ( +/obj/machinery/firealarm/directional/north{ + soundloop = /datum/looping_sound/firealarm; + appearance_power_state = 0; + is_operational = 0 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"PP" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"QK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/turf/closed/indestructible/titanium, +/area/misc/hilbertshotel) +"QO" = ( +/obj/machinery/door/airlock/multi_tile/metal, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Re" = ( +/obj/effect/mapping_helpers/burnt_floor, +/obj/machinery/hydroponics/constructable, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Rt" = ( +/turf/closed/indestructible/titanium{ + baseturfs = /turf/open/indestructible/plating + }, +/area/misc/hilbertshotel) +"SL" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/turf/open/indestructible/plating, +/area/misc/hilbertshotel) +"Tx" = ( +/obj/structure/girder/reinforced, +/obj/item/stack/sheet/mineral/titanium{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/indestructible/plating, +/area/misc/hilbertshotel) +"TR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/machinery/door/airlock/maintenance_hatch, +/obj/machinery/door/firedoor/closed, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"TY" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Ul" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Uw" = ( +/turf/open/indestructible/dark/textured{ + icon = 'modular_zubbers/icons/space/space.dmi'; + icon_state = "space"; + name = "space" + }, +/area/misc/hilbertshotel) +"UN" = ( +/obj/structure/cable, +/obj/structure/closet/secure_closet/engineering_welding{ + anchored = 1 + }, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"UO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm/directional/west{ + soundloop = /datum/looping_sound/firealarm; + appearance_power_state = 0; + is_operational = 0 + }, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Vh" = ( +/obj/structure/cable, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/secure_closet/engineering_electrical{ + anchored = 1 + }, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Vj" = ( +/obj/effect/spawner/random/trash/grime, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Wd" = ( +/obj/structure/girder/reinforced, +/obj/item/stack/sheet/mineral/titanium{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/indestructible/plating, +/area/misc/hilbertshotel) +"Wm" = ( +/obj/item/flashlight, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"WL" = ( +/obj/machinery/atmospherics/pipe/smart/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold/supply/hidden/layer2, +/obj/structure/cable, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Xm" = ( +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Xt" = ( +/obj/item/stack/rods{ + amount = 12 + }, +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable, +/obj/effect/mapping_helpers/damaged_window, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Xy" = ( +/obj/effect/mob_spawn/corpse/human/scientist, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Yh" = ( +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/glass/plasma, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Yk" = ( +/obj/machinery/hydroponics/constructable, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"Zf" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/glass/plasma, +/obj/structure/frame/machine/secured, +/turf/open/indestructible/plating, +/area/misc/hilbertshotel) +"Zh" = ( +/obj/effect/spawner/structure/window/reinforced/plasma, +/obj/structure/cable, +/turf/open/indestructible/plating, +/area/misc/hilbertshotel) +"Zk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/indestructible/plating{ + force_no_gravity = 1 + }, +/area/misc/hilbertshotel) +"Zs" = ( +/obj/machinery/gulag_teleporter{ + is_operational = 0; + name = "Cloning Chamber"; + desc = "A deactivated Cloning Pod designed for the Hydroponics Research Wing." + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) +"ZQ" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/turf/open/indestructible/dark/textured{ + force_no_gravity = 1; + name = "Dark Tiling" + }, +/area/misc/hilbertshotel) + +(1,1,1) = {" +vJ +vJ +Zh +nx +Rt +Rt +Rt +Rt +Rt +Rt +Rt +Rt +Rt +Mc +Mc +"} +(2,1,1) = {" +vJ +Zs +Ju +AA +fM +rX +Fc +Rt +Bl +UO +uG +mH +QK +gG +Rt +"} +(3,1,1) = {" +Zh +eM +Wm +IY +mL +cO +ZQ +Rt +Vh +EB +Zk +kX +TR +DS +Rt +"} +(4,1,1) = {" +nx +dY +jp +mv +nV +yT +BE +nx +UN +lz +lz +yZ +nx +DS +SL +"} +(5,1,1) = {" +rs +nx +Wd +Tx +Cq +aG +Rt +Rt +Rt +Lo +Rt +Rt +Rt +DS +Oe +"} +(6,1,1) = {" +Mc +Zh +uL +zG +zG +wr +jp +jp +vI +jp +ms +wn +Rt +DS +SL +"} +(7,1,1) = {" +Mc +vJ +Xy +tb +WL +wr +jp +jp +jp +jp +Ed +me +Rt +DS +Rt +"} +(8,1,1) = {" +rs +nx +Yh +Oe +IN +Jr +Jr +jp +jp +Rt +Rt +Rt +Rt +DS +Rt +"} +(9,1,1) = {" +ia +jp +Xm +jp +WL +jp +Jr +dS +oW +CM +DS +DS +IP +oe +Rt +"} +(10,1,1) = {" +Ax +rV +Yk +dS +Ul +jp +Jr +PC +KJ +Rt +Au +Vj +ay +Dc +Rt +"} +(11,1,1) = {" +Rt +jK +Ew +nV +Ul +FB +Jr +vu +WL +Rt +Rt +Rt +Rt +Rt +Rt +"} +(12,1,1) = {" +My +TY +ME +qg +PP +WL +QO +WL +Ht +kG +kg +kg +pz +aj +Rt +"} +(13,1,1) = {" +Cd +Gq +Zf +zG +Re +qg +qg +jp +jp +Bu +Ka +yg +qm +eZ +Rt +"} +(14,1,1) = {" +tY +Xt +jV +aD +cA +cK +Jr +bl +jp +Rt +Ka +uN +Ak +Ka +Rt +"} +(15,1,1) = {" +Mc +Uw +jx +Nb +TY +ua +Rt +sH +MK +Rt +qA +Lz +qp +kJ +Rt +"} +(16,1,1) = {" +Mc +Mc +Mc +Cd +Cd +nx +Rt +Mc +Mc +Rt +Rt +Rt +Rt +Rt +Rt +"} diff --git a/modular_skyrat/modules/hotel_rooms/winterwoods.dmm b/modular_skyrat/modules/hotel_rooms/winterwoods.dmm new file mode 100644 index 00000000000..04fd0b07916 --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/winterwoods.dmm @@ -0,0 +1,646 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aj" = ( +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"aI" = ( +/obj/structure/flora/bush/snow/style_random, +/mob/living/basic/pet/penguin/baby/permanent/snowdin, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"aL" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/item/stack/sheet/mineral/wood/fifty{ + pixel_x = 0; + pixel_y = 8 + }, +/obj/item/assembly/igniter{ + pixel_x = -10; + pixel_y = 9 + }, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"by" = ( +/obj/structure/flora/bush/snow/style_4, +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"cg" = ( +/obj/structure/railing/wooden_fencing{ + dir = 4 + }, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"cI" = ( +/obj/structure/sign/flag/nri, +/turf/closed/indestructible/wood, +/area/misc/winterwoods) +"de" = ( +/obj/structure/fireplace, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"eh" = ( +/obj/structure/closet/crate/wooden, +/obj/item/clothing/suit/modern_winter, +/obj/item/clothing/suit/modern_winter, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/shoes/winterboots, +/obj/item/clothing/head/costume/ushanka, +/obj/item/clothing/head/costume/ushanka, +/obj/item/clothing/head/costume/ushanka/frosty, +/obj/item/clothing/head/costume/ushanka/frosty, +/obj/item/clothing/mask/gas, +/obj/item/clothing/mask/gas, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/tank/internals/emergency_oxygen/double, +/obj/item/clothing/under/costume/soviet, +/obj/item/clothing/under/costume/soviet, +/obj/effect/overlay/light_snow, +/obj/item/gun/ballistic/revolver/nagant, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"es" = ( +/obj/item/grown/log/tree, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"fQ" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"fS" = ( +/obj/structure/chair/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"gD" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/overlay/light_snow, +/turf/closed/indestructible/rock/snow/ice/ore, +/area/misc/winterwoods) +"ht" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/bed/double{ + dir = 1 + }, +/obj/item/bedsheet/runtime/double{ + dir = 1 + }, +/obj/item/toy/plush/skyrat/snow_owl, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"kv" = ( +/obj/structure/chair/sofa/bench/left{ + dir = 4; + color = "#76502e"; + name = "Lover's Watch" + }, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"lf" = ( +/obj/effect/overlay/light_snow, +/obj/structure/flora/bush/snow/style_4, +/obj/structure/flora/tree/pine, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"mU" = ( +/obj/effect/overlay/light_snow, +/obj/structure/flora/bush/snow/style_4, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"pI" = ( +/obj/structure/table/wood/shuttle_bar, +/obj/effect/turf_decal/siding/wood, +/obj/item/flashlight/lantern/on{ + pixel_x = -5; + pixel_y = 15 + }, +/obj/item/reagent_containers/cup/glass/bottle/vodka{ + pixel_x = 8; + pixel_y = 17 + }, +/obj/item/storage/toolbox/guncase/soviet{ + pixel_x = 0; + pixel_y = -5 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = 2; + pixel_y = 8 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/shotglass{ + pixel_x = -11; + pixel_y = 8 + }, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"rB" = ( +/turf/closed/indestructible/rock/snow/ice/ore, +/area/misc/winterwoods) +"tT" = ( +/obj/structure/flora/bush/snow/style_random, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"ua" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/item/storage/box/colonial_rations{ + pixel_x = 7; + pixel_y = -6 + }, +/obj/item/storage/box/colonial_rations{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/storage/box/colonial_rations{ + pixel_x = -6; + pixel_y = -7 + }, +/obj/structure/rack/wooden, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"uY" = ( +/obj/item/wisp_lantern, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"wq" = ( +/obj/effect/overlay/light_snow, +/obj/effect/decal/remains/plasma, +/turf/open/floor/fakeice/slippery, +/area/misc/winterwoods) +"wr" = ( +/obj/structure/flora/tree/dead/style_random, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"wK" = ( +/obj/effect/spawner/structure/window/ice, +/obj/structure/barricade/wooden/crude/snow, +/obj/structure/curtain/bounty/start_closed, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"xR" = ( +/obj/structure/flora/tree/pine/style_random, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"yd" = ( +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"yf" = ( +/obj/effect/overlay/light_snow, +/obj/structure/flora/tree/dead/style_random, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"AG" = ( +/turf/closed/indestructible/wood, +/area/misc/winterwoods) +"AY" = ( +/obj/structure/flora/grass/both/style_random, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"Cs" = ( +/obj/effect/overlay/light_snow, +/obj/structure/flora/tree/pine, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"CC" = ( +/obj/effect/overlay/light_snow, +/turf/open/lava/plasma/biodome, +/area/misc/winterwoods) +"Dx" = ( +/obj/effect/overlay/light_snow, +/obj/structure/flora/grass/both/style_random, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"EN" = ( +/obj/effect/overlay/light_snow, +/turf/open/floor/fakeice/slippery, +/area/misc/winterwoods) +"ET" = ( +/obj/structure/barricade/wooden/snowed, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"FP" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"Hg" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/overlay/light_snow, +/obj/structure/statue/snow/snowman, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"HG" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) +"Jn" = ( +/obj/structure/sign/poster/contraband/soviet_propaganda, +/turf/closed/indestructible/wood, +/area/misc/winterwoods) +"Jv" = ( +/obj/effect/overlay/light_snow, +/turf/open/floor/plating/snowed/smoothed{ + planetary_atmos = 0 + }, +/area/misc/winterwoods) +"KZ" = ( +/obj/structure/mineral_door/wood, +/obj/effect/turf_decal/weather/snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"Lw" = ( +/obj/effect/overlay/light_snow, +/turf/closed/indestructible/rock/snow/ice/ore, +/area/misc/winterwoods) +"Mr" = ( +/obj/effect/turf_decal/weather/snow, +/obj/effect/overlay/light_snow, +/turf/open/misc/dirt/jungle, +/area/misc/winterwoods) +"MJ" = ( +/obj/structure/flora/tree/pine, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"Nh" = ( +/obj/effect/spawner/structure/window/ice, +/obj/structure/barricade/wooden/crude/snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"No" = ( +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/overlay/light_snow, +/turf/open/floor/plating/snowed/smoothed{ + planetary_atmos = 0 + }, +/area/misc/winterwoods) +"OB" = ( +/obj/structure/bonfire/prelit, +/obj/effect/turf_decal/weather/snow, +/obj/effect/overlay/light_snow, +/turf/open/misc/dirt/jungle, +/area/misc/winterwoods) +"OH" = ( +/mob/living/basic/pet/penguin/baby/permanent/snowdin, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"ON" = ( +/obj/effect/turf_decal/weather/snow/corner{ + dir = 8 + }, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"Qb" = ( +/obj/structure/railing/wooden_fencing{ + dir = 4 + }, +/obj/structure/railing/wooden_fencing, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"Tt" = ( +/obj/structure/flora/grass/both/style_random, +/obj/effect/turf_decal/weather/snow/corner, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"Ve" = ( +/obj/structure/barricade/wooden/snowed, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"Yk" = ( +/turf/closed/indestructible/hoteldoor{ + icon_state = "door_closed"; + icon = 'icons/obj/doors/puzzledoor/default.dmi' + }, +/area/misc/winterwoods) +"YY" = ( +/obj/structure/chair/sofa/bench/right{ + dir = 4; + color = "#76502e"; + name = "Lover's Watch" + }, +/obj/structure/railing/wooden_fencing, +/obj/effect/overlay/light_snow, +/turf/open/floor/fake_snow/safe, +/area/misc/winterwoods) +"ZK" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood/tile, +/area/misc/winterwoods) + +(1,1,1) = {" +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +"} +(2,1,1) = {" +rB +Lw +Lw +yd +yd +Lw +Lw +gD +AG +Yk +AG +cI +AG +AG +rB +"} +(3,1,1) = {" +rB +Lw +tT +yd +wr +yd +yd +fQ +AG +de +ht +FP +fS +AG +rB +"} +(4,1,1) = {" +rB +yd +yd +yd +yd +yd +yf +Tt +wK +aL +aj +aj +pI +wK +rB +"} +(5,1,1) = {" +rB +yd +MJ +yd +lf +yd +EN +fQ +ET +ua +ZK +ZK +HG +Nh +rB +"} +(6,1,1) = {" +rB +yd +yd +Mr +yd +yd +wr +fQ +AG +Jn +KZ +ET +AG +AG +rB +"} +(7,1,1) = {" +rB +MJ +Mr +OB +Mr +EN +Hg +by +ON +eh +Jv +yd +yd +yd +rB +"} +(8,1,1) = {" +rB +yd +es +Mr +yd +wr +No +Jv +AY +Jv +yd +yd +yd +MJ +rB +"} +(9,1,1) = {" +rB +yd +AY +EN +yd +yd +Jv +Jv +Jv +Jv +yd +MJ +EN +yd +rB +"} +(10,1,1) = {" +rB +yd +wr +yd +wr +yd +Cs +EN +yd +wr +uY +kv +YY +Lw +rB +"} +(11,1,1) = {" +rB +Dx +OH +yd +Dx +yd +yd +wr +yd +MJ +cg +cg +Qb +CC +rB +"} +(12,1,1) = {" +rB +MJ +yd +wr +yd +yd +yf +yd +yd +EN +CC +CC +CC +CC +rB +"} +(13,1,1) = {" +rB +yd +Dx +yd +AY +yd +Jv +yd +MJ +CC +CC +CC +CC +Lw +rB +"} +(14,1,1) = {" +rB +yd +xR +EN +yd +Cs +yd +Dx +EN +CC +CC +CC +CC +CC +rB +"} +(15,1,1) = {" +rB +yd +Ve +yd +yd +yd +mU +yd +aI +wq +CC +CC +CC +Lw +rB +"} +(16,1,1) = {" +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +rB +"} diff --git a/modular_zubbers/code/game/objects/effects/overlays.dm b/modular_zubbers/code/game/objects/effects/overlays.dm new file mode 100644 index 00000000000..808aa8a63ae --- /dev/null +++ b/modular_zubbers/code/game/objects/effects/overlays.dm @@ -0,0 +1,7 @@ +/obj/effect/overlay/light_snow + gender = PLURAL + name = "snowfall" + icon = 'icons/effects/effects.dmi' + icon_state = "light_snow" + anchored = TRUE + From 2779206541aaf7e9b732d21416cf0eb88ec1e344 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 12 Feb 2025 07:27:10 +0100 Subject: [PATCH 041/120] Automatic changelog for PR #3078 [ci skip] --- html/changelogs/AutoChangeLog-pr-3078.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3078.yml diff --git a/html/changelogs/AutoChangeLog-pr-3078.yml b/html/changelogs/AutoChangeLog-pr-3078.yml new file mode 100644 index 00000000000..62a008ec367 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3078.yml @@ -0,0 +1,7 @@ +author: "Sebastionate" +delete-after: True +changes: + - map: "Added THREE new Infinite Dorms!" + - map: "Added 'Cultist's Cavern' Infinite Dorm." + - map: "Added 'Winter Woods' Infinite Dorm." + - map: "Added 'Evacuated Station' Infinite Dorm." \ No newline at end of file From e9bf895b292fa27960ff7f0c85958027cb12e671 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 12 Feb 2025 23:21:04 +0000 Subject: [PATCH 042/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3078.yml | 7 ------- html/changelogs/archive/2025-02.yml | 6 ++++++ 2 files changed, 6 insertions(+), 7 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3078.yml diff --git a/html/changelogs/AutoChangeLog-pr-3078.yml b/html/changelogs/AutoChangeLog-pr-3078.yml deleted file mode 100644 index 62a008ec367..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3078.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "Sebastionate" -delete-after: True -changes: - - map: "Added THREE new Infinite Dorms!" - - map: "Added 'Cultist's Cavern' Infinite Dorm." - - map: "Added 'Winter Woods' Infinite Dorm." - - map: "Added 'Evacuated Station' Infinite Dorm." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 62257003296..2c97b28e8d5 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -96,3 +96,9 @@ - balance: cult no longer gibs mindshields xPokee: - map: modified the jukebox in BoxStation's permabrig to be accessless +2025-02-12: + Sebastionate: + - map: Added THREE new Infinite Dorms! + - map: Added 'Cultist's Cavern' Infinite Dorm. + - map: Added 'Winter Woods' Infinite Dorm. + - map: Added 'Evacuated Station' Infinite Dorm. From 50ce818b343855b32b37818d97c3d8267e892f23 Mon Sep 17 00:00:00 2001 From: Vanilla1040 <94153240+Vanilla1040@users.noreply.github.com> Date: Fri, 14 Feb 2025 02:48:43 +0100 Subject: [PATCH 043/120] Readds Advanced hypospray (#3076) ## About The Pull Request This PR Readds the Advanced hypo in its already nerfed state to the ~~medical lathe~~ moved to imports and also readds the Large Hypobox that goes on your belt slot, the problem was already solved and i think its silly how you are forced to buy a whole tech kit JUST for the hypo as the PR which removed it from being printable did NOT add it into imports and locked it to said tech kit, its still locked behind research of course. ## Why It's Good For The Game This stops Medical staff from being forced to fork out 2500 credits, or a 20 minute department order cooldown for a hypo upgrade on a tool that has already had the initial problem solved, ~~allowing for the progression/upgrade path to be returned.~~ This includes re-adding the large hypo box which was also removed. ## Proof Of Testing Complies and works on localhost ## Changelog :cl: add: Readds the Large Hypobox being Printable in the Medical Lathe add: Adds Advanced Hypospray into imports /:cl: --- .../code/armament_datums/deforest_medical.dm | 4 ++ .../hyposprays/code/autolathe_designs.dm | 47 +++++++++---------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/modular_skyrat/modules/company_imports/code/armament_datums/deforest_medical.dm b/modular_skyrat/modules/company_imports/code/armament_datums/deforest_medical.dm index 7dec593129a..10ed88b5dd8 100644 --- a/modular_skyrat/modules/company_imports/code/armament_datums/deforest_medical.dm +++ b/modular_skyrat/modules/company_imports/code/armament_datums/deforest_medical.dm @@ -238,6 +238,10 @@ item_type = /obj/item/device/custom_kit/deluxe_hypo2 cost = PAYCHECK_COMMAND * 2 +/datum/armament_entry/company_import/deforest/equipment/advanced_hypospray + item_type = /obj/item/hypospray/mkii/piercing + cost = PAYCHECK_COMMAND * 7 + /datum/armament_entry/company_import/deforest/equipment/afad item_type = /obj/item/gun/medbeam/afad cost = PAYCHECK_COMMAND * 5 diff --git a/modular_skyrat/modules/hyposprays/code/autolathe_designs.dm b/modular_skyrat/modules/hyposprays/code/autolathe_designs.dm index e3b64fbc6c3..4eaf960dff6 100644 --- a/modular_skyrat/modules/hyposprays/code/autolathe_designs.dm +++ b/modular_skyrat/modules/hyposprays/code/autolathe_designs.dm @@ -1,3 +1,4 @@ +// Hypovials /datum/design/hypovial name = "Hypovial" id = "hypovial" @@ -8,18 +9,10 @@ ) build_path = /obj/item/reagent_containers/cup/vial/small category = list( - RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL -/datum/techweb_node/medbay_equip/New() - design_ids += list( - "hypovial", - ) - return ..() - -/// Large hypovials /datum/design/hypovial/large name = "Large Hypovial" id = "large_hypovial" @@ -29,6 +22,7 @@ ) build_path = /obj/item/reagent_containers/cup/vial/large +// Hypospray cases /datum/design/hypokit name = "Hypospray Case" id = "hypokit" @@ -39,22 +33,12 @@ ) build_path = /obj/item/storage/hypospraykit/empty category = list( - RND_CATEGORY_INITIAL, RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_MEDICAL, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL -/datum/techweb_node/chem_synthesis/New() - design_ids += list( - "large_hypovial", - "hypokit", - "hypomkii", - ) - return ..() - -/// Hyposprays /datum/design/hypokit/deluxe - name = "Deluxe Hypospray Case" + name = "Hypospray Case Deluxe" id = "hypokit_deluxe" materials = list( /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 6, @@ -63,6 +47,7 @@ ) build_path = /obj/item/storage/hypospraykit/cmo/empty +// Hyposprays /datum/design/hypomkii name = "Hypospray Mk. II" id = "hypomkii" @@ -74,11 +59,11 @@ ) build_path = /obj/item/hypospray/mkii category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED, ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL +// Hypospray upgrade /datum/design/hypomkii/deluxe name = "Hypospray Mk. II Deluxe Upgrade" id = "hypomkii_deluxe" @@ -90,10 +75,24 @@ ) build_path = /obj/item/device/custom_kit/deluxe_hypo2 category = list( - RND_CATEGORY_INITIAL, - RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL_ADVANCED, + RND_CATEGORY_TOOLS + RND_SUBCATEGORY_EQUIPMENT_MEDICAL, ) - departmental_flags = DEPARTMENT_BITFLAG_MEDICAL + +// Hypospray Research +/datum/techweb_node/chem_synthesis/New() + design_ids += list( + "hypovial", + "large_hypovial", + "hypokit", + "hypomkii", + ) + return ..() + +/datum/techweb_node/medbay_equip_adv/New() + design_ids += list( + "hypokit_deluxe", + ) + return ..() /datum/techweb_node/alien_surgery/New() design_ids += list( From d907ebb3becd1abd7113c1c2e020aa872c7699e9 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 14 Feb 2025 02:49:07 +0100 Subject: [PATCH 044/120] Automatic changelog for PR #3076 [ci skip] --- html/changelogs/AutoChangeLog-pr-3076.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3076.yml diff --git a/html/changelogs/AutoChangeLog-pr-3076.yml b/html/changelogs/AutoChangeLog-pr-3076.yml new file mode 100644 index 00000000000..c27941b02ef --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3076.yml @@ -0,0 +1,5 @@ +author: "Vanilla1040" +delete-after: True +changes: + - rscadd: "Readds the Large Hypobox being Printable in the Medical Lathe" + - rscadd: "Adds Advanced Hypospray into imports" \ No newline at end of file From 7d34f23db10aa0b3de83416bb8e9a8543c13d8a5 Mon Sep 17 00:00:00 2001 From: Vanilla1040 <94153240+Vanilla1040@users.noreply.github.com> Date: Fri, 14 Feb 2025 03:12:15 +0100 Subject: [PATCH 045/120] Fixes hotel rooms and adds new one (#3082) ## About The Pull Request Adds a new hotel room as of the request of Leathergnome who also made said hotel room, all credit goes to him i just PRed it, ontop of that this PR also fixes https://github.com/Bubberstation/Bubberstation/pull/3078 as said rooms were forgotten to be added to the selectable list, shit happens love the new rooms by the way. ## Why It's Good For The Game Another dorms room to enjoy and fix for already PRed ones ## Proof Of Testing Works and Complies on localhost ![image](https://github.com/user-attachments/assets/f29c9158-f512-4d4a-b680-00e500b9ffa7) ## Changelog :cl: map: Added new Hotel room fix: Fixed the other hotel rooms not showing up from a different PR /:cl: --- .../ruins/spaceruin_code/hilbertshotel.dm | 8 +- .../ghostcafe/code/hilbertshotel_ghost.dm | 4 + .../modules/hotel_rooms/prisoninfdorm.dmm | 96 +++++++++++++++++++ 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 modular_skyrat/modules/hotel_rooms/prisoninfdorm.dmm diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm index ddd37d72a8b..7709b3c6327 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm @@ -9,7 +9,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) w_class = WEIGHT_CLASS_SMALL resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //SKYRAT EDIT ADDITION - GHOST HOTEL UPDATE + EXTRA STUFF - var/static/list/hotel_maps = list("Generic", "Apartment", "Beach Condo", "Station Side", "Library") + var/static/list/hotel_maps = list("Generic", "Apartment", "Beach Condo", "Station Side", "Library", "Cultist's Cavern", "Winter Woods", "Evacuated Station", "Prison") //standart - hilber's hotel room //apartment - see /datum/map_template/ghost_cafe_rooms //beach condo - Beach themed apartment @@ -24,6 +24,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) var/datum/map_template/ghost_cafe_rooms/cultcave/ghost_cafe_rooms_cultcave var/datum/map_template/ghost_cafe_rooms/winterwoods/ghost_cafe_rooms_winterwoods var/datum/map_template/ghost_cafe_rooms/evacuationstation/ghost_cafe_rooms_evacuationstation + var/datum/map_template/ghost_cafe_rooms/prisoninfdorm/ghost_cafe_rooms_prisoninfdorm //BUBBER EDIT END var/datum/map_template/hilbertshotel/hotelRoomTemp @@ -54,6 +55,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) ghost_cafe_rooms_cultcave = new() ghost_cafe_rooms_winterwoods = new() ghost_cafe_rooms_evacuationstation = new() + ghost_cafe_rooms_prisoninfdorm = new() //BUBBER EDIT END var/area/currentArea = get_area(src) @@ -217,6 +219,10 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) else if(chosen_room == "Evacuated Station") load_from = ghost_cafe_rooms_evacuationstation + + else if(chosen_room == "Prison") + load_from = ghost_cafe_rooms_prisoninfdorm + //BUBBER EDIT END diff --git a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm index 05198ae0c54..1cf136ee858 100644 --- a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm +++ b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm @@ -54,3 +54,7 @@ /datum/map_template/ghost_cafe_rooms/evacuationstation name = "Evacuated Station" mappath = "modular_skyrat/modules/hotel_rooms/evacuationstation.dmm" + +/datum/map_template/ghost_cafe_rooms/prisoninfdorm + name = "Prison" + mappath = "modular_skyrat/modules/hotel_rooms/prisoninfdorm.dmm" diff --git a/modular_skyrat/modules/hotel_rooms/prisoninfdorm.dmm b/modular_skyrat/modules/hotel_rooms/prisoninfdorm.dmm new file mode 100644 index 00000000000..3eb9854434a --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/prisoninfdorm.dmm @@ -0,0 +1,96 @@ +"av" = (/obj/machinery/hydroponics/constructable/fullupgrade,/obj/machinery/hydroponics/constructable/fullupgrade,/obj/machinery/light/directional/west,/turf/open/floor/grass,/area/misc/hilbertshotel) +"cm" = (/obj/machinery/oven/range,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"cP" = (/obj/structure/closet/generic,/turf/open/floor/iron,/area/misc/hilbertshotel) +"di" = (/obj/structure/chair/stool/directional/south,/turf/open/floor/iron,/area/misc/hilbertshotel) +"eP" = (/obj/item/wallframe/status_display,/turf/closed/indestructible/reinforced,/area/misc/hilbertshotel) +"eV" = (/obj/item/storage/box/nif_ghost_box/ghost_role,/obj/structure/closet/crate/trashcart/laundry,/turf/open/floor/iron,/area/misc/hilbertshotel) +"fH" = (/obj/item/reagent_containers/cup/bottle/hexacrocin{pixel_x = -9},/obj/machinery/light/very_dim/directional/north,/turf/open/floor/iron,/area/misc/hilbertshotel) +"ga" = (/obj/machinery/door/airlock,/turf/open/floor/iron,/area/misc/hilbertshotel) +"hz" = (/obj/item/stack/license_plates/empty/fifty,/obj/item/stack/license_plates/empty/fifty,/obj/item/stack/license_plates/empty/fifty,/obj/structure/closet/crate/preopen,/turf/open/floor/iron,/area/misc/hilbertshotel) +"ik" = (/obj/structure/table/reinforced,/obj/machinery/reagentgrinder{pixel_y = 10; pixel_x = -5},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"kP" = (/obj/structure/closet/crate/hydroponics,/obj/item/reagent_containers/cup/beaker/large,/obj/item/reagent_containers/cup/beaker/large,/obj/item/reagent_containers/cup/beaker/large,/obj/item/storage/bag/plants,/turf/open/floor/grass,/area/misc/hilbertshotel) +"kX" = (/obj/structure/hoop{dir = 8},/obj/effect/turf_decal/trimline/white/filled/line{dir = 4},/obj/machinery/light/directional/east,/turf/open/floor/iron,/area/misc/hilbertshotel) +"lD" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/closet/secure_closet/freezer/kitchen/all_access,/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"mk" = (/obj/machinery/vending/hydronutrients{default_price = 0; extra_price = 0; fair_market_price = 0},/turf/open/floor/grass,/area/misc/hilbertshotel) +"mX" = (/obj/machinery/light/warm/dim/directional/east,/turf/open/floor/iron,/area/misc/hilbertshotel) +"nG" = (/obj/machinery/prisongate,/turf/open/floor/iron,/area/misc/hilbertshotel) +"og" = (/obj/machinery/grill,/obj/machinery/griddle,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"rT" = (/obj/structure/table/reinforced,/obj/item/storage/box/handcuffs{pixel_y = 2; pixel_x = 5},/turf/open/floor/iron,/area/misc/hilbertshotel) +"rZ" = (/obj/structure/chair/greyscale{dir = 1},/turf/open/floor/iron,/area/misc/hilbertshotel) +"sv" = (/obj/structure/table,/obj/machinery/light/floor,/turf/open/floor/iron,/area/misc/hilbertshotel) +"ui" = (/obj/structure/window/reinforced/spawner/directional/north{dir = 4},/obj/item/shovel/spade{pixel_x = 4; pixel_y = 4},/obj/item/hatchet{pixel_x = 10; pixel_y = 5},/obj/item/secateurs{pixel_y = 5; pixel_x = -10},/obj/item/plant_analyzer{pixel_y = -2},/obj/structure/table/glass,/turf/open/floor/grass,/area/misc/hilbertshotel) +"uk" = (/obj/effect/turf_decal/trimline/white/filled/line{dir = 6},/turf/open/floor/iron,/area/misc/hilbertshotel) +"uC" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/vending/dinnerware{default_price = 0; extra_price = 0; fair_market_price = 0},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"vT" = (/obj/machinery/light/directional/south,/turf/open/floor/iron,/area/misc/hilbertshotel) +"ws" = (/obj/machinery/vending/security/noaccess,/obj/item/toy/figure/secofficer{pixel_y = 16},/turf/open/floor/iron,/area/misc/hilbertshotel) +"xh" = (/obj/structure/chair/greyscale,/turf/open/floor/iron,/area/misc/hilbertshotel) +"xI" = (/obj/machinery/biogenerator,/obj/structure/window/reinforced/spawner/directional/north,/turf/open/floor/grass,/area/misc/hilbertshotel) +"yi" = (/obj/structure/table,/obj/item/toy/cards/deck/cas{pixel_y = 10; pixel_x = 8},/obj/item/toy/cards/deck/cas/black,/turf/open/floor/iron,/area/misc/hilbertshotel) +"yr" = (/obj/effect/decal/cleanable/cum/femcum,/turf/open/floor/iron,/area/misc/hilbertshotel) +"yD" = (/obj/structure/sign/poster/official/walk,/turf/closed/indestructible/reinforced,/area/misc/hilbertshotel) +"yV" = (/obj/effect/turf_decal/trimline/white/filled/line{dir = 10},/turf/open/floor/iron,/area/misc/hilbertshotel) +"zo" = (/obj/structure/sink/kitchen/directional/east,/turf/open/floor/grass,/area/misc/hilbertshotel) +"zx" = (/obj/structure/table/reinforced{pixel_y = 0},/obj/item/storage/box/prisoner{pixel_y = 4; pixel_x = -6},/turf/open/floor/iron,/area/misc/hilbertshotel) +"zU" = (/obj/structure/hoop{dir = 4},/obj/effect/turf_decal/trimline/white/filled/line{dir = 8},/obj/machinery/light/directional/west,/turf/open/floor/iron,/area/misc/hilbertshotel) +"Ab" = (/obj/item/toy/basketball{pixel_x = 0},/turf/open/floor/iron,/area/misc/hilbertshotel) +"AP" = (/obj/structure/chair/comfy/black,/obj/item/clothing/glasses/hypno{pixel_y = 8; pixel_x = -3},/obj/item/toy/figure/hos,/turf/open/floor/iron,/area/misc/hilbertshotel) +"BT" = (/obj/machinery/light/directional/south,/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"Cf" = (/obj/machinery/hydroponics/constructable/fullupgrade,/turf/open/floor/grass,/area/misc/hilbertshotel) +"Ck" = (/obj/structure/table/reinforced,/obj/item/clothing/suit/jacket/straight_jacket{pixel_y = -5},/obj/item/clothing/mask/muzzle{pixel_y = 5},/obj/item/clothing/glasses/blindfold{pixel_y = 7},/turf/open/floor/iron,/area/misc/hilbertshotel) +"Cm" = (/obj/structure/window/reinforced{dir = 8},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"Cx" = (/obj/machinery/plate_press,/turf/open/floor/iron,/area/misc/hilbertshotel) +"Cz" = (/turf/closed/indestructible/hoteldoor{icon_state = "door_closed"; icon = 'icons/obj/doors/puzzledoor/default.dmi'},/area/misc/hilbertshotel) +"CD" = (/obj/structure/window/reinforced/spawner/directional/east,/turf/open/floor/grass,/area/misc/hilbertshotel) +"CZ" = (/obj/structure/sign/poster/contraband/got_wood,/turf/closed/indestructible/reinforced,/area/misc/hilbertshotel) +"El" = (/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"Fa" = (/obj/structure/falsewall/reinforced,/turf/open/floor/iron,/area/misc/hilbertshotel) +"Fp" = (/obj/structure/window/reinforced/spawner/directional/east,/obj/structure/window/reinforced/spawner/directional/north,/obj/machinery/seed_extractor,/turf/open/floor/grass,/area/misc/hilbertshotel) +"FV" = (/turf/closed/indestructible/fakeglass,/area/misc/hilbertshotel) +"Gw" = (/obj/machinery/washing_machine,/turf/open/floor/iron,/area/misc/hilbertshotel) +"GA" = (/turf/open/floor/iron/edge{dir = 1},/area/misc/hilbertshotel) +"Hq" = (/turf/open/floor/grass,/area/misc/hilbertshotel) +"Io" = (/obj/machinery/door/airlock/security/glass,/turf/open/floor/iron,/area/misc/hilbertshotel) +"Iu" = (/obj/structure/bed/double,/obj/effect/spawner/random/bedsheet/double,/turf/open/floor/iron/edge{dir = 1},/area/misc/hilbertshotel) +"Jq" = (/obj/machinery/washing_machine,/obj/item/toy/figure/prisoner{pixel_y = 10},/turf/open/floor/iron,/area/misc/hilbertshotel) +"La" = (/obj/machinery/door/airlock/hatch,/turf/open/floor/iron,/area/misc/hilbertshotel) +"Lw" = (/obj/structure/sign/poster/official/boombox,/turf/closed/indestructible/reinforced,/area/misc/hilbertshotel) +"LF" = (/obj/structure/table,/turf/open/floor/iron,/area/misc/hilbertshotel) +"LV" = (/turf/closed/indestructible/reinforced,/area/misc/hilbertshotel) +"Md" = (/obj/structure/table/reinforced,/obj/item/kitchen/rollingpin{pixel_x = -10; pixel_y = 5},/obj/item/knife/kitchen{pixel_y = 5; pixel_x = 10},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"MR" = (/obj/machinery/vending/dorms/prison,/obj/item/toy/figure/assistant{pixel_y = 16},/turf/open/floor/iron,/area/misc/hilbertshotel) +"Nt" = (/obj/machinery/door/window{dir = 8},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"NN" = (/turf/open/floor/iron,/area/misc/hilbertshotel) +"Od" = (/obj/machinery/door/window/brigdoor/left/directional/east,/turf/open/floor/grass,/area/misc/hilbertshotel) +"Oj" = (/obj/effect/turf_decal/trimline/white/filled/line{dir = 9},/turf/open/floor/iron,/area/misc/hilbertshotel) +"OY" = (/obj/structure/window/reinforced/spawner/directional/north,/turf/open/floor/grass,/area/misc/hilbertshotel) +"PR" = (/obj/machinery/light/directional/north,/turf/open/floor/iron,/area/misc/hilbertshotel) +"QG" = (/obj/effect/turf_decal/trimline/white/filled/line{dir = 1},/turf/open/floor/iron,/area/misc/hilbertshotel) +"QJ" = (/obj/machinery/vending/hydroseeds{default_price = 0; extra_price = 0; fair_market_price = 0},/obj/structure/window/reinforced/spawner/directional/east,/obj/item/toy/figure/botanist{pixel_y = 16},/turf/open/floor/grass,/area/misc/hilbertshotel) +"Si" = (/obj/structure/table/reinforced,/obj/structure/table/reinforced,/obj/machinery/processor,/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"SZ" = (/obj/structure/table,/obj/item/toy/figure/ian{pixel_x = 8},/obj/item/toy/figure/hop{pixel_y = 2},/obj/item/toy/figure/ian{pixel_x = -4; pixel_y = 2},/obj/item/toy/figure/ian{pixel_x = 0},/obj/item/toy/figure/ian{pixel_x = 4; pixel_y = 2},/obj/item/toy/figure/ian{pixel_x = -8},/turf/open/floor/iron,/area/misc/hilbertshotel) +"TT" = (/obj/structure/closet,/obj/item/market_uplink,/obj/effect/spawner/random/entertainment/coin,/obj/effect/spawner/random/entertainment/coin,/obj/item/gun/ballistic/automatic/l6_saw/toy,/obj/effect/spawner/random/entertainment/toy_figure,/obj/item/pen/sleepy,/turf/open/floor/iron,/area/misc/hilbertshotel) +"Vt" = (/obj/machinery/deepfryer,/obj/structure/window/reinforced{dir = 1},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"VM" = (/obj/machinery/vending/sustenance,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/toy/figure/chef{pixel_y = 15},/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"XN" = (/obj/structure/bed,/turf/open/floor/iron,/area/misc/hilbertshotel) +"YN" = (/obj/effect/turf_decal/trimline/white/filled/line,/turf/open/floor/iron,/area/misc/hilbertshotel) +"YR" = (/obj/machinery/smartfridge,/turf/open/floor/iron/checker,/area/misc/hilbertshotel) +"Za" = (/obj/item/clothing/mask/leatherwhip{pixel_x = -9; pixel_y = 4},/turf/open/floor/iron,/area/misc/hilbertshotel) +"Zj" = (/obj/effect/turf_decal/trimline/white/filled/line{dir = 5},/turf/open/floor/iron,/area/misc/hilbertshotel) + +(1,1,1) = {" +LVLVLVLVLVFVFVFVFVFVFVLVLVLVLV +LVGAPRIuLVOjQGQGQGQGZjLVAPfHLV +LVNNNNNNLVzUNNAbNNNNkXLVyrZaLV +LVgaePCZCZyVYNYNYNYNukLVFaLVLV +LVNNMRPRNNNNNNNNNNNNNNPReVJqLV +LVNNNNNNNNNNNNNNNNdiNNdiNNGwLV +LVxIOYFpNNxhxhNNsvCxhzCxsvNNLV +LVCfHquiNNyiSZNNVMuCogcmVtlDLV +LVavHqOdNNLFLFNNCmElElElElElLV +LVzoHqCDNNrZrZNNNtElikSiMdElLV +LVkPmkQJNNvTNNNNYRElElBTElElLV +LVLVyDFVFVLwIonGLVLVLVLVLVLVLV +LVcPrTzxwsPRNNNNNNNNPRLaNNmXLV +CzNNNNNNNNNNNNNNNNTTCkLVNNXNLV +LVLVLVLVLVLVLVLVLVLVLVLVLVLVLV +"} From f109fd60e8a31e8d4636d1428a689e2f86c490f2 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 14 Feb 2025 03:12:40 +0100 Subject: [PATCH 046/120] Automatic changelog for PR #3082 [ci skip] --- html/changelogs/AutoChangeLog-pr-3082.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3082.yml diff --git a/html/changelogs/AutoChangeLog-pr-3082.yml b/html/changelogs/AutoChangeLog-pr-3082.yml new file mode 100644 index 00000000000..213b9fc6b68 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3082.yml @@ -0,0 +1,5 @@ +author: "Vanilla1040" +delete-after: True +changes: + - map: "Added new Hotel room" + - bugfix: "Fixed the other hotel rooms not showing up from a different PR" \ No newline at end of file From 184a5631b6d31f3354d5a4110a735858e25defe7 Mon Sep 17 00:00:00 2001 From: "Col.Rice" <59167966+EliteRiceFarmer@users.noreply.github.com> Date: Fri, 14 Feb 2025 09:13:23 +0700 Subject: [PATCH 047/120] Update barricade.dm (#3087) ## About The Pull Request I broke the barricade in the previous PR. I fixed it. ## Why It's Good For The Game It's a bugfix for the previous PR. ## Changelog :cl: fix: Plasteel barricade delay. Now it's close properly. --- modular_skyrat/modules/barricades/code/barricade.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modular_skyrat/modules/barricades/code/barricade.dm b/modular_skyrat/modules/barricades/code/barricade.dm index a7c4b36b965..43156da3c95 100644 --- a/modular_skyrat/modules/barricades/code/barricade.dm +++ b/modular_skyrat/modules/barricades/code/barricade.dm @@ -671,6 +671,8 @@ portable_type = /obj/item/quickdeploy/barricade/plasteel ///Either we react with other cades next to us ie when opening or so var/linked = FALSE + ///Open/close delay, for customisation. And because I was asked to - won't customise anything myself. + var/toggle_delay = 0 SECONDS /obj/structure/deployable_barricade/metal/plasteel/crowbar_act(mob/living/user, obj/item/I) switch(build_state) @@ -702,6 +704,10 @@ if(.) return + if(do_after(user, toggle_delay, src)) + toggle_open(null, user) + + /obj/structure/deployable_barricade/metal/plasteel/proc/toggle_open(state, mob/living/user) if(state == closed) return From 74c88ffd96d25514afdbca1382356824ee0dcd11 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 14 Feb 2025 03:13:47 +0100 Subject: [PATCH 048/120] Automatic changelog for PR #3087 [ci skip] --- html/changelogs/AutoChangeLog-pr-3087.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3087.yml diff --git a/html/changelogs/AutoChangeLog-pr-3087.yml b/html/changelogs/AutoChangeLog-pr-3087.yml new file mode 100644 index 00000000000..1742094c6d1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3087.yml @@ -0,0 +1,4 @@ +author: "EliteRiceFarmer" +delete-after: True +changes: + - bugfix: "Plasteel barricade delay. Now it's close properly." \ No newline at end of file From e19cf704ebef36f52e6dd26c01a43040e32f1c8f Mon Sep 17 00:00:00 2001 From: Roxy <75404941+TealSeer@users.noreply.github.com> Date: Thu, 13 Feb 2025 20:13:56 -0600 Subject: [PATCH 049/120] Fix create antag verb not respecting be antag pref (#3092) ## About The Pull Request What the title says ## Why It's Good For The Game Fixes #3080 ## Proof Of Testing I PROMISE I did I dunno how to prove it --- modular_skyrat/modules/oneclickantag/code/oneclickantag.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm b/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm index a5a8b3d4498..f8a919d5074 100644 --- a/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm +++ b/modular_skyrat/modules/oneclickantag/code/oneclickantag.dm @@ -62,6 +62,8 @@ If anyone can figure out how to get Obsessed to work I would be very appreciativ return FALSE if(!(targetrole in applicant.client.prefs.be_special)) return FALSE + if(!applicant.client.prefs.read_preference(/datum/preference/toggle/be_antag)) + return FALSE if(onstation) var/turf/T = get_turf(applicant) if(!is_station_level(T.z)) From f71f98279eefc234b39b2d06d02936ddaafbcb16 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 14 Feb 2025 02:25:54 +0000 Subject: [PATCH 050/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3076.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3082.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3087.yml | 4 ---- html/changelogs/archive/2025-02.yml | 8 ++++++++ 4 files changed, 8 insertions(+), 14 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3076.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3082.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3087.yml diff --git a/html/changelogs/AutoChangeLog-pr-3076.yml b/html/changelogs/AutoChangeLog-pr-3076.yml deleted file mode 100644 index c27941b02ef..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3076.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Vanilla1040" -delete-after: True -changes: - - rscadd: "Readds the Large Hypobox being Printable in the Medical Lathe" - - rscadd: "Adds Advanced Hypospray into imports" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3082.yml b/html/changelogs/AutoChangeLog-pr-3082.yml deleted file mode 100644 index 213b9fc6b68..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3082.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Vanilla1040" -delete-after: True -changes: - - map: "Added new Hotel room" - - bugfix: "Fixed the other hotel rooms not showing up from a different PR" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3087.yml b/html/changelogs/AutoChangeLog-pr-3087.yml deleted file mode 100644 index 1742094c6d1..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3087.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "EliteRiceFarmer" -delete-after: True -changes: - - bugfix: "Plasteel barricade delay. Now it's close properly." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 2c97b28e8d5..09a2dc49a49 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -102,3 +102,11 @@ - map: Added 'Cultist's Cavern' Infinite Dorm. - map: Added 'Winter Woods' Infinite Dorm. - map: Added 'Evacuated Station' Infinite Dorm. +2025-02-14: + EliteRiceFarmer: + - bugfix: Plasteel barricade delay. Now it's close properly. + Vanilla1040: + - rscadd: Readds the Large Hypobox being Printable in the Medical Lathe + - rscadd: Adds Advanced Hypospray into imports + - map: Added new Hotel room + - bugfix: Fixed the other hotel rooms not showing up from a different PR From 631d0f76f44281f3aac551c88a5a7c14d0c68e5a Mon Sep 17 00:00:00 2001 From: JustMeTheIInd <145101584+JustMeTheIInd@users.noreply.github.com> Date: Fri, 14 Feb 2025 20:39:40 +0100 Subject: [PATCH 051/120] Adds the unique Holobadge variants to the loadout menu. (#3096) ## About The Pull Request (This is my very first PR. Do bear with me here.) This adds the three unique holobadge variants (Detective, Warden, HoS) to the loadout neck menu. Proper job whitelists and all ## Why It's Good For The Game Badges cool, customization cool, what not to like? ## Proof Of Testing ![assistant](https://github.com/user-attachments/assets/2179009a-edbb-4fbc-b901-055bbb7a42d3) ![warden](https://github.com/user-attachments/assets/e819f35b-6df3-4354-b306-137eead82efb) ![hos](https://github.com/user-attachments/assets/f12b9c39-ba23-4b7f-9b50-a13b101c4bcc) ![dettt](https://github.com/user-attachments/assets/11915c50-a5ad-4582-8b9f-5a0e4326e4a8) ![loadoutmenu](https://github.com/user-attachments/assets/2ceaf8be-00aa-4a07-af3b-a4171873865d) ## Changelog :cl: add:Added the unique variants of the Holobadge to the loadout neck section. --- .../code/modules/loadout/categories/neck.dm | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modular_zubbers/code/modules/loadout/categories/neck.dm b/modular_zubbers/code/modules/loadout/categories/neck.dm index 958e5f4dd74..8da13630c17 100644 --- a/modular_zubbers/code/modules/loadout/categories/neck.dm +++ b/modular_zubbers/code/modules/loadout/categories/neck.dm @@ -23,3 +23,18 @@ name = "Pride Scarf" item_path = /obj/item/clothing/neck/scarf/pride can_be_reskinned = TRUE + +/datum/loadout_item/neck/holobadge/hos + name = "Head of Security's Holobadge" + item_path = /obj/item/clothing/accessory/badge/holo/hos + restricted_roles = list(JOB_HEAD_OF_SECURITY) + +/datum/loadout_item/neck/holobadge/warden + name = "Warden's Holobadge" + item_path = /obj/item/clothing/accessory/badge/holo/warden + restricted_roles = list(JOB_WARDEN) + +/datum/loadout_item/neck/holobadge/detective + name = "Detective's Holobadge" + item_path = /obj/item/clothing/accessory/badge/holo/detective + restricted_roles = list(JOB_DETECTIVE) From 371eaa1a610dca675669ad9fb61e094e433c105e Mon Sep 17 00:00:00 2001 From: nevimer <77420409+nevimer@users.noreply.github.com> Date: Fri, 14 Feb 2025 14:47:52 -0500 Subject: [PATCH 052/120] Investigate Stat Panel as a Stutter cause (#2201) Test PR --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- code/modules/asset_cache/transports/asset_transport.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/asset_cache/transports/asset_transport.dm b/code/modules/asset_cache/transports/asset_transport.dm index 62ca18fe82a..5d2b4bfb0b3 100644 --- a/code/modules/asset_cache/transports/asset_transport.dm +++ b/code/modules/asset_cache/transports/asset_transport.dm @@ -155,7 +155,7 @@ if (send_assets(client, file)) if (!(--filerate)) filerate = startingfilerate - client.browse_queue_flush() +// client.browse_queue_flush() // BUBBER EDIT stoplag(0) //queuing calls like this too quickly can cause issues in some client versions /// Check the config is valid to load this transport From c449b1ab724e556fef74c467435b59a00d0db07c Mon Sep 17 00:00:00 2001 From: nevimer <77420409+nevimer@users.noreply.github.com> Date: Fri, 14 Feb 2025 21:18:07 -0500 Subject: [PATCH 053/120] Crew Monitor Console Alarm Logic change to TG's logic for determination if someone counts (#3097) ## About The Pull Request Changes the alarm logic to share the same for consideration if it beeps based on tg's logic for crew monitor entries. ## Why It's Good For The Game consistency, people wouldn't beep on icebox but would on the same z as the console. ## Proof Of Testing
Screenshots/Videos
## Changelog :cl: fix: crew monitor alarm logic is updated to work with planetary z's /:cl: --- modular_zubbers/code/game/machinery/crew_monitor.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modular_zubbers/code/game/machinery/crew_monitor.dm b/modular_zubbers/code/game/machinery/crew_monitor.dm index 94c4375d97f..6a5fea92e0c 100644 --- a/modular_zubbers/code/game/machinery/crew_monitor.dm +++ b/modular_zubbers/code/game/machinery/crew_monitor.dm @@ -20,10 +20,14 @@ for(var/mob/living/carbon/human/mob in GLOB.suit_sensors_list) + var/turf/pos = get_turf(mob) + if(!istype(mob)) continue - if(mob.z != src.z && !HAS_TRAIT(mob, TRAIT_MULTIZ_SUIT_SENSORS)) + + if(pos.z != z && (!is_station_level(pos.z) || !is_station_level(z)) && !HAS_TRAIT(mob, TRAIT_MULTIZ_SUIT_SENSORS)) continue + var/obj/item/clothing/under/uniform = mob.w_uniform if(uniform.sensor_mode == SENSOR_COORDS && (uniform.has_sensor != BROKEN_SENSORS) && (HAS_TRAIT(mob, TRAIT_CRITICAL_CONDITION) || mob.stat == DEAD)) if(mob.get_dnr()) // DNR won't beep anymore From 64a1634bf24d1f13584c86f52f07f88890844db7 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 15 Feb 2025 03:18:32 +0100 Subject: [PATCH 054/120] Automatic changelog for PR #3097 [ci skip] --- html/changelogs/AutoChangeLog-pr-3097.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3097.yml diff --git a/html/changelogs/AutoChangeLog-pr-3097.yml b/html/changelogs/AutoChangeLog-pr-3097.yml new file mode 100644 index 00000000000..362647add80 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3097.yml @@ -0,0 +1,4 @@ +author: "nevimer" +delete-after: True +changes: + - bugfix: "crew monitor alarm logic is updated to work with planetary z's" \ No newline at end of file From 310edf3eec43868fada40fc26bcf485215e4c042 Mon Sep 17 00:00:00 2001 From: davethwave Date: Thu, 13 Feb 2025 18:49:00 -0700 Subject: [PATCH 055/120] removes symptom weights by reverting #83456 (#89372) ## About The Pull Request Reverts PR #83456 which added the weight system as well as applying it to two symptoms, sneezing, and coughing. ## Why It's Good For The Game The weight system was originally added to in the hopes a general nerf to dangerous diseases. This also had the side effect of reducing a decent amount of potential from good diseases by a fair bit as well. The PR I am reverting was merged during a time where the Virology job was just removed and people were throwing nerfs at it left and right to see what would stick. A minor nerf to Virology from #83459 and #83423 however has already solved most of the issues regarding dangerous diseases by allowing people with low resistance diseases to self-cure themselves automatically as well as reducing the overall stage speed by a fair bit allowing for a lot more time to make up a cure and respond in a timely manner. While the latter made airborne spreading methods overall less effective. This was ultimately done at a point where several other nerfs or changes regarding advanced diseases were made with the purpose of nerfing the Virology section of the game even further to a ridiculous degree such as #83458 and #83454. As a side effect, this also closes #86952. It doesn't help that the PR didn't make a token effort in making the change known in a way ingame to anyone working on Virology. Thus making it seem as if the symptom cap was reduced to 5 for most cases for unknown reasons causing a lot of frustration where even reaching to other people in a well populated server wouldn't know why the symptom cap would only allow 5 symptoms. ## Changelog :cl: del: Removed the weighting of viro symptoms /:cl: Co-authored-by: David Andersen --- code/datums/diseases/advance/advance.dm | 11 ++--------- code/datums/diseases/advance/symptoms/cough.dm | 1 - code/datums/diseases/advance/symptoms/sneeze.dm | 1 - code/datums/diseases/advance/symptoms/symptoms.dm | 3 --- tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx | 7 +------ 5 files changed, 3 insertions(+), 20 deletions(-) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 82099a7532b..5efa1554baf 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -266,7 +266,6 @@ properties["severity"] = round((properties["severity"] / 2), 1) properties["severity"] *= (symptoms.len / VIRUS_SYMPTOM_LIMIT) //fewer symptoms, less severity properties["severity"] = round(clamp(properties["severity"], 1, 7), 1) - properties["capacity"] = get_symptom_weights() // Assign the properties that are in the list. /datum/disease/advance/proc/assign_properties() @@ -342,7 +341,7 @@ // Will generate a random cure, the more resistance the symptoms have, the harder the cure. /datum/disease/advance/proc/generate_cure() if(properties?.len) - var/res = clamp(properties["resistance"] - (symptoms.len * 0.5), 1, advance_cures.len) + var/res = clamp(properties["resistance"] - (symptoms.len / 2), 1, advance_cures.len) if(res == oldres) return cures = list(pick(advance_cures[res])) @@ -405,7 +404,7 @@ /datum/disease/advance/proc/AddSymptom(datum/symptom/S) if(HasSymptom(S)) return - while(get_symptom_weights() + S.weight > VIRUS_SYMPTOM_LIMIT) + if(symptoms.len >= VIRUS_SYMPTOM_LIMIT) RemoveSymptom(pick(symptoms)) symptoms += S S.OnAdd(src) @@ -422,12 +421,6 @@ S.name += " (neutered)" S.OnRemove(src) -/// How much of the symptom capacity is currently being used? -/datum/disease/advance/proc/get_symptom_weights() - . = 0 - for(var/datum/symptom/symptom as anything in symptoms) - . += symptom.weight - /* Static Procs diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm index 6b46667741c..2648ece75cf 100644 --- a/code/datums/diseases/advance/symptoms/cough.dm +++ b/code/datums/diseases/advance/symptoms/cough.dm @@ -10,7 +10,6 @@ name = "Cough" desc = "The virus irritates the throat of the host, causing occasional coughing. Each cough will try to infect bystanders who are within 1 tile of the host with the virus." illness = "Jest Infection" - weight = 2 stealth = -1 resistance = 3 stage_speed = 1 diff --git a/code/datums/diseases/advance/symptoms/sneeze.dm b/code/datums/diseases/advance/symptoms/sneeze.dm index 0e54bfad385..175c5c3c762 100644 --- a/code/datums/diseases/advance/symptoms/sneeze.dm +++ b/code/datums/diseases/advance/symptoms/sneeze.dm @@ -10,7 +10,6 @@ name = "Sneezing" desc = "The virus causes irritation of the nasal cavity, making the host sneeze occasionally. Sneezes from this symptom will spread the virus in a 4 meter cone in front of the host." illness = "Bard Flu" - weight = 2 stealth = -2 resistance = 3 stage_speed = 0 diff --git a/code/datums/diseases/advance/symptoms/symptoms.dm b/code/datums/diseases/advance/symptoms/symptoms.dm index 5a4331b3c61..28ba45f8de4 100644 --- a/code/datums/diseases/advance/symptoms/symptoms.dm +++ b/code/datums/diseases/advance/symptoms/symptoms.dm @@ -39,8 +39,6 @@ var/naturally_occuring = TRUE ///If the symptom requires an organ for the effects to function, robotic organs are immune to disease unless inorganic biology symptom is present var/required_organ - /// How much space does this symptom use? - var/weight = 1 /datum/symptom/New() var/list/S = SSdisease.list_symptoms @@ -108,7 +106,6 @@ var/list/data = list() data["name"] = name data["desc"] = desc - data["weight"] = weight data["stealth"] = stealth data["resistance"] = resistance data["stage_speed"] = stage_speed diff --git a/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx b/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx index 5fa92583f2e..cdbb49f715f 100644 --- a/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx +++ b/tgui/packages/tgui/interfaces/Pandemic/Symptom.tsx @@ -70,7 +70,7 @@ const Thresholds = (props) => { /** Displays the numerical trait modifiers for a virus symptom */ const Traits = (props) => { const { - symptom: { level, weight, resistance, stage_speed, stealth, transmission }, + symptom: { level, resistance, stage_speed, stealth, transmission }, } = props; return ( @@ -81,11 +81,6 @@ const Traits = (props) => { {level} - - - {weight} - - {resistance} From 7d33db565238732b5822dfead06e7e3395f027e3 Mon Sep 17 00:00:00 2001 From: Vanilla1040 <94153240+Vanilla1040@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:48:27 +0100 Subject: [PATCH 056/120] Adds borgmat to Synths *Turf (#3088) ## About The Pull Request Adds the borg mat to synths as of a request from AvianAviator ## Why It's Good For The Game Comfy Mat for synths now ## Proof Of Testing Works perfectly fine on localhost ## Changelog :cl: add: Adds the Borg mat to Synth's *Turf /:cl: --- .../modules/emotes/code/additionalemotes/turf_emote.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm b/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm index 73451dbfbb5..833bfb948ac 100644 --- a/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm +++ b/modular_skyrat/modules/emotes/code/additionalemotes/turf_emote.dm @@ -50,6 +50,8 @@ else user.allowed_turfs += "holoseat" + user.allowed_turfs += "borgmat" + //wings if((istype(user.get_organ_slot(ORGAN_SLOT_WINGS), /obj/item/organ/external/wings/moth)) || HAS_TRAIT(user, TRAIT_SPARKLE_ASPECT)) user.allowed_turfs += "dust" //moth's dust ✨ From 5274d5f628d7e7f5dda0bf6d1211ac540b2a6373 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:48:51 +0100 Subject: [PATCH 057/120] Automatic changelog for PR #3088 [ci skip] --- html/changelogs/AutoChangeLog-pr-3088.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3088.yml diff --git a/html/changelogs/AutoChangeLog-pr-3088.yml b/html/changelogs/AutoChangeLog-pr-3088.yml new file mode 100644 index 00000000000..13086c6d2c1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3088.yml @@ -0,0 +1,4 @@ +author: "Vanilla1040" +delete-after: True +changes: + - rscadd: "Adds the Borg mat to Synth's *Turf" \ No newline at end of file From 5014bf42232726f8d23841d4ebf16b9cccbad3cf Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sat, 15 Feb 2025 23:20:23 +0000 Subject: [PATCH 058/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3088.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3097.yml | 4 ---- html/changelogs/archive/2025-02.yml | 5 +++++ 3 files changed, 5 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3088.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3097.yml diff --git a/html/changelogs/AutoChangeLog-pr-3088.yml b/html/changelogs/AutoChangeLog-pr-3088.yml deleted file mode 100644 index 13086c6d2c1..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3088.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Vanilla1040" -delete-after: True -changes: - - rscadd: "Adds the Borg mat to Synth's *Turf" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3097.yml b/html/changelogs/AutoChangeLog-pr-3097.yml deleted file mode 100644 index 362647add80..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3097.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "nevimer" -delete-after: True -changes: - - bugfix: "crew monitor alarm logic is updated to work with planetary z's" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 09a2dc49a49..4bfdeaee422 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -110,3 +110,8 @@ - rscadd: Adds Advanced Hypospray into imports - map: Added new Hotel room - bugfix: Fixed the other hotel rooms not showing up from a different PR +2025-02-15: + Vanilla1040: + - rscadd: Adds the Borg mat to Synth's *Turf + nevimer: + - bugfix: crew monitor alarm logic is updated to work with planetary z's From bccd5ef13ca4e8a5063e35e2bbe6984b99ae6b8e Mon Sep 17 00:00:00 2001 From: YakumoChen Date: Sat, 15 Feb 2025 19:08:18 -0500 Subject: [PATCH 059/120] Trims excessive roundstart security guns (#3047) ## About The Pull Request This PR removes the skyrat-added "gun beacons" that security officers and the Head of Security are spawned into the game with. In addition, moves the silver glock case from the Head of Security's locker to the Warden's locker ## Why It's Good For The Game Security officers already get a glock in their lockers (a bubber-added glock) as a sidearm to use, there is little reason for them to spawn with a SECOND sidearm on their person. Given this is Bubber, I preferred to remove the Skyrat option over the native Bubber one. This PR was originally intended to remove some of the **FIVE GUNS** that the Head of Security has personally available to him at round-start. This PR trimmed it down to three, and I gave the Warden a little love by giving them the cool glock instead (the warden never gets anything cool...). If the HoS really wants a glock or something else, they have the means. ## Proof Of Testing
Screenshots/Videos
## Changelog :cl: balance: Removed "sidearm beacons" from spawning SecOff and HoS inventories. Complimentary glocks are still available in security officer lockers. balance: Gave the HoS's silver glock to the Warden. The Head of Security only has three guns at roundstart now! How will he ever recover?? /:cl: --- code/modules/jobs/job_types/head_of_security.dm | 1 - code/modules/jobs/job_types/security_officer.dm | 1 - .../code/modules/security/security_glock/lockers.dm | 4 ++-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index c47bcb75521..45c5b5b54a8 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -57,7 +57,6 @@ suit_store = /obj/item/gun/energy/e_gun //BUBBER EDIT - REVERTS SKYRAT REMOVAL backpack_contents = list( /obj/item/evidencebag = 1, - /obj/item/choice_beacon/security_pistol = 1, //Skyrat Addition ) belt = /obj/item/modular_computer/pda/heads/hos ears = /obj/item/radio/headset/heads/hos/alt diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index f2ad374b5d1..6e4630e7b87 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -223,7 +223,6 @@ GLOBAL_LIST_EMPTY(security_officer_distribution) suit_store = /obj/item/gun/energy/disabler backpack_contents = list( /obj/item/evidencebag = 1, - /obj/item/choice_beacon/security_pistol = 1, //SKYRAT ADDITION /obj/item/flashlight/seclite = 1, // BUBBER EDIT ADDITION ) belt = /obj/item/modular_computer/pda/security diff --git a/modular_zubbers/code/modules/security/security_glock/lockers.dm b/modular_zubbers/code/modules/security/security_glock/lockers.dm index 58eec4dc08f..531d184e40b 100644 --- a/modular_zubbers/code/modules/security/security_glock/lockers.dm +++ b/modular_zubbers/code/modules/security/security_glock/lockers.dm @@ -2,6 +2,6 @@ . = ..() new /obj/item/storage/toolbox/guncase/skyrat/pistol/sec_glock(src) -/obj/structure/closet/secure_closet/hos/PopulateContents() +/obj/structure/closet/secure_closet/warden/PopulateContents() . = ..() - new /obj/item/storage/toolbox/guncase/skyrat/pistol/hos_glock(src) \ No newline at end of file + new /obj/item/storage/toolbox/guncase/skyrat/pistol/hos_glock(src) From 0005020c864deabd87b8755c19a069aedd3ad722 Mon Sep 17 00:00:00 2001 From: LT3 <83487515+lessthnthree@users.noreply.github.com> Date: Sat, 15 Feb 2025 16:08:33 -0800 Subject: [PATCH 060/120] Unfucking disease outbreaks/transmission (#1919) ## About The Pull Request Disease transmission is nonsensical and broken. Goes through disease outbreak and transmission vectors from start to finish fixing things that don't work properly, or not as expected. Also adds some constraints on the disease outbreak event based on medical staff. This is mostly nonmodular edits as it's a test before I make the PR on TG. It's been tested for a long while with NPCs on stations, but live testing it here gives better visibility into how it goes in a real world environment, and there is some extra game logging added for the duration of the TM to validate the new disease calculations and spread are working as expected. Mainly the test is to see if the new values for disease transmission "feel" right in a live environment, to perform some tweaks to the percentages if required. - Event diseases are no longer hidden from health analyzers during incubation periods - Masks and head slot items actually provide protection from airborne disease spread - People other than the original airborne hosts spread via respiration - Reduced infection chance for contact/airborne diseases from current 95%+ on all diseases to values 15%-40% based on the transmissibility strength - Airborne spread is rolled per target, not source (smoother infections compared to suddenly infecting 5 people with a single sneeze) - Disease outbreak won't spawn during rounds with less than 3 medical staff - Disease outbreak begins with 2-3 original hosts but lower spread speed ## Why It's Good For The Game - Disease outbreaks and transmission work more in line with how people think they do/are supposed to. - Gloves, masks, face shields etc. properly get calculated to protect you from getting infected/infecting others. - Disease outbreaks can immediately be identified by med staff with analyzers, but borgs can't see the HUD icon as soon as the event starts and instantly find patient zero. ## Changelog :cl: LT3 balance: Event diseases are no longer hidden from health analyzers during incubation periods fix: Masks and head slot items actually provide protection from airborne disease spread fix: People other than the original airborne hosts spread diseases via respiration balance: Reduced infection chance for contact/airborne diseases from current 95%+ on all diseases to values 15%-40% based on the transmissibility strength code: Airborne disease spread is rolled per target, not source balance: Disease outbreak won't spawn during rounds with less than 3 medical staff balance: Disease outbreak begins with 2-3 original hosts but lower spread speed fix: Disease cure won't request both antihol and alcohol mixed together /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- code/__DEFINES/diseases.dm | 2 + code/__HELPERS/~bubber_helpers/virus.dm | 13 ++ code/datums/diseases/_MobProcs.dm | 28 +++- code/datums/diseases/_disease.dm | 47 +++++- code/datums/diseases/advance/advance.dm | 22 ++- code/game/data_huds.dm | 5 +- code/modules/events/disease_outbreak.dm | 141 +++++++++++++++--- .../modules/disease/disease_transmission.dm | 86 +++++++++++ tgstation.dme | 2 + 9 files changed, 312 insertions(+), 34 deletions(-) create mode 100644 code/__HELPERS/~bubber_helpers/virus.dm create mode 100644 modular_zubbers/code/modules/disease/disease_transmission.dm diff --git a/code/__DEFINES/diseases.dm b/code/__DEFINES/diseases.dm index fe05a30e0fd..095e4bbebcc 100644 --- a/code/__DEFINES/diseases.dm +++ b/code/__DEFINES/diseases.dm @@ -4,11 +4,13 @@ //Visibility Flags #define HIDDEN_SCANNER (1<<0) #define HIDDEN_PANDEMIC (1<<1) +#define HIDDEN_MEDHUD (1<<2) // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES //Bitfield for Visibility Flags DEFINE_BITFIELD(visibility_flags, list( "HIDDEN_FROM_ANALYZER" = HIDDEN_SCANNER, "HIDDEN_FROM_PANDEMIC" = HIDDEN_PANDEMIC, + "HIDDEN_FROM_MEDHUD" = HIDDEN_MEDHUD, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES )) //Disease Flags diff --git a/code/__HELPERS/~bubber_helpers/virus.dm b/code/__HELPERS/~bubber_helpers/virus.dm new file mode 100644 index 00000000000..dbe2f849194 --- /dev/null +++ b/code/__HELPERS/~bubber_helpers/virus.dm @@ -0,0 +1,13 @@ +/datum/disease/advance/event/admin_details() + var/list/name_symptoms = list() + for(var/datum/symptom/S in symptoms) + name_symptoms += S.name + return "[name] - sym: [english_list(name_symptoms)] spr:[spreading_modifier] inf:[infectivity] spd:[stage_prob] cure:[cure_chance]" + +/datum/disease/advance/proc/symptoms_list() + var/list/name_symptoms = list() + for(var/datum/symptom/S in symptoms) + if(istype(S, /datum/symptom/viraladaptation) || istype(S, /datum/symptom/viralevolution)) + continue + name_symptoms += S.name + return english_list(name_symptoms) diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm index 337aee46c03..23a2db65d23 100644 --- a/code/datums/diseases/_MobProcs.dm +++ b/code/datums/diseases/_MobProcs.dm @@ -43,8 +43,12 @@ var/hands_chance = 35/2 var/feet_chance = 15/2 - if(prob(15/disease.spreading_modifier)) + // BUBBER EDIT CHANGE START - DISEASE OUTBREAK UPDATES + // if(prob(15/disease.spreading_modifier)) + var/infect_chance = clamp(42 + (disease.spreading_modifier * 7), 49, 77) + if(!prob(infect_chance)) return + // BUBBER EDIT CHANGE END - DISEASE OUTBREAK UPDATES if(satiety>0 && prob(satiety/2)) // positive satiety makes it harder to contract the disease. return @@ -92,6 +96,7 @@ passed = prob(100-infecting_human.shoes.get_armor_rating(BIO)) if(passed) + disease.log_virus_public("[name] passed infection checks for CONTACT transmission. ([infect_chance]% chance)") // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES disease.try_infect(src) /** @@ -100,6 +105,7 @@ * * disease - the disease datum that's infecting us */ /mob/living/proc/contract_airborne_disease(datum/disease/disease) + /* BUBBER EDIT CHANGE START - DISEASE OUTBREAK UPDATES if(!can_be_spread_airborne_disease()) return FALSE if(!prob(min((50 * disease.spreading_modifier - 1), 50))) @@ -107,9 +113,24 @@ if(!disease.has_required_infectious_organ(src, ORGAN_SLOT_LUNGS)) return FALSE return ForceContractDisease(disease) + */ + + if(!can_be_spread_airborne_disease()) + return FALSE + var/infect_chance = clamp(21 + (disease.spreading_modifier * 7), 28, 56) + if(!prob(infect_chance)) + return FALSE + if(!disease.has_required_infectious_organ(src, ORGAN_SLOT_LUNGS)) + return FALSE + + var/final_infectivity = ((infect_chance / 100) * (disease.infectivity / 100)) * 100 + + return ForceContractDisease(disease, TRUE, FALSE, "AIRBORNE", final_infectivity) + // BUBBER EDIT CHANGE END - DISEASE OUTBREAK UPDATES //Proc to use when you 100% want to try to infect someone (ignoreing protective clothing and such), as long as they aren't immune -/mob/living/proc/ForceContractDisease(datum/disease/D, make_copy = TRUE, del_on_fail = FALSE) +// /mob/living/proc/ForceContractDisease(datum/disease/D, make_copy = TRUE, del_on_fail = FALSE) +/mob/living/proc/ForceContractDisease(datum/disease/D, make_copy = TRUE, del_on_fail = FALSE, infect_vector, final_infectivity) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES if(!CanContractDisease(D)) if(del_on_fail) qdel(D) @@ -118,10 +139,13 @@ if(del_on_fail) qdel(D) return FALSE + D.log_virus_public("[name] passed infection checks for [infect_vector ? infect_vector : "FORCED"] transmission. ([final_infectivity ? final_infectivity : "100"]% chance)") // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES return TRUE /mob/living/carbon/human/CanContractDisease(datum/disease/disease) + if(issynthetic(src)) // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + return FALSE if(dna) if(HAS_TRAIT(src, TRAIT_VIRUSIMMUNE) && !disease.bypasses_immunity) return FALSE diff --git a/code/datums/diseases/_disease.dm b/code/datums/diseases/_disease.dm index 154027b8b9a..a72fc927c49 100644 --- a/code/datums/diseases/_disease.dm +++ b/code/datums/diseases/_disease.dm @@ -49,11 +49,14 @@ var/infectable_biotypes = MOB_ORGANIC //if the disease can spread on organics, synthetics, or undead var/process_dead = FALSE //if this ticks while the host is dead var/copy_type = null //if this is null, copies will use the type of the instance being copied + var/bypasses_disease_recovery = FALSE // Does it skip self recovery process, such as event diseases // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES /datum/disease/Destroy() . = ..() if(affected_mob) remove_disease() + if(event_disease) // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + SSdisease.event_diseases -= src // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES SSdisease.active_diseases.Remove(src) //add this disease if the host does not already have too many @@ -64,15 +67,29 @@ //add the disease with no checks /datum/disease/proc/infect(mob/living/infectee, make_copy = TRUE) var/datum/disease/D = make_copy ? Copy() : src + // BUBBER EDIT ADDITION START - DISEASE OUTBREAK UPDATES + if(D.affected_mob) + stack_trace("Disease [D.debug_id] [D] tried to infect [infectee] while already bound to an affected mob [D.affected_mob]!") + log_virus_public("Disease [D.debug_id] [D] tried to infect [infectee] while already bound to an affected mob [D.affected_mob]!") + return + if(!D.debug_id) + D.debug_id = assign_random_name() + if(!D.start_time) + D.start_time = REALTIMEOFDAY + // BUBBER EDIT ADDITION END - DISEASE OUTBREAK UPDATES LAZYADD(infectee.diseases, D) D.affected_mob = infectee SSdisease.active_diseases += D //Add it to the active diseases list, now that it's actually in a mob and being processed. + if(event_disease) // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + SSdisease.event_diseases += D // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES D.after_add() infectee.med_hud_set_status() - register_disease_signals() + D.register_disease_signals() // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES var/turf/source_turf = get_turf(infectee) + mobs_infected++ // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + log_virus_public("New infectee: [infectee]. Total infected by this carrier: [mobs_infected]") // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES log_virus("[key_name(infectee)] was infected by virus: [src.admin_details()] at [loc_name(source_turf)]") /// Updates the spread flags set, ensuring signals are updated as necessary @@ -128,7 +145,8 @@ if(SPT_PROB(stage_prob*slowdown, seconds_per_tick)) update_stage(min(stage + 1, max_stages)) - if(!(disease_flags & CHRONIC) && disease_flags & CURABLE && bypasses_immunity != TRUE) + // if(!(disease_flags & CHRONIC) && disease_flags & CURABLE && bypasses_immunity != TRUE) + if(!(disease_flags & CHRONIC) && disease_flags & CURABLE && bypasses_immunity != TRUE && bypasses_disease_recovery != TRUE) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES switch(severity) if(DISEASE_SEVERITY_POSITIVE) //good viruses don't go anywhere after hitting max stage - you can try to get rid of them by sleeping earlier cycles_to_beat = max(DISEASE_RECOVERY_SCALING, DISEASE_CYCLES_POSITIVE) //because of the way we later check for recovery_prob, we need to floor this at least equal to the scaling to avoid infinitely getting less likely to cure @@ -229,7 +247,13 @@ return !carrier /datum/disease/proc/update_stage(new_stage) + // BUBBER EDIT ADDITION START - DISEASE OUTBREAK UPDATES + if(new_stage > stage && !isnull(affected_mob)) + log_virus_public("[affected_mob.name] stage advance [stage] > [new_stage]. Time elapsed: [DisplayTimeText(REALTIMEOFDAY - start_time)] (Stage speed [stage_prob])") stage = new_stage + if(!isnull(affected_mob)) + affected_mob.med_hud_set_status() + // BUBBER EDIT ADDITION END - DISEASE OUTBREAK UPDATES if(new_stage == max_stages && !(stage_peaked)) //once a virus has hit its peak, set it to have done so stage_peaked = TRUE @@ -258,7 +282,7 @@ return FALSE if(!(spread_flags & DISEASE_SPREAD_AIRBORNE) && !force_spread) return FALSE - if(affected_mob.can_spread_airborne_diseases()) + if(!affected_mob.can_spread_airborne_diseases()) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES return FALSE if(!has_required_infectious_organ(affected_mob, ORGAN_SLOT_LUNGS)) //also if you lack lungs return FALSE @@ -268,6 +292,10 @@ if(!istype(mob_loc)) return FALSE for(var/mob/living/carbon/to_infect in oview(spread_range, affected_mob)) + // BUBBER EDIT ADDITION START - DISEASE OUTBREAK UPDATES + if(!prob(infectivity)) + continue + // BUBBER EDIT ADDITION END - DISEASE OUTBREAK UPDATES var/turf/infect_loc = to_infect.loc if(!istype(infect_loc)) continue @@ -309,11 +337,17 @@ /datum/disease/proc/Copy() //note that stage is not copied over - the copy starts over at stage 1 + /* // BUBBER EDIT CHANGE START - DISEASE OUTBREAK UPDATES - ORIGINAL: var/static/list/copy_vars = list("name", "visibility_flags", "disease_flags", "spread_flags", "form", "desc", "agent", "spread_text", "cure_text", "max_stages", "stage_prob", "incubation_time", "viable_mobtypes", "cures", "infectivity", "cure_chance", "required_organ", "bypasses_immunity", "spreading_modifier", "severity", "needs_all_cures", "strain_data", "infectable_biotypes", "process_dead") - + */ + var/static/list/copy_vars = list("name", "visibility_flags", "disease_flags", "spread_flags", "form", "desc", "agent", "spread_text", + "cure_text", "max_stages", "stage_prob", "viable_mobtypes", "cures", "infectivity", "cure_chance", + "required_organ", "bypasses_immunity", "bypasses_disease_recovery", "spreading_modifier", "severity", "needs_all_cures", "strain_data", + "infectable_biotypes", "process_dead", "event_disease") + // BUBBER EDIT CHANGE END - DISEASE OUTBREAK UPDATES var/datum/disease/D = copy_type ? new copy_type() : new type() for(var/V in copy_vars) var/val = vars[V] @@ -334,6 +368,7 @@ unregister_disease_signals() LAZYREMOVE(affected_mob.diseases, src) //remove the datum from the list affected_mob.med_hud_set_status() + log_virus_public("[affected_mob] was cured of virus. Total infected by this carrier: [mobs_infected]") // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES affected_mob = null /** @@ -375,8 +410,10 @@ /datum/disease/proc/on_breath(datum/source, seconds_per_tick, ...) SIGNAL_HANDLER + /* BUBBER EDIT REMOVAL START - DISEASE OUTBREAK UPDATES if(SPT_PROB(infectivity * 4, seconds_per_tick)) - airborne_spread() + */// BUBBER EDIT REMOVAL END - DISEASE OUTBREAK UPDATES + airborne_spread() //Use this to compare severities /proc/get_disease_severity_value(severity) diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm index 5efa1554baf..13d781260e6 100644 --- a/code/datums/diseases/advance/advance.dm +++ b/code/datums/diseases/advance/advance.dm @@ -56,13 +56,18 @@ /datum/reagent/consumable/salt, /datum/reagent/consumable/sugar, /datum/reagent/consumable/tomatojuice, + /datum/reagent/consumable/ethanol/antifreeze, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + /datum/reagent/consumable/ethanol/bug_spray, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + /datum/reagent/space_cleaner, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES ), list( //level 4 /datum/reagent/fuel/oil, - /datum/reagent/medicine/c2/multiver, + ///datum/reagent/medicine/c2/multiver, // BUBBER EDIT REMOVAL - DISEASE OUTBREAK UPDATES /datum/reagent/medicine/epinephrine, /datum/reagent/medicine/haloperidol, - /datum/reagent/medicine/mine_salve, + ///datum/reagent/medicine/mine_salve, // BUBBER EDIT REMOVAL - DISEASE OUTBREAK UPDATES + /datum/reagent/medicine/c2/libital, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + /datum/reagent/medicine/c2/lenturi, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES /datum/reagent/medicine/salglu_solution, ), list( //level 5 @@ -70,18 +75,25 @@ /datum/reagent/medicine/mannitol, /datum/reagent/medicine/synaptizine, /datum/reagent/cryptobiolin, + /datum/reagent/medicine/c2/convermol, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + /datum/reagent/fluorosurfactant, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES ), list( // level 6 - /datum/reagent/medicine/antihol, + ///datum/reagent/medicine/antihol, // BUBBER EDIT REMOVAL - DISEASE OUTBREAK UPDATES /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/oculine, /datum/reagent/phenol, + /datum/reagent/medicine/neurine, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + /datum/reagent/medicine/ondansetron, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES ), list( // level 7 /datum/reagent/medicine/higadrite, /datum/reagent/medicine/leporazine, /datum/reagent/toxin/mindbreaker, /datum/reagent/acetaldehyde, + /datum/reagent/medicine/sal_acid, + ///datum/reagent/medicine/pen_acid, BUBBER EDIT REMOVE - DISEASE OUTBREAK UPDATES + /datum/reagent/medicine/psicodine, // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES ), list( // level 8 /datum/reagent/drug/happiness, @@ -89,7 +101,7 @@ /datum/reagent/pax, ), list( // level 9 - /datum/reagent/medicine/sal_acid, + /datum/reagent/drug/blastoff, /datum/reagent/toxin/chloralhydrate, /datum/reagent/toxin/lipolicide, ), @@ -543,6 +555,7 @@ /datum/disease/advance/proc/totalTransmittable() return properties["transmittable"] +/* // BUBBER EDIT REMOVAL START - DISEASE OUTBREAK UPDATES /** * If the disease has an incubation time (such as event diseases) start the timer, let properties determine if there's no timer set. */ @@ -565,3 +578,4 @@ /datum/disease/advance/proc/make_visible() visibility_flags &= ~HIDDEN_SCANNER affected_mob.med_hud_set_status() +*/ // BUBBER EDIT REMOVAL END - DISEASE OUTBREAK UPDATES diff --git a/code/game/data_huds.dm b/code/game/data_huds.dm index eaa9e39387c..a73d6fc9b75 100644 --- a/code/game/data_huds.dm +++ b/code/game/data_huds.dm @@ -104,10 +104,11 @@ Medical HUD! Basic mode needs suit sensors on. for(var/thing in diseases) var/datum/disease/D = thing - if(!(D.visibility_flags & HIDDEN_SCANNER)) + if(!(D.visibility_flags & HIDDEN_MEDHUD)) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES - Original: HIDDEN_SCANNER if(!threat || get_disease_severity_value(D.severity) > threat) //a buffing virus gets an icon threat = get_disease_severity_value(D.severity) - severity = D.severity + if(D.severity == DISEASE_SEVERITY_POSITIVE || D.stage > 1) // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES - Positive viruses should always show up + severity = D.severity return severity //helper for getting the appropriate health status diff --git a/code/modules/events/disease_outbreak.dm b/code/modules/events/disease_outbreak.dm index bf7dbe23862..e5ec862caae 100644 --- a/code/modules/events/disease_outbreak.dm +++ b/code/modules/events/disease_outbreak.dm @@ -3,7 +3,7 @@ /// Advanced virus upper limit for symptoms #define ADV_MAX_SYMPTOMS 4 /// How long the virus stays hidden before announcement -#define ADV_ANNOUNCE_DELAY 75 +#define ADV_ANNOUNCE_DELAY 60 // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES - ORIGINAL: 75 /// Numerical define for medium severity advanced virus #define ADV_DISEASE_MEDIUM 1 /// Numerical define for harmful severity advanced virus @@ -15,7 +15,7 @@ /// Percentile for mid severity advanced virus #define ADV_RNG_MID 85 /// Percentile for high vs. low transmissibility -#define ADV_SPREAD_THRESHOLD 85 +#define ADV_SPREAD_THRESHOLD 80 // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES - ORIGINAL: 85 /// Admin custom low spread #define ADV_SPREAD_FORCED_LOW 0 /// Admin custom med spread @@ -42,8 +42,18 @@ if(!.) return . generate_candidates() - if(length(disease_candidates)) - return TRUE + // BUBBER EDIT CHANGE START - DISEASE OUTBREAK UPDATES + // if(length(disease_candidates)) + // return TRUE + if(!SSjob.is_skeleton_medical(3)) + log_public_file("Disease outbreak check passed medbay staffing parameters with 3 or more staff.") + if(length(disease_candidates)) + log_public_file("Disease outbreak check passed candidate parameters with [length(disease_candidates)] candidates.") + return TRUE + log_public_file("Disease outbreak check failed catastrophically. oh god how did we get here, there are zero candidates? this should never happen.") + else + log_public_file("Disease outbreak check failed medbay staffing parameters due to less than 3 staff.") + // BUBBER EDIT CHANGE END - DISEASE OUTBREAK UPDATES /** * Creates a list of people who are elligible to become disease carriers for the event @@ -63,10 +73,14 @@ continue if(!is_station_level(candidate.z) && !is_mining_level(candidate.z)) //Diseases can't really spread if the vector is in deep space. continue - // SKYRAT EDIT ADDITION START - Station/area event candidate filtering. + // BUBBER EDIT ADDITION START - Station/area event candidate filtering. + if(candidate.internal || candidate.external || candidate.wear_mask) + continue if(engaged_role_play_check(candidate, station = TRUE, dorms = TRUE)) continue - // SKYRAT EDIT ADDITION END + if(issynthetic(candidate)) + continue + // BUBBER EDIT ADDITION END - Station/area event candidate filtering. disease_candidates += candidate ///Handles checking and alerting admins about the number of valid candidates @@ -106,6 +120,11 @@ var/list/afflicted = list() /datum/round_event/disease_outbreak/announce(fake) + // BUBBER EDIT ADDITION START - DISEASE OUTBREAK UPDATES + for(var/datum/disease/advance/active_carrier in SSdisease.event_diseases) + active_carrier.make_visible() + // BUBBER EDIT ADDITION END - DISEASE OUTBREAK UPDATES + if(!illness_type) var/list/virus_candidates = list( /datum/disease/anxiety, @@ -139,27 +158,36 @@ virus_candidates += list(/datum/disease/flu, /datum/disease/cold9) //The more dangerous ones - virus_candidates += list(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish) + //virus_candidates += list(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish) // BUBBER EDIT REMOVAL - DISEASE OUTBREAK UPDATES //The wacky ones - virus_candidates += list(/datum/disease/magnitis, /datum/disease/anxiety) + virus_candidates += list(/datum/disease/magnitis, /datum/disease/anxiety, /datum/disease/beesease) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES //The rest of the diseases either aren't conventional "diseases" or are too unique/extreme to be considered for a normal event virus_type = pick(virus_candidates) var/datum/disease/new_disease new_disease = new virus_type() - new_disease.carrier = TRUE + //new_disease.carrier = TRUE // BUBBER EDIT REMOVAL - DISEASE OUTBREAK UPDATES illness_type = new_disease.name + // BUBBER EDIT ADDITION START - DISEASE OUTBREAK UPDATES + new_disease.event_disease = TRUE + var/to_infect = 3 + if(length(GLOB.alive_player_list) > 65) + to_infect = 4 + + var/infected = 0 + // BUBBER EDIT ADDITION END - DISEASE OUTBREAK UPDATES var/mob/living/carbon/human/victim - while(length(afflicted)) + while(length(afflicted) && infected < to_infect) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES victim = pick_n_take(afflicted) - if(victim.ForceContractDisease(new_disease, FALSE)) + if(victim.ForceContractDisease(new_disease, TRUE, infect_vector = "EVENT", final_infectivity = 100)) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES message_admins("Event triggered: Disease Outbreak - [new_disease.name] starting with patient zero [ADMIN_LOOKUPFLW(victim)]!") log_game("Event triggered: Disease Outbreak - [new_disease.name] starting with patient zero [key_name(victim)].") announce_to_ghosts(victim) - return + infected++ // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + // return // BUBBER EDIT REMOVAL - DISEASE OUTBREAK UPDATES CHECK_TICK //don't lag the server to death if(isnull(victim)) message_admins("Event Disease Outbreak: Classic attempted to start, but failed to find a candidate target.") @@ -280,7 +308,7 @@ else requested_severity = ADV_DISEASE_DANGEROUS - var/datum/disease/advance/advanced_disease = new /datum/disease/advance/random/event(max_symptoms, requested_severity, requested_transmissibility) + var/datum/disease/advance/advanced_disease = new /datum/disease/advance/event(max_symptoms, requested_severity, requested_transmissibility) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES var/list/name_symptoms = list() for(var/datum/symptom/new_symptom as anything in advanced_disease.symptoms) @@ -288,23 +316,44 @@ illness_type = advanced_disease.name + // BUBBER EDIT ADDITION START - DISEASE OUTBREAK UPDATES + if(advanced_disease.spread_flags & DISEASE_SPREAD_AIRBORNE) + for(var/datum/symptom/final_symptom in advanced_disease.symptoms) + if(istype(final_symptom, /datum/symptom/cough) || istype(final_symptom, /datum/symptom/sneeze)) + announce_when = 38 // the most transmissible get an early announcement + break + + var/to_infect = 3 + if(length(GLOB.alive_player_list) > 65) + to_infect = 4 + + var/infected = 0 + // BUBBER EDIT ADDITION END - DISEASE OUTBREAK UPDATES + var/mob/living/carbon/human/victim - while(length(afflicted)) + while(length(afflicted) && infected < to_infect) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES victim = pick_n_take(afflicted) - if(victim.ForceContractDisease(advanced_disease, FALSE)) + if(victim.ForceContractDisease(advanced_disease, TRUE, infect_vector = "EVENT", final_infectivity = 100)) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES message_admins("Event triggered: Disease Outbreak: Advanced - starting with patient zero [ADMIN_LOOKUPFLW(victim)]! Details: [advanced_disease.admin_details()] sp:[advanced_disease.spread_flags] ([advanced_disease.spread_text])") log_game("Event triggered: Disease Outbreak: Advanced - starting with patient zero [key_name(victim)]. Details: [advanced_disease.admin_details()] sp:[advanced_disease.spread_flags] ([advanced_disease.spread_text])") log_virus("Disease Outbreak: Advanced has triggered a custom virus outbreak of [advanced_disease.admin_details()] in [victim]!") + advanced_disease.log_virus_public("Event virus details: [advanced_disease.admin_details()]") // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES announce_to_ghosts(victim) - return + infected++ // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + // return // BUBBER EDIT REMOVAL - DISEASE OUTBREAK UPDATES CHECK_TICK //don't lag the server to death if(isnull(victim)) message_admins("Event Disease Outbreak: Advanced attempted to start, but failed to find a candidate target.") log_game("Event Disease Outbreak: Advanced attempted to start, but failed to find a candidate target.") + return // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES -/datum/disease/advance/random/event + deadchat_broadcast("Disease Outbreak: Advanced starting with [advanced_disease.name]! Symptoms: [advanced_disease.symptoms_list()]") // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + +/datum/disease/advance/event // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES name = "Event Disease" copy_type = /datum/disease/advance + bypasses_disease_recovery = TRUE // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES + event_disease = TRUE // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES /datum/round_event/disease_outbreak/advance/setup() announce_when = ADV_ANNOUNCE_DELAY @@ -315,7 +364,7 @@ * Uses the parameters to create a list of symptoms, picking from various severities * Viral Evolution and Eternal Youth are special modifiers, so we roll separately. */ -/datum/disease/advance/random/event/New(max_symptoms, requested_severity, requested_transmissibility) +/datum/disease/advance/event/New(max_symptoms, requested_severity, requested_transmissibility) // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES var/list/datum/symptom/possible_symptoms = list( /datum/symptom/beard, /datum/symptom/chills, @@ -354,6 +403,31 @@ /datum/symptom/visionloss, ) + // BUBBER EDIT ADDITION START - DISEASE OUTBREAK UPDATES + visibility_flags |= HIDDEN_MEDHUD + var/transmissibility = requested_transmissibility + + if(isnull(transmissibility)) + transmissibility = rand(1,100) + + if(requested_transmissibility == ADV_SPREAD_FORCED_LOW) // Admin forced + set_spread(DISEASE_SPREAD_CONTACT_FLUIDS) + + else if(requested_transmissibility == ADV_SPREAD_FORCED_HIGH || transmissibility >= ADV_SPREAD_THRESHOLD) + set_spread(DISEASE_SPREAD_AIRBORNE) + if(prob(40)) + var/list/datum/symptom/airborne_modifiers = list( + /datum/symptom/cough, + /datum/symptom/sneeze, + ) + var/datum/symptom/chosen_airborne = pick(airborne_modifiers) + possible_symptoms -= chosen_airborne + symptoms += new chosen_airborne + + else + set_spread(DISEASE_SPREAD_CONTACT_SKIN) + // BUBBER EDIT ADDITION END - DISEASE OUTBREAK UPDATES + var/current_severity = 0 while(symptoms.len < max_symptoms) @@ -375,6 +449,7 @@ if(new_symptom.severity > current_severity) current_severity = new_symptom.severity + /*// BUBBER EDIT REMOVAL START - DISEASE OUTBREAK UPDATES visibility_flags |= HIDDEN_SCANNER var/transmissibility = requested_transmissibility @@ -399,6 +474,7 @@ visibility_flags &= ~HIDDEN_SCANNER set_spread(DISEASE_SPREAD_AIRBORNE) + */ // BUBBER EDIT REMOVAL END - DISEASE OUTBREAK UPDATES //Illness name from one of the symptoms var/datum/symptom/picked_name = pick(symptoms) @@ -427,23 +503,32 @@ * If the virus is severity DANGEROUS we do not hide it from health scanners at event start. * If the virus is airborne, also don't hide it. */ -/datum/disease/advance/random/event/assign_properties() +/datum/disease/advance/event/assign_properties() // BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES if(!length(properties)) stack_trace("Advanced virus properties were empty or null!") return + /* BUBBER EDIT CHANGE START - DISEASE OUTBREAK UPDATES - ORIGINAL: incubation_time = round(world.time + (((ADV_ANNOUNCE_DELAY * 2) - 10) SECONDS)) properties["transmittable"] = rand(4,7) spreading_modifier = max(CEILING(0.4 * properties["transmittable"], 1), 1) cure_chance = clamp(7.5 - (0.5 * properties["resistance"]), 5, 10) // Can be between 5 and 10 stage_prob = max(0.4 * properties["stage_rate"], 1) + */ + properties["transmittable"] = rand(6,9) + spreading_modifier = clamp(properties["transmittable"] - 5, 1, 4) + infectivity = clamp(21 + (spreading_modifier * 7), 28, 56) + cure_chance = rand(14, 21) // cure quickly once they've hit medbay + stage_prob = rand(7, 9) * 0.1 // we progress slower than normal diseases, giving it a chance to incubate and medical to respond + // BUBBER EDIT CHANGE END - DISEASE OUTBREAK UPDATES set_severity(properties["severity"]) //If we have an advanced (high stage) disease, add it to the name. if(properties["stage_rate"] >= 7) name = "Advanced [name]" + log_virus_public("stage speed is [stage_prob], spreading modifier is [spreading_modifier], infectivity is [infectivity]") // BUBBER EDIT ADDITION - DISEASE OUTBREAK UPDATES generate_cure(properties) /** @@ -451,7 +536,7 @@ * * Apply the transmission methods we rolled in the assign_properties proc */ -/datum/disease/advance/random/event/set_spread(spread_id) +/datum/disease/advance/event/set_spread(spread_id)// BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES switch(spread_id) if(DISEASE_SPREAD_CONTACT_FLUIDS) update_spread_flags(DISEASE_SPREAD_BLOOD | DISEASE_SPREAD_CONTACT_FLUIDS) @@ -468,17 +553,31 @@ * * Rolls one of five possible cure groups, then selects a cure from it and applies it to the virus. */ -/datum/disease/advance/random/event/generate_cure() +/datum/disease/advance/event/generate_cure()// BUBBER EDIT CHANGE - DISEASE OUTBREAK UPDATES if(!length(properties)) stack_trace("Advanced virus properties were empty or null!") return + // BUBBER EDIT CHANGE START - DISEASE OUTBREAK UPDATES + /* var/res = rand(4, 7) cures = list(pick(advance_cures[res])) oldres = res // Get the cure name from the cure_id var/datum/reagent/cure = GLOB.chemical_reagents_list[cures[1]] cure_text = cure.name + */ + var/list/cures_list = advance_cures.Copy() + if(properties["stage_rate"] >= 7) + cures = list(pick_n_take(cures_list[rand(4, 7)]), pick_n_take(cures_list[3])) // require some help outside medbay (list 3) + var/datum/reagent/cure_1 = GLOB.chemical_reagents_list[cures[1]] + var/datum/reagent/cure_2 = GLOB.chemical_reagents_list[cures[2]] + cure_text = "[cure_1.name] and [cure_2.name]" + else + cures = list(pick_n_take(cures_list[rand(4, 7)])) + var/datum/reagent/cure_1 = GLOB.chemical_reagents_list[cures[1]] + cure_text = cure_1.name + // BUBBER EDIT CHANGE END - DISEASE OUTBREAK UPDATES #undef ADV_MIN_SYMPTOMS #undef ADV_MAX_SYMPTOMS diff --git a/modular_zubbers/code/modules/disease/disease_transmission.dm b/modular_zubbers/code/modules/disease/disease_transmission.dm new file mode 100644 index 00000000000..2e7a04dd50f --- /dev/null +++ b/modular_zubbers/code/modules/disease/disease_transmission.dm @@ -0,0 +1,86 @@ +/datum/controller/subsystem/disease + /// List of event created diseases in all mobs + var/list/event_diseases = list() + +/datum/disease + /// Debug logs for disease transmission refactor, to verify after the fact the system is working as intended + var/debug_id + var/mobs_infected = 0 + var/event_disease = FALSE + /// When this carrier was created + var/start_time + +/datum/disease/proc/log_virus_public(text) + if(!event_disease) + return + var/log_message = "VIRUS_DEBUG: P:[length(SSdisease.event_diseases)] [debug_id ? debug_id : "VIRUS_INIT"] [name]: [text]" + log_game(log_message) + log_public_file(log_message) + +/** + * Make virus visible to heath scanners + */ +/datum/disease/proc/make_visible() + visibility_flags &= ~HIDDEN_SCANNER + visibility_flags &= ~HIDDEN_MEDHUD + if(!isnull(affected_mob)) + affected_mob.med_hud_set_status() + +/** + * Check if the station manifest has at least a certain amount of this staff type + * + * Arguments: + * * crew_threshold - amount of crew before it's no longer considered a skeleton crew + * +*/ +/datum/controller/subsystem/job/proc/is_skeleton_medical(crew_threshold) + var/med_staff = 0 + for(var/datum/record/crew/target in GLOB.manifest.general) + if(target.trim == JOB_CHIEF_MEDICAL_OFFICER) + med_staff++ + + if(target.trim == JOB_MEDICAL_DOCTOR) + med_staff++ + + if(target.trim == JOB_CHEMIST) + med_staff++ + + if(med_staff >= crew_threshold) + return FALSE + + return TRUE + + +/datum/disease/cold + spreading_modifier = 4 + +/datum/disease/flu + spreading_modifier = 3 + bypasses_disease_recovery = TRUE + +/datum/disease/fluspanish + spreading_modifier = 3 + bypasses_disease_recovery = TRUE + +/datum/disease/magnitis + spreading_modifier = 3 + bypasses_disease_recovery = TRUE + +/datum/disease/pierrot_throat + spreading_modifier = 2 + +/datum/disease/dna_retrovirus + spreading_modifier = 3 + +/datum/disease/wizarditis + spreading_modifier = 2 + +/datum/disease/cryptococcus + spreading_modifier = 2 + +/datum/disease/beesease + spreading_modifier = 3 + bypasses_disease_recovery = TRUE + +/datum/disease/anxiety + bypasses_disease_recovery = TRUE diff --git a/tgstation.dme b/tgstation.dme index e1c44c42ebb..9029176fc67 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -633,6 +633,7 @@ #include "code\__HELPERS\paths\sssp.dm" #include "code\__HELPERS\sorts\helpers.dm" #include "code\__HELPERS\sorts\sort_instance.dm" +#include "code\__HELPERS\~bubber_helpers\virus.dm" #include "code\__HELPERS\~skyrat_helpers\is_helpers.dm" #include "code\__HELPERS\~skyrat_helpers\level_traits.dm" #include "code\__HELPERS\~skyrat_helpers\logging.dm" @@ -9046,6 +9047,7 @@ #include "modular_zubbers\code\modules\debug_tools\toolgun_module\phys_size.dm" #include "modular_zubbers\code\modules\debug_tools\toolgun_module\phys_spawn.dm" #include "modular_zubbers\code\modules\designs\limbgrower_designs.dm" +#include "modular_zubbers\code\modules\disease\disease_transmission.dm" #include "modular_zubbers\code\modules\disease\hidden.dm" #include "modular_zubbers\code\modules\dna_vault\vault_mutation.dm" #include "modular_zubbers\code\modules\dynamic\midround_rulesets.dm" From 2112dd6576407418ba3fad94ea21e8908aa40c5a Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 01:08:44 +0100 Subject: [PATCH 061/120] Automatic changelog for PR #3047 [ci skip] --- html/changelogs/AutoChangeLog-pr-3047.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3047.yml diff --git a/html/changelogs/AutoChangeLog-pr-3047.yml b/html/changelogs/AutoChangeLog-pr-3047.yml new file mode 100644 index 00000000000..76181938612 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3047.yml @@ -0,0 +1,5 @@ +author: "YakumoChen" +delete-after: True +changes: + - balance: "Removed \"sidearm beacons\" from spawning SecOff and HoS inventories. Complimentary glocks are still available in security officer lockers." + - balance: "Gave the HoS's silver glock to the Warden. The Head of Security only has three guns at roundstart now! How will he ever recover??" \ No newline at end of file From 3facc803f43c8e3869baf2d5cb1725e7e4c3ab6e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 01:09:03 +0100 Subject: [PATCH 062/120] Automatic changelog for PR #1919 [ci skip] --- html/changelogs/AutoChangeLog-pr-1919.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-1919.yml diff --git a/html/changelogs/AutoChangeLog-pr-1919.yml b/html/changelogs/AutoChangeLog-pr-1919.yml new file mode 100644 index 00000000000..32f24be38db --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-1919.yml @@ -0,0 +1,11 @@ +author: "LT3" +delete-after: True +changes: + - balance: "Event diseases are no longer hidden from health analyzers during incubation periods" + - bugfix: "Masks and head slot items actually provide protection from airborne disease spread" + - bugfix: "People other than the original airborne hosts spread diseases via respiration" + - balance: "Reduced infection chance for contact/airborne diseases from current 95%+ on all diseases to values 15%-40% based on the transmissibility strength" + - code_imp: "Airborne disease spread is rolled per target, not source" + - balance: "Disease outbreak won't spawn during rounds with less than 3 medical staff" + - balance: "Disease outbreak begins with 2-3 original hosts but lower spread speed" + - bugfix: "Disease cure won't request both antihol and alcohol mixed together" \ No newline at end of file From f42626bd7b179172ab3cb82e326777cabdc135d4 Mon Sep 17 00:00:00 2001 From: ABoxFaux <116041393+ABoxFaux@users.noreply.github.com> Date: Sun, 16 Feb 2025 00:12:40 +0000 Subject: [PATCH 063/120] Pet space snacks (#3089) ## About The Pull Request Adds pet space snacks - an (unlabelled) brand of treat that makes pets and basic mobs it's fed to immune to the deadly vacuum of space, all for the low price of 250cr from the cargo goodies section. ## Why It's Good For The Game Pet owners on-station, especially those that go into dangerous atmospheres (such as engineers or miners) often have to leave their pet behind, lest they risk an untimely fate, even whilst in the safety of their bag. This makes sure pet owners can explore the depths of space or the ice moon care-free. ## Proof Of Testing Tested and compiled locally
Screenshots/Videos
## Changelog :cl: add: Adds pet space snacks - treats available from cargo that makes your pet immune to the void of space. /:cl: Co-authored-by: Bubberbot <151680451+Bubberbot@users.noreply.github.com> --- .../~skyrat_defines/traits/declarations.dm | 3 ++ code/_globalvars/traits/_traits.dm | 1 + html/changelogs/AutoChangeLog-pr-3030.yml | 4 ++ .../code/game/objects/items/pet_snacks.dm | 45 ++++++++++++++++++ .../code/modules/cargo/packs/goodies.dm | 6 +++ modular_zubbers/icons/obj/pet_snacks.dmi | Bin 0 -> 607 bytes tgstation.dme | 1 + 7 files changed, 60 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3030.yml create mode 100644 modular_zubbers/code/game/objects/items/pet_snacks.dm create mode 100644 modular_zubbers/icons/obj/pet_snacks.dmi diff --git a/code/__DEFINES/~skyrat_defines/traits/declarations.dm b/code/__DEFINES/~skyrat_defines/traits/declarations.dm index 073ada366b7..215689337b8 100644 --- a/code/__DEFINES/~skyrat_defines/traits/declarations.dm +++ b/code/__DEFINES/~skyrat_defines/traits/declarations.dm @@ -52,6 +52,9 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// One can breath under water, you get me? #define TRAIT_WATER_BREATHING "water_breathing" +/// Trait to assign to pets who've already had a space treat to prevent double-feeding +#define TRAIT_PET_SPACE_TREAT "space_pet_treat" + /// The trait which Akulas inherit, for their species mechanic revolving around wet_stacks #define TRAIT_SLICK_SKIN "slick_skin" /// The trait which is applied when a `slick skin` trait haver actually gets wet_stacks diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 974278b8b80..7702e79fcb0 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -758,6 +758,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_PERSONALSPACE" = TRAIT_PERSONALSPACE, "TRAIT_QUICKREFLEXES" = TRAIT_QUICKREFLEXES, "TRAIT_PET_OWNER" = TRAIT_PET_OWNER, + "TRAIT_PET_SPACE_TREAT" = TRAIT_PET_SPACE_TREAT, "TRAIT_PERMIT_HUD" = TRAIT_PERMIT_HUD, "TRAIT_R_UNIQUEWRECK" = TRAIT_R_UNIQUEWRECK, "TRAIT_R_UNIQUETIP" = TRAIT_R_UNIQUETIP, diff --git a/html/changelogs/AutoChangeLog-pr-3030.yml b/html/changelogs/AutoChangeLog-pr-3030.yml new file mode 100644 index 00000000000..6a334896fa4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3030.yml @@ -0,0 +1,4 @@ +author: "UvvU" +delete-after: True +changes: + - bugfix: "fixes darksabre" \ No newline at end of file diff --git a/modular_zubbers/code/game/objects/items/pet_snacks.dm b/modular_zubbers/code/game/objects/items/pet_snacks.dm new file mode 100644 index 00000000000..567c4b95bd6 --- /dev/null +++ b/modular_zubbers/code/game/objects/items/pet_snacks.dm @@ -0,0 +1,45 @@ +/obj/item/pet_food + name = "Generic pet treat" + desc = "Far too bland for your pet OR reality. You shouldn't be seeing this." + icon = 'icons/obj/food/meat.dmi' + icon_state = "skeletonmeat" + w_class = WEIGHT_CLASS_SMALL + +/obj/item/pet_food/attack(mob/living/basic/target_pet, mob/living/user) + if(user.combat_mode) + return + if(!istype(target_pet, /mob/living/basic)) + to_chat(user, span_warning("This treat can only be fed to basic pets!")) + return + if(target_pet.stat) + to_chat(user, span_warning("The pet is dead!")) + return + + + +/obj/item/pet_food/pet_space_treat + name = "Spaceproof Pet Treat" + desc = "A tasty snack for any loving companion that'll make them resistant to the nasty void of space! (Warranty void if pet cannot, in fact, handle the void of space)" + icon = 'modular_zubbers/icons/obj/pet_snacks.dmi' + icon_state = "pet_space_treat" + +/obj/item/pet_food/pet_space_treat/attack(mob/living/basic/target_pet, mob/user) + ..() + if(HAS_TRAIT(target_pet, TRAIT_PET_SPACE_TREAT)) + to_chat(user, span_warning("This pet has already eaten a space treat!")) + return + if(!target_pet.unsuitable_atmos_damage || !target_pet.minimum_survivable_temperature || !target_pet.maximum_survivable_temperature) + to_chat(user, span_warning("This treat is unsuitable for this pet!")) + return + ADD_TRAIT(target_pet, TRAIT_PET_SPACE_TREAT, user) + target_pet.RemoveElement(/datum/element/atmos_requirements, target_pet.habitable_atmos, target_pet.unsuitable_atmos_damage) + target_pet.RemoveElement(/datum/element/body_temp_sensitive, target_pet.minimum_survivable_temperature, target_pet.maximum_survivable_temperature, target_pet.unsuitable_cold_damage, target_pet.unsuitable_heat_damage) + target_pet.unsuitable_atmos_damage = 0 + target_pet.minimum_survivable_temperature = TCMB + target_pet.maximum_survivable_temperature = T0C + 40 + target_pet.apply_atmos_requirements(TRUE) + target_pet.apply_temperature_requirements(TRUE) + target_pet.desc += span_notice("\n[target_pet.p_They()] seem[target_pet.p_s()] hardier against the void of space.") + to_chat(user, span_notice("You feed the treat to the [target_pet], which they quickly gobble up.")) + qdel(src) + return diff --git a/modular_zubbers/code/modules/cargo/packs/goodies.dm b/modular_zubbers/code/modules/cargo/packs/goodies.dm index e0019ff23cf..d74058600d1 100644 --- a/modular_zubbers/code/modules/cargo/packs/goodies.dm +++ b/modular_zubbers/code/modules/cargo/packs/goodies.dm @@ -110,3 +110,9 @@ desc = "A small toolbox with one spare set of prescripted lenses. Warning: fragile." cost = PAYCHECK_COMMAND * 2 // glasses are expensive! woah-wee momma! contains = list(/obj/item/prescription_lenses) + +/datum/supply_pack/goody/space_pet_snack + name = "Spaceproof Pet Snack" + desc = "Contains a treat for your loving companion that'll make them spaceworthy." + cost = PAYCHECK_CREW * 5 + contains = list(/obj/item/pet_food/pet_space_treat) diff --git a/modular_zubbers/icons/obj/pet_snacks.dmi b/modular_zubbers/icons/obj/pet_snacks.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7b7004146c80cbe6ec1a9bccf721e0e2fdfb0c46 GIT binary patch literal 607 zcmV-l0-*hgP)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+ z(=$pSoZ^zil2jm5sUWo^zPKPUIW@kdC^fM}iHkEOv#1y-W5~ssR+N~V3SlcNxca$( zEdT(JDjq%?EQT8Z00E~-L_t(|ob8seO2a@H$G=Dj6dZg4-@rMLLJ$lHIw-hwaI~Y7 z?P`&%^##-ia0%!VETm96ba3?ze1#BFv=Hxq^x`$SQ<^2qeM_#F`~LsmclY&Lt0)R; zGj>{aHvk5}02lxkw(doL@ljrpkKTdRL|oR;=_mn^`2BGI`Fi}nujfZ}vWC!Aq0@+>h-k9l8hM`6g`ybk5x^YuBteh_@>g8%78I}oI-L$p zdZ&C2<1EW)ud-GNfQ4_zUP+I@j)*G$3z&;oE|>h7BngFKSX)~I!1na%wm4*o&kO?O zNbYvKd>l*Sa$rpm1hsiUuU0D>4u`Zq8rP0cdjzxDj3+_><`}1G%HR3E&&59P1~i|~ z`JC&z8~K;h_p$(JIF6(A(KcaEY95%wR0PbQSbtoxr_Ug&v96RKp@2X^-q(Qoqwz)) zTGf9<)vpf(JkR5z+lJU7+qTOhs>h)20R{nc2nh2gml3L!cSxn9yo$vlBs8g9))5-I tBD77|^!nXar}ZBr17H9QfB|S7;0MQ*VsX002ovPDHLkV1gI@5x)Qc literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 9029176fc67..0b3562e20de 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8813,6 +8813,7 @@ #include "modular_zubbers\code\game\objects\items\holy_weapons.dm" #include "modular_zubbers\code\game\objects\items\kiss.dm" #include "modular_zubbers\code\game\objects\items\more_pkas.dm" +#include "modular_zubbers\code\game\objects\items\pet_snacks.dm" #include "modular_zubbers\code\game\objects\items\plushes.dm" #include "modular_zubbers\code\game\objects\items\ai_modules\full_lawsets.dm" #include "modular_zubbers\code\game\objects\items\circuitboards\machine_circuitboards.dm" From 0be84c48fe6ab13a9ea670b3570c685801c58351 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 01:13:11 +0100 Subject: [PATCH 064/120] Automatic changelog for PR #3089 [ci skip] --- html/changelogs/AutoChangeLog-pr-3089.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3089.yml diff --git a/html/changelogs/AutoChangeLog-pr-3089.yml b/html/changelogs/AutoChangeLog-pr-3089.yml new file mode 100644 index 00000000000..1fec27b1b33 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3089.yml @@ -0,0 +1,4 @@ +author: "ABoxFaux" +delete-after: True +changes: + - rscadd: "Adds pet space snacks - treats available from cargo that makes your pet immune to the void of space." \ No newline at end of file From 9d263b91365fa2bb7e3033144ded697179a07af1 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 00:21:43 +0000 Subject: [PATCH 065/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-1919.yml | 11 ----------- html/changelogs/AutoChangeLog-pr-3030.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3047.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3089.yml | 4 ---- html/changelogs/archive/2025-02.yml | 23 +++++++++++++++++++++++ 5 files changed, 23 insertions(+), 24 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-1919.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3030.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3047.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3089.yml diff --git a/html/changelogs/AutoChangeLog-pr-1919.yml b/html/changelogs/AutoChangeLog-pr-1919.yml deleted file mode 100644 index 32f24be38db..00000000000 --- a/html/changelogs/AutoChangeLog-pr-1919.yml +++ /dev/null @@ -1,11 +0,0 @@ -author: "LT3" -delete-after: True -changes: - - balance: "Event diseases are no longer hidden from health analyzers during incubation periods" - - bugfix: "Masks and head slot items actually provide protection from airborne disease spread" - - bugfix: "People other than the original airborne hosts spread diseases via respiration" - - balance: "Reduced infection chance for contact/airborne diseases from current 95%+ on all diseases to values 15%-40% based on the transmissibility strength" - - code_imp: "Airborne disease spread is rolled per target, not source" - - balance: "Disease outbreak won't spawn during rounds with less than 3 medical staff" - - balance: "Disease outbreak begins with 2-3 original hosts but lower spread speed" - - bugfix: "Disease cure won't request both antihol and alcohol mixed together" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3030.yml b/html/changelogs/AutoChangeLog-pr-3030.yml deleted file mode 100644 index 6a334896fa4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3030.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "UvvU" -delete-after: True -changes: - - bugfix: "fixes darksabre" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3047.yml b/html/changelogs/AutoChangeLog-pr-3047.yml deleted file mode 100644 index 76181938612..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3047.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "YakumoChen" -delete-after: True -changes: - - balance: "Removed \"sidearm beacons\" from spawning SecOff and HoS inventories. Complimentary glocks are still available in security officer lockers." - - balance: "Gave the HoS's silver glock to the Warden. The Head of Security only has three guns at roundstart now! How will he ever recover??" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3089.yml b/html/changelogs/AutoChangeLog-pr-3089.yml deleted file mode 100644 index 1fec27b1b33..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3089.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ABoxFaux" -delete-after: True -changes: - - rscadd: "Adds pet space snacks - treats available from cargo that makes your pet immune to the void of space." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 4bfdeaee422..8343e74a29a 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -115,3 +115,26 @@ - rscadd: Adds the Borg mat to Synth's *Turf nevimer: - bugfix: crew monitor alarm logic is updated to work with planetary z's +2025-02-16: + ABoxFaux: + - rscadd: Adds pet space snacks - treats available from cargo that makes your pet + immune to the void of space. + LT3: + - balance: Event diseases are no longer hidden from health analyzers during incubation + periods + - bugfix: Masks and head slot items actually provide protection from airborne disease + spread + - bugfix: People other than the original airborne hosts spread diseases via respiration + - balance: Reduced infection chance for contact/airborne diseases from current 95%+ + on all diseases to values 15%-40% based on the transmissibility strength + - code_imp: Airborne disease spread is rolled per target, not source + - balance: Disease outbreak won't spawn during rounds with less than 3 medical staff + - balance: Disease outbreak begins with 2-3 original hosts but lower spread speed + - bugfix: Disease cure won't request both antihol and alcohol mixed together + UvvU: + - bugfix: fixes darksabre + YakumoChen: + - balance: Removed "sidearm beacons" from spawning SecOff and HoS inventories. Complimentary + glocks are still available in security officer lockers. + - balance: Gave the HoS's silver glock to the Warden. The Head of Security only + has three guns at roundstart now! How will he ever recover?? From e9339e98b73898a27739325e54144527b6a72cc3 Mon Sep 17 00:00:00 2001 From: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> Date: Sun, 16 Feb 2025 09:50:22 -0800 Subject: [PATCH 066/120] Actually buffs funny cyborg health number (#3113) I guess I didn't realize ``/mob/living/silicon`` has a child of /mob/living/silicon/robot which has its health set to 100. ![image](https://github.com/user-attachments/assets/fee7f2af-fcd5-42ed-b425-03b02dd441d5) --- code/modules/mob/living/silicon/robot/robot_defines.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot_defines.dm b/code/modules/mob/living/silicon/robot/robot_defines.dm index b8ecaf468b0..5b7415fe5d7 100644 --- a/code/modules/mob/living/silicon/robot/robot_defines.dm +++ b/code/modules/mob/living/silicon/robot/robot_defines.dm @@ -9,8 +9,8 @@ real_name = "Cyborg" icon = 'icons/mob/silicon/robots.dmi' //SKYRAT EDIT - Modified in modular_skyrat\modules\altborgs\code\robot_defines.dm (to allow for custom transformation animations) icon_state = "robot" - maxHealth = 100 - health = 100 + maxHealth = 135 // Bubber Edit + health = 135 // Bubber Edit bubble_icon = "robot" designation = "Default" //used for displaying the prefix & getting the current model of cyborg has_limbs = TRUE From 96d4f284d434540497baa1b4bae101056f4ce38e Mon Sep 17 00:00:00 2001 From: zeroisthebiggay <43571008+zeroisthebiggay@users.noreply.github.com> Date: Sun, 16 Feb 2025 13:31:23 -0500 Subject: [PATCH 067/120] changes "The House now runs the show..." to "The House always wins." because why (#3098) ## About The Pull Request changes "The House now runs the show..." to "The House always wins." ## Why It's Good For The Game it's ideal ## Proof Of Testing
Screenshots/Videos
## Changelog :cl: fix: changes The House's welcome text "The House now runs the show..." to "The House always wins." because it simply makes More Sense /:cl: --- .../storyteller/storytellers/tellers/storyteller_6_house.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm index 881c3c096ef..701797f907e 100644 --- a/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm +++ b/modular_zubbers/code/modules/storyteller/storytellers/tellers/storyteller_6_house.dm @@ -2,7 +2,7 @@ name = "The House (Unpredictable Intensity)" desc = "The House gives permission for admins to drive the adminbus straight into the station. \ All weights set to one at Medium - Low intensity." - welcome_text = "The House now runs the show..." + welcome_text = "The House always wins." track_data = /datum/storyteller_data/tracks/fragile votable = TRUE From fdc1be99bc9cdc92d2f908247df9956c576c786f Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 19:36:23 +0100 Subject: [PATCH 068/120] Automatic changelog for PR #3098 [ci skip] --- html/changelogs/AutoChangeLog-pr-3098.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3098.yml diff --git a/html/changelogs/AutoChangeLog-pr-3098.yml b/html/changelogs/AutoChangeLog-pr-3098.yml new file mode 100644 index 00000000000..c27eece5aca --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3098.yml @@ -0,0 +1,4 @@ +author: "zeroisthebiggay" +delete-after: True +changes: + - bugfix: "changes The House's welcome text \"The House now runs the show...\" to \"The House always wins.\" because it simply makes More Sense" \ No newline at end of file From a330eb936e17e06bd723465a1639f4dcdbca3e92 Mon Sep 17 00:00:00 2001 From: gavla <96078776+shayoki@users.noreply.github.com> Date: Sun, 16 Feb 2025 12:42:58 -0600 Subject: [PATCH 069/120] Allows hypospray kits to fit in two more medical bags. (#3112) ## About The Pull Request This PR adds the hypospray kit (box) to the list of allowed objects to the first responder surgical kit and orange satchel medical kit. There's been an inconsistency since the kit can fit in medical belts and medical technician bags; this allows the kit more options to be placed in. ## Why It's Good For The Game While this gives the standard kit another option to be placed it, it still suffers the drawback of object interaction inside of a bag inside of a bag. Balance-wise, this is no different than a standard kit being placed and used within an internals box or smugglers satchel. ## Proof Of Testing ![image](https://github.com/user-attachments/assets/1949de38-9dad-4b24-9e7f-db2e459a58d5) finally. ## Changelog :cl: add: Allows hypospray kits to fit in the first responder surgical kit and orange satchel medical kit. /:cl: --- .../modules/deforest_medical_items/code/storage_items.dm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm b/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm index bcd10063aaf..ff1b3ee09ea 100644 --- a/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm +++ b/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm @@ -251,6 +251,7 @@ /obj/item/stack/sticky_tape, /obj/item/sensor_device, /obj/item/storage/fancy/cigarettes, + /obj/item/storage/hypospraykit, /obj/item/storage/pill_bottle, /obj/item/tank/internals/emergency_oxygen, /obj/item/storage/box/bandages, @@ -353,6 +354,7 @@ /obj/item/stamp, /obj/item/sensor_device, /obj/item/storage/fancy/cigarettes, + /obj/item/storage/hypospraykit, /obj/item/storage/pill_bottle, /obj/item/surgical_drapes, /obj/item/surgicaldrill, From d8c90479758c9464717345ff496e38c73c1f762b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 19:43:23 +0100 Subject: [PATCH 070/120] Automatic changelog for PR #3112 [ci skip] --- html/changelogs/AutoChangeLog-pr-3112.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3112.yml diff --git a/html/changelogs/AutoChangeLog-pr-3112.yml b/html/changelogs/AutoChangeLog-pr-3112.yml new file mode 100644 index 00000000000..5bd35b186a2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3112.yml @@ -0,0 +1,4 @@ +author: "shayoki" +delete-after: True +changes: + - rscadd: "Allows hypospray kits to fit in the first responder surgical kit and orange satchel medical kit." \ No newline at end of file From 9025351c730e4ed496583f21dc75065037fb8e21 Mon Sep 17 00:00:00 2001 From: Lasshy KorshBot Date: Sun, 16 Feb 2025 13:19:41 -0600 Subject: [PATCH 071/120] Adds the Sophie Plushie (#3106) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## About The Pull Request This adds my own plushie to the game, of my character Sophie, I made the sound and coded it, my friend drew the sprite. This is what she look like: ![sophlushie](https://github.com/user-attachments/assets/cefb7d86-69a1-48a7-9b8d-f0237e9026a4) ## Proof Of Testing Tested and merged, ran fine on all fronts. Sound works, I can use it in my loadout, buy it from the vendor, etc. ## Changelog 🆑 add: arf.ogg to emote sound folder add: Android dog plushie \🆑 --------- Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com> --- .../code/game/objects/items/plushes.dm | 10 ++++++++++ .../code/modules/loadout/categories/toys.dm | 4 ++++ modular_zubbers/code/modules/vending/games.dm | 1 + modular_zubbers/icons/obj/toys/plushes.dmi | Bin 46365 -> 53639 bytes modular_zubbers/sound/emotes/arf.ogg | Bin 0 -> 11674 bytes 5 files changed, 15 insertions(+) create mode 100644 modular_zubbers/sound/emotes/arf.ogg diff --git a/modular_zubbers/code/game/objects/items/plushes.dm b/modular_zubbers/code/game/objects/items/plushes.dm index e7ce5c9fd5d..e0256dd6341 100644 --- a/modular_zubbers/code/game/objects/items/plushes.dm +++ b/modular_zubbers/code/game/objects/items/plushes.dm @@ -234,3 +234,13 @@ icon_state = "squeaky_toy" gender = MALE squeak_override = list('sound/mobs/non-humanoids/mouse/mousesqueek.ogg' = 1) + +// Sophie/Cydia's plush +/obj/item/toy/plush/androiddog + name = "android dog plushie" + desc = "A faded plushie toy of an android dog. Will not bite. \ A sticker says 'Push me!' on a little heart on the hand." + icon = 'modular_zubbers/icons/obj/toys/plushes.dmi' + icon_state = "androiddog" + gender = FEMALE + squeak_override = list('modular_zubbers/sound/emotes/arf.ogg' = 1) + diff --git a/modular_zubbers/code/modules/loadout/categories/toys.dm b/modular_zubbers/code/modules/loadout/categories/toys.dm index 8b763f5ecc3..fb9246e6b23 100644 --- a/modular_zubbers/code/modules/loadout/categories/toys.dm +++ b/modular_zubbers/code/modules/loadout/categories/toys.dm @@ -82,3 +82,7 @@ /datum/loadout_item/toys/squeaky_toy name = "Squeaky Rat Plushie" item_path = /obj/item/toy/plush/squeaky_toy + +/datum/loadout_item/toys/androiddog + name = "Android Dog Plushie" + item_path = /obj/item/toy/plush/androiddog diff --git a/modular_zubbers/code/modules/vending/games.dm b/modular_zubbers/code/modules/vending/games.dm index 344dcf80781..10738caafa5 100644 --- a/modular_zubbers/code/modules/vending/games.dm +++ b/modular_zubbers/code/modules/vending/games.dm @@ -92,6 +92,7 @@ /obj/item/toy/plush/skyrat/plushie_synthia = 3, /obj/item/toy/plush/skyrat/jecca = 3, /obj/item/toy/plush/skyrat/courier_synth = 3, + /obj/item/toy/plush/androiddog = 3, ), ), diff --git a/modular_zubbers/icons/obj/toys/plushes.dmi b/modular_zubbers/icons/obj/toys/plushes.dmi index f79be66414efc1030678054c43f3db063b904037..8a2679cd87d3432af449dd9e06f976bdd7d5c284 100644 GIT binary patch literal 53639 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 literal 46365 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 tIUa2=HP36Y62K4%aZutUavE+hogecPlgt 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 U%T7XU+5i9m07*qoM6N<$g7h_aUH||9 diff --git a/modular_zubbers/sound/emotes/arf.ogg b/modular_zubbers/sound/emotes/arf.ogg new file mode 100644 index 0000000000000000000000000000000000000000..95255de0d1b2afc926ec6dfb9321483843be78ef GIT binary patch literal 11674 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 literal 0 HcmV?d00001 From f0baba52c3a02ae50be32a14fcc141d60b6b40e8 Mon Sep 17 00:00:00 2001 From: gavla <96078776+shayoki@users.noreply.github.com> Date: Sun, 16 Feb 2025 15:45:24 -0600 Subject: [PATCH 072/120] Allows blood filters to fit in the medical technician bag (#3116) ## About The Pull Request Does what the title says. It adds a single line of code. ## Why It's Good For The Game For months, this bag was able to hold every surgical tool except for the blood filter. Now, the pink bag is no longer afraid of performing a hemodialysis. ## Proof Of Testing ![image](https://github.com/user-attachments/assets/116e11e4-3529-4537-9c46-be9aa4ef8078) ## Changelog :cl: fix: Allows blood filters to fit in the medical technician bag. /:cl: --- .../modules/deforest_medical_items/code/storage_items.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm b/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm index ff1b3ee09ea..cc94bfbf761 100644 --- a/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm +++ b/modular_skyrat/modules/deforest_medical_items/code/storage_items.dm @@ -416,6 +416,7 @@ . = ..() can_hold = typecacheof(list( + /obj/item/blood_filter, /obj/item/bonesetter, /obj/item/cautery, /obj/item/circular_saw, From 0f0eacf53524d94f55ba5f7d49c2bc99a04d0cc0 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 22:45:48 +0100 Subject: [PATCH 073/120] Automatic changelog for PR #3116 [ci skip] --- html/changelogs/AutoChangeLog-pr-3116.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3116.yml diff --git a/html/changelogs/AutoChangeLog-pr-3116.yml b/html/changelogs/AutoChangeLog-pr-3116.yml new file mode 100644 index 00000000000..f86b17d0e14 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3116.yml @@ -0,0 +1,4 @@ +author: "shayoki" +delete-after: True +changes: + - bugfix: "Allows blood filters to fit in the medical technician bag." \ No newline at end of file From d145747af1c202556ef277f2998f6ddf9b13d39b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Sun, 16 Feb 2025 23:20:47 +0000 Subject: [PATCH 074/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3098.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3112.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3116.yml | 4 ---- html/changelogs/archive/2025-02.yml | 7 +++++++ 4 files changed, 7 insertions(+), 12 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3098.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3112.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3116.yml diff --git a/html/changelogs/AutoChangeLog-pr-3098.yml b/html/changelogs/AutoChangeLog-pr-3098.yml deleted file mode 100644 index c27eece5aca..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3098.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "zeroisthebiggay" -delete-after: True -changes: - - bugfix: "changes The House's welcome text \"The House now runs the show...\" to \"The House always wins.\" because it simply makes More Sense" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3112.yml b/html/changelogs/AutoChangeLog-pr-3112.yml deleted file mode 100644 index 5bd35b186a2..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3112.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "shayoki" -delete-after: True -changes: - - rscadd: "Allows hypospray kits to fit in the first responder surgical kit and orange satchel medical kit." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3116.yml b/html/changelogs/AutoChangeLog-pr-3116.yml deleted file mode 100644 index f86b17d0e14..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3116.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "shayoki" -delete-after: True -changes: - - bugfix: "Allows blood filters to fit in the medical technician bag." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 8343e74a29a..85eaedc43d4 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -138,3 +138,10 @@ glocks are still available in security officer lockers. - balance: Gave the HoS's silver glock to the Warden. The Head of Security only has three guns at roundstart now! How will he ever recover?? + shayoki: + - bugfix: Allows blood filters to fit in the medical technician bag. + - rscadd: Allows hypospray kits to fit in the first responder surgical kit and orange + satchel medical kit. + zeroisthebiggay: + - bugfix: changes The House's welcome text "The House now runs the show..." to "The + House always wins." because it simply makes More Sense From ab44c31eeef9f4b2fdd546543d36d54a5b596e77 Mon Sep 17 00:00:00 2001 From: Return Date: Sun, 16 Feb 2025 18:53:03 -0600 Subject: [PATCH 075/120] Ports telepathy quirk from Nova (#2534) ## About The Pull Request Ports https://github.com/NovaSector/NovaSector/pull/603 Quote from the PR: Telepathy has kind of sucked for a while in terms of actually using it as a dedicated communication method. This PR includes a full rework of telepathy into a point-targeting ability (goodbye list targeting) with a right-click override for sending quick messages to the last target you spoke with, and an emote reply (*treply) so you can keybind replies to something that doesn't involve map clicks at all. In addition, telepathy now shows a runechat message both above your head (the sender) and above the recipient's head, allowing telepathy chat to be read entirely via runechat. It comes from the recipient's head for them because the messages are in their mind. And of course, the whole thing is autopunctuated. :) There's now also a 3pt Telepathic quirk that either activates telepathy if it's in your roundstart genome or adds it as an unremovable, no cost mutation if it isn't. Espers rejoice! ## Why It's Good For The Game Quote from the PR: This makes playing roundstart psychics/psionicists and a whole slew of other concepts possible, and it also makes telepathy SIGNIFICANTLY less ass to actually use. Mind conversations for everyone! ## Proof Of Testing https://github.com/user-attachments/assets/48808344-6bb5-43d6-98ea-f751625e3406 ## Changelog :cl: yooriss (Code), ReturnToZender (port) qol: The telepathy genetics mutation has had significant usability improvements: it is now point-targeting based, and right-clicking the power allows for quick resending to the same target, a feature mirrored by the new *treply emote. Telepathy now also shows runechat messages. add: The Telepathic quirk has been added, allowing characters to start with an unremovable (or activated) telepathy mutation. /:cl: --- .../quirks/code/positive_quirks/telepathy.dm | 178 ++++++++++++++++++ tgstation.dme | 1 + 2 files changed, 179 insertions(+) create mode 100644 modular_zubbers/code/modules/quirks/code/positive_quirks/telepathy.dm diff --git a/modular_zubbers/code/modules/quirks/code/positive_quirks/telepathy.dm b/modular_zubbers/code/modules/quirks/code/positive_quirks/telepathy.dm new file mode 100644 index 00000000000..ddee44eae25 --- /dev/null +++ b/modular_zubbers/code/modules/quirks/code/positive_quirks/telepathy.dm @@ -0,0 +1,178 @@ +/datum/mutation/human/telepathy + power_path = /datum/action/cooldown/spell/pointed/telepathy + +/datum/action/cooldown/spell/pointed/telepathy + name = "Telepathic Communication" + desc = "Left click: point target to project a thought to them. Right click: project to your last thought target, if in range." + button_icon = 'icons/mob/actions/actions_revenant.dmi' + button_icon_state = "r_transmit" + spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC + antimagic_flags = MAGIC_RESISTANCE_MIND + cooldown_time = 1 SECONDS + cast_range = 7 + /// What's the last mob we point-targeted with this ability? + var/datum/weakref/last_target_ref + /// The message we send + var/message + /// Are we blocking casts? + var/blocked = FALSE + +/datum/action/cooldown/spell/pointed/telepathy/is_valid_target(atom/cast_on) + . = ..() + if (!.) + return FALSE + + if (!isliving(cast_on)) + to_chat(owner, span_warning("Inanimate objects can't hear your thoughts.")) + owner.balloon_alert(owner, "not a thing with thoughts!") + return FALSE + + var/mob/living/living_target = cast_on + if (living_target.stat == DEAD) + to_chat(owner, span_warning("The disruptive noise of departed resonance inhibits your ability to communicate with the dead.")) + owner.balloon_alert(owner, "can't transmit to the dead!") + return FALSE + + if (get_dist(living_target, owner) > cast_range) + owner.balloon_alert(owner, "too far away!") + return FALSE + + return TRUE + +/datum/action/cooldown/spell/pointed/telepathy/before_cast(atom/cast_on) + . = ..() + if(. & SPELL_CANCEL_CAST || blocked) + return + + message = autopunct_bare(capitalize(tgui_input_text(owner, "What do you wish to whisper to [cast_on]?", "[src]", max_length = MAX_MESSAGE_LEN))) + if(QDELETED(src) || QDELETED(owner) || QDELETED(cast_on) || !can_cast_spell()) + return . | SPELL_CANCEL_CAST + + if(get_dist(cast_on, owner) > cast_range) + owner.balloon_alert(owner, "they're too far!") + return . | SPELL_CANCEL_CAST + + if(!message || length(message) == 0) + reset_spell_cooldown() + return . | SPELL_CANCEL_CAST + +/datum/action/cooldown/spell/pointed/telepathy/Trigger(trigger_flags, atom/target) + if (trigger_flags & TRIGGER_SECONDARY_ACTION) + var/mob/living/last_target = last_target_ref?.resolve() + + if(isnull(last_target)) + last_target_ref = null + owner.balloon_alert(owner, "last target is not available!") + return + else if(get_dist(last_target, owner) > cast_range) + owner.balloon_alert(owner, "[last_target] is too far away!") + return + + blocked = TRUE + + message = autopunct_bare(capitalize(tgui_input_text(owner, "What do you wish to whisper to [last_target]?", "[src]", max_length = MAX_MESSAGE_LEN))) + if(QDELETED(src) || QDELETED(owner) || QDELETED(last_target) || !can_cast_spell()) + blocked = FALSE + return + send_thought(owner, last_target, message) + src.StartCooldown() + blocked = FALSE + return + + . = ..() + +/datum/action/cooldown/spell/pointed/telepathy/cast(mob/living/cast_on) + . = ..() + send_thought(owner, cast_on, message) + +/datum/action/cooldown/spell/pointed/telepathy/proc/send_thought(mob/living/caster, mob/living/target, message) + log_directed_talk(caster, target, message, LOG_SAY, tag = "telepathy") + + last_target_ref = WEAKREF(target) + + to_chat(owner, span_boldnotice("You reach out and convey to [target]: \"[span_purple(message)]\"")) + // flub a runechat chat message, do something with the language later + if(owner.client?.prefs.read_preference(/datum/preference/toggle/enable_runechat)) + owner.create_chat_message(owner, owner.get_selected_language(), message, list("italics")) + if(!target.can_block_magic(antimagic_flags, charge_cost = 0) && target.client) //make sure we've got a client before we bother sending anything + //different messaging if the target has the telepathy mutation themselves themselves + if (ishuman(target)) + var/mob/living/carbon/human/human_target = target + var/datum/mutation/human/telepathy/tele_mut = human_target.dna.get_mutation(/datum/mutation/human/telepathy) + + if (tele_mut) + to_chat(target, span_boldnotice("[caster]'s psychic presence resounds in your mind: \"[span_purple(message)]\"")) + else + to_chat(target, span_boldnotice("A voice echoes in your head: \"[span_purple(message)]\"")) + + if(target.client?.prefs.read_preference(/datum/preference/toggle/enable_runechat)) + target.create_chat_message(target, target.get_selected_language(), message, list("italics")) // it appears over them since they hear it in their head + else + owner.balloon_alert(owner, "something blocks your thoughts!") + to_chat(owner, span_warning("Your mind encounters impassable resistance: the thought was blocked!")) + return + + // send to ghosts as well i guess + for(var/mob/dead/ghost as anything in GLOB.dead_mob_list) + if(!isobserver(ghost)) + continue + + var/from_link = FOLLOW_LINK(ghost, owner) + var/from_mob_name = span_boldnotice("[owner]") + var/to_link = FOLLOW_LINK(ghost, target) + var/to_mob_name = span_name("[target]") + + to_chat(ghost, "[from_link] " + span_purple("\[Telepathy\] [from_mob_name] transmits, \"[message]\"") + " to [to_mob_name] [to_link]") + +/datum/quirk/telepathic + name = "Telepathic" + desc = "You are able to transmit your thoughts to other living creatures." + gain_text = span_purple("Your mind roils with psychic energy.") + lose_text = span_notice("Mundanity encroaches upon your thoughts once again.") + medical_record_text = "Patient has an unusually enlarged Broca's area visible in cerebral biology, and appears to be able to communicate via extrasensory means." + value = 3 + icon = FA_ICON_HEAD_SIDE_COUGH + /// Ref used to easily retrieve the action used when removing the quirk from silicons + var/datum/weakref/tele_action_ref + +/datum/quirk/telepathic/add(client/client_source) + if (iscarbon(quirk_holder)) + var/mob/living/carbon/human/human_holder = quirk_holder + + if(!human_holder.dna.activate_mutation(/datum/mutation/human/telepathy)) + human_holder.dna.add_mutation(/datum/mutation/human/telepathy, MUT_OTHER) + else if(issilicon(quirk_holder)) + var/mob/living/silicon/robot_holder = quirk_holder + var/datum/action/cooldown/spell/pointed/telepathy/tele_action = new + + tele_action.Grant(robot_holder) + tele_action_ref = WEAKREF(tele_action) + +/datum/quirk/telepathic/remove() + var/datum/action/cooldown/spell/pointed/telepathy/tele_action = tele_action_ref?.resolve() + if(isnull(tele_action)) + tele_action_ref = null + if(iscarbon(quirk_holder)) + var/mob/living/carbon/human/human_holder = quirk_holder + human_holder.dna.remove_mutation(/datum/mutation/human/telepathy) + else if(issilicon(quirk_holder) && !isnull(tele_action)) + QDEL_NULL(tele_action) + tele_action_ref = null + +/datum/emote/living/telepathy_reply + key = "treply" + key_third_person = "treply" + cooldown = 4 SECONDS + +/datum/emote/living/telepathy_reply/run_emote(mob/living/user, params, type_override, intentional) + if (ishuman(user) && intentional) + var/mob/living/carbon/human/human_user = user + var/datum/mutation/human/telepathy/mutation = human_user.dna.get_mutation(/datum/mutation/human/telepathy) + if (mutation) + var/datum/action/cooldown/spell/pointed/telepathy/tele_action = locate() in user.actions + // just straight up call the right-click action as is + if (tele_action) + tele_action.Trigger(TRIGGER_SECONDARY_ACTION) + tele_action.blocked = FALSE + + return ..() diff --git a/tgstation.dme b/tgstation.dme index 0b3562e20de..28f79ca8c31 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9252,6 +9252,7 @@ #include "modular_zubbers\code\modules\projectiles\projectile\bullets\smg.dm" #include "modular_zubbers\code\modules\protected_roles\code\antag_restricted_jobs.dm" #include "modular_zubbers\code\modules\public_logging\public_logging.dm" +#include "modular_zubbers\code\modules\quirks\code\positive_quirks\telepathy.dm" #include "modular_zubbers\code\modules\quote_of_the_round\config.dm" #include "modular_zubbers\code\modules\quote_of_the_round\debug_verbs.dm" #include "modular_zubbers\code\modules\quote_of_the_round\telecomms.dm" From 18c31348323b8b0f375f4e26c0d6c0514eb264e5 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 17 Feb 2025 01:53:28 +0100 Subject: [PATCH 076/120] Automatic changelog for PR #2534 [ci skip] --- html/changelogs/AutoChangeLog-pr-2534.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2534.yml diff --git a/html/changelogs/AutoChangeLog-pr-2534.yml b/html/changelogs/AutoChangeLog-pr-2534.yml new file mode 100644 index 00000000000..eed020185d4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2534.yml @@ -0,0 +1,5 @@ +author: "yooriss (Code), ReturnToZender (port)" +delete-after: True +changes: + - qol: "The telepathy genetics mutation has had significant usability improvements: it is now point-targeting based, and right-clicking the power allows for quick resending to the same target, a feature mirrored by the new *treply emote. Telepathy now also shows runechat messages." + - rscadd: "The Telepathic quirk has been added, allowing characters to start with an unremovable (or activated) telepathy mutation." \ No newline at end of file From 559c1f2fb9551fa334820bae212521d6157b57ec Mon Sep 17 00:00:00 2001 From: JustMeTheIInd <145101584+JustMeTheIInd@users.noreply.github.com> Date: Mon, 17 Feb 2025 05:28:11 +0100 Subject: [PATCH 077/120] Changes the bedsheet bin in Infidorm apartment bathroom to a towel bin (#3115) ## About The Pull Request I believe the original mappers have simply made a mistake by placing a bedsheet bin instead of a towel bin in the bathroom Also put a bedsheet bin in the bedroom, if anyone would ever need it for any reason. Anyways please speedmerge as this is crucial to server operations. ## Why It's Good For The Game Spessmen no longer have to dry themselves off with bedsheets? Profit? ## Proof Of Testing ![Screenshot (1)](https://github.com/user-attachments/assets/94ff668c-45c0-40f3-9782-fbd6a26eb476) ## Changelog :cl: map: changed the bedsheet bin in InfiDorm apartment map to a towel bin. map: added a bedsheet bin in InfiDorm apartment map bedroom. /:cl: --- modular_skyrat/modules/hotel_rooms/apartment.dmm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modular_skyrat/modules/hotel_rooms/apartment.dmm b/modular_skyrat/modules/hotel_rooms/apartment.dmm index 92fdc9c0986..9dafa238655 100644 --- a/modular_skyrat/modules/hotel_rooms/apartment.dmm +++ b/modular_skyrat/modules/hotel_rooms/apartment.dmm @@ -215,10 +215,11 @@ /area/misc/hilbertshotel) "pm" = ( /obj/structure/table/wood, -/obj/item/serviette_pack, /obj/effect/turf_decal/siding/wood{ dir = 9 }, +/obj/structure/bedsheetbin, +/obj/item/serviette_pack, /turf/open/floor/wood/parquet, /area/misc/hilbertshotel) "pD" = ( @@ -417,7 +418,7 @@ /obj/structure/sign/poster/random/directional/south, /obj/machinery/vending/wallmed/directional/west, /obj/structure/table, -/obj/structure/bedsheetbin, +/obj/structure/towel_bin, /turf/open/floor/iron/freezer, /area/misc/hilbertshotel) "Py" = ( From f14c571ec40238c8fe179feb200b486c75ea5b08 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 17 Feb 2025 05:28:36 +0100 Subject: [PATCH 078/120] Automatic changelog for PR #3115 [ci skip] --- html/changelogs/AutoChangeLog-pr-3115.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3115.yml diff --git a/html/changelogs/AutoChangeLog-pr-3115.yml b/html/changelogs/AutoChangeLog-pr-3115.yml new file mode 100644 index 00000000000..457c85953d6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3115.yml @@ -0,0 +1,5 @@ +author: "JustMeTheIInd" +delete-after: True +changes: + - map: "changed the bedsheet bin in InfiDorm apartment map to a towel bin." + - map: "added a bedsheet bin in InfiDorm apartment map bedroom." \ No newline at end of file From 65e7c8c6bd7e52104f01b2e081ad484b3fadbdc0 Mon Sep 17 00:00:00 2001 From: Mosley <93835010+MosleyTheMalO@users.noreply.github.com> Date: Sun, 16 Feb 2025 23:29:37 -0500 Subject: [PATCH 079/120] Fixes preferences resetting (#3104) ## About The Pull Request Fixes https://github.com/Bubberstation/Bubberstation/issues/2879 The reason for the issue seems rooted in skyrat's own port of the original json configs on tg (or perhaps the loads of changes they've made to it over the years). This pr patches it so that characters won't reset between rounds. original fixes by smartkar ## Why It's Good For The Game Guess ## Proof Of Testing
Screenshots/Videos ![qe0kfreu8l](https://github.com/user-attachments/assets/c84b20a1-c09b-4905-b682-3c280c7e8ab3)
It saves the character on creation and works fine after re-accessing the savefile ## Changelog :cl: fixes: fixes the issue where characters would reset after a round or on switching character slots /:cl: --- code/modules/client/preferences.dm | 2 +- code/modules/client/preferences_savefile.dm | 8 ++++---- .../code/modules/client/preferences_savefile.dm | 9 +++++---- .../code/modules/client/verbs/character_directory.dm | 1 + 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index aee974ce57b..42a021881fa 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -136,7 +136,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(!loaded_preferences_successfully) save_preferences() - save_character() //let's save this new random character so it doesn't keep generating new ones. + save_character(TRUE) //let's save this new random character so it doesn't keep generating new ones. // BUBBER EDIT /datum/preferences/ui_interact(mob/user, datum/tgui/ui) // There used to be code here that readded the preview view if you "rejoined" diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 65aa5642b8b..07f38cb7668 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -25,7 +25,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car */ /datum/preferences/proc/save_data_needs_update(list/save_data) if(!save_data) // empty list, either savefile isnt loaded or its a new char - return -1 + return -3 // BUBBER EDIT if(save_data["version"] < SAVEFILE_VERSION_MIN) return -2 if(save_data["version"] < SAVEFILE_VERSION_MAX) @@ -328,7 +328,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car all_quirks = SSquirks.filter_invalid_quirks(SANITIZE_LIST(all_quirks), augments)// SKYRAT EDIT - AUGMENTS+ validate_quirks() - return TRUE + return needs_update != -3 // BUBBER EDIT /datum/preferences/proc/save_character(update) // Skyrat edit - Choose when to update (This is stupid) SHOULD_NOT_SLEEP(TRUE) @@ -343,7 +343,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if (preference.savefile_identifier != PREFERENCE_CHARACTER) continue - if (!(preference.type in recently_updated_keys)) + if (!update && !(preference.type in recently_updated_keys)) // BUBBER EDIT continue recently_updated_keys -= preference.type @@ -376,7 +376,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if (!load_character(new_slot)) tainted_character_profiles = TRUE randomise_appearance_prefs() - save_character() + save_character(TRUE) // BUBBER EDIT for (var/datum/preference_middleware/preference_middleware as anything in middleware) preference_middleware.on_new_character(usr) diff --git a/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm b/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm index 4b5402ea9ab..4b4aafb5512 100644 --- a/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm +++ b/modular_skyrat/master_files/code/modules/client/preferences_savefile.dm @@ -25,7 +25,7 @@ /datum/preferences/proc/savefile_needs_update_skyrat(list/save_data) var/savefile_version = save_data["modular_version"] - if(save_data.len && savefile_version < MODULAR_SAVEFILE_VERSION_MAX) + if(savefile_version && savefile_version < MODULAR_SAVEFILE_VERSION_MAX) // BUBBER EDIT return savefile_version return MODULAR_SAVEFILE_UP_TO_DATE @@ -79,7 +79,7 @@ languages = save_languages tgui_prefs_migration = save_data["tgui_prefs_migration"] - if(!tgui_prefs_migration && save_data.len) // If save_data is empty, this is definitely a new character + if(!tgui_prefs_migration && save_data["modular_version"] && save_data["modular_version"] < MODULAR_SAVEFILE_VERSION_MAX) // BUBBER EDIT - if we're missing version from migration, then the char is new. Won't be able to migrate either. to_chat(parent, examine_block(span_redtext("PREFERENCE MIGRATION BEGINNING.\ \nDO NOT INTERACT WITH YOUR PREFERENCES UNTIL THIS PROCESS HAS BEEN COMPLETED.\ \nDO NOT DISCONNECT UNTIL THIS PROCESS HAS BEEN COMPLETED.\ @@ -284,8 +284,9 @@ save_data["alt_job_titles"] = alt_job_titles save_data["languages"] = languages save_data["food_preferences"] = food_preferences - if(updated) - save_data["modular_version"] = MODULAR_SAVEFILE_VERSION_MAX + //if(updated) // BUBBER EDIT - This is bullshit, results in newly created characters getting invalid data. Load character should forcefully migrate it, so we can safely assume its up to date + // save_data["modular_version"] = MODULAR_SAVEFILE_VERSION_MAX + save_data["modular_version"] = MODULAR_SAVEFILE_VERSION_MAX /datum/preferences/proc/update_body_parts(datum/preference/preference) diff --git a/modular_zubbers/code/modules/client/verbs/character_directory.dm b/modular_zubbers/code/modules/client/verbs/character_directory.dm index 9e90850dae1..bbae72f6561 100644 --- a/modular_zubbers/code/modules/client/verbs/character_directory.dm +++ b/modular_zubbers/code/modules/client/verbs/character_directory.dm @@ -84,6 +84,7 @@ GLOBAL_DATUM(character_directory, /datum/character_directory) /// Saves us on copypaste code /datum/preference/choiced/directory_character_prefs savefile_key = "char_directory_char_prefs" // This is so unit checks don't scream + abstract_type = /datum/preference/choiced/directory_character_prefs /datum/preference/choiced/directory_character_prefs/init_possible_values() return list("Yes", "No", "No ERP", "Check OOC", "Unset", "Maybe") From ca0f5ec89ddc2ce2e622b43ee66c2eccffab81c6 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 17 Feb 2025 05:30:03 +0100 Subject: [PATCH 080/120] Automatic changelog for PR #3104 [ci skip] --- html/changelogs/AutoChangeLog-pr-3104.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3104.yml diff --git a/html/changelogs/AutoChangeLog-pr-3104.yml b/html/changelogs/AutoChangeLog-pr-3104.yml new file mode 100644 index 00000000000..7bb03bacb23 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3104.yml @@ -0,0 +1,4 @@ +author: "MosleyTheMalO" +delete-after: True +changes: + - bugfix: "fixes the issue where characters would reset after a round or on switching character slots" \ No newline at end of file From 3d474b16530d0d6281c953cce6cd359e850b685e Mon Sep 17 00:00:00 2001 From: urfrenthespessmen Date: Mon, 17 Feb 2025 05:48:24 +0000 Subject: [PATCH 081/120] New loadout items (#3103) Shameless copypaste from nova ~~0% tested, this was all webclient~~ 100% tested, compiling, and modular :cl: add: Croptops in loadout /:cl: --------- Co-authored-by: Artur Lang <24881678+Arturlang@users.noreply.github.com> --- .../greyscale/json_configs/crop_jacket.json | 82 ++++++++++++++++++ .../json_configs/crop_jacket_none.json | 58 +++++++++++++ .../json_configs/crop_jacket_short.json | 82 ++++++++++++++++++ .../code/modules/GAGS/greyscale_configs.dm | 31 +++++++ .../code/modules/clothing/suits/croptops.dm | 52 +++++++++++ .../code/modules/loadout/categories/suit.dm | 26 ++++++ .../icons/obj/clothing/suits/crop_jacket.dmi | Bin 0 -> 529 bytes .../obj/clothing/suits/crop_jacket_worn.dmi | Bin 0 -> 914 bytes .../clothing/suits/sleeveless_crop_jacket.dmi | Bin 0 -> 330 bytes .../suits/sleeveless_crop_jacket_worn.dmi | Bin 0 -> 456 bytes tgstation.dme | 1 + 11 files changed, 332 insertions(+) create mode 100644 modular_zubbers/code/datums/greyscale/json_configs/crop_jacket.json create mode 100644 modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_none.json create mode 100644 modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_short.json create mode 100644 modular_zubbers/code/modules/clothing/suits/croptops.dm create mode 100644 modular_zubbers/icons/obj/clothing/suits/crop_jacket.dmi create mode 100644 modular_zubbers/icons/obj/clothing/suits/crop_jacket_worn.dmi create mode 100644 modular_zubbers/icons/obj/clothing/suits/sleeveless_crop_jacket.dmi create mode 100644 modular_zubbers/icons/obj/clothing/suits/sleeveless_crop_jacket_worn.dmi diff --git a/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket.json b/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket.json new file mode 100644 index 00000000000..c9210a17a1b --- /dev/null +++ b/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket.json @@ -0,0 +1,82 @@ +{ + "crop_jacket": [ + { + "type": "icon_state", + "icon_state": "crop_jacket", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ], + "crop_jacket_t": [ + { + "type": "icon_state", + "icon_state": "crop_jacket_open", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_open_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ], + "jacket": [ + { + "type": "icon_state", + "icon_state": "jacket", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ], + "jacket_t": [ + { + "type": "icon_state", + "icon_state": "jacket_open", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_open_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ] +} diff --git a/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_none.json b/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_none.json new file mode 100644 index 00000000000..3830a4dc5e8 --- /dev/null +++ b/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_none.json @@ -0,0 +1,58 @@ +{ + "crop_jacket_sleeveless": [ + { + "type": "icon_state", + "icon_state": "crop_jacket", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ], + "crop_jacket_sleeveless_t": [ + { + "type": "icon_state", + "icon_state": "crop_jacket_open", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_open_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ], + "jacket_sleeveless": [ + { + "type": "icon_state", + "icon_state": "jacket", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ], + "jacket_sleeveless_t": [ + { + "type": "icon_state", + "icon_state": "jacket_open", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_open_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + } + ] +} diff --git a/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_short.json b/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_short.json new file mode 100644 index 00000000000..c01dedff7d7 --- /dev/null +++ b/modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_short.json @@ -0,0 +1,82 @@ +{ + "crop_jacket_short": [ + { + "type": "icon_state", + "icon_state": "crop_jacket", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve_short", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ], + "crop_jacket_short_t": [ + { + "type": "icon_state", + "icon_state": "crop_jacket_open", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_open_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve_short", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ], + "jacket_short": [ + { + "type": "icon_state", + "icon_state": "jacket", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve_short", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ], + "jacket_short_t": [ + { + "type": "icon_state", + "icon_state": "jacket_open", + "blend_mode": "overlay", + "color_ids": [ 1 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_open_collar", + "blend_mode": "overlay", + "color_ids": [ 2 ] + }, + { + "type": "icon_state", + "icon_state": "crop_jacket_sleeve_short", + "blend_mode": "overlay", + "color_ids": [ 3 ] + } + ] +} diff --git a/modular_zubbers/code/modules/GAGS/greyscale_configs.dm b/modular_zubbers/code/modules/GAGS/greyscale_configs.dm index 9b8e004068a..4240e64026b 100644 --- a/modular_zubbers/code/modules/GAGS/greyscale_configs.dm +++ b/modular_zubbers/code/modules/GAGS/greyscale_configs.dm @@ -112,3 +112,34 @@ name = "Worn Miniskirt" icon_file = 'modular_zubbers/icons/mob/clothing/under/skirts_dresses.dmi' json_config = 'modular_zubbers/code/datums/greyscale/json_configs/miniskirt_worn.json' + +// SHORT-SLEEVED CROPPED JACKET + +/datum/greyscale_config/crop_jacket + name = "Tailored Jacket" + icon_file = 'modular_zubbers/icons/obj/clothing/suits/crop_jacket.dmi' + json_config = 'modular_zubbers/code/datums/greyscale/json_configs/crop_jacket.json' + +/datum/greyscale_config/crop_jacket/worn + name = "Tailored Jacket (Worn)" + icon_file = 'modular_zubbers/icons/obj/clothing/suits/crop_jacket_worn.dmi' + +/datum/greyscale_config/shortsleeve_crop_jacket + name = "Tailored Jacket (Short-Sleeved)" + icon_file = 'modular_zubbers/icons/obj/clothing/suits/crop_jacket.dmi' + json_config = 'modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_short.json' + +/datum/greyscale_config/shortsleeve_crop_jacket/worn + name = "Tailored Jacket (Short-Sleeved, Worn)" + icon_file = 'modular_zubbers/icons/obj/clothing/suits/crop_jacket_worn.dmi' + +// SLEEVELESS CROPPED JACKET + +/datum/greyscale_config/sleeveless_crop_jacket + name = "Tailored Jacket (Sleeveless)" + icon_file = 'modular_zubbers/icons/obj/clothing/suits/crop_jacket.dmi' + json_config = 'modular_zubbers/code/datums/greyscale/json_configs/crop_jacket_none.json' + +/datum/greyscale_config/sleeveless_crop_jacket/worn + name = "Tailored Jacket (Sleeveless, Worn)" + icon_file = 'modular_zubbers/icons/obj/clothing/suits/crop_jacket_worn.dmi' diff --git a/modular_zubbers/code/modules/clothing/suits/croptops.dm b/modular_zubbers/code/modules/clothing/suits/croptops.dm new file mode 100644 index 00000000000..a4471d7adef --- /dev/null +++ b/modular_zubbers/code/modules/clothing/suits/croptops.dm @@ -0,0 +1,52 @@ +//Basetype + +/obj/item/clothing/suit/crop_jacket + name = "crop-top jacket" + desc = "A jacket that, some time long past, probably made quite the effective outdoors wear. Now, \ + some barbarian has cut the entire bottom half out." + icon_state = "crop_jacket" + greyscale_config = /datum/greyscale_config/crop_jacket + greyscale_config_worn = /datum/greyscale_config/crop_jacket/worn + greyscale_colors = "#ebebeb#a52f29#292929" + body_parts_covered = CHEST|ARMS + flags_1 = IS_PLAYER_COLORABLE_1 + supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON + +/obj/item/clothing/suit/crop_jacket/Initialize(mapload) + . = ..() + AddComponent(/datum/component/toggle_icon) + +/obj/item/clothing/suit/crop_jacket/shortsleeve + name = "short-sleeved crop-top jacket" + desc = "A jacket that, some time long past, probably made quite the effective outdoors wear. Now, \ + some barbarian has cut the entire bottom half out, as well as half the sleeves." + icon_state = "crop_jacket_short" + greyscale_config = /datum/greyscale_config/shortsleeve_crop_jacket + greyscale_config_worn = /datum/greyscale_config/shortsleeve_crop_jacket/worn + +/obj/item/clothing/suit/crop_jacket/sleeveless + name = "sleeveless crop-top jacket" + desc = "A jacket that, some time long past, probably made quite the effective outdoors wear. Now, \ + some barbarian has cut the entire bottom half out, as well as the sleeves." + icon_state = "crop_jacket_sleeveless" + greyscale_config = /datum/greyscale_config/sleeveless_crop_jacket + greyscale_config_worn = /datum/greyscale_config/sleeveless_crop_jacket/worn + greyscale_colors = "#ebebeb#a52f29" + body_parts_covered = CHEST + +/obj/item/clothing/suit/crop_jacket/long + name = "sports jacket" + desc = "A jacket that probably makes quite the effective outdoors wear." + icon_state = "jacket" + +/obj/item/clothing/suit/crop_jacket/shortsleeve/long + name = "short-sleeved sports jacket" + desc = "A jacket that probably makes quite the effective outdoors wear. However, \ + some barbarian has cut the sleeves in half." + icon_state = "jacket_short" + +/obj/item/clothing/suit/crop_jacket/sleeveless/long + name = "sleeveless sports jacket" + desc = "A jacket that probably makes quite the effective outdoors wear. However, \ + some barbarian has cut the sleeves off." + icon_state = "jacket_sleeveless" diff --git a/modular_zubbers/code/modules/loadout/categories/suit.dm b/modular_zubbers/code/modules/loadout/categories/suit.dm index 8bb2fb201db..5d73cc301a4 100644 --- a/modular_zubbers/code/modules/loadout/categories/suit.dm +++ b/modular_zubbers/code/modules/loadout/categories/suit.dm @@ -27,6 +27,32 @@ name = "Pirate coat" item_path = /obj/item/clothing/suit/costume/pirate +// Fancy crop-top jackets + +/datum/loadout_item/suit/crop_jacket + name = "Colourable Crop-Top Jacket" + item_path = /obj/item/clothing/suit/crop_jacket + +/datum/loadout_item/suit/shortsleeve_crop_jacket + name = "Colourable Short-Sleeved Crop-Top Jacket" + item_path = /obj/item/clothing/suit/crop_jacket/shortsleeve + +/datum/loadout_item/suit/sleeveless_crop_jacket + name = "Colourable Sleeveless Crop-Top Jacket" + item_path = /obj/item/clothing/suit/crop_jacket/sleeveless + +/datum/loadout_item/suit/sports_jacket + name = "Colourable Sports Jacket" + item_path = /obj/item/clothing/suit/crop_jacket/long + +/datum/loadout_item/suit/shortsleeve_sports_jacket + name = "Colourable Short-Sleeved Sports Jacket" + item_path = /obj/item/clothing/suit/crop_jacket/shortsleeve/long + +/datum/loadout_item/suit/sleeveless_sports_jacket + name = "Colourable Sleeveless Sports Jacket" + item_path = /obj/item/clothing/suit/crop_jacket/sleeveless/long + //Donator items V V V /datum/loadout_item/suit/runner_engi diff --git a/modular_zubbers/icons/obj/clothing/suits/crop_jacket.dmi b/modular_zubbers/icons/obj/clothing/suits/crop_jacket.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c57491e11e6c257f0455d09134253c70fd56f06b GIT binary patch literal 529 zcmV+s0`C2ZP)+9?8?(UtabTt3~00DGTPE!Ct=GbNc005hMR9JLGWpiV4X>fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3K9+D=|4cwM2=FGbOXA7${)K#hF%=n41b=qbZBeFG$TJs5ZGMzaXASbCJ}NYhe-%eD+CSJ)V|P4%f`TRtH8>SxcRUaO;HnVT z;AGM3&DfVu*ssejrywD_K=vsAA%%Nv!O65!YvYz(ht8j(D8Ea7K42aY=Ya?J=rRw8 z^8im+Rp2rYh-%m{!EwQ9c7-h9yL7v}Y*es#m&yXZOS|P|ilQk0jDHUAU1E>7F-&?w z<6q-DPl$2!3MJ`DN8$c#K0JGf&*=T+0VbxE>nB$TTzvVPk3-8nn#~F=Mfo~c6owpN TyCacj00000NkvXXu0mjf9@XT- literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/obj/clothing/suits/crop_jacket_worn.dmi b/modular_zubbers/icons/obj/clothing/suits/crop_jacket_worn.dmi new file mode 100644 index 0000000000000000000000000000000000000000..a13b01aa1bbb841b4d7eb0ed70c526c202784965 GIT binary patch literal 914 zcmV;D18w|?P)Ei$Z00DGTPE!Ct=GbNc005hMR9JLGWpiV4X>fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3K9+D=|4cwM2=FGbOXA7^I7fGp#5wHx;$h_^2Pzc~N^0*6UNK~#90 z?V4R~t1uLV55x-yP8L8QdB3sm0wBr?BHjIOhj+nkQ5+fd8trX1|)2J`E5ePRFI!X0gf9qhsh+xAw6x;(i8 z>ZMH9m;TT?(B6l7SfV|La))=I^s-6T7yj(S1&Y>tyeCE*bXYH&WPQ;(7+7r3$|hNF ztaJOcfklHuhyRr_S^x4Y_<#Xw>tA3HENPY+7<*{o9yZ=7g9Z&6Fo>Q(RNwEb4hkAD z97Zb8Jxm|86q)+#6$>i0f?RRSI9<%}lde~2!=mTk*v^YWMf9xMNL;m-wKGi?S*aV?L2jwgKhrEH#u5q+%F&xJR7N3F6|Cn9l zXjt^{&@cOCx5y0H^$NPGFuG;3>ph;Mf!7n(@_K`&OUTbKz-K1?ryF!>O$Z@`kT2o& z-w!hH|8x0&=pSm-m=v?`|8x0&=pXP3)D`LX|5N!N!?Di)hgwo(-~SIcO&N5_1tSCf z?s+2r!xqbh2KwFeME<|v6&!W`&lvPlWb%KH75i?H0U?ACLI`>C-QN#n=pSm(D*tD{ zAJ`VPoG|>_txe|tTs&rj)-)>fmfx|x|yWs3dw*Ju$y*EW# zOX1YH4v{|ippdP9v`6nvlGajUM>Y<*kJmrHHeB3{jy|xALqVJQIF{be>%Ze4bDq)B z@uqPS9&t)y9t~k}oYD8=NzrN(L-PjD?d@mu^idifuOWmGLJ0YZsKfnt;sgF`$mIX^ oWb*%djP0VK1@W8^LI}z6A2}FlinT8?jQ{`u07*qoM6N<$f*{|#bpQYW literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/obj/clothing/suits/sleeveless_crop_jacket.dmi b/modular_zubbers/icons/obj/clothing/suits/sleeveless_crop_jacket.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5323fff47344578996b03349d8a25eacdd2916a5 GIT binary patch literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!VDw>HYaZfQbGYfA+A8Wt83n&gC{-RV_v_0 z{qEhnxhqOcfuf8hL4Lsu4$p3+0XeNzArU1msl~}fnFS@8`FRWs6?1~a3W`dtKMQnFsHcl#h(&L5f&}Xl21PbC#+sTmQPt4Y6h?)3#+m0eM5I(Y zlAJOGx;TCGy0rW>%Cr_q960di(Thht=X=j+`RSdi5arO+;(Q#MprMn|<9|>?LXm+% YdnMbQ2ijBXffg`$y85}Sb4q9e02uOh%m4rY literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/obj/clothing/suits/sleeveless_crop_jacket_worn.dmi b/modular_zubbers/icons/obj/clothing/suits/sleeveless_crop_jacket_worn.dmi new file mode 100644 index 0000000000000000000000000000000000000000..8207d2e190c72710378cdbe7c5cdcba2ab84c576 GIT binary patch literal 456 zcmV;(0XP1MP)Ei$Z00DGTPE!Ct=GbNc004%1R9JLGWpiV4X>fFDZ*Bkp zc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM;w;ZhDainGjE%TBGg33tGfE(w;*!LY zR3KBSI43o=EHx*!xHvw!D8C>+D=|4cwM2=FGbOXA7-R|;XIfEWZYqdvNJv|Ja(+%u zVi7Lg$_lQ2E?`#z0I$|H$%{S&vH$=8(n&-?R9J=Wm%$CgAPhxG$^e06fPl*Y!3#81 zCqU}{tCS<(NR4t!E5F+V+ds<1!WiY3@n)RBIfJ`^^_F6~qf_f973>)NyST=0HDPWG zCMs*|BL~WD16Ob)ZJ@mI2G`8^4OTQzhJqn-mJQ(6hq!=8@H%3LpJ4aJy}%uKJ#jcd zQ55BRcn5Z{FX~Aut=4_9q7%3oQy!rIT`)l;npq|W9N01E$M*t>KilwJrsJZP-JMKO y6h*lj@_iupMTdMJ$bHe_N!+L0Wh#pDk9+|778ObtK)%-i0000 Date: Mon, 17 Feb 2025 06:48:48 +0100 Subject: [PATCH 082/120] Automatic changelog for PR #3103 [ci skip] --- html/changelogs/AutoChangeLog-pr-3103.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3103.yml diff --git a/html/changelogs/AutoChangeLog-pr-3103.yml b/html/changelogs/AutoChangeLog-pr-3103.yml new file mode 100644 index 00000000000..e20579fa85c --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3103.yml @@ -0,0 +1,4 @@ +author: "urfrenthespessmen" +delete-after: True +changes: + - rscadd: "Croptops in loadout" \ No newline at end of file From a2e940e33672ea2526728840b0b46cd5d41fa13a Mon Sep 17 00:00:00 2001 From: Return Date: Mon, 17 Feb 2025 09:36:17 -0600 Subject: [PATCH 083/120] Security multisec loadout update (#2998) ## About The Pull Request Part of a 20-part series where I move vendor items to the loadout. There are twenty vendors. Kill me. This adds most (but not all) of the cosmetics from the multisec vendor to the loadout, and updates some of their reskins. This doesn't add any new content, just makes it available through the loadout. ## Why It's Good For The Game Most of the Security cosmetics simply aren't available in the loadout for some reason. ## Proof Of Testing Compiles and has been meticulously tested for functioning! See images. ![image](https://github.com/user-attachments/assets/6c7e2ff2-822b-4ecf-af41-4f531e840362) ![image](https://github.com/user-attachments/assets/e6a24f85-f042-41c9-a6e8-0f5147e6e40c) ![image](https://github.com/user-attachments/assets/e3338ced-19b9-4d2f-af14-f846cb60a68e) ## Changelog :cl: ReturnToZender qol: Adds most of the Security cosmetics to the loadout spellcheck: Removes some spaces and spellchecks some things in the multisec vendor add: Adds a corrections tab to the multisec vendor so being a corrections officer is not inherently illegal add: Holobadges are accessories rather than neck items now /:cl: --------- Co-authored-by: Waterpig <49160555+Majkl-J@users.noreply.github.com> --- .../loadout/categories/donator_personal.dm | 9 ++ .../code/modules/loadout/categories/heads.dm | 2 +- .../code/modules/loadout/categories/neck.dm | 10 -- .../code/modules/loadout/categories/shoes.dm | 16 ++++ .../code/modules/loadout/categories/suit.dm | 9 +- .../modules/loadout/categories/uniform.dm | 2 +- .../code/peacekeeper/armadyne_clothing.dm | 4 +- .../code/modules/clothing/head/helmet.dm | 2 +- .../code/modules/clothing/head/jobs.dm | 2 +- .../code/modules/clothing/suits/armor.dm | 8 +- .../code/modules/clothing_reskins/redsec.dm | 16 ---- .../modules/loadout/categories/accessories.dm | 7 ++ .../modules/loadout/categories/glasses.dm | 2 +- .../code/modules/loadout/categories/gloves.dm | 12 ++- .../code/modules/loadout/categories/heads.dm | 92 ++++++++++++++++++- .../modules/loadout/categories/inhands.dm | 3 +- .../code/modules/loadout/categories/masks.dm | 15 +++ .../code/modules/loadout/categories/neck.dm | 32 +++++++ .../code/modules/loadout/categories/pocket.dm | 12 +-- .../code/modules/loadout/categories/suit.dm | 65 ++++++++++++- .../code/modules/loadout/categories/under.dm | 65 ++++++++++++- .../categories/~donator/donator_personal.dm | 22 ++--- .../code/modules/loadout/~defines.dm | 7 ++ .../modules/security/secmed/secmed_clothes.dm | 5 +- .../modules/security/secmed/security_medic.dm | 2 +- .../code/modules/vending/multisec.dm | 32 ++++--- tgstation.dme | 1 + 27 files changed, 366 insertions(+), 88 deletions(-) create mode 100644 modular_zubbers/code/modules/loadout/~defines.dm diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/donator_personal.dm b/modular_skyrat/master_files/code/modules/loadout/categories/donator_personal.dm index 740e9346c69..333ad865506 100644 --- a/modular_skyrat/master_files/code/modules/loadout/categories/donator_personal.dm +++ b/modular_skyrat/master_files/code/modules/loadout/categories/donator_personal.dm @@ -139,16 +139,19 @@ /datum/loadout_item/head/caligram_cap_tan name = "Blacktide Tan Softcap" item_path = /obj/item/clothing/head/caligram_cap_tan + can_be_reskinned = TRUE // ckeywhitelist = list("farsightednightlight", "raxraus", "1ceres", "marcoalbaredaa", "itzshift_yt", "drifter7371", "AvianAviator", "Katty Kat", "Investigator77", "Dalao Azure", "Socialistion", "ChillyLobster", "Sylvara", "AmZee", "Tf4", "rb303", "Kay_Nite", "whataboutism", "taac", "Halkyon", "Lupo_di_rosa", "Merek2", "lowpowermia", "RyeanBread", "Jesterz7", "Saund_Minah", "Ruediger4") /datum/loadout_item/uniform/caligram_fatigues_tan name = "Blacktide Tan Fatigues" item_path = /obj/item/clothing/under/jumpsuit/caligram_fatigues_tan + can_be_reskinned = TRUE // ckeywhitelist = list("farsightednightlight", "raxraus", "1ceres", "marcoalbaredaa", "itzshift_yt", "drifter7371", "AvianAviator", "Katty Kat", "Investigator77", "Dalao Azure", "Socialistion", "ChillyLobster", "Sylvara", "AmZee", "Tf4", "rb303", "Kay_Nite", "whataboutism", "taac", "Halkyon", "Lupo_di_rosa", "Merek2", "lowpowermia", "RyeanBread", "Jesterz7", "Saund_Minah", "Ruediger4") /datum/loadout_item/suit/caligram_parka_tan name = "Blacktide Tan Coat" item_path = /obj/item/clothing/suit/jacket/caligram_parka_tan + can_be_reskinned = TRUE // ckeywhitelist = list("farsightednightlight", "raxraus", "1ceres", "marcoalbaredaa", "itzshift_yt", "drifter7371", "AvianAviator", "Katty Kat", "Investigator77", "Dalao Azure", "Socialistion", "ChillyLobster", "Sylvara", "AmZee", "Tf4", "rb303", "Kay_Nite", "whataboutism", "taac", "Halkyon", "Lupo_di_rosa", "Merek2", "lowpowermia", "RyeanBread", "Jesterz7", "Saund_Minah", "Ruediger4") /datum/loadout_item/suit/caligram_parka_vest_tan @@ -156,6 +159,7 @@ item_path = /obj/item/clothing/suit/armor/vest/caligram_parka_vest_tan // ckeywhitelist = list("farsightednightlight", "raxraus", "1ceres", "marcoalbaredaa", "itzshift_yt", "drifter7371", "AvianAviator", "Katty Kat", "Investigator77", "Dalao Azure", "Socialistion", "ChillyLobster", "Sylvara", "AmZee", "Tf4", "rb303", "Kay_Nite", "whataboutism", "taac", "Halkyon", "Lupo_di_rosa", "Merek2", "lowpowermia", "RyeanBread", "Jesterz7", "Saund_Minah", "Ruediger4") restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) + can_be_reskinned = TRUE /datum/loadout_item/suit/brasspriest name = "Brasspriest Coat" @@ -587,21 +591,25 @@ item_path = /obj/item/clothing/suit/armor/hos/elofy // ckeywhitelist = list("october23") restricted_roles = list(JOB_HEAD_OF_SECURITY) + can_be_reskinned = TRUE /datum/loadout_item/head/elofy name = "Solar Admiral Hat" item_path = /obj/item/clothing/head/hats/hos/elofy ckeywhitelist = list("october23") restricted_roles = list(JOB_HEAD_OF_SECURITY) + can_be_reskinned = TRUE /datum/loadout_item/gloves/elofy name = "Solar Admiral Gloves" item_path = /obj/item/clothing/gloves/elofy + can_be_reskinned = TRUE // ckeywhitelist = list("october23") /datum/loadout_item/shoes/elofy name = "Solar Admiral Boots" item_path = /obj/item/clothing/shoes/jackboots/elofy + can_be_reskinned = TRUE // ckeywhitelist = list("october23") /datum/loadout_item/pocket_items/transponder @@ -754,6 +762,7 @@ name = "Graceful Trenchcoat" item_path = /obj/item/clothing/neck/trenchcoat ckeywhitelist = list("Smol42", "Awers855") + can_be_reskinned = TRUE /datum/loadout_item/uniform/old_qm_jumpskirt name = "Old Quartermaster's Jumpskirt" diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/heads.dm b/modular_skyrat/master_files/code/modules/loadout/categories/heads.dm index cee4b07c4a2..527223fd95c 100644 --- a/modular_skyrat/master_files/code/modules/loadout/categories/heads.dm +++ b/modular_skyrat/master_files/code/modules/loadout/categories/heads.dm @@ -482,7 +482,7 @@ /datum/loadout_item/head/navyblueofficerberet name = "Security Officer's Navy Blue beret" item_path = /obj/item/clothing/head/beret/sec/navyofficer - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_WARDEN) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC) /datum/loadout_item/head/navybluewardenberet name = "Warden's Navy Blue beret" diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/neck.dm b/modular_skyrat/master_files/code/modules/loadout/categories/neck.dm index 73317bf3ed3..d609c85b0f4 100644 --- a/modular_skyrat/master_files/code/modules/loadout/categories/neck.dm +++ b/modular_skyrat/master_files/code/modules/loadout/categories/neck.dm @@ -253,16 +253,6 @@ name = "Maid Neck Cover" item_path = /obj/item/clothing/neck/maid -/datum/loadout_item/neck/holobadge - name = "Holobadge" - item_path = /obj/item/clothing/accessory/badge/holo - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) - -/datum/loadout_item/neck/holobadge_cord - name = "Holobadge with Lanyard" - item_path = /obj/item/clothing/accessory/badge/holo/cord - restricted_roles = list(JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) - /* * DONATOR */ diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/shoes.dm b/modular_skyrat/master_files/code/modules/loadout/categories/shoes.dm index 2dc0c1ff29d..38241d1cfb2 100644 --- a/modular_skyrat/master_files/code/modules/loadout/categories/shoes.dm +++ b/modular_skyrat/master_files/code/modules/loadout/categories/shoes.dm @@ -33,6 +33,22 @@ name = "Recolorable Jackboots" item_path = /obj/item/clothing/shoes/jackboots/recolorable +/datum/loadout_item/shoes/jackboots/sec + name = "security jackboots" + item_path = /obj/item/clothing/shoes/jackboots/sec + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC) + + +/datum/loadout_item/shoes/jackboots/peacekeeper + name = "Armadyne combat boots" + item_path = /obj/item/clothing/shoes/jackboots/peacekeeper/armadyne + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC) + +/datum/loadout_item/shoes/jackboots/gogo_boots + name = "Tactical Go-Go boots" + item_path = /obj/item/clothing/shoes/jackboots/gogo_boots + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC) + /* * MISC BOOTS */ diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/suit.dm b/modular_skyrat/master_files/code/modules/loadout/categories/suit.dm index f84aab46e69..fb989688528 100644 --- a/modular_skyrat/master_files/code/modules/loadout/categories/suit.dm +++ b/modular_skyrat/master_files/code/modules/loadout/categories/suit.dm @@ -584,7 +584,7 @@ /datum/loadout_item/suit/navybluejacketofficer name = "Security Officer's Navy Blue Formal Jacket" item_path = /obj/item/clothing/suit/jacket/officer/blue - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC) /datum/loadout_item/suit/navybluejacketwarden name = "Warden's Navy Blue Formal Jacket" @@ -609,7 +609,7 @@ /datum/loadout_item/suit/british_jacket name = "Peacekeeper Officer Coat" item_path = /obj/item/clothing/suit/british_officer - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC) /datum/loadout_item/suit/offdep_jacket name = "Off-Department Jacket" @@ -638,6 +638,11 @@ item_path = /obj/item/clothing/suit/toggle/jacket/sec/medical restricted_roles = list (JOB_ORDERLY, JOB_SECURITY_MEDIC, JOB_CHIEF_MEDICAL_OFFICER) +/datum/loadout_item/suit/labcoat/doctor_tailcoat + name = "Brig Physician's tailcoat" + item_path = /obj/item/clothing/suit/toggle/labcoat/doctor_tailcoat/sec + restricted_roles = list(JOB_SECURITY_MEDIC) + /datum/loadout_item/suit/supply_jacket name = "Supply Jacket" item_path = /obj/item/clothing/suit/toggle/jacket/supply diff --git a/modular_skyrat/master_files/code/modules/loadout/categories/uniform.dm b/modular_skyrat/master_files/code/modules/loadout/categories/uniform.dm index 33c3fb4ac83..35ac4042f75 100644 --- a/modular_skyrat/master_files/code/modules/loadout/categories/uniform.dm +++ b/modular_skyrat/master_files/code/modules/loadout/categories/uniform.dm @@ -153,7 +153,7 @@ /datum/loadout_item/uniform/jumpsuit/imperial_police_uniform name = "Imperial Police Uniform" item_path = /obj/item/clothing/under/colonial/nri_police - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_DETECTIVE) + restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC) /datum/loadout_item/uniform/jumpsuit/disco name = "Superstar Cop Uniform" diff --git a/modular_skyrat/modules/sec_haul/code/peacekeeper/armadyne_clothing.dm b/modular_skyrat/modules/sec_haul/code/peacekeeper/armadyne_clothing.dm index 40110bc3820..4315719c24a 100644 --- a/modular_skyrat/modules/sec_haul/code/peacekeeper/armadyne_clothing.dm +++ b/modular_skyrat/modules/sec_haul/code/peacekeeper/armadyne_clothing.dm @@ -1,10 +1,10 @@ /obj/item/clothing/under/rank/security/peacekeeper/armadyne name = "armadyne corporate uniform" desc = "A sleek uniform worn by Armadyne corporate. Its metallic red belt buckle is made in the shape of the Armadyne logo." + icon = 'modular_skyrat/master_files/icons/obj/clothing/under/centcom.dmi'//This can probably be moved to centcom.dm when the suits are sorted icon_state = "armadyne_shirt" - worn_icon_state = "armadyne_shirt" - icon = 'modular_skyrat/master_files/icons/obj/clothing/under/centcom.dmi' //This can probably be moved to centcom.dm when the suits are sorted worn_icon = 'modular_skyrat/master_files/icons/mob/clothing/under/centcom.dmi' + worn_icon_state = "armadyne_shirt" //This can probably be moved to centcom.dm when the suits are sorted /obj/item/clothing/under/rank/security/peacekeeper/armadyne/tactical name = "armadyne tactical uniform" diff --git a/modular_zubbers/code/modules/clothing/head/helmet.dm b/modular_zubbers/code/modules/clothing/head/helmet.dm index 8a9c1346bae..48708880692 100644 --- a/modular_zubbers/code/modules/clothing/head/helmet.dm +++ b/modular_zubbers/code/modules/clothing/head/helmet.dm @@ -567,4 +567,4 @@ ), ) -// END HATS ADDED BY APRIL \ No newline at end of file +// END HATS ADDED BY APRIL diff --git a/modular_zubbers/code/modules/clothing/head/jobs.dm b/modular_zubbers/code/modules/clothing/head/jobs.dm index 6a896c13d5f..484bec20fd1 100644 --- a/modular_zubbers/code/modules/clothing/head/jobs.dm +++ b/modular_zubbers/code/modules/clothing/head/jobs.dm @@ -38,7 +38,7 @@ greyscale_config_worn = /datum/greyscale_config/beret_badge/worn greyscale_colors = "#3E3E48#FFFFFF" -/obj/item/clothing/head/beaniesec +/obj/item/clothing/head/security_beanie name = "security beanie" desc = "A robust beanie with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection." icon = 'modular_zubbers/icons/obj/clothing/head/hats.dmi' diff --git a/modular_zubbers/code/modules/clothing/suits/armor.dm b/modular_zubbers/code/modules/clothing/suits/armor.dm index 08c6cb19be8..972e2d0b757 100644 --- a/modular_zubbers/code/modules/clothing/suits/armor.dm +++ b/modular_zubbers/code/modules/clothing/suits/armor.dm @@ -11,7 +11,7 @@ icon_state = "hardsuit-metrocop" inhand_icon_state = null blood_overlay_type = "hardsuit-metrocop" - armor_type =/datum/armor/suit_armor + armor_type = /datum/armor/suit_armor /obj/item/clothing/suit/armor/metrocopriot //Sprite done by Gat1Day#2892 name = "Riot Civil Protection Suit" @@ -34,21 +34,15 @@ uses_advanced_reskins = TRUE unique_reskin = list( "Red Pattern" = list( - RESKIN_ICON = 'modular_zubbers/icons/obj/clothing/suits/collared_vest.dmi', RESKIN_ICON_STATE = "vest_worn_red", - RESKIN_WORN_ICON = 'modular_zubbers/icons/obj/clothing/suits/collared_vest.dmi', RESKIN_WORN_ICON_STATE = "vest_worn_red" ), "Neutral Pattern" = list( - RESKIN_ICON = 'modular_zubbers/icons/obj/clothing/suits/collared_vest.dmi', RESKIN_ICON_STATE = "vest_worn", - RESKIN_WORN_ICON = 'modular_zubbers/icons/obj/clothing/suits/collared_vest.dmi', RESKIN_WORN_ICON_STATE = "vest_worn", ), "Blue Pattern" = list( - RESKIN_ICON = 'modular_zubbers/icons/obj/clothing/suits/collared_vest.dmi', RESKIN_ICON_STATE = "vest_worn_blue", - RESKIN_WORN_ICON = 'modular_zubbers/icons/obj/clothing/suits/collared_vest.dmi', RESKIN_WORN_ICON_STATE = "vest_worn_blue", RESKIN_SUPPORTS_VARIATIONS_FLAGS = NONE ) diff --git a/modular_zubbers/code/modules/clothing_reskins/redsec.dm b/modular_zubbers/code/modules/clothing_reskins/redsec.dm index 42f0a2412df..8b0d4e564e6 100644 --- a/modular_zubbers/code/modules/clothing_reskins/redsec.dm +++ b/modular_zubbers/code/modules/clothing_reskins/redsec.dm @@ -34,22 +34,6 @@ ) . = ..() -/obj/item/clothing/head/security_cap/Initialize(mapload) - unique_reskin["RedSec Variant"] = list( - RESKIN_ICON = 'icons/obj/clothing/head/hats.dmi', - RESKIN_ICON_STATE = "secsoft", - RESKIN_WORN_ICON = 'icons/mob/clothing/head/hats.dmi' - ) - . = ..() - -/obj/item/clothing/gloves/color/black/security/Initialize(mapload) - unique_reskin["RedSec Variant"] = list( - RESKIN_ICON = 'modular_zubbers/icons/obj/clothing/gloves.dmi', - RESKIN_ICON_STATE = "redsec", - RESKIN_WORN_ICON_STATE = "maagloves", - ) - . = ..() - /obj/item/clothing/under/rank/security/officer/Initialize(mapload) if (!unique_reskin) . = ..() diff --git a/modular_zubbers/code/modules/loadout/categories/accessories.dm b/modular_zubbers/code/modules/loadout/categories/accessories.dm index a0244e68e0d..c7449cf7072 100644 --- a/modular_zubbers/code/modules/loadout/categories/accessories.dm +++ b/modular_zubbers/code/modules/loadout/categories/accessories.dm @@ -2,3 +2,10 @@ name = "Fake Medal" item_path = /obj/item/clothing/accessory/fake/medal +/datum/loadout_item/accessory/holobadge + name = "Holobadge" + item_path = /obj/item/clothing/accessory/badge/holo + +/datum/loadout_item/accessory/holobadge_cord + name = "Holobadge with Lanyard" + item_path = /obj/item/clothing/accessory/badge/holo/cord diff --git a/modular_zubbers/code/modules/loadout/categories/glasses.dm b/modular_zubbers/code/modules/loadout/categories/glasses.dm index 2a0ac81123f..cfe7b0df377 100644 --- a/modular_zubbers/code/modules/loadout/categories/glasses.dm +++ b/modular_zubbers/code/modules/loadout/categories/glasses.dm @@ -5,7 +5,7 @@ /datum/loadout_item/glasses/surgerygoggles/med name = "Surgery Goggles" item_path = /obj/item/clothing/glasses/hud/health/surgerygoggles - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(ALL_JOBS_MEDICAL, JOB_GENETICIST) /datum/loadout_item/glasses/salesman name = "Colored Glasses" diff --git a/modular_zubbers/code/modules/loadout/categories/gloves.dm b/modular_zubbers/code/modules/loadout/categories/gloves.dm index 8d76c9a313d..07e0fe6c0b6 100644 --- a/modular_zubbers/code/modules/loadout/categories/gloves.dm +++ b/modular_zubbers/code/modules/loadout/categories/gloves.dm @@ -14,10 +14,20 @@ /datum/loadout_item/gloves/rubber_gloves/med name = "Long Rubber Medical Gloves" item_path = /obj/item/clothing/gloves/latex/nitrile/longrubbergloves - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(ALL_JOBS_MEDICAL, JOB_GENETICIST) /datum/loadout_item/gloves/tactical_maid //Donor item for skyefree name = "Tactical Maid Gloves" item_path = /obj/item/clothing/gloves/tactical_maid donator_only = TRUE +/datum/loadout_item/gloves/color/black/security + name = "Security gloves" + item_path = /obj/item/clothing/gloves/color/black/security + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE + +/datum/loadout_item/gloves/combat/peacekeeper/armadyne + name = "Armadyne combat gloves" + item_path = /obj/item/clothing/gloves/combat/peacekeeper/armadyne + restricted_roles = list(ALL_JOBS_SEC) diff --git a/modular_zubbers/code/modules/loadout/categories/heads.dm b/modular_zubbers/code/modules/loadout/categories/heads.dm index 142fad41ca1..e83efebed0c 100644 --- a/modular_zubbers/code/modules/loadout/categories/heads.dm +++ b/modular_zubbers/code/modules/loadout/categories/heads.dm @@ -27,12 +27,13 @@ /datum/loadout_item/head/hats/warden/police/patrol name = "police patrol cap" item_path = /obj/item/clothing/head/hats/warden/police/patrol - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY) + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE /datum/loadout_item/head/helmet/sec/futuristic name = "futuristic security helmet" item_path = /obj/item/clothing/head/helmet/sec/futuristic - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY) + restricted_roles = list(ALL_JOBS_SEC) /datum/loadout_item/head/sombrero name = "Sombrero" @@ -62,6 +63,93 @@ donator_only = TRUE restricted_roles = list(JOB_NT_REP) +/datum/loadout_item/head/security_garrison + name = "Security garrison cap" + item_path = /obj/item/clothing/head/security_garrison + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE + +/datum/loadout_item/head/security_cap + name = "Security cap" + item_path = /obj/item/clothing/head/security_cap + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE + +/datum/loadout_item/head/security_cap/soft + name = "Security cap (soft)" + item_path = /obj/item/clothing/head/soft/sec + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = FALSE + +/datum/loadout_item/head/security_cap/veteran + name = "Veteran's security cap (soft)" + item_path = /obj/item/clothing/head/soft/veteran + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = FALSE + +/datum/loadout_item/head/security_cap/colonial + name = "Imperial police cap" + item_path = /obj/item/clothing/head/hats/colonial/nri_police + restricted_roles = list(ALL_JOBS_SEC, JOB_CUSTOMS_AGENT) + can_be_reskinned = FALSE + +/datum/loadout_item/head/security_beanie + name = "Security beanie" + item_path = /obj/item/clothing/head/security_beanie + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/head/beret/sec/peacekeeper + name = "Peacekeeper beret" + item_path = /obj/item/clothing/head/beret/sec/peacekeeper + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/head/beret/sec/peacekeeper/white + name = "Peacekeeper beret (White)" + item_path = /obj/item/clothing/head/beret/sec/peacekeeper/white + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/head/helmet/sec/terra + name = "Sol police helmet" + item_path = /obj/item/clothing/head/helmet/sec/terra + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/head/hats/warden/police/patrol + name = "Warden's police cap" + item_path = /obj/item/clothing/head/hats/warden/police/patrol + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE + +/datum/loadout_item/head/helmet/sec/redsec + name = "Security helmet (Redsec)" + item_path = /obj/item/clothing/head/helmet/sec/redsec + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/head/helmet/nri_police + name = "Imperial police helmet" + item_path = /obj/item/clothing/head/helmet/nri_police + restricted_roles = list(ALL_JOBS_SEC, JOB_CUSTOMS_AGENT) + +/datum/loadout_item/head/hats/security_kepi + name = "Security kepi" + item_path = /obj/item/clothing/head/security_kepi + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE + +/datum/loadout_item/head/beret/sec/peacekeeper/armadyne + name = "Armadyne corporate beret" + item_path = /obj/item/clothing/head/beret/sec/peacekeeper/armadyne + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/head/helmet/sec/peacekeeper/security_medic + name = "Security Medic helmet" + item_path = /obj/item/clothing/head/helmet/sec/peacekeeper/security_medic + restricted_roles = list(JOB_SECURITY_MEDIC) + +/datum/loadout_item/head/beret/sec/peacekeeper/security_medic + name = "Security medic beret" + item_path = /obj/item/clothing/head/beret/sec/peacekeeper/security_medic + restricted_roles = list(JOB_SECURITY_MEDIC) + /datum/loadout_item/head/lace_bow name = "Hair Bow" item_path = /obj/item/clothing/head/costume/hairbow diff --git a/modular_zubbers/code/modules/loadout/categories/inhands.dm b/modular_zubbers/code/modules/loadout/categories/inhands.dm index c594214ecf7..17b10dfdb19 100644 --- a/modular_zubbers/code/modules/loadout/categories/inhands.dm +++ b/modular_zubbers/code/modules/loadout/categories/inhands.dm @@ -22,5 +22,4 @@ /datum/loadout_item/inhand/saddle_peacekeeper name = "riding saddle (peacekeeper)" item_path = /obj/item/riding_saddle/leather/peacekeeper - - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER, JOB_HEAD_OF_SECURITY) + restricted_roles = list(ALL_JOBS_SEC) diff --git a/modular_zubbers/code/modules/loadout/categories/masks.dm b/modular_zubbers/code/modules/loadout/categories/masks.dm index fa97e6ab3fd..2ab63f5d965 100644 --- a/modular_zubbers/code/modules/loadout/categories/masks.dm +++ b/modular_zubbers/code/modules/loadout/categories/masks.dm @@ -1,3 +1,18 @@ /datum/loadout_item/mask/sechailer_half_mask name = "Tacticool Half-Mask" item_path = /obj/item/clothing/mask/gas/half_mask + +/datum/loadout_item/mask/gas/german + name = "Black gas mask" + item_path = /obj/item/clothing/mask/gas/german + restricted_roles = list(ALL_JOBS_SEC,) + +/datum/loadout_item/mask/gas/soviet + name = "Soviet gas mask" + item_path = /obj/item/clothing/mask/gas/soviet + restricted_roles = list(ALL_JOBS_SEC,) + +/datum/loadout_item/mask/gas/nri_police + name = "Colonial gas mask" + item_path = /obj/item/clothing/mask/gas/nri_police + restricted_roles = list(ALL_JOBS_SEC, JOB_CUSTOMS_AGENT) diff --git a/modular_zubbers/code/modules/loadout/categories/neck.dm b/modular_zubbers/code/modules/loadout/categories/neck.dm index 8da13630c17..f34718fe87d 100644 --- a/modular_zubbers/code/modules/loadout/categories/neck.dm +++ b/modular_zubbers/code/modules/loadout/categories/neck.dm @@ -15,6 +15,38 @@ name = "Crow Feather Cloak" item_path = /obj/item/clothing/neck/binary +/datum/loadout_item/neck/security_cape + name = "security cape" + item_path = /obj/item/clothing/neck/security_cape + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE + +/datum/loadout_item/neck/security_cape/armplate + name = "security gauntlet" + item_path = /obj/item/clothing/neck/security_cape/armplate + restricted_roles = list(ALL_JOBS_SEC) + can_be_reskinned = TRUE + +/datum/loadout_item/neck/pauldron + name = "lieutenant commander's pauldron" + item_path = /obj/item/clothing/neck/pauldron + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/neck/pauldron/captain + name = "commander's pauldron" + item_path = /obj/item/clothing/neck/pauldron/captain + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/neck/pauldron/commander + name = "captain's pauldron" + item_path = /obj/item/clothing/neck/pauldron/commander + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/neck/imperial_cloak + name = "Imperial Police Cloak" + item_path = /obj/item/clothing/neck/cloak/colonial/nri_police + restricted_roles = list(ALL_JOBS_SEC, JOB_CUSTOMS_AGENT) + /datum/loadout_item/neck/bunnypendant name = "Rabbit Pendant" item_path = /obj/item/clothing/neck/bunny_pendant diff --git a/modular_zubbers/code/modules/loadout/categories/pocket.dm b/modular_zubbers/code/modules/loadout/categories/pocket.dm index 08576a60bad..470eb28b36d 100644 --- a/modular_zubbers/code/modules/loadout/categories/pocket.dm +++ b/modular_zubbers/code/modules/loadout/categories/pocket.dm @@ -118,32 +118,32 @@ /datum/loadout_item/pocket_items/nif_disk_med name = "Medical Scrying Lens Disk" item_path = /obj/item/disk/nifsoft_uploader/med_hud - restricted_roles = list(JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_GENETICIST, JOB_CHEMIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER) + restricted_roles = list(ALL_JOBS_MEDICAL, JOB_GENETICIST) /datum/loadout_item/pocket_items/nif_disk_diag name = "Diagnostic Scrying Lens Disk" item_path = /obj/item/disk/nifsoft_uploader/diag_hud - restricted_roles = list(JOB_RESEARCH_DIRECTOR, JOB_SCIENTIST, JOB_ROBOTICIST) + restricted_roles = list(ALL_JOBS_SCIENCE) /datum/loadout_item/pocket_items/nif_disk_sec name = "Security Scrying Lens Disk" item_path = /obj/item/disk/nifsoft_uploader/sec_hud - restricted_roles = list(JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_BOUNCER, JOB_ORDERLY, JOB_SCIENCE_GUARD, JOB_CUSTOMS_AGENT, JOB_ENGINEERING_GUARD, JOB_BLUESHIELD) + restricted_roles = list(ALL_JOBS_SEC, ALL_JOBS_DEPT_GUARDS, JOB_BLUESHIELD) /datum/loadout_item/pocket_items/nif_disk_permit name = "Permit Scrying Lens Disk" item_path = /obj/item/disk/nifsoft_uploader/permit_hud - restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_CUSTOMS_AGENT, JOB_SHAFT_MINER) + restricted_roles = list(ALL_JOBS_CARGO) /datum/loadout_item/pocket_items/nif_disk_sci name = "Science Scrying Lens Disk" item_path = /obj/item/disk/nifsoft_uploader/sci_hud - restricted_roles = list(JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_CHEMIST, JOB_SCIENCE_GUARD) + restricted_roles = list(ALL_JOBS_SCIENCE, JOB_CHEMIST) /datum/loadout_item/pocket_items/nif_disk_meson name = "Meson Scrying Lens Disk" item_path = /obj/item/disk/nifsoft_uploader/meson_hud - restricted_roles = list(JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_SHAFT_MINER, JOB_CUSTOMS_AGENT, JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_ENGINEERING_GUARD) + restricted_roles = list(ALL_JOBS_CARGO, ALL_JOBS_ENGINEERING) /* * LUNCHBOX diff --git a/modular_zubbers/code/modules/loadout/categories/suit.dm b/modular_zubbers/code/modules/loadout/categories/suit.dm index 5d73cc301a4..9d1b622a14e 100644 --- a/modular_zubbers/code/modules/loadout/categories/suit.dm +++ b/modular_zubbers/code/modules/loadout/categories/suit.dm @@ -1,7 +1,7 @@ /datum/loadout_item/suit/secjacket name = "High-Vis Security Jacket" item_path = /obj/item/clothing/suit/armor/vest/secjacket/blue - restricted_roles = list(JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(ALL_JOBS_SEC) /datum/loadout_item/suit/leather_apron name = "Leather Apron" @@ -27,6 +27,67 @@ name = "Pirate coat" item_path = /obj/item/clothing/suit/costume/pirate +/datum/loadout_item/suit/hooded/wintercoat/security + name = "Security winter jacket" + item_path = /obj/item/clothing/suit/hooded/wintercoat/security + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/hooded/wintercoat/security/redsec + name = "Security winter jacket (Redsec)" + item_path = /obj/item/clothing/suit/hooded/wintercoat/security/redsec + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/toggle/jacket/sec/old + name = "Security jacket (Redsec)" + item_path = /obj/item/clothing/suit/toggle/jacket/sec/old + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/jacket/officer/tan + name = "Formal security jacket (tan)" + item_path = /obj/item/clothing/suit/jacket/officer/tan + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/armor/vest/secjacket + name = "Security jacket" + item_path = /obj/item/clothing/suit/armor/vest/secjacket + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/armor/vest/peacekeeper/armadyne + name = "Armadyne Jacket" + item_path = /obj/item/clothing/suit/armor/vest/peacekeeper/armadyne + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/armor/vest/peacekeeper/armadyne/armor + name = "Armadyne Armor Vest" + item_path = /obj/item/clothing/suit/armor/vest/peacekeeper/armadyne/armor + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/armor/vest/nri_police + name = "Imperial police vest" + item_path = /obj/item/clothing/suit/armor/vest/nri_police + restricted_roles = list(ALL_JOBS_SEC, JOB_CUSTOMS_AGENT) + +/datum/loadout_item/suit/jacket/fedsec + name = "Modern Security federation jacket" + item_path = /obj/item/clothing/suit/fedcoat/modern/sec + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/suit/jacket/corrections_officer + name = "Correction's officer's jacket" + item_path = /obj/item/clothing/suit/toggle/jacket/corrections_officer + restricted_roles = list(JOB_CORRECTIONS_OFFICER, JOB_WARDEN) + +/datum/loadout_item/suit/jacket/security_medic + name = "Security medic labcoat" + item_path = /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic + restricted_roles = list(JOB_SECURITY_MEDIC) + +/datum/loadout_item/suit/jacket/security_medic + name = "Security medic labcoat (Blue)" + item_path = /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic/blue + restricted_roles = list(JOB_SECURITY_MEDIC) + + // Fancy crop-top jackets /datum/loadout_item/suit/crop_jacket @@ -68,7 +129,7 @@ /datum/loadout_item/suit/collared_vest name = "GLP-C 'Úlfur' Vest" item_path = /obj/item/clothing/suit/armor/vest/collared_vest - restricted_roles = list(JOB_NT_REP, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_BLUESHIELD) + restricted_roles = list(ALL_JOBS_SEC, ALL_JOBS_CENTRAL) donator_only = TRUE //Dono item for offwrldr /datum/loadout_item/suit/highvisjacket //sprites by Keila diff --git a/modular_zubbers/code/modules/loadout/categories/under.dm b/modular_zubbers/code/modules/loadout/categories/under.dm index be94b041f22..920e66c5ded 100644 --- a/modular_zubbers/code/modules/loadout/categories/under.dm +++ b/modular_zubbers/code/modules/loadout/categories/under.dm @@ -1,24 +1,79 @@ -/datum/loadout_item/under/jumpsuit/security/hecu +/datum/loadout_item/uniform/security/hecu name = "Urban Camouflage BDU" item_path = /obj/item/clothing/under/rank/security/officer/hecu donator_only = TRUE - restricted_roles = list(JOB_BLUESHIELD, JOB_HEAD_OF_SECURITY, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_DETECTIVE, JOB_CORRECTIONS_OFFICER) + restricted_roles = list(ALL_JOBS_SEC, JOB_BLUESHIELD) -/datum/loadout_item/uniform/miscellaneous/command/stripper //Sprites by SierraGenevese +/datum/loadout_item/uniform/command/stripper //Sprites by SierraGenevese name = "Command Stripper Uniform" item_path = /obj/item/clothing/under/rank/civilian/head_of_personnel/stripper restricted_roles = list(JOB_CAPTAIN, JOB_HEAD_OF_PERSONNEL, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_ENGINEER, JOB_CHIEF_MEDICAL_OFFICER, JOB_QUARTERMASTER, JOB_NT_REP) -/datum/loadout_item/uniform/miscellaneous/nanotrasen_consultant/stripper //Sprites by SierraGenevese +/datum/loadout_item/uniform/nanotrasen_consultant/stripper //Sprites by SierraGenevese name = "consultant stripper uniform" item_path = /obj/item/clothing/under/rank/nanotrasen_consultant/stripper restricted_roles = list(JOB_NT_REP) -/datum/loadout_item/uniform/miscellaneous/medrscrubs +/datum/loadout_item/uniform/medrscrubs name = "Security Medic's Scrubs" item_path = /obj/item/clothing/under/rank/medical/scrubs/skyrat/red/sec restricted_roles = list(JOB_SECURITY_MEDIC) +/datum/loadout_item/uniform/security/officer/redsec + name = "Security uniform (Redsec)" + item_path = /obj/item/clothing/under/rank/security/officer/redsec + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/uniform/security/peacekeeper/armadyne + name = "Armadyne Corporate Uniform" + item_path =/obj/item/clothing/under/rank/security/peacekeeper/armadyne + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/uniform/security/utility/redsec + name = "Security utility uniform (Redsec)" + item_path = /obj/item/clothing/under/rank/security/skyrat/utility/redsec + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/uniform/security/officer/formal + name = "Security Officer's formal uniform" + item_path = /obj/item/clothing/under/rank/security/officer/formal + restricted_roles = list(ALL_JOBS_SEC) + +/datum/loadout_item/uniform/security/peacekeeper/security_medic + name = "Security medic turtleneck" + item_path =/obj/item/clothing/under/rank/security/peacekeeper/security_medic + restricted_roles = list(JOB_SECURITY_MEDIC) + +/datum/loadout_item/uniform/security/peacekeeper/security_medic/skirt + name = "Security medic skirtleneck" + item_path =/obj/item/clothing/under/rank/security/peacekeeper/security_medic/skirt + restricted_roles = list(JOB_SECURITY_MEDIC) + +/datum/loadout_item/uniform/security/peacekeeper/security_medic/alternate + name = "Security medic jumpsuit" + item_path = /obj/item/clothing/under/rank/security/peacekeeper/security_medic/alternate + restricted_roles = list(JOB_SECURITY_MEDIC) + +/datum/loadout_item/uniform/security/corrections_officer + name = "Correction's Officer jumpsuit" + item_path = /obj/item/clothing/under/rank/security/corrections_officer + restricted_roles = list(JOB_CORRECTIONS_OFFICER, JOB_WARDEN) + +/datum/loadout_item/uniform/security/corrections_officer + name = "Correction's Officer jumpskirt" + item_path = /obj/item/clothing/under/rank/security/corrections_officer/skirt + restricted_roles = list(JOB_CORRECTIONS_OFFICER, JOB_WARDEN) + +/datum/loadout_item/uniform/security/corrections_officer + name = "Correction's Officer sweater" + item_path = /obj/item/clothing/under/rank/security/corrections_officer/sweater + restricted_roles = list(JOB_CORRECTIONS_OFFICER, JOB_WARDEN) + +/datum/loadout_item/uniform/security/corrections_officer + name = "Correction's Officer skirt with sweater" + item_path = /obj/item/clothing/under/rank/security/corrections_officer/sweater/skirt + restricted_roles = list(JOB_CORRECTIONS_OFFICER, JOB_WARDEN) + /datum/loadout_item/uniform/miscellaneous/tactical_maid //Donor item for skyefree name = "Tactical Maid Costume" item_path = /obj/item/clothing/under/misc/maid/tactical diff --git a/modular_zubbers/code/modules/loadout/categories/~donator/donator_personal.dm b/modular_zubbers/code/modules/loadout/categories/~donator/donator_personal.dm index e07dbdf9c24..88694b1635a 100644 --- a/modular_zubbers/code/modules/loadout/categories/~donator/donator_personal.dm +++ b/modular_zubbers/code/modules/loadout/categories/~donator/donator_personal.dm @@ -21,8 +21,8 @@ /datum/loadout_item/head/idmahelmet name = "IDMA Service Helmet" item_path = /obj/item/clothing/head/helmet/sec/sol/idma_helmet - ckeywhitelist = list ("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") - restricted_roles = list (JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) + ckeywhitelist = list("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") + restricted_roles = list(JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) /* @@ -51,14 +51,14 @@ /datum/loadout_item/uniform/miscellaneous/idmasnowfatigue name = "IDMA Service Uniform" item_path = /obj/item/clothing/under/rank/security/idma_fatigue - ckeywhitelist = list ("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") - restricted_roles = list (JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) + ckeywhitelist = list("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") + restricted_roles = list(JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) /datum/loadout_item/uniform/miscellaneous/idmafatigue name = "IDMA Desert Service Uniform" item_path = /obj/item/clothing/under/rank/security/idma_fatigue/alt - ckeywhitelist = list ("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") - restricted_roles = list (JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) + ckeywhitelist = list("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") + restricted_roles = list(JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) /datum/loadout_item/uniform/miscellaneous/idmautility name = "IDMA Utility Uniform" @@ -72,23 +72,23 @@ name = "IDMA Combat Vest" item_path = /obj/item/clothing/suit/armor/vest/idma_vest ckeywhitelist = list ("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") - restricted_roles = list (JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) + restricted_roles = list(JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) /datum/loadout_item/suit/idmarsuit name = "IDMA Service Jacket" item_path = /obj/item/clothing/suit/jacket/idma_jacket - ckeywhitelist = list ("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") + ckeywhitelist = list("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") /datum/loadout_item/suit/idmaarmouredjacket name = "IDMA Service Jacket" item_path = /obj/item/clothing/suit/armor/vest/idma_vest/idma_jacket ckeywhitelist = list ("EspeciallyStrange", "Wolf751", "Waterpig", "1Ceres", "Raxraus", "Tecktonic") - restricted_roles = list (JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) + restricted_roles = list(JOB_BLUESHIELD, JOB_CAPTAIN, JOB_NT_REP, JOB_HEAD_OF_SECURITY, JOB_RESEARCH_DIRECTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHIEF_ENGINEER, JOB_HEAD_OF_PERSONNEL, JOB_QUARTERMASTER, JOB_SECURITY_OFFICER, JOB_WARDEN, JOB_SECURITY_MEDIC, JOB_DETECTIVE) /datum/loadout_item/suit/idmardjacket name = "Silicon Administrator Vest" item_path = /obj/item/clothing/suit/jacket/vera_jacket - restricted_roles = list (JOB_RESEARCH_DIRECTOR) // De whitelisted since I dont use it anymore + restricted_roles = list(JOB_RESEARCH_DIRECTOR) // De whitelisted since I dont use it anymore /datum/loadout_item/suit/runner_winter name = "Winter Runner Jacket" @@ -136,7 +136,7 @@ /datum/loadout_item/accessory/idmaarmbands name = "IDMA Armband" item_path = /obj/item/clothing/accessory/armband/idmaarmband - ckeywhitelist = list ("EspeciallyStrange", "Wolf751", "Waterpig", "Mishanok", "Raxraus") + ckeywhitelist = list("EspeciallyStrange", "Wolf751", "Waterpig", "Mishanok", "Raxraus") /* * TOYS diff --git a/modular_zubbers/code/modules/loadout/~defines.dm b/modular_zubbers/code/modules/loadout/~defines.dm new file mode 100644 index 00000000000..37d675d0c00 --- /dev/null +++ b/modular_zubbers/code/modules/loadout/~defines.dm @@ -0,0 +1,7 @@ +#define ALL_JOBS_SEC JOB_WARDEN, JOB_DETECTIVE, JOB_SECURITY_OFFICER, JOB_HEAD_OF_SECURITY, JOB_CORRECTIONS_OFFICER, JOB_SECURITY_MEDIC +#define ALL_JOBS_DEPT_GUARDS JOB_CORRECTIONS_OFFICER, JOB_ENGINEERING_GUARD, JOB_ORDERLY, JOB_SCIENCE_GUARD, JOB_CUSTOMS_AGENT, JOB_BOUNCER +#define ALL_JOBS_CENTRAL JOB_NT_REP, JOB_BLUESHIELD +#define ALL_JOBS_MEDICAL JOB_MEDICAL_DOCTOR, JOB_CHIEF_MEDICAL_OFFICER, JOB_CHEMIST, JOB_PARAMEDIC, JOB_ORDERLY, JOB_CORONER +#define ALL_JOBS_SCIENCE JOB_SCIENTIST, JOB_ROBOTICIST, JOB_GENETICIST, JOB_RESEARCH_DIRECTOR, JOB_CHEMIST, JOB_SCIENCE_GUARD +#define ALL_JOBS_CARGO JOB_QUARTERMASTER, JOB_CARGO_TECHNICIAN, JOB_CUSTOMS_AGENT, JOB_SHAFT_MINER, JOB_BITRUNNER +#define ALL_JOBS_ENGINEERING JOB_CHIEF_ENGINEER, JOB_STATION_ENGINEER, JOB_ATMOSPHERIC_TECHNICIAN, JOB_ENGINEERING_GUARD diff --git a/modular_zubbers/code/modules/security/secmed/secmed_clothes.dm b/modular_zubbers/code/modules/security/secmed/secmed_clothes.dm index 37fcb1c3d17..fad82963e8e 100644 --- a/modular_zubbers/code/modules/security/secmed/secmed_clothes.dm +++ b/modular_zubbers/code/modules/security/secmed/secmed_clothes.dm @@ -68,9 +68,10 @@ name = "security medic uniform" desc = "A lightly armored uniform worn by Nanotrasen's Asset Protection Medical Corps." icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security_digi.dmi' icon_state = "security_medic_jumpsuit" + worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon_state = "security_medic_jumpsuit" + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/security_digi.dmi' /obj/item/clothing/under/rank/security/peacekeeper/security_medic name = "security medic turtleneck" diff --git a/modular_zubbers/code/modules/security/secmed/security_medic.dm b/modular_zubbers/code/modules/security/secmed/security_medic.dm index 6921aef25d3..711bbc496cf 100644 --- a/modular_zubbers/code/modules/security/secmed/security_medic.dm +++ b/modular_zubbers/code/modules/security/secmed/security_medic.dm @@ -117,8 +117,8 @@ /obj/item/storage/bag/garment/secmed/PopulateContents() . = ..() new /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic(src) - new /obj/item/clothing/suit/hazardvest/security_medic(src) new /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic/blue(src) + new /obj/item/clothing/suit/hazardvest/security_medic(src) new /obj/item/clothing/suit/hazardvest/security_medic/blue(src) new /obj/item/clothing/head/helmet/sec/peacekeeper/security_medic(src) new /obj/item/clothing/under/rank/medical/scrubs/skyrat/red/sec(src) diff --git a/modular_zubbers/code/modules/vending/multisec.dm b/modular_zubbers/code/modules/vending/multisec.dm index 789c2c9c9e4..05383a65f78 100644 --- a/modular_zubbers/code/modules/vending/multisec.dm +++ b/modular_zubbers/code/modules/vending/multisec.dm @@ -53,7 +53,6 @@ /obj/item/storage/backpack/duffelbag/sec/redsec = 6, /obj/item/clothing/under/rank/security/officer/redsec = 6, /obj/item/clothing/under/rank/security/peacekeeper/armadyne = 6, - /obj/item/clothing/under/rank/security/peacekeeper/armadyne/tactical = 6, /obj/item/clothing/shoes/jackboots = 6, /obj/item/clothing/shoes/jackboots/peacekeeper/armadyne = 6, /obj/item/clothing/shoes/jackboots/gogo_boots = 6, @@ -62,7 +61,7 @@ /obj/item/clothing/head/security_kepi = 6, /obj/item/clothing/head/beret/sec/peacekeeper/armadyne = 6, /obj/item/clothing/head/soft/sec = 6, - /obj/item/clothing/head/beaniesec = 6, + /obj/item/clothing/head/security_beanie = 6, /obj/item/clothing/head/playbunnyears/security = 6, /obj/item/clothing/under/rank/security/security_bunnysuit = 6, /obj/item/clothing/suit/armor/security_tailcoat = 6, @@ -92,8 +91,8 @@ "icon" = "notes-medical", "products" = list( /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic = 3, - /obj/item/clothing/suit/hazardvest/security_medic = 3, /obj/item/clothing/suit/toggle/labcoat/skyrat/security_medic/blue = 3, + /obj/item/clothing/suit/hazardvest/security_medic = 3, /obj/item/clothing/suit/hazardvest/security_medic/blue = 3, /obj/item/clothing/head/helmet/sec/peacekeeper/security_medic = 3, /obj/item/clothing/head/beret/sec/peacekeeper/security_medic = 3, @@ -106,13 +105,27 @@ /obj/item/clothing/under/rank/security/peacekeeper/security_medic = 3, /obj/item/clothing/under/rank/security/peacekeeper/security_medic/skirt = 3, ) - ) + ), + list( + "name" = "Corrections", + "icon" = "handcuffs", + "products" = list( + /obj/item/clothing/under/rank/security/corrections_officer = 2, //If, or more likely when the Brig Officers abandon them, you can now get 'em here! Yay! Wahoo! + /obj/item/clothing/under/rank/security/corrections_officer/skirt = 2, + /obj/item/clothing/under/rank/security/corrections_officer/sweater = 2, + /obj/item/clothing/under/rank/security/corrections_officer/sweater/skirt = 2, + /obj/item/clothing/suit/toggle/jacket/corrections_officer = 2, + /obj/item/clothing/under/rank/prisoner/classic = 6, //To be given to Prisoners. + /obj/item/clothing/head/playbunnyears/prisoner = 6, + /obj/item/clothing/under/rank/security/prisoner_bunnysuit = 6, + /obj/item/clothing/neck/tie/bunnytie/prisoner = 6, + ), + ), ) premium = list( /obj/item/clothing/under/rank/security/officer/formal = 6, /obj/item/clothing/suit/jacket/officer/blue = 6, /obj/item/clothing/head/beret/sec/navyofficer = 6, - /obj/item/clothing/under/rank/security/officer/formal = 6, /obj/item/clothing/suit/jacket/officer/tan = 6, /obj/item/clothing/head/helmet/metrocophelmet = 6, /obj/item/clothing/suit/armor/metrocop = 6, @@ -138,19 +151,10 @@ /obj/item/clothing/glasses/hud/ar/aviator/security = 3, //Printable, but you have to choose between HUD and flash protection. /obj/item/clothing/glasses/hud/ar/projector/security = 3, /obj/item/clothing/mask/gas/half_mask = 3, - /obj/item/clothing/under/rank/prisoner/classic = 6, //To be given to Prisoners. - /obj/item/clothing/head/playbunnyears/prisoner = 6, - /obj/item/clothing/under/rank/security/prisoner_bunnysuit = 6, - /obj/item/clothing/neck/tie/bunnytie/prisoner = 6, /obj/item/clothing/head/hats/caphat/parade/fedcap/sec = 3, /obj/item/clothing/suit/fedcoat/modern/sec = 3, /obj/item/clothing/mask/gas/soviet = 3, /obj/item/clothing/mask/gas/german = 3, //As far as I can tell, this is nowhere else in the game. - /obj/item/clothing/under/rank/security/corrections_officer = 2, //If, or more likely when the Brig Officers abandon them, you can now get 'em here! Yay! Wahoo! - /obj/item/clothing/under/rank/security/corrections_officer/skirt = 2, - /obj/item/clothing/under/rank/security/corrections_officer/sweater = 2, - /obj/item/clothing/under/rank/security/corrections_officer/sweater/skirt = 2, - /obj/item/clothing/suit/toggle/jacket/corrections_officer = 2, /obj/item/clothing/head/soft/veteran = 1, /obj/item/clothing/head/helmet/toggleable/justice = 1, //More than one of these in the Vendor and they'll get annoying fast. Hence why Justice2 isn't here. ) diff --git a/tgstation.dme b/tgstation.dme index d68a571bbee..9f6bdfb0b59 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9105,6 +9105,7 @@ #include "modular_zubbers\code\modules\lewd_machinery\sex_barrier.dm" #include "modular_zubbers\code\modules\limbgrowncorpses\limbgrowerblanks.dm" #include "modular_zubbers\code\modules\liquids\height_floors.dm" +#include "modular_zubbers\code\modules\loadout\~defines.dm" #include "modular_zubbers\code\modules\loadout\categories\accessories.dm" #include "modular_zubbers\code\modules\loadout\categories\ears.dm" #include "modular_zubbers\code\modules\loadout\categories\glasses.dm" From 1de660f08a0c9665e84063f115eae7d833d07f9e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 17 Feb 2025 16:36:41 +0100 Subject: [PATCH 084/120] Automatic changelog for PR #2998 [ci skip] --- html/changelogs/AutoChangeLog-pr-2998.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2998.yml diff --git a/html/changelogs/AutoChangeLog-pr-2998.yml b/html/changelogs/AutoChangeLog-pr-2998.yml new file mode 100644 index 00000000000..fa788072608 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2998.yml @@ -0,0 +1,7 @@ +author: "ReturnToZender" +delete-after: True +changes: + - qol: "Adds most of the Security cosmetics to the loadout" + - spellcheck: "Removes some spaces and spellchecks some things in the multisec vendor" + - rscadd: "Adds a corrections tab to the multisec vendor so being a corrections officer is not inherently illegal" + - rscadd: "Holobadges are accessories rather than neck items now" \ No newline at end of file From fac4f81e35fd10423af6c306ac52a4d35f8db68d Mon Sep 17 00:00:00 2001 From: Waterpig <49160555+Majkl-J@users.noreply.github.com> Date: Mon, 17 Feb 2025 21:35:53 +0100 Subject: [PATCH 085/120] [READY] The digitigrade bunnysuit update part 1 (#2927) ## About The Pull Request Slowly but surely sprites some digi bunnysuits. This PR will not include every single one but I will do like 2 departments then make another PR in small atomized bits to avoid conflicts on the files, and the death of my sanity. Also fixes lizard gas digi
List of all bunnysuits awaiting conversion after this PR is complete Standard (costume/playbunny) HOP Curator (all) Bartender Jani Chef Hyd Clown Mime Chap QM CT Miner BitRun Mail CMO Doc Para Chem Path Corner Psych RD Sci Robo Gene
## Why It's Good For The Game More sprites ## Proof Of Testing
Screenshots/Videos ![image](https://github.com/user-attachments/assets/ce0137bd-04ae-49a2-9ff4-4b1d55a0ab7d) ![image](https://github.com/user-attachments/assets/17a9b615-e8b6-4298-b94d-6da7790ca8d6) ![image](https://github.com/user-attachments/assets/d5a0a925-0843-4b50-bc89-038f724c403e) ![image](https://github.com/user-attachments/assets/082a4823-f005-4cb6-975e-7568387e7178)
## Changelog :cl: image: Digitigrade variation for Captain, Security department, and Engineering department bunnysuits fix: Lizard gas digitigrade actually works now /:cl: --- .../code/modules/GAGS/greyscale_configs.dm | 6 +- .../code/modules/clothing/outfits/bunny.dm | 2 +- .../code/modules/clothing/under/misc.dm | 136 +++++++++--------- .../code/modules/vending/lustwish.dm | 2 +- .../code/modules/vending/wardrobe.dm | 2 +- .../icons/mob/clothing/under/bunnysuits.dmi | Bin 0 -> 64394 bytes .../mob/clothing/under/bunnysuits_digi.dmi | Bin 0 -> 35654 bytes .../icons/mob/clothing/under/costume.dmi | Bin 57113 -> 1595 bytes .../icons/mob/clothing/under/costume_digi.dmi | Bin 15327 -> 936 bytes .../icons/mob/clothing/under/security.dmi | Bin 18356 -> 2536 bytes 10 files changed, 76 insertions(+), 72 deletions(-) create mode 100644 modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi create mode 100644 modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi diff --git a/modular_zubbers/code/modules/GAGS/greyscale_configs.dm b/modular_zubbers/code/modules/GAGS/greyscale_configs.dm index 4240e64026b..222972419db 100644 --- a/modular_zubbers/code/modules/GAGS/greyscale_configs.dm +++ b/modular_zubbers/code/modules/GAGS/greyscale_configs.dm @@ -37,7 +37,7 @@ /datum/greyscale_config/bunnysuit_worn name = "Worn Bunny Suit" - icon_file = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + icon_file = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' json_config = 'modular_skyrat/modules/GAGS/json_configs/bunny_stuff/bunnysuit_worn.json' /datum/greyscale_config/custom_bunnysuit @@ -47,11 +47,11 @@ /datum/greyscale_config/custom_bunnysuit_worn name = "Worn Tailormade Bunny Suit" - icon_file = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + icon_file = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' json_config = 'modular_skyrat/modules/GAGS/json_configs/bunny_stuff/custom_bunnysuit_worn.json' /datum/greyscale_config/custom_bunnysuit_worn/digi - icon_file = 'modular_zubbers/icons/mob/clothing/under/costume_digi.dmi' + icon_file = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' /datum/greyscale_config/tailcoat name = "Tailcoat" diff --git a/modular_zubbers/code/modules/clothing/outfits/bunny.dm b/modular_zubbers/code/modules/clothing/outfits/bunny.dm index f9338565826..b32e8d85b47 100644 --- a/modular_zubbers/code/modules/clothing/outfits/bunny.dm +++ b/modular_zubbers/code/modules/clothing/outfits/bunny.dm @@ -1,6 +1,6 @@ /datum/outfit/bunny_waiter name = "Bunny Waiter" - uniform = /obj/item/clothing/under/costume/playbunny + uniform = /obj/item/clothing/under/costume/playbunny/greyscale back = /obj/item/storage/backpack/satchel box = /obj/item/storage/box/survival suit = /obj/item/clothing/suit/jacket/tailcoat diff --git a/modular_zubbers/code/modules/clothing/under/misc.dm b/modular_zubbers/code/modules/clothing/under/misc.dm index ad2c4158902..8ff6f3f795d 100644 --- a/modular_zubbers/code/modules/clothing/under/misc.dm +++ b/modular_zubbers/code/modules/clothing/under/misc.dm @@ -11,25 +11,26 @@ //ALL BUNNY STUFF BY DimWhat OF MONKEESTATION /obj/item/clothing/under/costume/playbunny + icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' + body_parts_covered = CHEST|GROIN|LEGS + alt_covers_chest = TRUE + +/obj/item/clothing/under/costume/playbunny/greyscale name = "bunny suit" desc = "The staple of any bunny themed waiters and the like. It has a little cottonball tail too." - icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' - worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/costume_digi.dmi' icon_state = "playbunny" greyscale_colors = "#39393f#39393f#ffffff#87502e" greyscale_config = /datum/greyscale_config/bunnysuit greyscale_config_worn = /datum/greyscale_config/bunnysuit_worn flags_1 = IS_PLAYER_COLORABLE_1 - body_parts_covered = CHEST|GROIN|LEGS - alt_covers_chest = TRUE /obj/item/clothing/under/syndicate/syndibunny //heh name = "blood-red bunny suit" desc = "The staple of any bunny themed syndicate assassins. Are those carbon nanotube stockings?" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' - worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/costume_digi.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' icon_state = "syndibunny" body_parts_covered = CHEST|GROIN|LEGS @@ -40,9 +41,6 @@ name = "magician's bunny suit" desc = "The staple of any bunny themed stage magician." icon_state = "playbunny_wiz" - greyscale_config = null - greyscale_config_worn = null - greyscale_colors = null /obj/item/clothing/under/costume/playbunny/magician/Initialize(mapload) . = ..() @@ -61,41 +59,31 @@ name = "centcom bunnysuit" desc = "A modified Centcom version of a bunny outfit, using Lunarian technology to condense countless amounts of rabbits into a material that is extremely comfortable and light to wear." icon_state = "playbunny_centcom" - greyscale_config = null - greyscale_config_worn = null - greyscale_colors = null /obj/item/clothing/under/costume/playbunny/british name = "british bunny suit" desc = "The staple of any bunny themed monarchists. It has a little cottonball tail too." icon_state = "playbunny_brit" - greyscale_config = null - greyscale_config_worn = null - greyscale_colors = null /obj/item/clothing/under/costume/playbunny/communist name = "really red bunny suit" desc = "The staple of any bunny themed communists. It has a little cottonball tail too." icon_state = "playbunny_communist" - greyscale_config = null - greyscale_config_worn = null - greyscale_colors = null /obj/item/clothing/under/costume/playbunny/usa name = "striped bunny suit" desc = "A bunny outfit stitched together from several American flags. It has a little cottonball tail too." icon_state = "playbunny_usa" - greyscale_config = null - greyscale_config_worn = null - greyscale_colors = null /obj/item/clothing/under/costume/playbunny/custom_playbunny name = "tailormade bunny suit" + icon_state = "playbunny" greyscale_colors = "#373768#c9c9c9#ababcd#880088" greyscale_config = /datum/greyscale_config/custom_bunnysuit greyscale_config_worn = /datum/greyscale_config/custom_bunnysuit_worn greyscale_config_worn_digi = /datum/greyscale_config/custom_bunnysuit_worn/digi supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION + flags_1 = IS_PLAYER_COLORABLE_1 //CAPTAIN @@ -105,7 +93,8 @@ icon_state = "bunnysuit_captain" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -117,7 +106,7 @@ icon_state = "bunnysuit_qm" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -127,7 +116,7 @@ icon_state = "bunnysuit_cargo" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -137,7 +126,7 @@ icon_state = "bunnysuit_miner" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -147,7 +136,7 @@ icon_state = "bunnysuit_mail" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -157,7 +146,7 @@ icon_state = "bunnysuit_bitrunner" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -169,7 +158,8 @@ icon_state = "bunnysuit_engi" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -179,7 +169,8 @@ icon_state = "bunnysuit_atmos" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -189,7 +180,8 @@ icon_state = "bunnysuit_ce" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -200,7 +192,7 @@ name = "medical bunnysuit" icon_state = "bunnysuit_doctor" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -209,7 +201,7 @@ name = "paramedic's bunnysuit" icon_state = "bunnysuit_paramedic" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -218,7 +210,7 @@ name = "chemist's bunnysuit" icon_state = "bunnysuit_chem" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -227,7 +219,7 @@ name = "pathologist's bunnysuit" icon_state = "bunnysuit_viro" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -236,7 +228,7 @@ name = "coroner's bunnysuit" icon_state = "bunnysuit_coroner" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -245,7 +237,7 @@ name = "chief medical officer's bunnysuit" icon_state = "bunnysuit_cmo" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -256,7 +248,7 @@ name = "scientist's bunnysuit" icon_state = "bunnysuit_sci" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -265,16 +257,16 @@ name = "roboticist's bunnysuit" icon_state = "bunnysuit_roboticist" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE /obj/item/clothing/under/rank/rnd/geneticist/bunnysuit - desc = "The staple of any bunny themed geneticists. Doesn’t go great with an abominable green muscled physique, but then again, what does?" + desc = "The staple of any bunny themed geneticists. Doesn't go great with an abominable green muscled physique, but then again, what does?" name = "geneticist's bunnysuit" icon_state = "bunnysuit_genetics" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -283,7 +275,7 @@ name = "research director's bunnysuit" icon_state = "bunnysuit_rd" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS can_adjust = TRUE alt_covers_chest = TRUE @@ -295,7 +287,8 @@ name = "security bunnysuit" icon_state = "bunnysuit_sec" icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -305,7 +298,8 @@ name = "security assistant's bunnysuit" icon_state = "bunnysuit_sec_assistant" icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -316,7 +310,8 @@ name = "warden's bunnysuit" icon_state = "bunnysuit_warden" icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -326,7 +321,7 @@ name = "brig physician's bunnysuit" icon_state = "bunnysuit_brig_phys" icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -336,7 +331,8 @@ name = "detective's bunnysuit" icon_state = "bunnysuit_det" icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -346,7 +342,8 @@ name = "noir detective's bunnysuit" icon_state = "bunnysuit_det_noir" icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -356,7 +353,8 @@ name = "prisoner's bunnysuit" icon_state = "bunnysuit_prisoner" icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -366,7 +364,8 @@ name = "Head of Security's bunnysuit" icon_state = "bunnysuit_hos" icon = 'modular_zubbers/icons/obj/clothing/under/security.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/security.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -378,7 +377,7 @@ icon_state = "bunnysuit_hop" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -388,7 +387,7 @@ icon_state = "bunnysuit_janitor" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -398,7 +397,7 @@ icon_state = "bunnysuit_bar" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE custom_price = PAYCHECK_CREW @@ -409,7 +408,7 @@ icon_state = "bunnysuit_chef" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -419,7 +418,7 @@ icon_state = "bunnysuit_botany" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -429,7 +428,7 @@ icon_state = "bunnysuit_clown" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -439,7 +438,7 @@ icon_state = "bunnysuit_mime" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -450,7 +449,7 @@ icon_state = "bunnysuit_chaplain" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -460,7 +459,7 @@ icon_state = "bunnysuit_curator_red" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -470,7 +469,7 @@ icon_state = "bunnysuit_curator_green" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -480,7 +479,7 @@ icon_state = "bunnysuit_curator_teal" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -491,7 +490,8 @@ icon_state = "bunnysuit_law_black" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -502,7 +502,8 @@ icon_state = "bunnysuit_law_blue" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -512,7 +513,8 @@ icon_state = "bunnysuit_law_red" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -522,7 +524,8 @@ icon_state = "bunnysuit_law_good" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/bunnysuits_digi.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -532,7 +535,7 @@ icon_state = "bunnysuit_psychologist" inhand_icon_state = null icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' - worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon = 'modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi' body_parts_covered = CHEST|GROIN|LEGS alt_covers_chest = TRUE @@ -563,6 +566,7 @@ desc = "A purple shirt with a nametag, and some ill-fitting jeans. The bare minimum required by company standards." icon = 'modular_zubbers/icons/obj/clothing/under/costume.dmi' worn_icon = 'modular_zubbers/icons/mob/clothing/under/costume.dmi' + worn_icon_digi = 'modular_zubbers/icons/mob/clothing/under/costume_digi.dmi' icon_state = "lizardgas" body_parts_covered = CHEST|GROIN|LEGS has_sensor = NO_SENSORS //you're not NT employed, so they don't care about you diff --git a/modular_zubbers/code/modules/vending/lustwish.dm b/modular_zubbers/code/modules/vending/lustwish.dm index b79f36cea50..6f4905a7f74 100644 --- a/modular_zubbers/code/modules/vending/lustwish.dm +++ b/modular_zubbers/code/modules/vending/lustwish.dm @@ -16,7 +16,7 @@ "products" = list( /obj/item/clothing/head/playbunnyears = 6, /obj/item/clothing/neck/tie/bunnytie = 6, - /obj/item/clothing/under/costume/playbunny = 6, + /obj/item/clothing/under/costume/playbunny/greyscale = 6, /obj/item/clothing/suit/jacket/tailcoat = 6, /obj/item/clothing/under/costume/loincloth/sensor = 6, /obj/item/clothing/under/costume/loincloth/cloth/sensor = 6, diff --git a/modular_zubbers/code/modules/vending/wardrobe.dm b/modular_zubbers/code/modules/vending/wardrobe.dm index abc69d3e0b0..e57156df804 100644 --- a/modular_zubbers/code/modules/vending/wardrobe.dm +++ b/modular_zubbers/code/modules/vending/wardrobe.dm @@ -33,7 +33,7 @@ /obj/item/clothing/under/costume/dragon_maid = 3, /obj/item/clothing/head/playbunnyears = 6, /obj/item/clothing/neck/tie/bunnytie = 6, - /obj/item/clothing/under/costume/playbunny = 6, + /obj/item/clothing/under/costume/playbunny/greyscale = 6, /obj/item/clothing/suit/jacket/tailcoat = 6, /obj/item/clothing/neck/tie/bunnytie/magician = 6, /obj/item/clothing/under/costume/playbunny/magician = 6, diff --git a/modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi b/modular_zubbers/icons/mob/clothing/under/bunnysuits.dmi new file mode 100644 index 0000000000000000000000000000000000000000..192863fbb50af76db658dc98732f76b1f33efce3 GIT binary patch literal 64394 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.<=kHLg~f!rw?Ca=wV+1#CJ|*0P9q|)T5x3( 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 literal 57113 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

UC*`95a#!0*+G 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%0A_zvdN~i{(+W>m4&|$z#`H!M%Hs~IS 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 aZ~h3!WBTfB3BK5cDJwjZFOfCz`+oppcmE>* diff --git a/modular_zubbers/icons/mob/clothing/under/security.dmi b/modular_zubbers/icons/mob/clothing/under/security.dmi index cbe76f8948cb5b08936d0fe41f894ecf322e0cd2..b47c68ee2beea5ab2198a8beb6683165e53976ed 100644 GIT binary patch literal 2536 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 DzT+2B From f3f9b0a97501075adbb1f2226caf219cfd7f2342 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 17 Feb 2025 21:36:18 +0100 Subject: [PATCH 086/120] Automatic changelog for PR #2927 [ci skip] --- html/changelogs/AutoChangeLog-pr-2927.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2927.yml diff --git a/html/changelogs/AutoChangeLog-pr-2927.yml b/html/changelogs/AutoChangeLog-pr-2927.yml new file mode 100644 index 00000000000..2a6f95d4e30 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2927.yml @@ -0,0 +1,5 @@ +author: "Majkl-J" +delete-after: True +changes: + - image: "Digitigrade variation for Captain, Security department, and Engineering department bunnysuits" + - bugfix: "Lizard gas digitigrade actually works now" \ No newline at end of file From 709f6f6c4cb59e8897d2696909a131ad1820e34e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 17 Feb 2025 23:21:17 +0000 Subject: [PATCH 087/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2534.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2927.yml | 5 ----- html/changelogs/AutoChangeLog-pr-2998.yml | 7 ------ html/changelogs/AutoChangeLog-pr-3103.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3104.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3115.yml | 5 ----- html/changelogs/archive/2025-02.yml | 26 +++++++++++++++++++++++ 7 files changed, 26 insertions(+), 30 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2534.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2927.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-2998.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3103.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3104.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3115.yml diff --git a/html/changelogs/AutoChangeLog-pr-2534.yml b/html/changelogs/AutoChangeLog-pr-2534.yml deleted file mode 100644 index eed020185d4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2534.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "yooriss (Code), ReturnToZender (port)" -delete-after: True -changes: - - qol: "The telepathy genetics mutation has had significant usability improvements: it is now point-targeting based, and right-clicking the power allows for quick resending to the same target, a feature mirrored by the new *treply emote. Telepathy now also shows runechat messages." - - rscadd: "The Telepathic quirk has been added, allowing characters to start with an unremovable (or activated) telepathy mutation." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2927.yml b/html/changelogs/AutoChangeLog-pr-2927.yml deleted file mode 100644 index 2a6f95d4e30..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2927.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "Majkl-J" -delete-after: True -changes: - - image: "Digitigrade variation for Captain, Security department, and Engineering department bunnysuits" - - bugfix: "Lizard gas digitigrade actually works now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-2998.yml b/html/changelogs/AutoChangeLog-pr-2998.yml deleted file mode 100644 index fa788072608..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2998.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "ReturnToZender" -delete-after: True -changes: - - qol: "Adds most of the Security cosmetics to the loadout" - - spellcheck: "Removes some spaces and spellchecks some things in the multisec vendor" - - rscadd: "Adds a corrections tab to the multisec vendor so being a corrections officer is not inherently illegal" - - rscadd: "Holobadges are accessories rather than neck items now" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3103.yml b/html/changelogs/AutoChangeLog-pr-3103.yml deleted file mode 100644 index e20579fa85c..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3103.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "urfrenthespessmen" -delete-after: True -changes: - - rscadd: "Croptops in loadout" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3104.yml b/html/changelogs/AutoChangeLog-pr-3104.yml deleted file mode 100644 index 7bb03bacb23..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3104.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "MosleyTheMalO" -delete-after: True -changes: - - bugfix: "fixes the issue where characters would reset after a round or on switching character slots" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3115.yml b/html/changelogs/AutoChangeLog-pr-3115.yml deleted file mode 100644 index 457c85953d6..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3115.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "JustMeTheIInd" -delete-after: True -changes: - - map: "changed the bedsheet bin in InfiDorm apartment map to a towel bin." - - map: "added a bedsheet bin in InfiDorm apartment map bedroom." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 85eaedc43d4..2688396c756 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -145,3 +145,29 @@ zeroisthebiggay: - bugfix: changes The House's welcome text "The House now runs the show..." to "The House always wins." because it simply makes More Sense +2025-02-17: + JustMeTheIInd: + - map: changed the bedsheet bin in InfiDorm apartment map to a towel bin. + - map: added a bedsheet bin in InfiDorm apartment map bedroom. + Majkl-J: + - image: Digitigrade variation for Captain, Security department, and Engineering + department bunnysuits + - bugfix: Lizard gas digitigrade actually works now + MosleyTheMalO: + - bugfix: fixes the issue where characters would reset after a round or on switching + character slots + ReturnToZender: + - qol: Adds most of the Security cosmetics to the loadout + - spellcheck: Removes some spaces and spellchecks some things in the multisec vendor + - rscadd: Adds a corrections tab to the multisec vendor so being a corrections officer + is not inherently illegal + - rscadd: Holobadges are accessories rather than neck items now + urfrenthespessmen: + - rscadd: Croptops in loadout + yooriss (Code), ReturnToZender (port): + - qol: 'The telepathy genetics mutation has had significant usability improvements: + it is now point-targeting based, and right-clicking the power allows for quick + resending to the same target, a feature mirrored by the new *treply emote. Telepathy + now also shows runechat messages.' + - rscadd: The Telepathic quirk has been added, allowing characters to start with + an unremovable (or activated) telepathy mutation. From 27537648df710e5842d42fe33d4afb451e05e69e Mon Sep 17 00:00:00 2001 From: pixelkitty286 <78038207+pixelkitty286@users.noreply.github.com> Date: Tue, 18 Feb 2025 04:04:45 -0600 Subject: [PATCH 088/120] Adds syndie cats, super cats, and super syndie cat ears from MonkeStation (More cat DLC) (#3075) ## About The Pull Request This PR is porting: - Syndie cats and the grenade for it from MonkeStation: https://github.com/Monkestation/Monkestation2.0/pull/4181 - Super kitty ears from MonkeStation: https://github.com/Monkestation/Monkestation2.0/pull/5048 (The ruin changes will be done later) - Super Syndie cat ears and cat night vision changes from MonkeStation: https://github.com/Monkestation/Monkestation2.0/pull/5290 Changes done to the PRs ported: - Super cats are now their own mob type, have corresponding aggressive behaviors, and have super dexterous paws (very limited) - Syndie cat grenades are accessible by traitors for around the same price of a syndicate bomb Syndie cats come with a microbomb implant that explode on death making them extra evil kitties. Syndie Cat ears do not hide your identity wile transformed and the super syndie cat is only syndicate obtainable. Two aggressive Super cats and one friendly are accessible through Xenobio. ## Why It's Good For The Game Our server lacks syndicats and could always use some more cat content to spice up the meow rounds. ## Proof Of Testing

Screenshots/Videos https://github.com/user-attachments/assets/1c027de9-f890-4c75-9c42-2c75579b750c https://github.com/user-attachments/assets/5065a35e-213f-45da-943f-842b57a81f11 https://github.com/user-attachments/assets/3d92dfce-0f8d-408e-a3a9-ca0a41d3f6d6 https://github.com/user-attachments/assets/b14ff6ce-8663-4d8c-90f4-c6bca98c6aa0
## Changelog :cl: add: Syndicats, Super cats, Super cat ears, and Super Syndicat ears balance: Cat night vision image: Syndicat sprites, and Super cat ear icon code: Added a shape shifting caster variable for keeping the caster's name /:cl: --- .../uplink/uplink_items/syndicat/_syndicat.dm | 28 +++++ .../modules/mob/living/basic/pets/cat/cat.dm | 42 +++++++ .../mob/living/basic/pets/cat/super_cat.dm | 113 ++++++++++++++++++ .../spell_types/shapeshift/_shapeshit.dm | 11 ++ .../spell_types/shapeshift/kittyform.dm | 24 ++++ .../surgery/organs/internal/ears/_ears.dm | 62 ++++++++++ .../icons/mob/inhands/pets_held_lh.dmi | Bin 0 -> 396 bytes .../icons/mob/inhands/pets_held_rh.dmi | Bin 0 -> 397 bytes modular_zubbers/icons/mob/simple/pets.dmi | Bin 1295 -> 1984 bytes .../icons/obj/clothing/head/costume.dmi | Bin 0 -> 316 bytes tgstation.dme | 6 + 11 files changed, 286 insertions(+) create mode 100644 modular_zubbers/code/modules/antagonists/traitor/uplink/uplink_items/syndicat/_syndicat.dm create mode 100644 modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm create mode 100644 modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm create mode 100644 modular_zubbers/code/modules/spells/spell_types/shapeshift/_shapeshit.dm create mode 100644 modular_zubbers/code/modules/spells/spell_types/shapeshift/kittyform.dm create mode 100644 modular_zubbers/code/modules/surgery/organs/internal/ears/_ears.dm create mode 100644 modular_zubbers/icons/mob/inhands/pets_held_lh.dmi create mode 100644 modular_zubbers/icons/mob/inhands/pets_held_rh.dmi create mode 100644 modular_zubbers/icons/obj/clothing/head/costume.dmi diff --git a/modular_zubbers/code/modules/antagonists/traitor/uplink/uplink_items/syndicat/_syndicat.dm b/modular_zubbers/code/modules/antagonists/traitor/uplink/uplink_items/syndicat/_syndicat.dm new file mode 100644 index 00000000000..5ef080f3a21 --- /dev/null +++ b/modular_zubbers/code/modules/antagonists/traitor/uplink/uplink_items/syndicat/_syndicat.dm @@ -0,0 +1,28 @@ +//Just the ears alone +/datum/uplink_item/implant/super_kitty_ears + name = "Super Syndie-Kitty Ears" + desc = "Developed by several Interdyne Pharmaceutics scientists and Wizard Federation archmages during a record-breaking rager, \ + this set of feline ears combines the finest of bio-engineering and thamaturgy to allow the user to transform to and from a genetically modified cat at will, \ + granting them all the benefits (and downsides) of being a true genetically modified feline, such as ventcrawling. \ + However, this form will be clad in blood-red Syndicate armor, making its origin somewhat obvious." + purchasable_from = ~(UPLINK_CLOWN_OPS) + item = /obj/item/organ/internal/ears/cat/super/syndie + cost = 16 + surplus = 15 + limited_stock = 1 + progression_minimum = 15 MINUTES + +/datum/uplink_item/dangerous/syndicat + name = "Syndie cat grenade" + desc = "This grenade is filled with 3 trained angry cats in special syndicate modsuits. Upon activation, the Syndicate cats are awoken and unleashed unto unlucky bystanders." + item = /obj/item/grenade/spawnergrenade/cat/syndicate + cost = 12 + surplus = 5 + purchasable_from = ~(UPLINK_CLOWN_OPS) + progression_minimum = 30 MINUTES + +/obj/item/grenade/spawnergrenade/cat/syndicate + name = "Syndicatnade" + desc = "You can hear aggressive meowing and the sounds of sharpened claws on metal coming from within." + spawner_type = /mob/living/basic/pet/cat/syndicat + deliveryamt = 3 diff --git a/modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm b/modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm new file mode 100644 index 00000000000..ab394ac159b --- /dev/null +++ b/modular_zubbers/code/modules/mob/living/basic/pets/cat/cat.dm @@ -0,0 +1,42 @@ +//Night vision for all cats +/mob/living/basic/pet/cat + lighting_cutoff_red = 25 + lighting_cutoff_green = 30 + lighting_cutoff_blue = 20 + +// SYNDICATS! +/mob/living/basic/pet/cat/syndicat + name = "Syndie Cat" + desc = "OH GOD! RUN!! IT CAN SMELL THE DISK!" + icon = 'modular_zubbers/icons/mob/simple/pets.dmi' + held_lh = 'modular_zubbers/icons/mob/inhands/pets_held_lh.dmi' + held_rh = 'modular_zubbers/icons/mob/inhands/pets_held_rh.dmi' + icon_state = "syndicat" + icon_living = "syndicat" + icon_dead = "syndicat_dead" + held_state = "syndicat" + health = 80 + maxHealth = 80 + melee_damage_lower = 20 + melee_damage_upper = 35 + mobility_flags = MOBILITY_FLAGS_DEFAULT + ai_controller = /datum/ai_controller/basic_controller/simple_hostile + faction = list(FACTION_CAT, ROLE_SYNDICATE) + gold_core_spawnable = NO_SPAWN + // it's clad in blood-red armor + damage_coeff = list(BRUTE = 0.8, BURN = 0.9, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) + habitable_atmos = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minimum_survivable_temperature = -1 + maximum_survivable_temperature = INFINITY + unsuitable_atmos_damage = 0 + lighting_cutoff_red = 25 + lighting_cutoff_green = 35 // More green for what they see out of their eyes + lighting_cutoff_blue = 20 + +/mob/living/basic/pet/cat/syndicat/Initialize(mapload) + . = ..() + var/obj/item/implant/toinstall = list(/obj/item/implant/weapons_auth, /obj/item/implant/explosive) + for(var/obj/item/implant/original_implants as anything in toinstall) + var/obj/item/implant/copied_implant = new original_implants.type + copied_implant.implant(src, silent = TRUE, force = TRUE) + add_traits(list(TRAIT_NEGATES_GRAVITY, TRAIT_DISK_VERIFIER), INNATE_TRAIT) // Trained syndicat meower! diff --git a/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm b/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm new file mode 100644 index 00000000000..97be1834898 --- /dev/null +++ b/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm @@ -0,0 +1,113 @@ +/// How much health super kitties have by default. +#define SUPER_KITTY_HEALTH 50 +/// How much health syndicate super kitties have by default. +#define SYNDIE_SUPER_KITTY_HEALTH 80 + +//Super cats are specifically used for the kitty form spell but can be also spawned in at xenobio temporarily. +//Super cats stronger and faster than normal cats and far more agressive. +/mob/living/basic/pet/cat/super + name = "Super Cat" + desc = "Kitty!! Woah this one seems strong and angry!" + health = SUPER_KITTY_HEALTH + maxHealth = SUPER_KITTY_HEALTH + speed = 0 + can_breed = FALSE + gold_core_spawnable = HOSTILE_SPAWN + melee_damage_lower = 7 + melee_damage_upper = 15 + ai_controller = /datum/ai_controller/basic_controller/simple_hostile + faction = list(null) // ...and they will fight 'til there's just one. + + +/mob/living/basic/pet/cat/super/Initialize(mapload) + . = ..() + add_traits(list(TRAIT_NOGUNS, TRAIT_NO_TWOHANDING, TRAIT_VENTCRAWLER_NUDE), INNATE_TRAIT) + remove_traits(list(TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) + AddElement(/datum/element/dextrous) + AddComponent(/datum/component/personal_crafting) + +/mob/living/basic/pet/cat/super/can_use_guns(obj/item/G) + . = ..() + if(HAS_TRAIT(src, TRAIT_NOGUNS)) // Who am I to stop admins from making them stronger? + balloon_alert(src, "Your paws are too soft!") + return FALSE + + +/mob/living/basic/pet/cat/super/tux //Fake runtime + name = "Super Tux Cat" + desc = "GCA- Wait something is off" + gender = FEMALE + icon_state = "cat" + icon_living = "cat" + icon_dead = "cat_dead" + held_state = "cat" + +/mob/living/basic/pet/cat/super/pancake + name = "Super Pancake Cat" + desc = "It's a Super Cat made out of a pancake!" + icon = 'modular_zubbers/icons/mob/simple/pets.dmi' + icon_state = "pancake" + icon_living = "pancake" + icon_dead = "pancake_dead" + gold_core_spawnable = NO_SPAWN + +/mob/living/basic/pet/cat/super/original + name = "Super Batsy" + desc = "The product of alien DNA and bored geneticists." + gender = FEMALE + icon_state = "original" + icon_living = "original" + icon_dead = "original_dead" + held_state = "original" + gold_core_spawnable = NO_SPAWN + +/mob/living/basic/pet/cat/super/breadcat + name = "Super Bread Cat" + desc = "They're a cat... with a bread!" + icon_state = "breadcat" + icon_living = "breadcat" + icon_dead = "breadcat_dead" + held_state = "breadcat" + can_interact_with_stove = TRUE + gold_core_spawnable = NO_SPAWN + +/mob/living/basic/pet/cat/cak/super //Special type + name = "Super Keeki Cat" + desc = "She is a Super Cat made out of a cake of kindness." + speed = 0 + gold_core_spawnable = FRIENDLY_SPAWN + faction = list(FACTION_CAT) + +/mob/living/basic/pet/cat/cak/super/Initialize(mapload) + . = ..() + add_traits(list(TRAIT_PACIFISM, TRAIT_NO_TWOHANDING, TRAIT_VENTCRAWLER_NUDE), INNATE_TRAIT) //Passive kitty bring kind meows + remove_traits(list(TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) + AddElement(/datum/element/dextrous) + AddComponent(/datum/component/personal_crafting) + +// SUPER SYNDICATS!!! GET DAT MRR MRRAW DISK!!! +/mob/living/basic/pet/cat/syndicat/super + name = "Super Syndie Cat" + desc = "OH GOD! RUN!! IT CAN SMELL THE DISK!" + speed = 0.3 // Slightly slower than a normal super cat since they have a suit + health = SYNDIE_SUPER_KITTY_HEALTH + maxHealth = SYNDIE_SUPER_KITTY_HEALTH + +/mob/living/basic/pet/cat/syndicat/super/Initialize(mapload) + . = ..() + add_traits(list(TRAIT_NOGUNS, TRAIT_NO_TWOHANDING, TRAIT_VENTCRAWLER_NUDE), INNATE_TRAIT) + remove_traits(list(TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) + AddElement(/datum/element/dextrous) + AddComponent(/datum/component/personal_crafting) + // get rid of the microbomb normal syndie cats have + for(var/obj/item/implant/explosive/implant_to_remove in implants) + qdel(implant_to_remove) + +/mob/living/basic/pet/cat/syndicat/super/can_use_guns(obj/item/G) + . = ..() + if(HAS_TRAIT(src, TRAIT_NOGUNS)) // Who am I to stop admins from making them stronger? + balloon_alert(src, "Your paws are too weak!") + return FALSE + +#undef SUPER_KITTY_HEALTH +#undef SYNDIE_SUPER_KITTY_HEALTH diff --git a/modular_zubbers/code/modules/spells/spell_types/shapeshift/_shapeshit.dm b/modular_zubbers/code/modules/spells/spell_types/shapeshift/_shapeshit.dm new file mode 100644 index 00000000000..032dbd3a564 --- /dev/null +++ b/modular_zubbers/code/modules/spells/spell_types/shapeshift/_shapeshit.dm @@ -0,0 +1,11 @@ +/datum/action/cooldown/spell/shapeshift + /// If TRUE, the mob will keep the name of the caster. + var/keep_name = FALSE + +/datum/action/cooldown/spell/shapeshift/do_shapeshift(mob/living/caster) + . = ..() + var/mob/living/new_form = . + if(istype(new_form) && keep_name) + new_form.real_name = caster.real_name + new_form.name = caster.real_name + new_form.update_name() diff --git a/modular_zubbers/code/modules/spells/spell_types/shapeshift/kittyform.dm b/modular_zubbers/code/modules/spells/spell_types/shapeshift/kittyform.dm new file mode 100644 index 00000000000..11fca87eced --- /dev/null +++ b/modular_zubbers/code/modules/spells/spell_types/shapeshift/kittyform.dm @@ -0,0 +1,24 @@ +//Normal supercat spell +/datum/action/cooldown/spell/shapeshift/kitty + name = "KITTY POWER!!" + desc = "Take on the shape of a kitty cat! Gain their powers at a loss of vitality." + + cooldown_time = 20 SECONDS + invocation = "MRR MRRRW!!" + invocation_type = INVOCATION_SHOUT + spell_requirements = SPELL_REQUIRES_NO_ANTIMAGIC + + possible_shapes = list( + /mob/living/basic/pet/cat/super, + /mob/living/basic/pet/cat/super/tux, + /mob/living/basic/pet/cat/super/pancake, + /mob/living/basic/pet/cat/super/original, + /mob/living/basic/pet/cat/cak/super, + ) + keep_name = TRUE + +//Traitor's Super cat spell +/datum/action/cooldown/spell/shapeshift/kitty/syndie + name = "SYNDICATE KITTY POWER!!" + desc = "Take on the shape of an kitty cat, clad in blood-red armor! Gain their powers at a loss of vitality." + possible_shapes = list(/mob/living/basic/pet/cat/syndicat/super) diff --git a/modular_zubbers/code/modules/surgery/organs/internal/ears/_ears.dm b/modular_zubbers/code/modules/surgery/organs/internal/ears/_ears.dm new file mode 100644 index 00000000000..f541304fab5 --- /dev/null +++ b/modular_zubbers/code/modules/surgery/organs/internal/ears/_ears.dm @@ -0,0 +1,62 @@ +//Copy and paste of monkey's super kitty ears +/obj/item/organ/internal/ears/cat/super + name = "Super Kitty Ears" + desc = "A pair of kitty ears that harvest the true energy of cats. Mrow!" + icon = 'modular_zubbers/icons/obj/clothing/head/costume.dmi' + icon_state = "superkitty" + decay_factor = 0 + damage_multiplier = 0.5 // SUPER + organ_flags = ORGAN_HIDDEN + /// The instance of kitty form spell given to the user. + /// The spell will be initialized using the initial typepath. + var/datum/action/cooldown/spell/shapeshift/kitty/kitty_spell = /datum/action/cooldown/spell/shapeshift/kitty + +/obj/item/organ/internal/ears/cat/super/Initialize(mapload) + if(ispath(kitty_spell)) + kitty_spell = new kitty_spell(src) + else + stack_trace("kitty_spell is invalid typepath ([kitty_spell || "null"])") + return ..() + +/obj/item/organ/internal/ears/cat/super/Destroy() + QDEL_NULL(kitty_spell) + return ..() + +/obj/item/organ/internal/ears/cat/super/attack(mob/target_mob, mob/living/carbon/user, obj/target) + if(target_mob != user || !implant_on_use(user)) + return ..() + +/obj/item/organ/internal/ears/cat/super/attack_self(mob/user, modifiers) + implant_on_use(user) + return ..() + +/obj/item/organ/internal/ears/cat/super/on_mob_insert(mob/living/carbon/ear_owner) + . = ..() + kitty_spell.Grant(ear_owner) + +/obj/item/organ/internal/ears/cat/super/on_mob_remove(mob/living/carbon/ear_owner, special = FALSE) + . = ..() + kitty_spell.Remove(ear_owner) + +// Stole this from demon heart hard, but hey it works +/obj/item/organ/internal/ears/cat/super/proc/implant_on_use(mob/living/carbon/user) + if(!iscarbon(user) || !user.is_holding(src)) + return FALSE + user.visible_message( + span_warning("[user] raises \the [src] to [user.p_their()] head and gently places it on [user.p_their()] head!"), + span_danger("A strange feline comes over you. You place \the [src] on your head!"), + ) + playsound(user, 'sound/effects/meow1.ogg', 50, TRUE) + + user.visible_message( + span_warning("\The [src] melt into [user]'s head!"), + span_userdanger("Everything is so much louder!"), + ) + + user.temporarilyRemoveItemFromInventory(src, force = TRUE) + Insert(user) + return TRUE + +// Super syndi kitty ears! +/obj/item/organ/internal/ears/cat/super/syndie + kitty_spell = /datum/action/cooldown/spell/shapeshift/kitty/syndie diff --git a/modular_zubbers/icons/mob/inhands/pets_held_lh.dmi b/modular_zubbers/icons/mob/inhands/pets_held_lh.dmi new file mode 100644 index 0000000000000000000000000000000000000000..3f6a7b1f61770bc1e8ce8a5525c81f99e39fa2eb GIT binary patch literal 396 zcmV;70dxL|P)V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zskkyPB{Mm(M2U+tC9|j)q>qa;ttc@!6~s2=QdV&Fa{-$S0G*Z_ZF=NtfdBvivPnci zR7i>Kl)(+dAPhw@ED#3V=-0C=2J zR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRLOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5 zskkyPB{Mm(M2U+tC9|j)q>qa;ttc@!6~s2=QdV&Fa{-$S0G*Z_ZF=NtfdBvivq?lj zR7i>Kl+6vpAPj|Vw*vrP0K@`;bOF@;cWO$-PZ~FXAZmoO#Teq)+xkh z;Gnf|cnh_5DcPf7Z2~gF2sF(Wy%Pj6h;<__tu|^PkRW^BhfyD-sgubs!4GwXyI0DR zppW7qstT^msaoj!Ti+|V7;aIEYxc2aPeB3c;Hv|>{UEEC&B1qf$d^P_EbKGfyR1_F r6oJW2?6Zh36_qm-gF5&%PQK&;4@3#>BV)P800000NkvXXu0mjf5fP!M literal 0 HcmV?d00001 diff --git a/modular_zubbers/icons/mob/simple/pets.dmi b/modular_zubbers/icons/mob/simple/pets.dmi index d536061a06c65ecb0574d7ea20781acff9cdafd3..02fc13405be4d1ca027a9df790270da69a9152da 100644 GIT binary patch delta 1827 zcmV+;2i*9N3cwE~iBL{Q4GJ0x0000DNk~Le0001h0001B2m=5B0OF*IdjJ3cT9G9{ zGk+&5Vgmz6Ffp|r4plikX+=i>{{YuGCjbBd0DwSc#Dkjv0004WQchCYD-8UTXhT-U2M=|TVi26stBK~!jg?OEY^ z+bRqVjF{fo3^&CX$IJV_<~;((u|c$5zuWEpu#&k6V4Z`IYhGRY?Bm;1NJ}F?-cc`25`P}GySV_4j)x6|N&Zn1b z3AfdA(=<{wO^tz;5FusGKq#%YHfWlEKw&2@7;4_RWd+b$mjH`gF0E2ps`hfprn zt%IJQ%5LE-29(?oKR28OjQT08_^Av};B>N9G-qpzakaB}XRwL>^72fl~weHNLg6ec$ixWaE$l`Zd0PHIBOs0wDJn3#v5>2zx~kUTtx!#IBO&NJ81Z z*aL=kOEjB^w1JATT(CaRvZBg3rYAkQD6vM1&+yBQJ8p<4zb)I zpo=hsZYZ}s2v~T$Eb)l}m`e-j-h!m!a=s)6z^~9<650sZ_1Eh2NJ!njwYqrpfI!5zBsc-X#<4LtfVd1aLvq8a7oc@yIhm)d?(HqYtc=6{QOB zs~v$PAH_UF02WwaZC@wQFShM}Di#pYc}yAS4_OG-?_C)1cbhdhst^l-8vc6()QW2= z41jOePZc9a*K8{m{9yhWSbT_4s1~0NIpmN-4*B!q{xbgHhChN+FYpKF{{Vj39#~{N z`QUN=Zv3)6u;5Q42;ln71eo?f5*J42+!(&u6PfnFgTR>Nn+cTdfrkKp`-a!}%}0>h z1O00`GrHS2k2m)v0@Y%n5NZ#wHGY_|`5FJF@ca0>sMo5oz7%OpiSMRq9_DHKqz`Nn zgv`5>OswlVo5SbT^Z!W4$j8DNi~o6H5u zSbuQTO7;~7ZuG-2_)mp@q242i)di@@)OAd(>(v0%pZ1amF5Y6=8cpnt9s)On(5tE`Y^E09hJ@YLRaFiP?Se3)lH&td;W zj;Gt|5`h37TWnj>-`jY;il&QJAoaky4#vk^rPqq>J3Nt?C~UjVFbHclQ_9fRRMg&+ zktIg5T&Ji{gvz_?m^NV)JP3(K83oj&jxD4Lf)q-0pcVT&w1B#7!u0zh`>lobVtWJ( z`1(6SbB}_L5WuK^HEj}X5JFwYq7OiwsyNiKJupf{C;C;!&K+{dA%`6D|B!ie{VOsO z_WX&$g<0~S)LY|>>a`>=&e_;J<-Hbnn)Ze(?)i+krF6=lmsC=3f5pr$xa?OA2HciG zpi2CA@q}BM@nS-gXwBZ&}^{B?2Lk0{}lT z7TD+`C;)C4;M{I|tN1Tj;It4Z#YM>D}%>Eu1dH+QMqeu0~RIlFC zuKgV^GQMYjv{TVHZx%WK5dkJmxbc1q)14s@9e*B|HW!MUDPIE9J!WGr89!=?mdPwy zz*F^DA%Hv?|8NFKCP)O5M}9znNoFw*+_5<(42CTM&Hx(|ECk-~N;@W*#Z>4$2$W$k zB;7;WnrC}FA$dw#G;Z4BA;}UUF6LVoTZZ{_H+al{PJz?!2g;Ci@m!)vyGoO3%2pERdbkFwhSCz#Jb? zUH+-Cz?%KsCJ#n?g?$)}OfpN0fj#imt6v{>zSe4eI({AkWD=J`^pVHQWR}>10Dr`! zApev;;jgfH3=&jgFpLidv0YW@c&~nc601;jtK+-;e})|S!NWhJEH*iv{snb!g&>|U R7Uci{002ovPDHLkV1mNMQ@8*C delta 1133 zcmV-z1d{u}5045ZiBL{Q4GJ0x0000DNk~Le0001B0001B2m=5B0M$l^3IG5ALXjmv z8vpxJk|(CrsbD#+5j-D~J1j{)DAR`|qk>D$ z$|V!E8BXv8RHa=aUkebA)mHwT%k^5?JT4i3hd(ja8LAkCLB%p|2MDtY_OZTv%B7S} zou~kjGeTPxP#)2wV{YyzOkPGIylN21z4U9T34M}`E=7fc4nqaa*?gzZ8iDZ=Bfv;G zVFsz0f(a1~?r^CzZ3;>u&IJK7BMqwn)(GIYu7e;P03C$)Y4jVS^9+$n-}{$&cV zGj0ZunK$i3h}wX`tZ;WchS0n_apJ^(iGL1TNo{`Z{FMHEBk}jG$Y0|fl71OsEBT*B zbq0(7cfZ-6;g@O+Rsj#?&k*#&i?6D|9a_QXwLsFZ)WET8eAn~(m43n6dZq4|$z43? z>Rcs#@>PQ4%un$Z?7vz`jy1@4==PO1M$|KH&!{r9YKOCf4+x!5MafBz_LlW zW0iA(vtWp0C~TMrd9cW92H1x6aK|dcxRRQPRC=q%R~NC!&f!N|hOdQLLna|b!xc6ay78s1aRgS4l^AHym)Y%QbWl)0e6hqJkEV(*Z(czv| zPIJVqMF^O-4#Vu&ahp-+1p}kU)yp!DbokT!Zq=i@Nm5(DU_e(>MA*81`T^~7N@b(- z!z}#6)&e|YK*W&39WiPn>Q#ICgcB!D{Ns4)5yT(B+WtR`-`f5^3g-5I|3R>~{||z_ z{eM(|s%c8Q{eKix)9mc=9}%E#5?c=`o`AnkyI1{VZ+-q8beG_&3tz(j?IFByc}WC6 z7oh6!1p%t1fj)=ue9ao@qbg4$*T*m~S!4AOtRguHzh;q%V=Pra+s^`@f#`D>D0j$X z>nYN6xCOYE`uGA7>@EHvXP_>#O8OWNQ}(|BPlha6k-kvZ00000NkvXXu0mjfszMoj diff --git a/modular_zubbers/icons/obj/clothing/head/costume.dmi b/modular_zubbers/icons/obj/clothing/head/costume.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b923e3fcbd7df2e7eefd0a98a0b0bcca3bbb5442 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnF3?v&v(vJfv(Ey(i*8>L*yxc7M|82=vH@E-u z=l_3dv1x&N=!BMiKn08?L4Lsu4$p3+0Xcb9ArU1msl~}fnFS@8`FRWs6?1~a3W`d< ze+e%5`1OgFx31Q?Gv|Xhgc@8le(*@=ypQHdhN7O{9Tvtx#+Qw~6y`jdbYxP9Lh#BR zTNJixSZ`jkB&f67SatIX35|>sM`wmjnK7FyQCoY*ubmBN*%)3dlgZ!zJb5$F=4ekB z#}JK)$q5o?92lGo5B>1z5{U9()ME%c#33GFB*YTfbjmA$F;#tnkei~Y@{ESfN&%e< zCUC|mSa<|91O{9cQClE2i^ZhRQ`dw;OF(KG!=f8O&MTj+U&zdGhneGOT$9&UpfwDh Lu6{1-oD!M Date: Tue, 18 Feb 2025 11:05:11 +0100 Subject: [PATCH 089/120] Automatic changelog for PR #3075 [ci skip] --- html/changelogs/AutoChangeLog-pr-3075.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3075.yml diff --git a/html/changelogs/AutoChangeLog-pr-3075.yml b/html/changelogs/AutoChangeLog-pr-3075.yml new file mode 100644 index 00000000000..a32cfd62c79 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3075.yml @@ -0,0 +1,7 @@ +author: "pixelkitty286" +delete-after: True +changes: + - rscadd: "Syndicats, Super cats, Super cat ears, and Super Syndicat ears" + - balance: "Cat night vision" + - image: "Syndicat sprites, and Super cat ear icon" + - code_imp: "Added a shape shifting caster variable for keeping the caster's name" \ No newline at end of file From a6c357b52795ac93ecdb3b4e54a1c7a0c59e77ea Mon Sep 17 00:00:00 2001 From: aKromatopzia <94389683+aKromatopzia@users.noreply.github.com> Date: Wed, 19 Feb 2025 03:07:26 +0800 Subject: [PATCH 090/120] Syndicate & Ninja Smolraptors (#3101) ## About The Pull Request Piecemeal updates because I hadn't the vigour to do it all at once. Now they are compleat -- until something else comes along. All syndicate and ninja sub-divisions share appearances. ## Proof Of Testing ![Screenshot_22](https://github.com/user-attachments/assets/f3a3b468-ad3b-48cc-bc52-f1fa9094e417) ## Changelog :cl: add: syndie and ninja smolraptors /:cl: --- .../silicons/borgs/code/robot_defines.dm | 2 ++ .../silicons/borgs/code/robot_model.dm | 30 ++++++++++++++++++ .../sprites/smallraptors/smolraptor_cc.dmi | Bin 14449 -> 14463 bytes .../sprites/smallraptors/smolraptor_gen.dmi | Bin 14066 -> 14054 bytes .../sprites/smallraptors/smolraptor_ninja.dmi | Bin 0 -> 13601 bytes .../smallraptors/smolraptor_syndie.dmi | Bin 0 -> 16548 bytes 6 files changed, 32 insertions(+) create mode 100644 modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_ninja.dmi create mode 100644 modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_syndie.dmi diff --git a/modular_zubbers/code/modules/silicons/borgs/code/robot_defines.dm b/modular_zubbers/code/modules/silicons/borgs/code/robot_defines.dm index f3227c86592..58d105e8cc8 100644 --- a/modular_zubbers/code/modules/silicons/borgs/code/robot_defines.dm +++ b/modular_zubbers/code/modules/silicons/borgs/code/robot_defines.dm @@ -107,6 +107,8 @@ #define CYBORG_ICON_JANI_SMOLRAPTOR 'modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_jani.dmi' #define CYBORG_ICON_MIN_SMOLRAPTOR 'modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_min.dmi' #define CYBORG_ICON_CC_SMOLRAPTOR 'modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_cc.dmi' +#define CYBORG_ICON_SYN_SMOLRAPTOR 'modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_syndie.dmi' +#define CYBORG_ICON_NIN_SMOLRAPTOR 'modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_ninja.dmi' // F3-LINE BORG DEFINES BELOW diff --git a/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm b/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm index 3e5aa7b57e1..75e301cf25c 100644 --- a/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm +++ b/modular_zubbers/code/modules/silicons/borgs/code/robot_model.dm @@ -808,6 +808,11 @@ SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE), HOUND_HAT_OFFSET ), + "SmolRaptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_SMOLRAPTOR, + SKIN_ICON = CYBORG_ICON_SYN_SMOLRAPTOR, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL, TRAIT_R_WIDE), + SMOL_RAPTOR_HAT_OFFSET + ), ) // Syndicate borgs @@ -850,6 +855,11 @@ SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE), HOUND_HAT_OFFSET ), + "SmolRaptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_SMOLRAPTOR, + SKIN_ICON = CYBORG_ICON_SYN_SMOLRAPTOR, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL, TRAIT_R_WIDE), + SMOL_RAPTOR_HAT_OFFSET + ), ) // Syndicate medical borgs @@ -894,6 +904,11 @@ SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE), HOUND_HAT_OFFSET ), + "SmolRaptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_SMOLRAPTOR, + SKIN_ICON = CYBORG_ICON_SYN_SMOLRAPTOR, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL, TRAIT_R_WIDE), + SMOL_RAPTOR_HAT_OFFSET + ), ) // Syndicate Saboteur borgs @@ -933,6 +948,11 @@ SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_WIDE), HOUND_HAT_OFFSET ), + "SmolRaptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_SMOLRAPTOR, + SKIN_ICON = CYBORG_ICON_SYN_SMOLRAPTOR, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL, TRAIT_R_WIDE), + SMOL_RAPTOR_HAT_OFFSET + ), ) // Ninja borgs @@ -964,6 +984,11 @@ SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_UNIQUETIP, TRAIT_R_TALL), DULLAHAN_HAT_OFFSET ), + "SmolRaptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_SMOLRAPTOR, + SKIN_ICON = CYBORG_ICON_NIN_SMOLRAPTOR, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL, TRAIT_R_WIDE), + SMOL_RAPTOR_HAT_OFFSET + ), ) // Ninja Saboteur borgs @@ -976,6 +1001,11 @@ SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SQUADRUPED, TRAIT_R_SMALL), F3LINE_HAT_OFFSET ), + "SmolRaptor" = list(SKIN_ICON_STATE = CYBORG_ICON_TYPE_SMOLRAPTOR, + SKIN_ICON = CYBORG_ICON_NIN_SMOLRAPTOR, + SKIN_FEATURES = list(TRAIT_R_UNIQUEWRECK, TRAIT_R_SMALL, TRAIT_R_WIDE), + SMOL_RAPTOR_HAT_OFFSET + ), ) #undef CYBORG_ICON_CENTCOM_WIDE_BUBBER diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_cc.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_cc.dmi index c57874dee64b8771c5086278e1f1df1e147ec584..0eaa25e14c5b09ed51e86024156714b236c4140e 100644 GIT binary patch delta 12536 zcmaKS1ymK?+wUB@I|b=(1Sx4mx}>`Vq+3E@=oXMeNs0)FG)Q*~2q@hl4bt6reBbYW z_kUyEvsj#AG3U&lz4!d;d5&BjTq;mtSR|B+abjh1U*EskPk+njT+VlihHeEIR!R0c6h+KM=z~NS+X&1p7~h{~%kdDt96bmNJXrZtd>!JkGv<(#!mHS(z9;jlul+Qx z5!BGKt3D-?EBDgF(%KG%l+fBp`EzK3o;X!bM9+TIiiNaevM?nv3#(zoGb2OYSNQug z{s{{!v(brFo>iBwTuco1aE^;kId|CUrRWdq86<#=ni>^IQWRk`t9E$Ojktc~GmUC$ zQJ==Mde2;1|DeFm#q{G#Y3bAF_th$?O-gCD{kI7CNU+t_)oHiQTC1q#>;=@BlxKD3 zetwj}2{V%Ea3aJfFdeuYA_vS4?tw@L%C!wx=!t)O<*|@lQC&K`gc(uGTPXv?lDLfSn4WbWS8aTaa^W7LIg;*f`!C`cK zygPH)6X2sIiAMlF{nE$sQo4InCsOgo`LzUMVB;jZUg_w^tR4sCP$YyPh12u%Q89Ki zj|^1rsUYDr$Dp;%P?P?j@ANouVtP10rW7^Ju^gq}sDLyANsNBLd%uKydl%T5uO>H_ ztr3}v$W(68_K3doftmsmCK0%R#6yyyiPoNJ(ochtur))10^megF1D_po^hrsZ@v+t zbn`8Frk04uw!Gfi-*^1WlQHs_&k4Tm&((61k)};L?iJ#%N4dLt4->mCLgW4g9m`s( z8J}BPTBHXslJJmVLs{lVH~PH8ElSd8lKT{Uw$*vi=|G_S0m&-&1L$_pEcm_ceiz+% zP|+P0o9$?hFvx#yA${tAX}E{02EFatRwJ4ncO4NDAy!b(Jq*(NCv>d4t)xmchi+++ z2cmadxTX#DV5(~OKaJ(>UL6&SRZY%4%C+^oiW(yOqg6P^;@@-|a76mteUqq6Oe+@p z(7cmb$OWd0$V3}x>*#3s^VPxr{tusq?P`MO-^Vv?G6ULsBg*JSw8OWOuz}?_h?B>* znQ!a#Hj~y-o9Uhk2uR~0HEeHR+`xaQN|SutDq)gdJ@ZA@AR?#6)94(VoSsGl+-7|O zbgJT+F2tN^2h|^&#a|Omf`ak1_AHfmMjlaMzCPX<6iiBK zKi~5_e$%#8F0$XlBr)%_-LOJm{p&T7$-%?Kw;#`s?0?wR6urpwZ$-=AF4calYnX8z zu+mv^>+^I0Tvh(vhkEXPb?Jxiz4%1~eKG7Lbt8)%k4(njUkosNy@e1s-zo$_NuH(^ z*?zbvwNrf)!Y|f-41>MccgX6-oL|^bXtYm%X;`YTYer>%vbc=k9?ZFl2|77c%JbeV zLIaB8iyGWXm@nqsGe@s7=bdE-EA>ym&8(crCff3WxveHyCi#KvCtrTt*x`50JzQa9 ziMKj0zA+J}blP@Ys?;ZuG7+#@qV8&M2X=OM*9$zjIA0GjN!QiZRu;C*RooX(ts{`{ zm#MdiWr21bOPOq@-%LNMYZ!p-oq5UH+QZr(9>S(uE%|B>rejw|5Ra)XajxR|cz6PX zf`WX&wgcPhu2#7lk`Vt91*x4uZFsh-l}VD%+7*{a(&Un}Sd+$alFGeiVj9BYtk|cj z>u?ENNquJMx7jA5)77&&y2o*DLT>y=M(&s{PGv~AZAe#~!#Y#tUJ-d#4)OXu4IMiYoBHhBkAU?dqh9Tj8;S4b@oPk`OQB-O^dX z=^wT+Z$9WcANK{ADdW(dYrG0ul+e2^ecFDKXjlc|cT!5K#g-D5XKA&(GK{mY69{Z* z;7#5#zUosmyZaf;Ed3BxD6v$#RoyPjlVO$L0FV%e;bDX&qgtWtxOgKnwuLpoVUV4d3Ax}sKGTvMcvCOiq4{G{!ihPCtr(IdLZYZX(J83Rnty>qm6ZTO5U<1R znj{N@814YmVrhXPtMB&36H>arlMV5wjDuqOln5iqU;sG`kOI;&m;-e0kKh^E&qy$f zk$C2~F;%VsG4c5M2jZyMfjRp3@>Qcs{uX|w+R5(P4dE|0OwsG^FBQoaxxd)lH_aPM zH*?qUbH7njzTe#fxAa`oq1QCD3RUZa=wZ^wo05`tv-j}J${n(5AA(7N8c#j#^(5K8 z?UKX?JA3<0Y#uAb0F(8a(Xo!oT4XZ;wXd~DqDP_#JI#mycTPb;0dcCkoE)m=BA;qA zcQzm9;We(4nR~s`y-E6p#1YPvjkUs@z9)s6 zQox87z$Q^#Xa|^^nE@FB!oc&y--X#Cor8r{RWE8$$Ssu&7U-hsAO={4%h+qp*%UBv zD>V>Eh;zGnYyn&W{aCuAQ-z5~N3Qdbide!9i2YQQG{u~+yVsq>5R8kPb~vnw?(YoI{4+|eIxIHvaXdedb-}+H) zV21sgClBjdk<`~GS7suFcp{+*#9>(WFwkNbtlv617*NEOhrfam`p!DM-o@7%dc3H1 zzW8?GG=^Q`wD-P%GrBH{JfR{YgC+_0DYU%vs81-wz~7B#ne1#c-A)apmGVc zFIV3Es4<;QvBSWW_q*dOL3Y_zvr+fgE=4U$K&ka1$r&M);z$`#tku2U+Q6bE!}`kB z>svC#&YF%F;D}@eyr3eJQp&KR?8DL(ze9`8j#5P|;+@j#Pi%k;u# z$h;Bk$%ymX;Dk`(p+YA}AU4-I??mC}RJ6Tw!uWGu7zyw`Xc-R~&RCcHYWZM2`H_UB zC;lRft>^EJBAb{Th+0L=4RM-N_|7u)q5HK>H0qoM%hzFz4Nh*xEMw#ToM#o|HX>`R zN~}&klIrJO8Moc$! zP}%-fP|_AmeZi}648503T*Lq=hdX#FAm#clPHt&9?LoN|gDW&>Qc0LyFdsS1>5TJD z+i=@iWQmd25-6V0{NN7Bv>-`IZK~V)jATo-jFyinv0PT_YVn)K)iv$6x$mGs-Jwq5 zqam#g8}}EN6ZR~zp-2>{vpozg3*Mip>yd~{+I2b{$xli$5CjkD1i$tmfncA=sXfm<-@q>ae2CE8&P&?g6@8kG_z5J(gcC zLqx~&)Q1;y2&$^MxH5bH`AO zErLO^FlFn9-P{UMgRc&~WF1y7nMe$m8pf-Z*GrNon&)?|=;NO|(ZCqcIxAjNk-%xt z=uH3pD*+%tGS`y_(1Uq68cUFTHVk50>KCQ+OfkMFJ3ZzcNZ216Sf=0fdt`LIC745K zaLdWclcqy|-KZDXcJ^m-waN!OxxW<5lO-SZHxS-H;frq5#)|05b-S7vA7_ZknRFNN z#EvaHyDjzW+PWG+@x4?TA00fllWd>~d?3wMBhH{fV>=of#gBCI4{TQdfxV%X|ETKiL9 zO|}ThvUt1qqs(=ZNc>2%(mGml@BV}&T84XP97kAKD;_6k%&KFEmb-t#NQ0Eek3D1N zCezuL8=6(;bIn52mVBFNOgn@?dY}6bE$u&|6q04sEPM{1F8k)iAhVz$2;6m1uR_d| zB*F&S%q&X!X_g<#L(3MOv0zM85+1=|*DAbO$5cz`HwytMjRuUfcOeIvv2KPAiH4I%$rJ%L0HAys7{NqGn}+dY;a zp~Qz(Ob`{~uMp!!#ad(O(x3&inWgKz<_gS{LFMuGd(?JwUH3i^U0E+=$^UMSOoTV& zS1zIfvz+^j2%P`+xEcS;MWt4gdVyXTf;=0u`>#Qq;6_jZtMG>*0@_G&cq+G zh>*bP_r5HiDq7?~=Hh>cYb@83Gt}P!2GcOCU6Q|--%1JNejFg)o36*E8gcqVBx|?g zCK+G~FbQ=(NW|j`yJ*!cil#>d4wB>!50wgD@lB^(MF>l}!`5(JIRuy`zKQa9{~w<9 zwVyl&$?1RF))t>_w}!((Y7=RXuUI&8_o1YoLX=>nYN^z!%-H2IVFvGXk!l^jfq-CM zQ(V(SBLroTJRLM1kx60;`@E)kI0NhcUVZzk%W0bUVf9&;z{9 z6!o;={BHAt2?m^%I+ipwjr}AJ$27IH%wwYpUpkQUP>jy!6??3Xj8moe0}Y8OmFT%& zJ_w}=7%y+rJ;^)Y>U_7gcW^*Th+a3>a$dqT=gjH7E?-PIFg4yKf_&(ZNLM}hr={ao83K5vAo9dst z3uxP^C(XEZJBhmJm(9cHc|%|LyYM-Pq1B3_Q_MND$)b{Qensb9pzCj%d~wwoW`0$T zf54j%P4l{@O#2(K8u`M;Gs>ed2AM32t;?lu7Aa0u!8v?F@gH04791ab1WWMv`Ze?Q z(@5ek1TBv<*7xpL29Ire$JtS+0&Iy6L>YVV_M!CQUo&dHlxN(ty$9|QcNQAx4OY&) za#)jp;>a{URXkQq?7FOGOWu_D5(I{ntwS#@SUY|X>vTyAWT@y#%+7mQJ{i@ zw4~R9uBEcuatz(i5HD{9A5J87@R3YY#`KI4ZeYYAz4SbiG#nFWhgRgYBU%q!g8WbFD z@q#F)AAJ1yF}uk*#CqKV4qs9-?laX{7(g7PUI2Jt2oOEEfDFWjWARtFulGV9P*RyyGOq0HFCj`CRHym+APPaJ_7xYJ``4nYmBrY-$2JHD(k}SQUSntdxoUWj zHcV-}uPG{uiu&{&Qe?@=Pb2&C$U~PxKYhZZjEi)@7T;Syk=y~9DX2}a-Oa1DExoBOaGL=&V`e)myC^F)9Kw4{btdF zZIU^Q5L6?xCk@IN-%O;-p9#9de5%JG0=2o=Kpv~X+g_j!rulxQ##s)BZkJ6-Kiw;h zZE9?<2z_}d>t%xo<+@9gN_`qooBq4PFU@T-9d!1L}8+u5VFwFXn}fc}-au1W-daPtoYd zB%{t**yH*(&0E#UhO#uEg-S|J?s)a2V=o1#VOJ7CwNSRkEhHxUSbW4(%3NA41KUXu zB$dbXYsKgH!hr#cZ@F1T`&;GjpJ2BMd@5S1?@_ODN?brS-sgfHK>ec&-*j zgI3}9TB=CbfC&GfdKocmw76d}!GoO#TqNzQ*(~pO*47}Jxjrb7yXL*}BTPjcksy_* zn+tEkVR*&6j6fC>_OEUi9d4_7iI{Lwjkm2+#^9Hz%@|GRE|O&yyONhD3uT0tdp4|? zHhp={#RD{&F~OMTAJ1M64=UTj3Jm=}?9V`A`F-hDlXH$r$^<2nlq3xvm@o(g+SyX` zEIrXW{-psIg*7#3`kIprXgw1DorNpa!EcDsM?LRtN;w6(JcgvcNh3pPxyQi!+~bC0 zZqfj_DQ=jy^wBR3!dh-8^FNQVvy zY9~}r9TD7*Fi}FjdS*ZwaWG5tkE4)Vw4_ANB;xh=MPz|OTvSh2Au&JiNfVUI#qQUN zmi|mrr8~J>?I*?VFg)0+@brVOg_S0mUb^Qe(fh*>#fReQ;FS;;e|Br~8Mh5QAB~$- z0*Jx+$-xjlQ1yd!rJi_yU!>HF;1$1TxEcSGo=a~rq7+ojBxhIpw^;fPT36QVxw?FI zMN=)w&G-!wNC`A(U7rliJc4P^T4?_f{{JcUg|kp(@;)ksypYnBXl}mbuQ+W!xdIdZ zI-&${a7ss-cKji81aa-;+hwP(S0_rLra|G>n~ddWbDinWWGW1l@MFR}i+|2oG@L9a z5e9{He6(A7*&Ux+p0XRB>TbNQh>A0EU_of1yDBPVVjV{<^b^8G5<|2KgYOsDIhwFP zZeHkq*qd{?6qqHUc=fP8AK#~H|4>}QyP~1v8JL|AG5gG zbl}DVa-w!NG)wyNr*1==A{CU!4fpmtIK>-xkN72cg0lsHigpX$;%+H$=GBk7x{uI9 zTRym`KF~qdW$N|eP@=pTp1OF73{*GhEt1CctVeTc`w=c4cCV|)k3P(3V zZSP@+ndazDD^JqY-M(B@r@{1hFGPpxC#RRKn4F|a+=kFI#4R?gu45fegND~rUYRYx zPBr50%p&=f!mI{a%XlR+fP|E85?_vrk1029C5KhuXGZT+W&RtWW;|q9h$sdO{hnJfTP=l!>+d5BWmRCaNjZw{9` zQ&WRS^gB-OpQ_xpRTkx65qWxg3dclg=;{_?*d?P|Jz{4c`qHFAZ~_uYynreWT&6g5 zWZ%r8AbopS(&q~DUxBG}7QYL-ch4{;vzWuUsjfcRy|wiz8qXZyVU)q8d;cr;LJq_W z%}Cj^qgmQ%!y(Mgj|gbRTSMIr!Aim9JT{e+>x)j#udCCo_x04Obr51?WIVQ^T8ZuJ zR!>y8^$z8|@9WoAj?FOks{D2=%9>ZtdV&Kq`=zk?e%RXD!b`e{%_~HE1F@@#>OdOZ zKYnMNn++|v+1Y`k;%j=F-ElE^Z@+_%X z3eTmqkPu#WczAj3%-*i&xRaBT0!&P0+^k$>Rr)2Osxu{PuC76U;v)bl%V8Lvr9(>c)N#8H3(0d{A|)=;_*MUqeWj65F=dMUJ`kSLxm6YSIK%ij!&dCT-he7SeIkaXqZ#$6zck(#pzvO}!# zk?xDE@yjcz%3!~B1?LH_F6>I@;VE(ZS2pI(6^(i$E-W0JujdU$T%ld&TH4w+4mza* z&`xPziuSA%*6yfIcEQ&&&n1ijzpr66l$e9?jwK(qpa|0^Lxf^d@|*|7rE?76#+3jaR1qwB*unM@fBn}S zfp;8jD5!3-trMV%n6!ILVWWYhqhqOE&eB2O)|XfJWwrP5`R#)!K&^8*ybdZfPq=am zT&-_t8t*=L!_h{HU8v9R2wA65InYNeo(PBHv#teV0Dw|F8{dfwZJ!({P)w1aIHE!< zvV!aE8u&a?=OB^e7co>HywQ;sp9H}n&h{X|0ssJyFLw4Gu38iT$ve|j`>fB+l0IWT zriPZ5^gBB{YxsI?VCy9;aKbL6$3lm*VuX0K^Um{lp0n7KbH{*r&6?6z^HZO$(_v}} zetKi~?={1_DN!c*Q->IbZGLeEPL<8z(>7SDQX?sG>R_1Z{UO08P}6Gq{EUKp z6ON1k7p_KXxXkY&>*|v*LA1Z(Z@ul_@VR@&;Ai)eD)5ry+w&Ks`o-`4iXYMq11Gaa zBl9O3NhE@jj@o>UCHY0{BT>zSKc~t;Ui#UE6YnGH^cOrrsDHf5xVx&2@q(+6VshC7;lB}asd8Qz7Z0P4M*jV3OqxCm-ql}qWJpqhJx@SkGG6NY zH=-9#n9mkWVi(GlJGYHcc?d1~t=>SH_2SO}6o5L3a&Q2#XQVGn7=W^fe{1cTPNp%C z|37Obf^sB^{j&C~8%6bbpYe%0y zcgLBzuyId1kRTYn4pn{6D-TzQiH9rYHF>AavqDUbrG;zBO9bzfAVCzW$5I zk24c{oCjNLT=r5qVxDY@K=B(ic*&D8XRfzzY@xR&_iqEZrtS$GX6i_wgp7z<&|E~W zSWt%#N|ONEpe68}oB$yKFYxaH5+VG&)a|(R?~UFvJ?yNrC@TJ8VXa)%<(31rZzA*E zy{2r9l+#vbO@p6o`a;*LIQm{)mAU}cTFSl)LuzWe-jyB*kf&1HGgpOahl(g4S6HB9xnMe2#$gko)f-F0~b06}o*+XuOJ9ZkwM zU*Txe7RnyzFraM-4;PdaIJy-5lemyKOA=tg4eZBP5Xj^NG=E|`gyt9nI*c6{Q1p3( zBO$n%xBwS4(ZPU%axSorx{aba^20Jxw5qc8w`d)D2){fjkXSjndnR9fOd36Y`NQl* z`DY>y$UJnco>Y`#EP0(%XSWx2pr-+$1RjQn%uE^vCecD$t))a(?KF8U&yS1lcS*=vpwO-R=6B=U02A!)8wPt0f+jyDlBFRb zPw-lsmY@l1FoML_)+z`}-^|8sBusbOoK(!(y`5W)K61$5W1`ZIOgxQRmkE(0xH_cV zwuTkR;P#aMlRr0lnix6%YWclM;VY(_UXIL!7W|#`xEFx|E%@gn0?A++EKGD7DZKEo zf5q`GKbdOdsv4u9p~Fb3g{|0U{nqi_Ma4zvQ=IzL$Q#7jO){GtS~Hr9u8e)@iYasf zqLB?LglwsA7d-H_HoPj`R&tW96h0~7&Cs)x(BPgTNXBWtAAb3Jl8yb^y-9$>Tg=Jd z6@Qe_Jp@j`A_t4BHeex!A!(SJ;=)dR73CBq9gn@n*dAzp2Nlr zz6M178G@giw}+KCG>`*7$Hw5*_CpzHS>oT#u71)zczSr0)FYfhsh4hf+&~I;;pflK z@Bet{z<}&?r;Ljm<==t=BW?p3@e>v3}Y_r+5m{)wiai5HsaDAI}_exP}Ws*Py_Sr+m zGqy^f93!kMc|7*=E&z}>a3)Z-NzSCQ8WWpk^%uWsRb%wMt%q0?1qDT2gBCdg$C|e@ z{WyDl$AqBUPEycI4-&_-vj+A1^U*6Kn}!;h9Fbi5mhc z81Ru^k}Q4b`)n&%;I<_|D+I+8j0K-ZjL?!N7l*oW0j|up(EWW?nMl*OZ=Vfn+nn14 z3ZBH8ya46mDBokho0-w46!#OdS+ui*!ON=K54;hI@=(FO`9#ZZ)YILD zjJePt%|E`Dj!b-_(;zNvy?^;YG`YQt`@=?5HqGahi-}3cM2QnW3S@$|9t{KW7u>~0 zdcK&s#Q+;;4iq}-pVdK}8ozSqlnJr;caSi8*MJ%7xPiJ%(DZZ(o09*VS3Nn?pV_RZ zl^uu@cks3Boc(~R0LM1@TjV`E^pSo{+{V98T5EfIUrg+vLY2dZ+eL=Jq)S&05&f`-^A^sh?pSf^#I{)@_ zX=%jQ*B5IEX)>{yNK*Ab*z&)~@-gPx%m0fht^bis@I!p1jx7~avG4XUWoF-6*(xmR z#<*ySjF2&5FhL3zhJ}QXcIksZ+`_J6OUuoPq(MfM1i01X?SlbUB&wStfgkXc%D6NH z{V)@KUuDs^G zDgO2#EgAyUMTm!l(#v3+j$2tc5KRj7@3Ng^H3_@EnOEMAh7^w1KZD9Qc zjHkg!3&xH1_|Ps|NQEOz3+BoaWI0Gv)SP`jNlQh7ifrpQl1aq!L5^x4|@3 zGE$fy`@l`})IU@cwTFanVJ={3GTHU%D)G}GwX6Vb=+IJ2M`vKn<+4E-I?0Vk5)WCq zLoldesq=5+;!XmJL~sYX{*3PIL*L3>AUY7Yc4ZSx$Rfgv4k7Emr%T}kf7XP+`2!(5 zP2th<8QBBo^eP7;`A|g8Fgj4C5|4B^c1?4p_ICc$gQN8v^6Ixt6MW>c|RJ+t?sN zGlxK^@16$jlMAairuqyLait61v5_&HCbH8?TQ883^M#e|S}KhWF0up~)Mi%sQYRT% z9(t#g2jDA$e4wy<_|L^fu4hai)j_06Ka2((V#Qha9qa-K?IgeQ95?)}P%fW^P32@~ zQyGs{zr@JB-|Qxrh91+^54zGC2j~{AIx-8apGDQF|3W$=GlHJ6@w@x`fYXbM&EKa; z<}BAYHyXyqrCv``lxZg(GWmljruMC;d4s~kQA$ALCY{BAt)IEgPr#ajmX@q_LqeLI z@0+c3oWgEvk)nY-&z{9}Mc|TZ`S6!53{A(O2lDbiecC^FQhC2QPrKtjBGz|(ecj%Q zdFsDzv`8GNlW@rySGB}KeG?s-{A+r;ecB6onMcOd)O2xSEVB=3#ksuI$TX5BvUzpB zK|EIgcQdf{Rts>8QrnX5;(qku5ElyzA@qb;Nbs$}*1>_zt2=xHX$1K->~R&z*VzBE z)&>lo&CLl%6H*2lH-mnmTjYPMtK++G_}OVi;x_vZ37zJ>m&?&>Cnpr(^z?KqJv+H` zY~-XmJxrbTQgUT2`8NWgkL=$G?9BaKSXgMrrk%SXMbz`ur2L}S4NPTiyUNzZIfD@( z!2rFeOU~!+?kA$fJk(Hlbes)Mtd_3sZdNR#CN$09zw^ACm1OmoH&WP*+OCdlPHM$& z{w!H>sx&+wV{(Bm#Ew+0#~u4q_Zv|hr7)dt`@e8n|8XGCb9_C0An#tp|TioXaT1lS;lpt z25yPk)h3`WR>N9{w(Ya4nxv^gfln-Du!`Q@vtC;wJ?2MnX}%{2I}h+TeAXcU?WgyS z-e+7`k1?%?T9y4gv_|Qj&Rmm%3y8!c=!2D!LIkw5g*WxVlXxZloR}yma%U=^%2@VK z8abW(R8~s@s2gkMiKP4$IQ;wqRilXnfTTh{iO)^?Q#g5io2#X9?;d7l!lmoI&j=B) zTv=BN1nO}x9aQUaoW$vZ(X;^6(+C5gZdac<7cXSM>|obxq z0Ae1I#5xUf-QuWhLd=qdigErja!9RDUq0sVa+5fOg!Iw)7DsJ#8fG}2Tm92?rWJ9GTkYzZmB?jC zkyrN6N15@9upd+#OmU?<<+B8MXeA)4+tRx29)2(>BF|jxQw^a(GIxPG{@(nlCj<_c z9`1^o{e|-yz{`lygOMCk9wDLE2xiB=ErJljTUxT>JKPSFs%taeSvzn5O$#_QY&m^) z#xamtH7N&m)m5YVLtk?Ei$7cRdv1qfvqSG^WwYU)0D)JiDEcGynB}46PE^T#T_uSZ zM6v~c4A(-XWe$B?I{&NnBbig2E3khly~V`Y@57A#lW!zxG-$+%8is$;@+nc}^J;T{ z;*CB4(|{S2i(>*m6k}A0WNEMFGNY&^NoYVRyaXM&dZRMobn`*hucjSHA@d+iMQ_yV@U4^DVZ6zlS-yxcp4q-6$gYoAy@H zgzfAE6#X0gz9xc(()B3@5O?QHxu`_=7Cyl6Y^{oNo60J}k4?@Ffe;Ba*ZYF5j2CMD zzX!%q+H$+)sQLoWW^)=yEKA#{eq_YGrF*-@6gYqyO~v(FN1n84|Heo^rz9g_*zZw4 z$Mb)Uq-eEi{oNZMiU$WIS|g757vDiHZ`T&9>}9Ljl=4kM0?4M=KEnDd$gltDKVg7x z2zr1oKYJmdNvl1gpg2=S$fbV;0g}1i@e2UDcHYNjeVWvD`HM(BM|Crg&Y$Xp)6;A3 z{xVDMQ-(k!DKe7(lKIPQpUZ2DmYgKBy)K)5Q64@VM%-pUQfBRsvWu?H@t3&G(gWA=;0zHcrdr z%zlQ^Dviga7u_>eO?%G&mRQ#M+{d4m4C+8MPOaXCn{LhrCz@S1XQQ|B_4a2nFCrcB zln182toAje#h0j6eaE94#u{5Y;>)xp0WAIfsR7NM!l2=*FGPe%eVbNDI{()z)}3!I zP&KR9Y^C*SeD6Pho+dgU6*1f8vHHkzg!hOD{w6N&{q;!cAaTdTCc>&e59+L;=Y+)1 z`D7*1V+z2?5_K@SVAhF2n2aFU7PT&?(!0^Rv?u!Lx;lnEs$@tj_U8rhtaX&l7Mcq? zE<7Pb_;va++%AM4 z#ASv605>gxRo)A20gR1he1d>1rzpWvI(kiN7cJyF^tS6AMJY7B)s-ym
Ff<7yyaQz;$}3~eXl=K-&?ovnanH?fW1Ch8VT?q57zBD)w0`Wlaz zadI)td9wVu=*$d4DBg+Ey~Tcby>rt1lIM`vJeQKLG4{lw<#wdpf;}a^`g)DhxA}R_ z4<*t#GDKtF@AcNA?yh}rVh#g-w2o(sJb*604Tzn&@LwPDo`EATLoa`}WslXC2$8pM z&5^NIsM_$dJ{tX8F?GHF_W<1iuu4%&$?yYB42Nyh6SwY}@{k9fcd5KmPllyQbCE^P znKm!$CYyFq$Vu`nbZzP0qom8|O-0SV=}`A-jG3q#+#?5NguK;PzRC4KH+B5R7V&8V z3UsbAr@`sZSZb%cyCYetnMh8VFx7y--tAjX{#z1xI<~LW=K#P()RG(3+u$ATrEV11 z&Z%uNli~>Ecmj(WdB!MYUTy%*>;dc!i==Z*ObkF@@NUyy7|*KF79Y_6 zXRE~%^xVs&lxmvg{zn%8G@J-fIn zUNd((?E0OOO@$PoicwfTxwcRnR3&ZeEz!?>);+fwy_~*iJoUV`wrG!>2Y(P{F!^u< zWDfMVj7yChB@f<=p-f&j69XL<8!&?Tg@l9vAR>YX=>HupM~=rQp%<~@(torP(Zosg zE}1c$fYXp+FIPOP)=&H-~HVQGqHlZl*>?k1qPg=$U`{(X$ z5BoUYjefb(uc6MA*T|$nS}>=JkWhk@U$^ye>jmNln#;-fo3Bty?aONy8_t{ST`MVz zpMPiC-uYqcaeBp%kB^^|n=9j@yg3mv?ZoKm=t%YQThra2ZGL7v@hiKyQ}dJO1!R}Q zMThbiSh#odPi}EZ8XM`Yn{%A+hgMVJ?QPu+`Si!xd$NxmuCAu5saQ1Ten_#r=2$LWV7mXw6@3IGd09h$ zUm%xL+B`TXR@ft%9+Qj;*8!Uw%KQ5&@k^^&kroLxvv!{p_zKl7EC{J%5x|2#fBxvs zoADU9qXgIX^r`aL1zfN=F9Jcb&h3%}DXGhZuWvm!_yaCtNOUG{%v_a6%LHOXZJ>5` zTs%5gUP+V6>u+6!_AD7=O7b?aWTt1xIQVizw03LGNJMv&j=6K;18JF5IM8?UkwjZM z3dFFm-^cwjGmw(Q-s9?0_NX;mz--$AhRwowm|T)*+)Qs8+uI zR9gB@v^|Lc?VCKKtZ}RF8(GktWYM?YqwXU_;n8iN**_yAL*I0ShK5GfcU0`4)n|mO z{ijrY@bC)H`Adh4o9+juCVakXRkfYvG5w&j&-p%hJ&BSW*-z}7Yi>Ps;-#AUj!`pL zeCKxD(EJER=z{rsFLzIAzfHG;!N-l?%|Z$^+=YsNB+8-ap-?649g+GZUr1P(AF0$( zRb>|}nW?Eu8rF3uxQoFkR739B?fkP_;TBZES5!Op%x3;*JmJj5_sN?B$Ba6}fzEJE z&%HxXQu6mgRB$lN>Dv#0NGS^Cw}aqC4Gd7uQ9gOY?cfy+<>P|kSdH7ITF$8Sgl4XF zU0V)L3+6ZcSuPrCoi4jz(!dlH zLFS!1d%}KDX>A*G&jf%_HbF=4TktWH?R>IP+UyI-;#nV@I?TmdY95ZAk+UMb8@|6~ zqVAtXjeosWsPrNw0k42ToV@)QnV)aHXfzE3htsnAtL)asbQuK0Ms|mfP76dg#r9fexS_4asj}Ba3WpV3_eN}tASMi? zjkxSM?9{m!qs7jAx&}`x>sYMfPmSIxDsDoEMph&9ZVGYJ#$qveGkopZc?-af`)yx# zHSt+j$549pC(4RDNClJ#-TCzFp<=jD#c(y+zZGF!sjFYrviexm9?@Z`smDKU(_*eP z9=7ku#E!{#*pBe~_RHtj@2{;-J;|V)3k8p_%@(120t880c;%Xl?{<22k#s*caN~Ug znJmhB--c-rr)+_9WE(H$mpxR}3{bqm8zT%r`^&w2TF*tUTiP@iqSe^7(j0-!d%7IR zzc0Ff=(ox7;Jb?p&ivRUtGN2|Md@^HG5MoL+cfjfNDH{DPtb$-l(R7w>zwXsZ{dv)QY5z>mjRC*Le88xIgS*}HlWXOL*LCUR zC+m$Dr*q(sD^w^w0s+S;K3wiwD4~A&?H5+<6Hks%KR?O6j8d!(LT9K`P!Nfgrl;|q2{GnvuSOhgPmVGh$&j$yt(8TMuYUY8>A~@Yn!kZX31A? zIk!JLP{nnOGkG5IQO%Mk5Snq}DwYeQiw^%=so`&`sw4&OViNWBytji^aWFJAd|z$V zGOmltfOXO&*(dpTbvaTZM@_@e#(Uy6L)NxUjOaW>3}ctw4=__UYLdg$sXSlfSd)SR z=~vJz96l|ox@QAVRZ2H>3fR;h3`wol*FSPEPmPfzZU~0Q(<8d_d<|7Y=wJE&`$-l< zktocH0mh8ztk|j|{*ms;f4b_27Zb>lBhcVg!!FmT!5JEtb>!f-{eH<`{pms7hjvTj zn601Iur@J(pvYL4YhH?ZiUH;T7VNTZ-@kYkE~EJxl@crM`4jU;IJE1{^+q&OqsEU=YC{i( zUM-M>4p%9e2chszeCgCk>8CK>(cnu^X_q5Ttbx>bi;ZISLa^>2W2fy?a#NpX|Ir-8o!dy%v2Ti z*^Kt06KSojik_|$J@SA-33$kEE=+~nLe1|r*0kh2cBXA211)RZXcrPq+|?6y?@Y>} z=Ssu)Ilq;HvvVoKAxiCUs0Rheuz*?62P5b>frgIm@zpyM1LlyIFX*0}c)RqV(e=O5 zl2Dn|;@{;1f>a*O9SgVFD)3QsX9zo1*bP&{LuJyI1neb6W}fl{O`SZ3*>#e;w9&9) zr%~*O&%54IK}@vj-5yiAAlQLpDt?Rs zmzikhG$`Zxa-l5ohTpWo9SfjG;2Yd-34-Y7N6Z;MAFeR&k76;1@*u@0LN@gnGDNzt z$r@P?7&VPVP{-ONdSRw52Ciz^NqM>ZbE$Xi^}RQ@X~rbPGXy0(>1{lg_RgpnZ{{9B zSaO5C?<4@ni689Y_w*+V?UPl?&FEHj!+?5noOM24Ra%oRC`F9kJ8yspFduXY)LYY~ zROxiaB$i4(h-wG-J<^Kkt(kMGm}7Qb4WaM9=hXMl&J!)3dB=*8n38?R#gWMMburbn!wx|9&h!(5yq- z(Z!pdFl=eELAL=6W5r8#SI%Z#jvclyk5_X$)k;Z12MDp;4$3`X;4mE1(8Ohr_Rncn68SVHyYQ0G-H|H&QMF4 za6qW$b0zc)IRgqFe~640`%nb7(T#I(r1TzpO5YXhx8`ReN;B0aI!KW^c*VWNCD#WL}Z zhs@Hm7{6=b8Htz#OUpfd&eBrnlHvgzBxUa{>4~CZ_q-{3{T$`v&#ozT7m>V!sCzo) z6h7#Dt>&X7Qn`8vNp6f7Wqo&z42XMix1g@h07RgkS#kH-C04#=`cjiVHkPAauHByO ztGls)IFqm#R|QyLvr)Mtcv}w9?Y}>NaaEW0dx^YEz{(U6C-S#B!42xV1G9W=VS#$q zG`Oz3>#>u-)3Th$cj+r#smINDncv}yW+54oWF?T@x=T0Hy7^&DXR(v`OYjiH@dPQ8 zK!?&|_hPu|U&e{I$-6FDdLHJrsRVn+SZ%01VN*%UKsjZ*@S zL@r0q$125Zib%#}ZP;;CX;ZMieKSZ>h|6pQ z!Ib+XiUc?O$7pan1+a|jj@!IKUViIucGlBVpQ2-%T%IV+liZY@G2<$g)R2q|lGp>< z2OopmOs)-{o}PT`57(Zqo2}bHK@SLn2j0xtD@~wo{(*qMx^*LPM*EVtoBTs2*hu+NYf!6QdNb0 z;3E{e|Ci;2blrJd+ELJA0#m#KpRBE^fILp0pF!Bay#Kso*z%2)j}Q7IuY)aRU*B5Q z$ytpzCq$3`(#+eBndeLm45ZAF$;raY>z{S`N#)}-Oo6ytMa=kyzD=J5~b=LhF9}2^o8+7g)M82nXsly>B zX(!X6P9fA8F+KuIZ}a!Moi|;j&2w_wa!K&NUU`It9An^aEQRA>haP4c6TwUR{8|$7 za8_m%G_fsz1m8KXnLC)BFA9L7eaUp~{>4?HZyUDN6H4}RTHBrjD4CPvzHbo3jqD1p zsuD<3WvySBVDP3==VVvia;Wb3y#Zo41dob_{0F?VgtN_&f3f%o zH6?UHRYy@gtyXoBGq}LA+@jlNuaWssJlJHQVANjD!yfJrys@cFV~N|Ye06EP?3nF4 zhddS8AJ@`xN8NoL<{8^K&2d~~WW`ar`EHBj4jh(3$jyGD9L=~IK<1yL<0ou{li-5Y z3tp_&pI!=|m)`$h)Xs`>U3FhR-(1~%G4D1L9L9xh3hAtT#b9<8ZDQZKf&MeVJ&=rX zVIVn7qpBF%XX*tcZ}|N^YY-5LXuIOFU2y`Bo%QZLd8YL*boWjF2fFi4K74R9%~W+a z;Ouwxm#U0^kvr&q576ZPjk#eGp^TJxmcV8y>aEN>B%7|>^|<+nfj!MmWd$8dwHLki zhp>!^2+^;S`r#y5U0gsHX>h&X>3aAxw?dg6x>L60aTPY>TOy~=#E;%rLo@Pm`EWE< z6n4Z}>94AN40y?}A6UXH{rrqSlcDBot+LV2ebRSMz|Ns#*;`~~{r?ZgKe!${cVxJ4`X-%^7k+)g$6&lygK@#z+ynbq_{y1rlIawnu+Vm*ctF=`v z!Ci^?cC%Z=6gyR&o6$K9f>V!7l`i2emAjH0KHkbGUlx6l@ZfwSwt+Q5R0Hnb`*bjF zP4+Lqzi}5airR+&e#I6rENflJHRyjQ)?{V3Y|@WSMnT6Op}?f`CJy4yz7^8vWTI7l z@jVL3uKKio!tYc37EHcSy?v<&;DqpTHDW2SAwtHeh^0g5@$qozWr!le|KR`$lMZ}B zxQ#+jNj*=x2BS4FRYo762tgwVy94KS{?06&)Exs*hS+)I^{7h7Ug>a3ADdC%~#26ZOuZk787b+iMzguRN~u zYH~(Ttl`_*+95&!txL+E4%Mp%l4lVZ9~xo$56;bRKw%R+ryB(V2!IwA70GyPBB*1N z+5|X0|Kxh+=y>N+N<>#r{HT-TS)-JscPAucZ~qp4$Q{0ae9jE|xFV~BK%exIjE6VW z3d0;<)GpTtWyIbI7nY}9t~`WGCPqIUaDj0#xr9O8LI*&6C5fj8_GSFX{EZi8hozW}$0zTCKTQ*F z*P--ylofIqReqd=@g$bN!$=jKwU9Y}{1DvEXh7h0Q-luI28?@hA1~|ciRFpC=J~xT~ZJb5Y+pNzp@;QXlNk*@BnjtT@Z=HFn5W5jUq0e;WYHlCT;ck z5ncQ{e?4E@<9=5X{=-*~6a*LPWI!Spwy!Y?rG#3S9vl(aCcZq$(Ic%b4okV7xwA%{l5r?gnmF>mPu8Y5v{{hR>MboCI zKR;3IMqCDh#+Li=kPiBtogE^CBG%->LXqQ9DmY?mYL?d84FKeJN{?i8O@Xwu`qmHi z^#gX5hhnzX34J|SRZ@%@wB)JPnx>}Ny*<_!x1o|po-8FjE_Q*tKvX7gK=8k4_jPVA z9wJ;8eHNNrd?nfL2g=D|LTkSfdDB2|@w07%U*^}TY71;)xNgn~0Y7#v`q7xTUqn}1 zTZ<08_}u@tYvSU%xH#+R(c8YH^(>xaqJj4l9`wh)nz zSKJ%;#Ka1}ZMruQ-Hz1K(|cEGRQqk;uLT3-oL<<_#TwP`l-G37f+g(3f{G-)klYg` zmoE1;@@-}^S(EuNqX{?mTRSYrQc{o3s?@x_3y2=hcT&>bSMXFOu5X;i0ovWXvA(-d zVchV?fF6759gRm@#awazB{vx+LD2Gh@u0${@3x+O#nRqmzNewiC#{zP?kkrpKs!`Z zT6ex)89cP_rM}OA1Ml4*(JAT(-5B9hSFh!}pmjEo57VfvNU^c<6+lA*GE~y}=$pre zC|VDw^~(G)D!HW4ZH$b83Z4w3w@Mw~b=HEY^_gYqvi`b1?YgV zGI^+M|NV`etMV~=fZ#eoSXL+1FbmpI8GUf5D*TrFU2o)v_WsR9?v%6g4bf$HrL(+M z_lEsJI&)c1uo&N@Es$x=ze?Itz&?eZyv>us2954>{98DM%CM5&*=va-f_W|b{o;M$-Z4|*kn1Ar^?_z)5Wtf00O*5oD;*qh6qJd*u6 zEFG3a(}#=@;iTXdIk#F+Iy$`0El`0nYx?24f!<^ zhwpCtcP&iRLD~+af$*6y^Kvo!s}wX|vzuOI%U;DOMXm{{B?RdukpHY`U}U?X7h4BnyiGL^1vnI`cst@`E(B&sN;~Y zBgc0}H1%Oq4RpA7^H3_)5yaU!EA4^wv7SD)w2|?hn5m(yF_^UC@);^1A`D=L|2@I( z=>8D!>7Vt0N8k3P%}+ckf%t*4@-Ot%pw<)!30mJ5yeP>@?CMWbbA}pdA)(Jn^04HW zt@m1Q45xc6Jpx0-K^)yI@vOok7kt1_fBg%E4LxL;J## zq?E1&pInl+v+IyZoZx&|dhN&)1Sw7{i#K;FdPw`q&0|*$cpq2xkVZnDjc&|%P)!m^ z*!1MA@N+n77BA?6sib?XfUdj{$A9PeQzvx#zN$()JECiJxZ%m!kC@bC*%1DS!KL4Q zd)U0ztYX1=B#HM*^QIJ`;atF$Q65yOWVy$lU(-w~m^RMIfu)k#q_U5ebc*ggdv_Jd zw(sDE!3yMVf4O^h14}?02DXD5g#J{w9~URM@b_4qkIC|u-i2P6i_TbcC;4M=_XQWa z-EuvR_r!u6_CuXm#ar?E6qg&J-Ku459+gg#n5IPew7^y7ctQ)8oxBU`3_CZkJhkVN zew2V^{J1&ex$cb@-kU{eh*krhFFceg$6gIc5GH$V*2)sSXO|^$1r`&%Hj7x7!)vLj zl7>3Vw^NORTB~E_vuqZ%;L%LUeH9)WzqymqeVE(9^xEGi*0UOz%#B=~9?!$yMlMM3 zmep;U9~=?1WOEMBV35FNe&G4qz=+{8PYM1H`2AP%9`~ZeXInTZNXX>=ys1)IL#u6J zxZ~x@;tJiBQWA%8ggd&B>p@ohi({`o!A6Zm<&G3>x9K2G@?eWgBjWy1lVQVOWuJMR z`PHwtck$wH`N8P>iWKcRo;xPry=pL{B5S6tYpq9YzxItxWMF>`JFRwLzYBvyU;;=C z;qZe6Bwlg2;*E`s1%bp;y_1WjiQe}`VETz=_u0T%n9mQ?<~FB)rl+T&)SDG z89U5%aq`ApYln5;RbTj5-&=q=vW|GR`9Gk*H!}VE42iGC%a;!vU0hOn2;;*v9Y6xR zL|?L;2_5d6?9%AxobnkL2Dhbmj&x2FIk3V_RJP#p69iNI19rCTqyzfef~#j2FnWg; zC>-gz`z5KJJuNsshpOkvTL)`UeufMR((>V?)Dmeu2*-h!DW6^{5q*L!e7Aa?*AL;^ zl|~P|2q~1S{PT&Pa6(qM5y=!VC}32{isJ~s`mNo%aA$$>Y?-KzLXG=AYa;tc9q&w% zf3tW22Nygz39Il!TN@qVwl$VpGIPi53icUtm_SAe%=UywM2bfK_Oyu~7t#iD=fjpE zTTV(^0@8y)*Z8F}7xLQjKKXeTlRjp6BTRya*e^tgCNaAtaX0F|6)Px>j2 z{xH4S^Y!S(H%clhy-#$Pfl}8;FB1Xn)xJu@Aq1S&)dB9s@wd!f;IYtrm)jJ6^J8!3 zOJ3jP$Y9!^bHqrjg-{h((+mKh&*^AuoJVy*`1N(*^yH)snzbV3M?T;_(Nb7%%5!-b znM(BTe%EyQQva4AeJW#r4=+tG1@iiU(r~cgV4Y3G#?4K$78Mp}h^yfGXGg{y&r$-C zlM`&wV_v$KbJSTQ=b`w12upgR_U_SWw_P&_WjtR8hF6_AIq>+da5oTAd)y>uU_)Vs z?q08}#Q(^AsVqT^x8z>oYl=2;+i}t}6CqRw96glKh`fri08$?ox7<4t^1bxjrJP6? zWeLZM&RUd)F0vn3{_Fc=R)q>7sv;fvM+Dv~OOVa&)$iy|Cw@pCB1VR=YvN8|=rTqz zay~SQipCLy(g+w%kAQNFG!X?wqNf8?*MN+2HC%6>EuN_9Z~3${pyas_10vZ!B;ra>yMrl zbgE@!#G%o(vbkYe^|HSMkRj#6T7qu`;%!2%#UeS%O9VFC6I%<18@k9dOjbZFVH1U; zp0m}>3`O$)TrQ4CP={dar}mbN9)?e3K6_wZ5+p~p?tvx2$TP$cKS zwFohMNP0<+kRj?;Hqs-5)Q4_&`b3zh5cp&0p6tt)O~2BDWUuaYA9DPV&}DZREfP)J z*sueNI{P>OsZY+3n}dFSex7Qh${b;TP$c#UXqUdRH^-50VSCkMMBr5re<&Rg1ec*m z$wF9qc?tiyxENnrLPbxKgynAS?LGGLs$KkIC=jlD<1qnuF>T7Ux`4m%pUd-G)s=3k$kg@8H(*tidLXF(Gh-h8KKFtMSrnVD4YGoej> z8T9-o-WhU61mm8VcbSIBR+o4VuhiWj(^ZnjiZ${WRrD=vY*^?@1Cz{PE1bf@Ff>(9??gwQkKuW zv}tG?Oj`0E<&69TNk;%s^5~K*uc5&=TQ4mx9w7GB070qZPoGZIdlQPv$`nB8BQ)G6 z>H}2{uCDfjcgvP8(bc~5*#W0}RVg1$^BhR(p@!~;7?qGKY;hXn{vB7&{;*^+~MA1CBPHny#%a!xZB-A2}HszT)`8{8U35=km;yOAy@-mIWq1b^B z&|WTy?sty1#k9RVH3AWqmiYC1trrkEW2gIh;&;SzlYvA3dTEvYLJK$lCahjuO${7@ z=CQpM?>J!H)O>03^z_B&fQuJzV&6c9z^lOK*&mT!n_qmlH#%paxCFHSHCirRZird} z`({Aoz1^lgB;Q6nC@AE)^3h?;nAw3ejow|+bx#8e*ixN*z@YNP^9h`d_NMf5VG|S5 zKBbkjAgP^#ycIHT0?R$DQrR7J%SZst5riu4Ap~}Q)-4?WxilX5X-lO=Is+K4o%pQ@ z;g*m*NYoS*z@WTN3=^~if1%}>=J$8ZC?v=R*!|PdTZJDUf8SYS$5P|)zx^1Vj=**< zEOsBMzTTiqtwNHM$Z3(PnU{-pT(G0IOXba+xq+ONfjc?}3tr-s1E|0P~fOZ>K6BtlwsJduhX}CdC4wA|NkQj{#WIX6P{0!L< zf%e6jz3j7#oeat>DUi0j`7lZvvJ7A=a0Cv>;JUQrM?*BJC!m$v4Mrj z$`w1auz)AUYoiZuUg}lPt-M->(6QFu+edtq?~>1qN*&47>aYNra*=$ginko6>q+72?s#$-CXM~wq}igm%5bOKHD6{qoAf1g7NvbEJ9|*s>;eF zgh=2fUSV-UAXIh=T5!2Vlssw!5l0~jyz&{4lf9t(i7ZD75=G;RWE2h+Jh{_aC3qy> zkHL(P&4v>c%J18`tzgoheafeU-a+S-+g&!7!KcN1<`byS6xZEg6(wYDF$z32)Du`5D7gVNtuoJOgb=I81s0zxAH!aZu-rMVY@Q z4%I)}m7X#`Iz`3Ao__H<(#89$0UO54dU>_!{woIy;X+-p8kYx94P=8ChA?9}+XNbS zqgcfkD5kTPFoOesP#R3 z`_Pj_dL2`qko-C4hiJ32fU**eX*DT(WXuyX#&hi(VRGs0Io|JqP0cZ&NC**6%44P< zQsm9`ivk+^0?vaoM^vvNVlG4w0hv-{|B2&d#EDhB>`;7D1vw@jz~H%TP}$dyEqLrs z)jxW+FH;cIzLw@bSNx#+hnJ5^MA-QxtezI)I5{2mLK74+M)_Y-x7*!`KR;zshGEh6 zWj%&J%WpXVVTNAuKpDnFPuT@BHU78b2UMa$*z2jF4UGCU78(8C0iWkBw%N-Rw%=09 zH`x#^W2OLkwYs}i0})(?3oaa-xFq6Bes}|;xHq{l@hjyy0R1S*t3N7}wG8T5p{c6G#-^e_`Ajg0p=)tR(l5Zgh;RX1C&``i{+I!02;J+>p z6%8jzQ%7S5OFJh^TN?;+ON$?A!uDq;L|#f3=?aTRc`Q3uPa0_$tIm!_V#)lyt^{{s zK?zlU{6^?(v)EoxzYn9UijbgO*(^}9c|OcUt>l2len4vMv&SDQ{E#NQ=2KW$JVoTj zPmd0!kKe-|K5_Wyq=U0Y{qZLI+2`X&naEAbB4*d=-}Ur(=~ia6tOC%va^YjsNnxa^ zbYsKzA`gb|E)C4AGTPqGPO&qmj}a=}$;-^y=TP6)ctkm>X4NLFJSgn%*yyR7xq={S z=#`|Hid))V`ulejQ^^N+A#YB^N3&@)k3OlSNl!BL>`O;id|IupojUTK_QnTs67TwDvfM3ax@%8L zIK0uG`v(sTN4ET1wlMeokVCTco%bL^1X<_CY2pu?Zz1&T;ReoL+QtXh6 zkr7<%M#bbco;$K z+}yARSYiQlw1#h*BdkH<{G!ehYF%a%3AE!Mm^VU4KaA)yf_ytdaExtihL%+(c*`}g z4sQ3!PcMZai2jXmx75zjQ-khG*MP3z1})U%*KdY8Qhre!PT12{aYd4}c6WBdo)?jKyI`^tVj#=~xCvw9pbERrDrT6%U7e%Tx>XnhR2Y$l+!tIs zhZN&NMw@MsYSa?!gzB&$g8_yq3O<`8Qyq*nN9F5I9vk{Zduvnly(``<2Ao8JlR)KZ zR^R&4)i5@Z&>wxA6~BEepT8_&UhPQ~IS4P!D&0Xo*4*VU=P4{aQoFmUbvx8$=Ed=nDzIAE3Aj5S(ps>Wa4oCP>y!y}pLKWEm`-L0FLm;}~T zRUypw`M=|{-%v$C>6fVg?N5tt+5<6(64^xMf3?9nAi zY3b=w5|x|#n}N!`c9AD154d@GlQP57xj2uAB(5P})6wZ^#nWI(V#QHAvg7s_+S)?W z(#`Gk^ggd>HFEgre0O#-Um^ZZR_>*?!sWR7b#`^!Jlm_W_~x0@`<6uo%%2gz2e=l$ z6HdqYTq~%mi$w3k?1gl7!IppIL+Qx>w8{@RrL9dYGA5?u8=UtQo#|-T~b)s*tFzP z8@X45e2Y$9Ttw~kjn$97-8A1*!E6l^l1IW{90QYUbKwm1wCIB(fnRO zqZU7w<5W?_UtC^Y4f1^Q<-nuqlcR=Nyk~je|6~j-L}k_Z2y{HMkJY!g-cag}kd*f? zO*BUqW5~kFs_n-Q!r+h)u!Wh6C~X#Wq-||uo`v_Cj2+FoefWA57Cczl3U&i#k@<(~ zd~iGpR9sTB^5bg@qCryMi4}5Chasz0=iF1amD)VZhK#ymskNt1J32Zx?Ca7J5)((q z$B{CJQK6)i6mex`%*jbL4vs@i?S47cmcG=Kl=A8X-tkn~Ty{~>nCR%iuIUQoCsS1( zDTi!Nyp4<$SRcucEGFkKHtuC1*NU0%MkXvUR^q3T*$ z$I_Rwl7Z&y@e(@A}A?k;ZVi!w8`mjYqN^3izj2Hnl4o0WZfFx0n^TFuak>QTpfY zGm}b9EF2tTH#gEq4)7NIGEn?Wy^g`^+pCYBCbo$5oVk6bIVvu7_-eFvmSwB46z`&rj{IK7FM%$<5ZW3Mi{6)_- zJ?_fpi3f`WDGLjW+itn{v2DwuEe6duOR3A7vkv_)L7UZDzS(1&r)Q2aC#R=B6X^15 z?Uw!5Z8a(9eWzP64Yd0cIn1=Yd<`uTzB%!vzi6!N?}twc2}IQy$Je1T$#9=nEj+!= zDSh+gbLP@;FbZBo7cLeG0`$m29f9!CI3`L!Qfew!BKO73ZT3L`Zkt0wd!U z#>nifwdD=BJeO3~q;{84=zdwA<<>5D{S}3)D_iKbdVqS`%O~x*!=^r@?N%>yIYC9I z#E#YWF>oYS!iowlZ^_7@8WgOB?=&UjfGTr>lFd%XJ6O&*(U zf9n*pavMe(|9I~NP6g2$?gft>7BKp$rTZxqk0gbgP2RYK?jN{><{BOa`^g$yks7$V z@~Nq-bMWz@x{GHuG|UnWK^QeQa4fektQqr?w0H|sQ|1@imyJajaSd{az5+rFlH%T| zogOW7<%XHV=H=C$%+{WsLik~U?qv?>;mqE9dwUx~tt&_^a zx^#TOOk|xO85#L|Xvo*{0;3a#`0c_*r}@JSr?jA`sI7}{qjj|?GN^nER?$&! zR<{w9{JHigd^M3xzj_Vt+r~pk@&cS<&QU;y7LQews|{R%$qeDPmlgwvg{7Sz>!~!n;1tJw-X5mb`0<9Z+icO7*lb7j4>Rs z&L5qBGhwoDVfsU?bn4^IGV(A9`u;zS+5IPpLxHmK)*I>T`LSm}Qyr?6$o=hNUyMmvn!*zWy|M(lB=l=_lf)`~V<=tqNEJWdLq5vMsiIlp(Y#|X=`7UbI^ZpOJ`E8`D*$phk3 zBDZ2wE4Yq$b6@~VP)O+A42KezRd1$ z%%$mRQX$6;tVfiT-1@|$L3k`xg@rm!G_aG3r~6e?dR$C(xGjoX2%W31-6!?;o2RS> zefD1ikYDE}hPn3lSC06)KmT}c6M!sw_HYXtS?hgoOW z^+1l`7t{uLbH|&*B)YLB4B>S{^2}Gs>FLPE1DrX}T$3HU6sh~{&CK$w7IFM2156vx zzXOaUQ>-?7iWsq_%f-bN+P$iwsmXyn^843paA_%PsAJ*HazeOp>ifoX_`9XnRvMi~ zek4dkSN==gOh{D~cl1M{;26={TC;$z2-!3tX|;lN-bp0#cDtQPmgDQ@W|79rUz1|p zjwNCS)_9C073bleh_gb1{9rgpKKn#+fc1ySZYCNLA9c>0Xv(AEeiB%sYe3@-unp&% z$JfPSj=zv+E&{$OqM)F#3kgNc%=Gg+n4r~{N{ov@28~-)A{UNjL@LDn;zclrXC@DR z4!(h@4=F#BpnT$Vy7W>Gw?@%|B}e0+hcqCYAum_E_rc=CfZCPNYZlCgdHKCR-s?S& zmB?N~=>B#r)gfI^(EJOC|Ml*PFJN=T_%Hmabs`=kp0|&AoV<6oBW3(NZ!AML=2*x^ zIfHR_Wt$Gs(WTWoPl%gVceGa(bko(}i z$21G!OV6_p^dExF4a=11GEz|oD$e4k$;rmp6Vl#E zNJ#K|U4Gv=(r2w$A|)pm2Mr3;z73RX+223HHr>E$v>aR$6(A5GVr0T zU%x7LbBM9ut~(B;J=@SKYUJN|KsWu6a}|a1c10q(!MlQh#=D&YzT6Q4+UllVp;e*= zvzdK|_e!Uu&iCD;;A>AYG%I4?yZw{Jn|U7L!=QPciRYoN4|`no>4f$BhqMto+PapO zvRG1ByU5)#&iw#9MCoqRE-{=Gld?Xi#&{ zA_H=L3|Q^q!QDl_Yf~qpr=D;Wc&~fNi9V&_kbCpH180X7JN#i}R8;xmT^D*k$ARcI z0hIHpYt{bG>CNHuuq9>sjMXMDpGY@h8?`s~@7oUUR$x(!HXUHQHaKmMMfj+2zD?+-kR;%vAkNvOfP^HcX9)!#^82mv!uLN-`A3PKrph$fok2 zD3FDPo*3svn6(a4*mZyD#C+V{Jgq;>ekjU~3^2-uLz&6RvAo#}z6G}&=JjXdalh(q zJQ{7@Ss-c{2|NKl5WL2+E zNK{rm)dq%!2=%2oH8oT3u8E}l@+?93WtYhQ8MKF3P{?Qw?(t;!3Boy+Z+L=1oVBQq;&3I}f?Ld#+dz$$5iCs^5|7JBu24nMR8 z0ozn$2&}6U0Hm;e=cIjghSKl&>Lye=r@AcsTN5U;OzS5WYJs;&CFm7+s;YGs%MOn! zwy*)znQ$hH^T&<7y}fOGq2wUYi;yI__Dwc1owT{tIw<}6Q*$fe<3DszK zpqiiSArn7Su0&|CTVAyL^+O+lfkjVNpnL+c7*5>Es-nt+>er;l=HHfO$}2bJY{E$f zN#~YrO21&|G&?`P`&xuND!Zv^-et$i$tjK=AH7Fx zcyn`ebZ!pIfXn6E)DFwJr~G)VZ0^X|*h;uLOF=bN)_dZtt=p)Wm{eoP;dLgUo+2XA z00Ac&8v;0phzgOg>hxUcjR456U7rT}o}V8A^es-F)uD0g;==u&fcOZ}c(=Lu*fSP`> zBo`El3a_wty$H^;bf?uE?jb%@b0_v+Ilh3P=g*(_5IwYiepvT5YSZNmFjS85WZ7Im zg2PeX4V!S@i&3*nBobIO+`Klj3dXBm8ruDWW5<E{>4;}U7&a9(Imy# zFnR=rN-gO89>06BUcG)shyV6#G~$k1y9t z&wID(Gp3pn7yW=$cq{hTWTSx2t?guZ~NdvoA%PG&mQ9k~%ap@lh zjn3BZnTQ6Qx$Ce$kuB8+D2eRwBbZKHj2(e98{m_GNr~}_0CyWMlfBPnV74=&q(aO4T(nDfyu3D#PH@ZO}wn3{b6uj0v@ge zXv!OaXg>Y2x%KNOVSqSsS(cQ)g4)eQ{ zHoR2X1BiY%8$xUFuX05ZP&N@l#ZyX!>z ztQsH4-8?+VQcAcnY{}hIlVd;@^DEuqciGjL&}jKj5|n~jt*x!SeCWo`{l|PMZ8hC> zD5s=kzQR!=G~+tW(Nz(mVvsE}-Bp-!26_;bx@u@NwtQ}%vjPhciwH4n2*FzO>|1fY zy>^FE8$<%DiW$P6#=xz7aXvQu$tf>KNOLSMD@&QOwdR8NNzK4lU%MUkt{OxxZw#jP zm_=D{)nk`U;SO05JSQ6x5EPucSIi+&s%2x$izwfRDmoAl9;cJJ%+CSHy2uXoGbo2t zR8=!(y+D)UvAscPy|)ZHpM?GweRzZGP~)Yle7lbERQ*?SG8tC_lA_zwJ0M>sw5&^& z0j)We&z6=d#u&&_gwp{0kN3fNkxfBe?x*b$V5|S}&!^C!tBT(lqCO(Sh^mBLbIXsb zdk2Sx7H)Laerg&qV<#+z>GUhIYQssvf*F~aG1T&_s)!5b2%h$jE=xbhhs-@as`p@c zy3645fSnf?7aJ56C{CzcxCZR5&$wMgwf*+y&7Iy`)3B@CmDX( zSdYjE3{a`0^z^RXT~kT{PMGf07t2QwJ7Y-WS(REWQ?^@l1rKJNS$fZAKi6m-VFgNh zHsNyoamB=MX%3FK{tC6?#QwFI zPDX5Y&(7xM7k7T{<_11>s9Bqq?J9UpP7gR`>~NE+(=t?mN%Kuleo#P^rR;~MSzGyg!Oq@Xaq z5TfDbVsjCLNRXt`y#FRF`eLPTVr`1}&f8`}(|k(m-GT(ONog z7lSE%VB>?bNlEct2gKsG7L2{XLR4_p*$V7$BYM-|ZX@UkjUSny0Pz=D(aY1&bWIkG zlDz%hj<@Lz}!5}k)B3F)0emk5?)GdZDt*Jw%xuy z*#$j~WO2Q>u*Z*mEHR|24uXh0myrQq9pN671FKp`iLgK8mj$<$6O%!S(%?zU3L-;8 z0AlRs11UEN-gb&SmIcMaSFj*HLisCP@0LX;?~Aq1-SV~!FTAHn7`iC>+JtQx>f-BT zClYrabiF~CE8!!2923kJH+SCb;NII~%GCI!@p#A`NW|>$SUI{c45-UzS4D6NSsGV6 z&?Z4UuUxCFsUgYE_)#RppLO}GrNq+@6jIQ5@+^sKwrG#ri9X!c`f;sYb|7JKiNwn; zPnKvyzRAgV52zzbOTC_6bTFAr3=9q?d#?nF3NOpN0RT5$RG7X|W;0Jp<>zX56pC12 zRNT#SFSeL*IcZ7?##M)L`x(xIusvlS75 z_*+T2bi;bPr6OiPYhS3u=iuPqysw>Yo|s~+r)gdynWmpY9QD3O%#Mr%rt*;t9?OQM zTDzq$m?xxP@6vumbCreN7q9K{{0qP@UH>$^PGp_fmCTZ>n(~>QM6gM@^4zUofBqN| z37uq@cJHeShOx16v5I|iTAB#~0l_;XBmb^d4sLF4O=gOKVu1vPMzM$_(z-U+zz7er z3tRc|k@Y%YtJ6{EG(ULeg0=unSf4$P8?xUxQ5sTCQD%L?yM>h>P z9YIEH&^dB|*q@V=J;sb)8^cJ=zNhJL9w*Bg4QD*RXI!6ppNwq}O0yG3Or%R`l$c(#d?a3WuaJpHK%f_RG2AQ^e&1BqVqAYt&=o-*itXWypLhRfhZVWnk~H+|oa28@z9WI-@w$ zro_gIs%~e0;S%{iWqv{phgSd^xV678?dZq_nNNw$5Rs5TK+n{K-|kK`shAMgXu%QJZL;z#^IR>cMOmxI zJ4EBNw02rbK2s;l<-J_8?ZAC+W3#YAc~#&fh4)(2pF$MqAvgcMz(5DHQOMFXyiT%aP*gWngigG^l41sX;8EMPS4Eb zlTwfqC$t{qk(XeMujmXYHJ1!<1r)3@vh(-&XpYSC@dY47&w&3pWg4LPcZCqL`G%gV zT2S-jqEVAa?OWkCCd3{;b2VJIiM=*rW@FQ?PgYh|2IxbKw%iCMrTp={wAS^VVtZ!>hlxmf5okJwwygV~t%1+bz8zIUR&jTa(Kg>gL>m#G1h9a-a z1Gj+q?(XjNxNi1#%{g{;brn)Pi}IFC?_q15YCctkT8DjZF^fy{6vL1kt0Hm5 z#bjhqQBYCA5(_ ztEv6|GrkDeZ483jmVix19ws*j`ltCZ9*rg?d9aFDzrA?pVIKLVyqv~Xi1cHOn^>ny z4REQ!2@v+%>c0=}&zNVfL%-n^wsGr0_)|!{&u9P3$|f~-+bOAG7r2OKVzhJrZD2fM z(Mq18PWdL{M&iF>Cd!V#|bU{ex zn3vnHPRDDIt(bRA4quGe2@iI~YW%= z0|P`oh^S23&L2`6&TZ-*-l~I*p$kpv-IiX=Y#wWAAzlb&b5q@PJC1zEiPf-r zVLdCdd*W(v$HbPR=W=$i=%YZfLuNeP;v))m7$4lK>v6LrbiPFb*Au>s+3ZUp;rn)a zam@AP?pq+5%8_9PW&B(L*|}NA@UB5pi$P8rWS=aNMruc7#}`YKEJJHcD?1baiz%I4OY`m(wD$8E&I3KnCDR(axjg z-6TWqOo)l`bB|E;kL10If3>GGIul)1}!1P)EL;@pkT-zA2J zKuDxsi_zk={fVHrfWp6xI^!Ji_x?d7hO-Sxc47o`mN-`CdAkG}N`P~ddDSO&IIi}{ zVHJTsqT-{{16OgL37>AnoEV@y0t`GbFz_R2Q#=2+uc4V4N`0xZ^G%Mf=7-rskfWLT zbtyCA{15<{-@a6{O|%Plpi9=tUc)Bd-aXVtMf)MMtDJw)Hf^@{t;9bzk-)=dy=`w@ z7&8>=eG{1rse)M(k{1>~5q)M)KC|E^=_^c%pmSr(^l zDx2)ce@V(kzTIy~ZN!5qY4(X=GBY;Xg|ITH&G4m5Al_#Sbf2xbUZ2}Ttry3e?+Mz{ z7x>g+>(@4_tSgl|2~SdBN+Nwm_vswg_PH>AqPjTz8nx0bFE1~t1Nve%8u2#{*XM`t zOWJ@5z%@3ZmZ7=E`LmRgNa|~N&_6Jx{<+V{4C>+#(5>75;z4~kJYuwiGTN7N+S(NS zo1~05j-vXB8>OWQGNfRaWDRBN}*^ka+n?~#nL3NKYl|AIxJR=mVQ zH=?Ni4n6)Ds!0GGV4zVDlh{(n%OX}XGW(faMYo*RdU zPVEFO9@GT-ytB3KPHee0jp#u?{9HbZ823^4(r)OmNdE>SOtL*PnW>NYb1%d`wm5B3 zi^yiO&BM)|oVj|Kl&ixRf-0QX8qSFcJ53#yePQ$xH|Uuaf;27OK5(EXQ#CXuU9{qYwH&drOdstRmUc1J&Ca{20rVuxxmKIh7*t|_{wc2p_6i+_?h_6mf?^DUHXyO4UaHgfMIt0?N02iai%?2T zm@1@^P+7z4(Cu9}LPgNhCa+F5)+<<;mKfS%?`L`h$b2}XWV-2ySiFA)l~lLJNia%< zv8t%_$J*MH26xBN@9$vQ6&@hfG7Zjp1pfoPXy9tEy8(!BO+ZK?G5g?%Ct^O4BlsO} zDt&7t2c@7>&-LuiiN9lp`F8lxjC^1fc;Gd2x~-j^N-RrUNgjNV-~(5dKSaW!DOTAE z62@f54`Z*(jvKeaRSTyy03S|SH3Cw~SXX*VO8Y(iufY|qGa3fUW+p+HWZfq%+>g~0 z6RO7=3JNjFR3IdfSDv4b3Y1CGM~`YcMInP;TSn6ltmZEqFOpS%Y2r&hUrG{UR#kOp zAgn+$ppkTatMU4)N*}FKbp-UNryy#{`}DxLvKxc#v0huP`dLyFo^n_ zB|@K^f&vnh;d6UYF@+~{g8;%dLCz}SXox)oqOG^@?fi8RU|4vB@94dKIc&Cx4>3bJ z(ui$IWSoxY^rXugkHR&}#nd9DCZl zrFD9Crak#{yWR#P99LA#*jPf79zUFh&Tehb3rH2puyyY6@A`EP$i9xc&e@mzm#K!g zixm1OP~$mCnGvH`w7i0XW5w-mE+evHtPp&1bkq+BEx<`wX*yeAtGy}tM9VO&*AI5? z`DzSE#Q@Z35(c-NfvD;-&NtG!_AiBuQ{Qm_+~j&m$Cg!6GWhi$O~47z zV2GrT?l>SEXWKAO|IT6W!k>uD!PEP20pQ&WwLaHqX=pG3sWKO_`$%6!qvEj06*Fq& ze#w>#-+u)90%shl%&SfI|q<4Wg11j z6G%b=XQ|_1*pJ?_y9c)KXHlVzDiCRG6OfVF%vX$)Vdpuaz!&u|Ftie37|XeH!%jIx zz<>R~;{9w0z&g7=>r%?sr}rSF8Sy_rh_7StO<7|o`0MxTJqe?)2q~w2#-qFF{tP%g zEWSYX6uq=ALNjf?k%!tJ8Ik}rv7Axgdf)p8b#IXFWlmH6m7o4HK3=6pso&B43xs(V zk+DNMgb6X0=NEN5^jgXxfn*)t_#3_MJD3qAJ7%lT*(C^zx~*X1h)p@C)IAO*&nrx9 zi<1S(76N@}0hpptYn^U*M&$oM1nxtc;M^=$deCzNGrKGRRu~1J-8cJWpi@jyfTAQ! zy&6Mpm7GG-`Y5tV%TCn(=@%O|u^*^B&(S|cJgltXK7NgRA~C4o5AwuwOwOhV_%N|u z*k335U;0oG4D|OYam1Infz~t#Pte+{V*d(C|JLwdccszvM2q*jLt?vWTBQe?h(DFqwlv_kId@#+KUfuPDJ>Un(4>ocxhhiyvqLz|>zWE?T- z#y4fP5&(0*)0#}7nVZ1{++hgYxX%-luWeyQOnCYX+ALsZ1y^}c3*yF zSauovhfeN@=h{l*N=|U_IQ!|g654$cB=Xf+A&9p7!`G2^!-tKH!aMHw^^XAW^XG%T zmydS?VX+0|7D>L}DE>9NB}o4tgZaN4`~T(Pue*?P2s)cUW2igVv0mo17TB}#2e&5} z=$0nzjt|+L?rO@6JC=q1iMakziQDIo^W%-)Ggfvb)j)v20wp$fXDWG=zgqF&6c+9S zDp6ZGzDU$(TeYeB!WbkOAZTCeI^6zftyj3{8#!1sg&F@ncc5#68BNN_a1neaLo5Ai8PA#p|m95b` z11iubHj8*cGu=`O+ zp5;az(0)`CeP&^?esz;g{+f24aaYYi1^sufGXrITK!-ltQFEBAlNdsK&KvIW1%x>1B85 zf~Q{9CBM-FA=WhwzaZGi&WX*lNTBo-oTHoUI5Kgls7`QkaD0rHQqZXOGZ=ATz1N)i z1%(IBE;WW0|SN($~zz680@8C(g$Wa5%j2*pvgtJI*}JA7MO?41b8! zMh#2=c3xh%1%4p4P9(E;cW}tyDrS9jX=$`D9^s1mON~GthP%9?qQ_-dsZ60qRSpOA zor=WbEiLm7(OZ*!Em7TxqZ1Q;$htK;K4MelSvwp2LibOTgsH5IRoG_=0Fn|uZPII+ zLxLVPQUkQC54Y=Qi!w6i`2Y}gEb68qfT(ls;6X}?*1&LuDg$mdzkoZ{~b9Q868RH zef^3I`n;T+9J~7~IU1AlwB%$Unxk^d&yEJ7M}cZ=$m)+$Osjz*e%@KDwSNX&mA1CF z#zm1BkNlNRI}MXrn8aJ7R_@?7MbJe*du(=b;aJ%U(fPI<>au z2cZ6!2vw$0qj}oB!?F`9s=&QJbAQzzR-M{!CAlwgVM?L?#0DG@)=aO9Nms7l)_>Pl zD!xkdWch_nV6#baV0jIaH^0xW$ot>o=xJze0->Q>flB>XsotpIi;#1;CpigQ+;uXw zOCRRz9bxrdjE6;&J3{Cz0p-cIjrsPF+g2;Wand<+bCG#6ELgGTL0ER|CcrV|M+lwNl0HqD<7H``0wuw1t8`SfO{*zl>4`CA6CB#2B$HN zfS8TBO delta 13306 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 diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_ninja.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_ninja.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d6c7dc11d11ed2fd00a02e24b35dcdd207d67a98 GIT binary patch literal 13601 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 literal 0 HcmV?d00001 diff --git a/modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_syndie.dmi b/modular_zubbers/code/modules/silicons/borgs/sprites/smallraptors/smolraptor_syndie.dmi new file mode 100644 index 0000000000000000000000000000000000000000..dcfc31a7861debe1d20621f2b806a04d1a9d1f91 GIT binary patch literal 16548 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 literal 0 HcmV?d00001 From 75424acdd028180b166bb7506e563bdbc2ec5c98 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 18 Feb 2025 20:07:52 +0100 Subject: [PATCH 091/120] Automatic changelog for PR #3101 [ci skip] --- html/changelogs/AutoChangeLog-pr-3101.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3101.yml diff --git a/html/changelogs/AutoChangeLog-pr-3101.yml b/html/changelogs/AutoChangeLog-pr-3101.yml new file mode 100644 index 00000000000..f49ef0c7e95 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3101.yml @@ -0,0 +1,4 @@ +author: "aKromatopzia" +delete-after: True +changes: + - rscadd: "syndie and ninja smolraptors" \ No newline at end of file From da6cd3c4d2aec4f0fe1fb8c8b59f92848dcb8c65 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 18 Feb 2025 23:21:41 +0000 Subject: [PATCH 092/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3075.yml | 7 ------- html/changelogs/AutoChangeLog-pr-3101.yml | 4 ---- html/changelogs/archive/2025-02.yml | 8 ++++++++ 3 files changed, 8 insertions(+), 11 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3075.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3101.yml diff --git a/html/changelogs/AutoChangeLog-pr-3075.yml b/html/changelogs/AutoChangeLog-pr-3075.yml deleted file mode 100644 index a32cfd62c79..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3075.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "pixelkitty286" -delete-after: True -changes: - - rscadd: "Syndicats, Super cats, Super cat ears, and Super Syndicat ears" - - balance: "Cat night vision" - - image: "Syndicat sprites, and Super cat ear icon" - - code_imp: "Added a shape shifting caster variable for keeping the caster's name" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3101.yml b/html/changelogs/AutoChangeLog-pr-3101.yml deleted file mode 100644 index f49ef0c7e95..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3101.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "aKromatopzia" -delete-after: True -changes: - - rscadd: "syndie and ninja smolraptors" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 2688396c756..f372a90cec9 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -171,3 +171,11 @@ now also shows runechat messages.' - rscadd: The Telepathic quirk has been added, allowing characters to start with an unremovable (or activated) telepathy mutation. +2025-02-18: + aKromatopzia: + - rscadd: syndie and ninja smolraptors + pixelkitty286: + - rscadd: Syndicats, Super cats, Super cat ears, and Super Syndicat ears + - balance: Cat night vision + - image: Syndicat sprites, and Super cat ear icon + - code_imp: Added a shape shifting caster variable for keeping the caster's name From 411aea04d0420f1271cb3d0c2be21d28cfc5edbc Mon Sep 17 00:00:00 2001 From: Roxy <75404941+TealSeer@users.noreply.github.com> Date: Wed, 19 Feb 2025 11:06:40 -0600 Subject: [PATCH 093/120] Fix missing utility borg upgrades (#3124) ## About The Pull Request Add missing parent call to override ## Why It's Good For The Game Fixes #3120 ## Proof Of Testing
Screenshots/Videos ![image](https://github.com/user-attachments/assets/ec54a8e0-f66f-4a46-b3f3-a9015c895c11)
## Changelog :cl: fix: fixed the utility cyborg upgrades node missing stuff /:cl: --- modular_zubbers/code/modules/research/techweb/all_nodes.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_zubbers/code/modules/research/techweb/all_nodes.dm b/modular_zubbers/code/modules/research/techweb/all_nodes.dm index b1df92aaae7..d84270a2d24 100644 --- a/modular_zubbers/code/modules/research/techweb/all_nodes.dm +++ b/modular_zubbers/code/modules/research/techweb/all_nodes.dm @@ -97,6 +97,7 @@ ) /datum/techweb_node/borg_utility/New() + . = ..() design_ids -= list( "borg_upgrade_expand" // Moved to default robotics, always available. It provides no practical benefit so it shouldn't be here ) From efb27b8ff7c341bef82eb80581f791b22ea986e3 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 19 Feb 2025 18:07:20 +0100 Subject: [PATCH 094/120] Automatic changelog for PR #3124 [ci skip] --- html/changelogs/AutoChangeLog-pr-3124.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3124.yml diff --git a/html/changelogs/AutoChangeLog-pr-3124.yml b/html/changelogs/AutoChangeLog-pr-3124.yml new file mode 100644 index 00000000000..83b65ea9090 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3124.yml @@ -0,0 +1,4 @@ +author: "TealSeer" +delete-after: True +changes: + - bugfix: "fixed the utility cyborg upgrades node missing stuff" \ No newline at end of file From bfb57ff25b0831d2399299c6d7a8d1a8097fe29d Mon Sep 17 00:00:00 2001 From: sippykot Date: Wed, 19 Feb 2025 18:40:09 +0100 Subject: [PATCH 095/120] Precise syringe injections (#3121) ## About The Pull Request lets you pick lower injection amounts from syringes ## Why It's Good For The Game No one uses syringes because of how much better hypos are, and being able to precisely dose medications makes them a bit more usable. ## Proof Of Testing It compiled, i dont expect any problems from it, considering its just a simple edit... scream at me and beat me with a rolled newspaper if its broken ## Changelog :cl: add: Syringes have been fatfinger-proofed, letting you inject in 1u and 2u increments /:cl: --- .../modules/reagents/reagent_containers/syringes.dm | 11 +++++++++++ tgstation.dme | 1 + 2 files changed, 12 insertions(+) create mode 100644 modular_zubbers/master_files/code/modules/reagents/reagent_containers/syringes.dm diff --git a/modular_zubbers/master_files/code/modules/reagents/reagent_containers/syringes.dm b/modular_zubbers/master_files/code/modules/reagents/reagent_containers/syringes.dm new file mode 100644 index 00000000000..4e0c3a1c6a5 --- /dev/null +++ b/modular_zubbers/master_files/code/modules/reagents/reagent_containers/syringes.dm @@ -0,0 +1,11 @@ +/obj/item/reagent_containers/syringe + possible_transfer_amounts = list(1, 2, 5, 10, 15) + +/obj/item/reagent_containers/syringe/bluespace + possible_transfer_amounts = list(1, 2, 5, 10, 20, 30, 40, 50, 60) + +/obj/item/reagent_containers/syringe/piercing + possible_transfer_amounts = list(1, 2, 5, 10) + +/obj/item/reagent_containers/syringe/crude + possible_transfer_amounts = list(1, 2, 5) diff --git a/tgstation.dme b/tgstation.dme index 9959ca9d42f..f015a57a7a1 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9465,6 +9465,7 @@ #include "modular_zubbers\master_files\code\modules\mob\living\carbon\human\species_types\ethereal.dm" #include "modular_zubbers\master_files\code\modules\mob\living\carbon\human\species_types\plasmamen.dm" #include "modular_zubbers\master_files\code\modules\mod\mod_control.dm" +#include "modular_zubbers\master_files\code\modules\reagents\reagent_containers\syringes.dm" #include "modular_zubbers\master_files\code\modules\reagents\reagent_containers\cups\_cup.dm" #include "modular_zubbers\master_files\code\modules\research\designs\biogenerator_designs.dm" #include "modular_zubbers\master_files\code\modules\research\designs\weapon_designs.dm" From df92013bb9d8508a1a6a48f9d4f8439f6fec450b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 19 Feb 2025 18:40:34 +0100 Subject: [PATCH 096/120] Automatic changelog for PR #3121 [ci skip] --- html/changelogs/AutoChangeLog-pr-3121.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3121.yml diff --git a/html/changelogs/AutoChangeLog-pr-3121.yml b/html/changelogs/AutoChangeLog-pr-3121.yml new file mode 100644 index 00000000000..34f164f1741 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3121.yml @@ -0,0 +1,4 @@ +author: "sippykot" +delete-after: True +changes: + - rscadd: "Syringes have been fatfinger-proofed, letting you inject in 1u and 2u increments" \ No newline at end of file From cebafe8dd48764f10893683afcad132129e93efe Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Wed, 19 Feb 2025 23:21:51 +0000 Subject: [PATCH 097/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3121.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3124.yml | 4 ---- html/changelogs/archive/2025-02.yml | 6 ++++++ 3 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3121.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3124.yml diff --git a/html/changelogs/AutoChangeLog-pr-3121.yml b/html/changelogs/AutoChangeLog-pr-3121.yml deleted file mode 100644 index 34f164f1741..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3121.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "sippykot" -delete-after: True -changes: - - rscadd: "Syringes have been fatfinger-proofed, letting you inject in 1u and 2u increments" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3124.yml b/html/changelogs/AutoChangeLog-pr-3124.yml deleted file mode 100644 index 83b65ea9090..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3124.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TealSeer" -delete-after: True -changes: - - bugfix: "fixed the utility cyborg upgrades node missing stuff" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index f372a90cec9..632dc297d25 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -179,3 +179,9 @@ - balance: Cat night vision - image: Syndicat sprites, and Super cat ear icon - code_imp: Added a shape shifting caster variable for keeping the caster's name +2025-02-19: + TealSeer: + - bugfix: fixed the utility cyborg upgrades node missing stuff + sippykot: + - rscadd: Syringes have been fatfinger-proofed, letting you inject in 1u and 2u + increments From af06b24bc07b42ca53b97ec6797554c02874c985 Mon Sep 17 00:00:00 2001 From: JustMeTheIInd <145101584+JustMeTheIInd@users.noreply.github.com> Date: Thu, 20 Feb 2025 18:42:33 +0100 Subject: [PATCH 098/120] Adds 3 (well, technically 4) More Infinite Dorms Maps (#3140) ## About The Pull Request Hello! Since I've been bored, I decided to test my mapping muscles, and so I come to you with 3 Infinite Dorms maps. **1. Corporate Office** First one's quite easy and simple, a rather large Corporate Office, comes with all the expected amenities; fake bookcases, coffee, donuts, luxury alcohol, cigars, stamps, paperwork, intercoms, Italian maple desks, comfy chairs, secure consoles, motion-sensitive camera that keeps blinking red for whatever reason. Ideal for anyone with more interests in the 'corpo' side, or just for people who want to ERP in an office environment. ![fdfdsfdsfdhh](https://github.com/user-attachments/assets/b5f5ae80-9590-4281-aa16-bf099e67bfae) **2. Recovery Wing** A more hospital-themed dorm, thought of as the Recovery Ward of the whatever Facility that NT uses to keep putting spessmen together after they have been blown up twenty times during one shift. Comes with two separate Patient rooms, a small Nurse station and a similarly small commons area. ![Recwing](https://github.com/user-attachments/assets/e8da9591-ae80-47b4-87b4-aadb7c124a24) **3. Secluded Grotto** Did notice there was no real "outdoors" area, this map tries to- and kinda fails to rectify this issue, as in-lore the map takes a place in a small, secluded and remote grotto, perfect for running away from everyone, comes with a small picnic space, with a freezer full of snacks, a small pond to the upper right and the center-piece in the form of a fire pit, complete with a guitar and some stools. Also comes in a night version. ![grottonight](https://github.com/user-attachments/assets/f265f4fd-f254-4f0e-9ebe-138d46467d45) ![grotto](https://github.com/user-attachments/assets/6b6624e6-fb49-4816-be56-08f4477c0e97) ## Why It's Good For The Game well, more varied dorms are better since they (theoretically) allow for more varied RP. ## Proof Of Testing it do the compile thing without melting my poor poor computer ![ffdfdsfsdfs](https://github.com/user-attachments/assets/d1cdc0f2-9334-426e-a01c-41b85b811377) ## Changelog :cl: map: Added "Corporate Office" Infidorm map map: Added "Recovery Wing" Infidorm map map: Added "Grotto" Infidorm map map: Added "Grotto (night)" Infidorm map /:cl: --- .../ruins/spaceruin_code/hilbertshotel.dm | 22 +- .../ghostcafe/code/hilbertshotel_ghost.dm | 16 + .../modules/hotel_rooms/corporateoffice.dmm | 798 ++++++++++++++++ modular_skyrat/modules/hotel_rooms/grotto.dmm | 821 ++++++++++++++++ .../modules/hotel_rooms/grottoalt.dmm | 816 ++++++++++++++++ .../modules/hotel_rooms/recovery.dmm | 883 ++++++++++++++++++ 6 files changed, 3355 insertions(+), 1 deletion(-) create mode 100644 modular_skyrat/modules/hotel_rooms/corporateoffice.dmm create mode 100644 modular_skyrat/modules/hotel_rooms/grotto.dmm create mode 100644 modular_skyrat/modules/hotel_rooms/grottoalt.dmm create mode 100644 modular_skyrat/modules/hotel_rooms/recovery.dmm diff --git a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm index 7709b3c6327..da94e8e4eb1 100644 --- a/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm +++ b/code/modules/mapfluff/ruins/spaceruin_code/hilbertshotel.dm @@ -9,7 +9,7 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) w_class = WEIGHT_CLASS_SMALL resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF //SKYRAT EDIT ADDITION - GHOST HOTEL UPDATE + EXTRA STUFF - var/static/list/hotel_maps = list("Generic", "Apartment", "Beach Condo", "Station Side", "Library", "Cultist's Cavern", "Winter Woods", "Evacuated Station", "Prison") + var/static/list/hotel_maps = list("Generic", "Apartment", "Beach Condo", "Station Side", "Library", "Cultist's Cavern", "Winter Woods", "Evacuated Station", "Prison", "Corporate Office", "Recovery Wing", "Grotto", "Grotto (Night)") //standart - hilber's hotel room //apartment - see /datum/map_template/ghost_cafe_rooms //beach condo - Beach themed apartment @@ -25,6 +25,10 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) var/datum/map_template/ghost_cafe_rooms/winterwoods/ghost_cafe_rooms_winterwoods var/datum/map_template/ghost_cafe_rooms/evacuationstation/ghost_cafe_rooms_evacuationstation var/datum/map_template/ghost_cafe_rooms/prisoninfdorm/ghost_cafe_rooms_prisoninfdorm + var/datum/map_template/ghost_cafe_rooms/corporateoffice/ghost_cafe_rooms_corporateoffice + var/datum/map_template/ghost_cafe_rooms/recwing/ghost_cafe_rooms_recwing + var/datum/map_template/ghost_cafe_rooms/grotto/ghost_cafe_rooms_grotto + var/datum/map_template/ghost_cafe_rooms/grotto2/ghost_cafe_rooms_grotto2 //BUBBER EDIT END var/datum/map_template/hilbertshotel/hotelRoomTemp @@ -56,6 +60,10 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) ghost_cafe_rooms_winterwoods = new() ghost_cafe_rooms_evacuationstation = new() ghost_cafe_rooms_prisoninfdorm = new() + ghost_cafe_rooms_corporateoffice = new() + ghost_cafe_rooms_recwing = new() + ghost_cafe_rooms_grotto = new() + ghost_cafe_rooms_grotto2 = new() //BUBBER EDIT END var/area/currentArea = get_area(src) @@ -223,6 +231,18 @@ GLOBAL_VAR_INIT(hhMysteryRoomNumber, rand(1, 999999)) else if(chosen_room == "Prison") load_from = ghost_cafe_rooms_prisoninfdorm + else if(chosen_room == "Corporate Office") + load_from = ghost_cafe_rooms_corporateoffice + + else if(chosen_room == "Recovery Wing") + load_from = ghost_cafe_rooms_recwing + + else if(chosen_room == "Grotto") + load_from = ghost_cafe_rooms_grotto + + else if(chosen_room == "Grotto (Night)") + load_from = ghost_cafe_rooms_grotto2 + //BUBBER EDIT END diff --git a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm index 1cf136ee858..af96fec03cf 100644 --- a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm +++ b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm @@ -58,3 +58,19 @@ /datum/map_template/ghost_cafe_rooms/prisoninfdorm name = "Prison" mappath = "modular_skyrat/modules/hotel_rooms/prisoninfdorm.dmm" + +/datum/map_template/ghost_cafe_rooms/corporateoffice + name = "Corporate Office" + mappath = "modular_skyrat/modules/hotel_rooms/corporateoffice.dmm" + +/datum/map_template/ghost_cafe_rooms/recwing + name = "Recovery Wing" + mappath = "modular_skyrat/modules/hotel_rooms/recovery.dmm" + +/datum/map_template/ghost_cafe_rooms/grotto + name = "Grotto" + mappath = "modular_skyrat/modules/hotel_rooms/grotto.dmm" + +/datum/map_template/ghost_cafe_rooms/grotto2 + name = "Grotto (Night)" + mappath = "modular_skyrat/modules/hotel_rooms/grottoalt.dmm" diff --git a/modular_skyrat/modules/hotel_rooms/corporateoffice.dmm b/modular_skyrat/modules/hotel_rooms/corporateoffice.dmm new file mode 100644 index 00000000000..27d8ad2a791 --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/corporateoffice.dmm @@ -0,0 +1,798 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ax" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/light/floor, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"aN" = ( +/obj/structure/sign/painting{ + pixel_y = 32 + }, +/obj/item/banner/command/mundane, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"bA" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/structure/showcase/mecha/marauder, +/obj/effect/turf_decal/tile/neutral/full, +/obj/structure/sign/nanotrasen{ + pixel_y = -32 + }, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"ca" = ( +/obj/structure/table/wood, +/obj/machinery{ + icon = 'modular_skyrat/modules/aesthetics/intercom/icons/intercom.dmi'; + icon_state = "intercom"; + name = "Intercom"; + pixel_y = -1 + }, +/turf/open/indestructible/carpet, +/area/misc/hilbertshotel) +"dE" = ( +/turf/closed/indestructible/fakeglass, +/area/misc/hilbertshotel) +"dZ" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/bottle/cognac{ + pixel_y = 18; + pixel_x = -7 + }, +/obj/item/reagent_containers/cup/glass/bottle/whiskey{ + pixel_x = 7; + pixel_y = 16 + }, +/obj/item/reagent_containers/cup/glass/flask/gold{ + pixel_x = 5; + name = "Golden Flask"; + desc = "A gold flask belonging to the one who owns this office." + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"go" = ( +/obj/item/kirbyplants/organic/plant22, +/obj/effect/turf_decal/tile/dark_blue/opposingcorners, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"gK" = ( +/obj/item/banner/command/mundane, +/obj/machinery/light_switch/directional/south, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"hu" = ( +/obj/item/banner/command/mundane, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/light/directional/south, +/obj/structure/secure_safe/directional/south{ + pixel_y = -22 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"hN" = ( +/turf/closed/indestructible/hoteldoor{ + icon_state = "door_closed"; + icon = 'icons/obj/doors/puzzledoor/default.dmi' + }, +/area/misc/hilbertshotel) +"ij" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/recharger{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/item/flashlight/lamp/green{ + pixel_y = 12; + pixel_x = 6 + }, +/obj/item/cigarette/cigar/havana{ + pixel_x = 5; + pixel_y = 1 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"jh" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_y = 4; + pixel_x = -4 + }, +/obj/item/pen/fountain/captain{ + pixel_y = 4; + pixel_x = -5; + name = "Golden Fountain Pen" + }, +/obj/item/book/manual/wiki/security_space_law{ + pixel_y = 3; + pixel_x = 10 + }, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"ks" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/phone{ + desc = "Supposedly a direct line to Nanotrasen Central Command. It's not even plugged in."; + pixel_x = 19; + pixel_y = -4 + }, +/obj/machinery{ + icon = 'modular_skyrat/modules/aesthetics/intercom/icons/intercom.dmi'; + icon_state = "intercom"; + pixel_x = 1; + name = "Intercom" + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"kL" = ( +/obj/structure/chair/comfy/beige{ + dir = 1 + }, +/turf/open/indestructible/carpet, +/area/misc/hilbertshotel) +"le" = ( +/obj/structure/table/wood, +/obj/item/lighter{ + color = "#d4af37"; + desc = "A gold-plated Zippo lighter"; + name = "Golden Lighter"; + pixel_x = 10; + pixel_y = -15 + }, +/obj/item/cigarette/cigar/premium{ + pixel_x = -6 + }, +/obj/item/cigarette/cigar/havana{ + pixel_x = 3; + pixel_y = 1 + }, +/obj/item/cigarette/cigar/premium{ + pixel_x = 9; + pixel_y = -2 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = -8; + pixel_y = 15 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = 1; + pixel_y = 15 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass{ + pixel_x = 10; + pixel_y = 15 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"ng" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/machinery/light/floor, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"nh" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"oO" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"pD" = ( +/turf/closed/indestructible/riveted, +/area/misc/hilbertshotel) +"pO" = ( +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"qR" = ( +/obj/structure/bookcase{ + icon_state = "book-5" + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"rg" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"rz" = ( +/obj/structure/showcase/fakeid{ + dir = 1; + name = "\improper CentComm Oversight Console"; + desc = "You can use this to watch the watchers." + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"uM" = ( +/obj/item/banner/command/mundane, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"wV" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/structure/showcase/perfect_employee, +/obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/light/floor, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"xF" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/item/kirbyplants/organic/plant21, +/obj/structure/sign/poster/official/state_laws/directional/south, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"yM" = ( +/obj/machinery/vending/boozeomat/cafe, +/turf/closed/indestructible/riveted, +/area/misc/hilbertshotel) +"yX" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/stamp{ + pixel_x = -9; + pixel_y = 11 + }, +/obj/item/stamp/denied{ + pixel_y = 7; + pixel_x = -9 + }, +/obj/item/stamp/void{ + pixel_x = -9; + pixel_y = 3 + }, +/obj/item/stamp/centcom{ + pixel_x = -9; + pixel_y = -1 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"zb" = ( +/turf/open/space/basic, +/area/misc/hilbertshotel) +"AN" = ( +/obj/machinery/jukebox{ + icon = 'modular_skyrat/modules/aesthetics/intercom/icons/intercom.dmi'; + icon_state = "intercom"; + pixel_y = -10; + name = "Enviroment Sound System"; + desc = "It's hip to be square!" + }, +/turf/closed/indestructible/riveted, +/area/misc/hilbertshotel) +"AU" = ( +/obj/structure/table/wood, +/obj/item/documents/nanotrasen{ + pixel_y = 3 + }, +/turf/open/indestructible/carpet, +/area/misc/hilbertshotel) +"Bo" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Ct" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"CA" = ( +/obj/machinery/light/directional/north, +/obj/structure/sign/poster/official/work_for_a_future/directional/north, +/obj/structure/bookcase{ + icon_state = "book-5" + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"CQ" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/structure/chair/comfy{ + dir = 8 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"Ew" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/effect/turf_decal/siding/wood, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"FC" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"II" = ( +/obj/machinery/light/floor, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Jh" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_y = 3 + }, +/obj/item/pen/fountain{ + pixel_y = 4 + }, +/turf/open/indestructible/carpet, +/area/misc/hilbertshotel) +"Kd" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/cigarettes/cigars/cohiba{ + pixel_x = -2; + pixel_y = 15 + }, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_x = 2; + pixel_y = 2 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Na" = ( +/obj/structure/table/wood, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/item/folder/blue{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/folder/syndicate/blue{ + pixel_x = -5; + pixel_y = 2 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"Nc" = ( +/obj/structure/showcase/fakeid{ + name = "\improper CentComm Communications Console"; + desc = "You can use this to communicate... if you know the password." + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Pb" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/photocopier/gratis, +/obj/machinery/light_switch/directional/south, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"Ps" = ( +/obj/effect/turf_decal/tile/neutral/full, +/obj/structure/table/wood, +/obj/item/storage/box/drinkingglasses{ + pixel_y = 8; + pixel_x = 2 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -12; + pixel_y = 12 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -12; + pixel_y = 5 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -12; + pixel_y = -1 + }, +/obj/item/reagent_containers/condiment/pack/sugar{ + pixel_x = 11; + pixel_y = -1 + }, +/obj/item/reagent_containers/condiment/pack/sugar{ + pixel_x = 4; + pixel_y = -1 + }, +/obj/item/reagent_containers/condiment/pack/sugar{ + pixel_x = -4; + pixel_y = -1 + }, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"Pv" = ( +/obj/effect/turf_decal/tile/dark_blue/opposingcorners, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"PO" = ( +/obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/vending/cigarette/beach, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"Qd" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 1 + }, +/obj/item/kirbyplants/organic/plant10, +/obj/structure/sign/poster/official/fruit_bowl/directional/north, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"QQ" = ( +/obj/structure/table/wood, +/obj/item/storage/fancy/donut_box{ + pixel_y = 12 + }, +/obj/item/storage/fancy/donut_box{ + pixel_y = 1 + }, +/obj/effect/turf_decal/tile/neutral/full, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"Sq" = ( +/obj/effect/turf_decal/tile/neutral/full, +/obj/machinery/vending/coffee, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) +"Sx" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/wood, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"UC" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"UR" = ( +/obj/structure/chair/comfy/beige, +/turf/open/indestructible/carpet, +/area/misc/hilbertshotel) +"Xc" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/effect/turf_decal/siding/wood/corner, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Xi" = ( +/obj/effect/turf_decal/siding/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"XQ" = ( +/obj/machinery/light/directional/south, +/obj/structure/sign/poster/official/obey/directional/south, +/obj/structure/bookcase{ + icon_state = "book-5" + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"Zn" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/indestructible/dark, +/area/misc/hilbertshotel) +"Zo" = ( +/obj/structure/window/reinforced/survival_pod/spawner/directional/north, +/obj/effect/turf_decal/tile/neutral/full, +/obj/structure/table/wood/fancy/black, +/obj/item/sign/flag/galfed{ + pixel_y = 3; + pixel_x = 4 + }, +/obj/item/sign/flag/nanotrasen{ + pixel_y = 1 + }, +/turf/open/indestructible/dark/smooth_large, +/area/misc/hilbertshotel) + +(1,1,1) = {" +zb +pD +pD +pD +dE +dE +hN +dE +dE +pD +pD +pD +zb +zb +zb +"} +(2,1,1) = {" +pD +pD +pD +pD +uM +go +Pv +go +gK +pD +pD +pD +pD +zb +zb +"} +(3,1,1) = {" +pD +pD +pD +CA +Pv +Pv +Pv +Pv +Pv +XQ +pD +pD +pD +zb +zb +"} +(4,1,1) = {" +pD +pD +PO +oO +Xc +ax +Bo +ax +Ct +Sx +bA +pD +pD +zb +zb +"} +(5,1,1) = {" +pD +pD +Sq +oO +Ew +UR +AU +kL +Xi +Sx +wV +pD +pD +zb +zb +"} +(6,1,1) = {" +pD +pD +AN +oO +Ew +UR +Jh +kL +Xi +Sx +Zo +pD +pD +zb +zb +"} +(7,1,1) = {" +pD +pD +QQ +oO +Ew +UR +ca +kL +Xi +Sx +wV +pD +pD +zb +zb +"} +(8,1,1) = {" +pD +pD +Ps +oO +nh +ng +rg +ng +FC +Sx +bA +pD +pD +zb +zb +"} +(9,1,1) = {" +pD +pD +pD +Qd +UC +ks +Na +jh +UC +xF +pD +pD +pD +zb +zb +"} +(10,1,1) = {" +zb +pD +yM +UC +UC +ij +CQ +yX +UC +Pb +pD +pD +pD +zb +zb +"} +(11,1,1) = {" +zb +pD +pD +aN +Zn +Zn +Zn +Zn +Zn +hu +pD +pD +zb +zb +zb +"} +(12,1,1) = {" +zb +pD +pD +qR +Nc +pO +II +pO +rz +qR +pD +pD +zb +zb +zb +"} +(13,1,1) = {" +zb +pD +pD +dE +dE +dZ +le +Kd +dE +dE +pD +pD +zb +zb +zb +"} +(14,1,1) = {" +zb +zb +zb +zb +dE +dE +dE +dE +dE +zb +zb +zb +zb +zb +zb +"} +(15,1,1) = {" +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +"} +(16,1,1) = {" +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +zb +"} diff --git a/modular_skyrat/modules/hotel_rooms/grotto.dmm b/modular_skyrat/modules/hotel_rooms/grotto.dmm new file mode 100644 index 00000000000..27711f51578 --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/grotto.dmm @@ -0,0 +1,821 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aD" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"bC" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"cw" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/rock/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"cP" = ( +/obj/structure/flora/bush/reed/style_random, +/turf/open/water, +/area/misc/hilbertshotel) +"dv" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ef" = ( +/obj/structure/flora/rock/pile/style_2, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ez" = ( +/obj/structure/flora/bush/large/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"eR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"fp" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"gu" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"hi" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"iF" = ( +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/closed/indestructible/rock, +/area/misc/hilbertshotel) +"js" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/decal/cleanable/ants, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ka" = ( +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"kf" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"kr" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"lf" = ( +/obj/structure/flora/rock/pile{ + pixel_x = -3; + pixel_y = -4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"lr" = ( +/obj/structure/flora/bush/jungle/b/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"lO" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"mt" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/rock/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"mW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ot" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"oy" = ( +/obj/structure/fluff/beach_umbrella, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"oK" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"oN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"pg" = ( +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"pu" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"pW" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"qK" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"qV" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ri" = ( +/obj/structure/flora/bush/reed/style_random, +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/open/water, +/area/misc/hilbertshotel) +"rj" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"rC" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"rD" = ( +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"sI" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"tv" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"up" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/reed/style_random, +/turf/open/water, +/area/misc/hilbertshotel) +"uM" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"vg" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"vh" = ( +/turf/closed/indestructible/rock, +/area/misc/hilbertshotel) +"wa" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"wI" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xs" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xw" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xy" = ( +/obj/structure/chair/sofa/bench/right, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xM" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"yb" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"zx" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/obj/item/flashlight/lantern, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"AY" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"CZ" = ( +/obj/item/clothing/head/costume/garland/rainbowbunch, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"Dg" = ( +/obj/structure/bonfire, +/obj/effect/light_emitter/fake_outdoors, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Di" = ( +/turf/closed/indestructible/hoteldoor{ + icon_state = "door_closed"; + icon = 'icons/obj/doors/puzzledoor/default.dmi' + }, +/area/misc/hilbertshotel) +"DL" = ( +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"EI" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"EQ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water, +/area/misc/hilbertshotel) +"FM" = ( +/obj/structure/flora/biolumi/lamp/weaklight, +/turf/open/water, +/area/misc/hilbertshotel) +"Gb" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/structure/flora/rock/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Gx" = ( +/obj/structure/closet/crate/freezer{ + name = "Cooler" + }, +/obj/item/reagent_containers/cup/glass/bottle/beer, +/obj/item/reagent_containers/cup/glass/bottle/beer, +/obj/item/reagent_containers/cup/glass/bottle/beer, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/soda_cans/cola, +/obj/item/reagent_containers/cup/soda_cans/cola, +/obj/item/reagent_containers/cup/soda_cans/cola, +/obj/item/reagent_containers/cup/glass/waterbottle, +/obj/item/reagent_containers/cup/glass/waterbottle, +/obj/item/reagent_containers/cup/soda_cans/dr_gibb, +/obj/item/reagent_containers/cup/soda_cans/dr_gibb, +/obj/item/reagent_containers/cup/soda_cans/blood_tea, +/obj/item/reagent_containers/cup/soda_cans/blood_tea, +/obj/item/reagent_containers/cup/soda_cans/blood_tea, +/obj/item/reagent_containers/cup/soda_cans/dr_gibb, +/obj/item/reagent_containers/cup/glass/waterbottle, +/obj/item/reagent_containers/cup/soda_cans/lemon_lime, +/obj/item/reagent_containers/cup/soda_cans/lemon_lime, +/obj/item/reagent_containers/cup/soda_cans/lemon_lime, +/obj/item/reagent_containers/cup/soda_cans/melon_soda, +/obj/item/reagent_containers/cup/soda_cans/melon_soda, +/obj/item/reagent_containers/cup/soda_cans/melon_soda, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"GS" = ( +/obj/item/lighter, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Hq" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"IB" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Jr" = ( +/obj/item/storage/basket, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"Jy" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"JG" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"JL" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"KH" = ( +/turf/open/water, +/area/misc/hilbertshotel) +"KS" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"LE" = ( +/obj/effect/light_emitter/fake_outdoors, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"LK" = ( +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Mx" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Nv" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Of" = ( +/obj/structure/flora/bush/large/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Qt" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/chair/sofa/bench/left, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Qy" = ( +/obj/structure/flora/bush/large/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"QA" = ( +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"RK" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water, +/area/misc/hilbertshotel) +"RO" = ( +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Tf" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Tr" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"TO" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Vk" = ( +/obj/structure/chair/stool/directional/north, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Vw" = ( +/obj/structure/chair/stool/directional/south, +/obj/item/instrument/guitar, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Vx" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Wb" = ( +/obj/structure/chair/stool/directional/west, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"WX" = ( +/obj/structure/flora/rock/pile{ + pixel_x = -3; + pixel_y = -4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Xm" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Xz" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Yq" = ( +/obj/structure/flora/rock/pile/style_2, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"YD" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Zq" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Zv" = ( +/obj/structure/flora/rock/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) + +(1,1,1) = {" +vh +iF +iF +iF +vh +iF +Di +iF +vh +iF +iF +iF +iF +iF +vh +"} +(2,1,1) = {" +iF +iF +tv +mt +bC +iF +rD +zx +vh +iF +iF +cw +Of +iF +vh +"} +(3,1,1) = {" +iF +sI +RO +yb +rC +iF +EI +pg +LK +aD +ez +TO +Mx +vh +vh +"} +(4,1,1) = {" +iF +uM +pW +ka +RO +xy +rD +rD +qK +pu +rC +yb +AY +vh +vh +"} +(5,1,1) = {" +vh +gu +pW +pW +pW +Qt +rD +rD +Nv +QA +pW +pW +xs +iF +vh +"} +(6,1,1) = {" +vh +IB +pW +rC +QA +dv +rD +rD +Yq +JG +ef +KS +AY +iF +iF +"} +(7,1,1) = {" +vh +Xm +pW +CZ +oy +oN +rD +rD +rD +Nv +RO +QA +xM +vg +iF +"} +(8,1,1) = {" +vh +vh +kr +Gx +DL +rD +rD +LE +rD +rD +kf +QA +rC +Zv +iF +"} +(9,1,1) = {" +vh +iF +gu +Jr +DL +Vw +LE +Dg +LE +Vk +IB +pW +QA +js +vh +"} +(10,1,1) = {" +vh +iF +fp +pW +Tf +rD +Zq +LE +GS +Jy +Hq +pW +wI +iF +vh +"} +(11,1,1) = {" +vh +iF +up +lf +ka +qV +rD +Wb +rD +sI +KS +QA +Tr +iF +vh +"} +(12,1,1) = {" +vh +vh +KH +EQ +YD +Qy +ot +mW +lO +lr +QA +pW +ef +Of +vh +"} +(13,1,1) = {" +vh +vh +cP +KH +EQ +eR +WX +TO +QA +Qy +QA +QA +QA +oK +vh +"} +(14,1,1) = {" +vh +ri +FM +KH +RK +kf +QA +QA +wa +QA +QA +QA +Xz +iF +vh +"} +(15,1,1) = {" +vh +vh +KH +cP +RK +JL +Vx +hi +Gb +rj +rj +Gb +xw +iF +vh +"} +(16,1,1) = {" +vh +vh +vh +vh +vh +vh +vh +iF +iF +iF +iF +vh +vh +vh +vh +"} diff --git a/modular_skyrat/modules/hotel_rooms/grottoalt.dmm b/modular_skyrat/modules/hotel_rooms/grottoalt.dmm new file mode 100644 index 00000000000..90f1555cebb --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/grottoalt.dmm @@ -0,0 +1,816 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aD" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"bC" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"cw" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/obj/structure/flora/rock/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"cP" = ( +/obj/structure/flora/bush/reed/style_random, +/turf/open/water, +/area/misc/hilbertshotel) +"dv" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ef" = ( +/obj/structure/flora/rock/pile/style_2, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ez" = ( +/obj/structure/flora/bush/large/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"eR" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"fp" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"gu" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"hi" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"iF" = ( +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/closed/indestructible/rock, +/area/misc/hilbertshotel) +"js" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/obj/effect/decal/cleanable/ants, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ka" = ( +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"kf" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"kr" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"lf" = ( +/obj/structure/flora/rock/pile{ + pixel_x = -3; + pixel_y = -4 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"lr" = ( +/obj/structure/flora/bush/jungle/b/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"lO" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"mt" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/rock/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"mW" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ot" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 8 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"oy" = ( +/obj/structure/fluff/beach_umbrella, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"oK" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"oN" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"pg" = ( +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"pu" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"pW" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"qK" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"qV" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"ri" = ( +/obj/structure/flora/bush/reed/style_random, +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/open/water, +/area/misc/hilbertshotel) +"rj" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"rC" = ( +/obj/structure/flora/tree/jungle, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"rD" = ( +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"sI" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"tv" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"up" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/bush/reed/style_random, +/turf/open/water, +/area/misc/hilbertshotel) +"uM" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"vg" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"vh" = ( +/turf/closed/indestructible/rock, +/area/misc/hilbertshotel) +"wa" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"wI" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xs" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xw" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 6 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xy" = ( +/obj/structure/chair/sofa/bench/right, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"xM" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"yb" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"AY" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Cw" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/obj/item/flashlight/lantern, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"CZ" = ( +/obj/item/clothing/head/costume/garland/rainbowbunch, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"Dg" = ( +/obj/structure/bonfire/prelit, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Di" = ( +/turf/closed/indestructible/hoteldoor{ + icon_state = "door_closed"; + icon = 'icons/obj/doors/puzzledoor/default.dmi' + }, +/area/misc/hilbertshotel) +"DL" = ( +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"EI" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"EQ" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/water, +/area/misc/hilbertshotel) +"FM" = ( +/obj/structure/flora/biolumi/lamp/weaklight, +/turf/open/water, +/area/misc/hilbertshotel) +"Gb" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/obj/structure/flora/rock/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Gx" = ( +/obj/structure/closet/crate/freezer{ + name = "Cooler" + }, +/obj/item/reagent_containers/cup/glass/bottle/beer, +/obj/item/reagent_containers/cup/glass/bottle/beer, +/obj/item/reagent_containers/cup/glass/bottle/beer, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/glass/bottle/beer/light, +/obj/item/reagent_containers/cup/soda_cans/cola, +/obj/item/reagent_containers/cup/soda_cans/cola, +/obj/item/reagent_containers/cup/soda_cans/cola, +/obj/item/reagent_containers/cup/glass/waterbottle, +/obj/item/reagent_containers/cup/glass/waterbottle, +/obj/item/reagent_containers/cup/soda_cans/dr_gibb, +/obj/item/reagent_containers/cup/soda_cans/dr_gibb, +/obj/item/reagent_containers/cup/soda_cans/blood_tea, +/obj/item/reagent_containers/cup/soda_cans/blood_tea, +/obj/item/reagent_containers/cup/soda_cans/blood_tea, +/obj/item/reagent_containers/cup/soda_cans/dr_gibb, +/obj/item/reagent_containers/cup/glass/waterbottle, +/obj/item/reagent_containers/cup/soda_cans/lemon_lime, +/obj/item/reagent_containers/cup/soda_cans/lemon_lime, +/obj/item/reagent_containers/cup/soda_cans/lemon_lime, +/obj/item/reagent_containers/cup/soda_cans/melon_soda, +/obj/item/reagent_containers/cup/soda_cans/melon_soda, +/obj/item/reagent_containers/cup/soda_cans/melon_soda, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"Hq" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_br/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"IB" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Jr" = ( +/obj/item/storage/basket, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"Jy" = ( +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"JG" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 1 + }, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"JL" = ( +/obj/structure/flora/bush/jungle/c/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"KH" = ( +/turf/open/water, +/area/misc/hilbertshotel) +"KS" = ( +/obj/structure/flora/bush/jungle/a/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"LK" = ( +/obj/structure/spacevine{ + name = "thick vines"; + opacity = 1 + }, +/obj/effect/turf_decal/weather/dirt{ + dir = 9 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Mx" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/rock/pile/jungle/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Nv" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Of" = ( +/obj/structure/flora/bush/large/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Ov" = ( +/obj/item/flashlight/lantern, +/turf/open/floor/carpet/red, +/area/misc/hilbertshotel) +"Qt" = ( +/obj/effect/turf_decal/weather/dirt, +/obj/structure/chair/sofa/bench/left, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Qy" = ( +/obj/structure/flora/bush/large/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"QA" = ( +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"RK" = ( +/obj/effect/turf_decal/weather/dirt, +/turf/open/water, +/area/misc/hilbertshotel) +"RO" = ( +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Tf" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 10 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Tr" = ( +/obj/structure/flora/bush/fullgrass/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"TO" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Vk" = ( +/obj/structure/chair/stool/directional/north, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Vw" = ( +/obj/structure/chair/stool/directional/south, +/obj/item/instrument/guitar, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Vx" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/effect/turf_decal/weather/dirt{ + dir = 4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Wb" = ( +/obj/structure/chair/stool/directional/west, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"WX" = ( +/obj/structure/flora/rock/pile{ + pixel_x = -3; + pixel_y = -4 + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Xm" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/bush/jungle/b/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Xz" = ( +/obj/structure/flora/tree/jungle, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Yq" = ( +/obj/structure/flora/rock/pile/style_2, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"YD" = ( +/obj/effect/turf_decal/weather/dirt{ + dir = 5 + }, +/obj/structure/flora/bush/fullgrass/style_random, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"Zq" = ( +/obj/structure/flora/bush/sparsegrass/style_random, +/turf/open/misc/dirt/station, +/area/misc/hilbertshotel) +"Zv" = ( +/obj/structure/flora/rock/style_random, +/obj/structure/flora/bush/jungle/c/style_random, +/obj/effect/turf_decal/weather/dirt, +/turf/open/floor/grass, +/area/misc/hilbertshotel) + +(1,1,1) = {" +vh +iF +iF +iF +vh +iF +Di +iF +vh +iF +iF +iF +iF +iF +vh +"} +(2,1,1) = {" +iF +iF +tv +mt +bC +iF +rD +Cw +vh +iF +iF +cw +Of +iF +vh +"} +(3,1,1) = {" +iF +sI +RO +yb +rC +iF +EI +pg +LK +aD +ez +TO +Mx +vh +vh +"} +(4,1,1) = {" +iF +uM +pW +ka +RO +xy +rD +rD +qK +pu +rC +yb +AY +vh +vh +"} +(5,1,1) = {" +vh +gu +pW +pW +pW +Qt +rD +rD +Nv +QA +pW +pW +xs +iF +vh +"} +(6,1,1) = {" +vh +IB +pW +rC +QA +dv +rD +rD +Yq +JG +ef +KS +AY +iF +iF +"} +(7,1,1) = {" +vh +Xm +pW +CZ +oy +oN +rD +rD +rD +Nv +RO +QA +xM +vg +iF +"} +(8,1,1) = {" +vh +vh +kr +Gx +DL +rD +rD +rD +rD +rD +kf +QA +rC +Zv +iF +"} +(9,1,1) = {" +vh +iF +gu +Jr +Ov +Vw +rD +Dg +rD +Vk +IB +pW +QA +js +vh +"} +(10,1,1) = {" +vh +iF +fp +pW +Tf +rD +Zq +rD +rD +Jy +Hq +pW +wI +iF +vh +"} +(11,1,1) = {" +vh +iF +up +lf +ka +qV +rD +Wb +rD +sI +KS +QA +Tr +iF +vh +"} +(12,1,1) = {" +vh +vh +KH +EQ +YD +Qy +ot +mW +lO +lr +QA +pW +ef +Of +vh +"} +(13,1,1) = {" +vh +vh +cP +KH +EQ +eR +WX +TO +QA +Qy +QA +QA +QA +oK +vh +"} +(14,1,1) = {" +vh +ri +FM +KH +RK +kf +QA +QA +wa +QA +QA +QA +Xz +iF +vh +"} +(15,1,1) = {" +vh +vh +KH +cP +RK +JL +Vx +hi +Gb +rj +rj +Gb +xw +iF +vh +"} +(16,1,1) = {" +vh +vh +vh +vh +vh +vh +vh +iF +iF +iF +iF +vh +vh +vh +vh +"} diff --git a/modular_skyrat/modules/hotel_rooms/recovery.dmm b/modular_skyrat/modules/hotel_rooms/recovery.dmm new file mode 100644 index 00000000000..7a33e5c20cc --- /dev/null +++ b/modular_skyrat/modules/hotel_rooms/recovery.dmm @@ -0,0 +1,883 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aY" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 6 + }, +/obj/structure/window/spawner/directional/south, +/obj/structure/window/spawner/directional/east, +/obj/structure/table, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = 5; + pixel_y = 14 + }, +/obj/item/reagent_containers/cup/glass/coffee{ + pixel_x = -7; + pixel_y = 2 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"bv" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/table, +/obj/effect/spawner/random/entertainment/plushie, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"dh" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"ds" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"dA" = ( +/obj/machinery/computer{ + icon_screen = "crew" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"eu" = ( +/obj/structure/bed/pod{ + dir = 4 + }, +/obj/item/bedsheet/medical{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"eR" = ( +/obj/structure/bookcase/random, +/obj/structure/sign/clock/directional/west, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"gE" = ( +/obj/structure/table, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/obj/item/toy/cards/deck{ + pixel_x = -7; + pixel_y = 11 + }, +/obj/machinery/light/cold/directional/north, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"gY" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/turf/open/indestructible/white/smooth_large, +/area/misc/hilbertshotel) +"hJ" = ( +/obj/machinery/computer{ + icon_screen = "medcomp" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"jt" = ( +/turf/open/indestructible/white/smooth_large, +/area/misc/hilbertshotel) +"kJ" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light/cold/directional/south, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"kN" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/item/reagent_containers/cup/glass/waterbottle/large{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/machinery/computer/security/telescreen/entertainment/directional/south, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"ld" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"lS" = ( +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 6 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"mn" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/item/clipboard{ + pixel_y = 4; + pixel_x = -5 + }, +/obj/item/paper{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/pen/blue{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/clothing/glasses/hud/health{ + pixel_x = 10; + pixel_y = 10 + }, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"mL" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/item/banner/medical/mundane, +/obj/structure/window/spawner/directional/east, +/obj/structure/sign/poster/official/random/directional/north, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"mV" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"nb" = ( +/turf/closed/indestructible/fakedoor{ + name = "Rooms 3-11" + }, +/area/misc/hilbertshotel) +"nZ" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/obj/machinery/light/cold/directional/west, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"ph" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/item/kirbyplants/random/fullysynthetic, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"pZ" = ( +/turf/closed/indestructible/fakeglass, +/area/misc/hilbertshotel) +"qR" = ( +/obj/machinery/vending/imported, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"rY" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"sn" = ( +/turf/open/space/basic, +/area/misc/hilbertshotel) +"so" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"ue" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 8 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"uM" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/cold/directional/south, +/obj/structure/reagent_dispensers/water_cooler, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"uW" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/reinforced/fulltile{ + icon_state = "reinforced_window-3" + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"uZ" = ( +/obj/structure/noticeboard/directional/north, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"vt" = ( +/obj/machinery/vending/medical, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/sign/poster/official/random/directional/south, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"vJ" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 1 + }, +/obj/structure/chair, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"wh" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"xz" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"zf" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 9 + }, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"zE" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"AV" = ( +/obj/machinery/door/airlock/medical{ + name = "Nurse Room" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"BJ" = ( +/obj/item/kirbyplants/random/fullysynthetic, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"CF" = ( +/obj/machinery/light/cold/directional/west, +/obj/machinery/vending/coffee, +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"DY" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Es" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/item/reagent_containers/spray/cleaner{ + pixel_x = 9; + pixel_y = 4 + }, +/obj/item/folder/white{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/clothing/gloves/latex/nitrile{ + pixel_x = -13 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"ES" = ( +/obj/item/kirbyplants/random/fullysynthetic, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Fh" = ( +/obj/item/clothing/suit/toggle/labcoat/hospitalgown, +/obj/structure/closet, +/obj/item/clothing/glasses/regular/hipster, +/obj/item/clothing/shoes/sneakers/white, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Ge" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/chair{ + dir = 4 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"GK" = ( +/turf/closed/indestructible/steel, +/area/misc/hilbertshotel) +"Ht" = ( +/obj/machinery/door/window/left/directional/west{ + name = "Nurse Control Windoor" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/structure/table/reinforced, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"HD" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 9 + }, +/obj/item/banner/medical/mundane, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Ij" = ( +/turf/closed/indestructible/hoteldoor{ + icon_state = "door_closed"; + icon = 'icons/obj/doors/puzzledoor/default.dmi' + }, +/area/misc/hilbertshotel) +"KO" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/reinforced/fulltile{ + icon_state = "reinforced_window-12" + }, +/turf/open/floor/grass, +/area/misc/hilbertshotel) +"KT" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, +/obj/item/banner/medical/mundane, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Lq" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/indestructible/steel, +/area/misc/hilbertshotel) +"LY" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/structure/chair, +/obj/structure/window/spawner/directional/east, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Mo" = ( +/obj/structure/chair/office/light{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"MH" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/obj/machinery/light/cold/directional/west, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"OM" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/door/airlock/medical{ + name = "Recovery Room" + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"PG" = ( +/turf/open/indestructible/carpet, +/area/misc/hilbertshotel) +"PM" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"PQ" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning, +/turf/open/indestructible/white/smooth_large, +/area/misc/hilbertshotel) +"PU" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/item/banner/medical/mundane, +/obj/machinery/light/cold/directional/east, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Qk" = ( +/obj/structure/closet, +/obj/item/clothing/suit/toggle/labcoat/hospitalgown, +/obj/item/clothing/glasses/regular/hipster, +/obj/item/clothing/shoes/sneakers/white, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Qv" = ( +/turf/closed/indestructible/fakedoor{ + name = "Recovery Wing Staff Room" + }, +/area/misc/hilbertshotel) +"QX" = ( +/obj/item/kirbyplants/random/fullysynthetic, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Ri" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 8 + }, +/turf/open/indestructible/white/smooth_large, +/area/misc/hilbertshotel) +"Rp" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/iv_drip, +/obj/machinery/digital_clock/directional/south, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Rv" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Rx" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/vehicle/ridden/wheelchair{ + dir = 8 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"RE" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/vehicle/ridden/wheelchair{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"RM" = ( +/obj/item/kirbyplants/random/fullysynthetic, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light/cold/directional/north, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"RX" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/obj/item/kirbyplants/random/fullysynthetic, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Sb" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, +/obj/machinery/iv_drip, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Sh" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/bounty, +/turf/open/floor/plating, +/area/misc/hilbertshotel) +"Sr" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 10 + }, +/obj/item/banner/medical/mundane, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Sx" = ( +/obj/effect/turf_decal/siding/thinplating_new/light, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"SD" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"SU" = ( +/obj/structure/table, +/obj/item/storage/box/cups{ + pixel_x = 5; + pixel_y = 15 + }, +/obj/item/reagent_containers/cup/glass/waterbottle/large{ + pixel_x = -8; + pixel_y = 20 + }, +/obj/item/reagent_containers/cup/glass/waterbottle/large{ + pixel_x = -8; + pixel_y = 11 + }, +/obj/item/reagent_containers/cup/glass/mug/nanotrasen{ + pixel_x = 4; + pixel_y = 2 + }, +/obj/effect/turf_decal/siding/thinplating_new/light, +/obj/structure/window/spawner/directional/south, +/obj/structure/sign/calendar/directional/west, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"TB" = ( +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 1 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"TV" = ( +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/machinery/light/cold/directional/south, +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Ut" = ( +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 8 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Ux" = ( +/obj/machinery/vending/wardrobe/medi_wardrobe/ghost_cafe, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white/textured, +/area/misc/hilbertshotel) +"UC" = ( +/obj/structure/table, +/obj/item/book/manual/random{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/item/reagent_containers/cup/glass/mug/coco{ + pixel_x = 8 + }, +/obj/machinery/computer/security/telescreen/entertainment/directional/north, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Vd" = ( +/obj/machinery/door/airlock/medical{ + name = "Recovery Room" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Wi" = ( +/obj/effect/turf_decal/siding/thinplating_new/light, +/obj/structure/chair{ + dir = 4 + }, +/obj/structure/window/spawner/directional/south, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"WN" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) +"Xk" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/misc/hilbertshotel) +"Xw" = ( +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 1 + }, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"Yy" = ( +/obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/light/cold/directional/north, +/turf/open/indestructible/white, +/area/misc/hilbertshotel) +"YB" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/indestructible/carpet, +/area/misc/hilbertshotel) +"ZV" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/indestructible/hotelwood, +/area/misc/hilbertshotel) + +(1,1,1) = {" +GK +GK +GK +GK +GK +GK +pZ +Ij +pZ +GK +pZ +Qv +pZ +GK +GK +"} +(2,1,1) = {" +GK +eR +qR +CF +lS +SU +HD +Ri +Sr +Xk +Ux +SD +vt +GK +sn +"} +(3,1,1) = {" +GK +uZ +PG +PG +PG +Sx +Xw +jt +PQ +AV +SD +SD +SD +KO +sn +"} +(4,1,1) = {" +GK +WN +PG +PG +PG +Sx +Xw +jt +TV +Xk +RM +SD +BJ +KO +sn +"} +(5,1,1) = {" +GK +gE +YB +PG +PG +Sx +Xw +jt +bv +Xk +hJ +SD +mn +KO +sn +"} +(6,1,1) = {" +GK +ZV +PG +PG +PG +Wi +Xw +jt +ld +Xk +dA +Mo +Es +GK +sn +"} +(7,1,1) = {" +GK +mL +DY +DY +LY +aY +RX +jt +dh +Lq +Xk +Ht +Xk +GK +sn +"} +(8,1,1) = {" +pZ +zf +so +so +so +nZ +TB +jt +ue +MH +Ut +Ri +ES +KO +sn +"} +(9,1,1) = {" +nb +gY +jt +jt +jt +jt +jt +jt +jt +jt +jt +jt +uM +KO +sn +"} +(10,1,1) = {" +pZ +Rv +Rx +Sb +Rx +zE +ds +jt +PM +zE +zE +zE +KT +KO +sn +"} +(11,1,1) = {" +GK +Sh +Sh +Sh +Sh +GK +mV +jt +ph +GK +Sh +Sh +Sh +GK +GK +"} +(12,1,1) = {" +GK +UC +eu +wh +QX +Sh +vJ +jt +ld +Sh +QX +Ge +eu +kN +GK +"} +(13,1,1) = {" +GK +Yy +rY +rY +rY +OM +gY +jt +PQ +Vd +rY +rY +rY +kJ +GK +"} +(14,1,1) = {" +GK +RE +rY +rY +Fh +Sh +Rv +PU +xz +Sh +Qk +rY +rY +Rp +GK +"} +(15,1,1) = {" +GK +uW +uW +uW +uW +GK +uW +uW +uW +GK +uW +uW +uW +uW +GK +"} +(16,1,1) = {" +sn +sn +sn +sn +sn +sn +sn +sn +sn +sn +sn +sn +sn +sn +sn +"} From 8b373343f19a0624d9578cc6e65b78cad1c5149e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 20 Feb 2025 18:42:59 +0100 Subject: [PATCH 099/120] Automatic changelog for PR #3140 [ci skip] --- html/changelogs/AutoChangeLog-pr-3140.yml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3140.yml diff --git a/html/changelogs/AutoChangeLog-pr-3140.yml b/html/changelogs/AutoChangeLog-pr-3140.yml new file mode 100644 index 00000000000..63cff458836 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3140.yml @@ -0,0 +1,7 @@ +author: "JustMeTheIInd" +delete-after: True +changes: + - map: "Added \"Corporate Office\" Infidorm map" + - map: "Added \"Recovery Wing\" Infidorm map" + - map: "Added \"Grotto\" Infidorm map" + - map: "Added \"Grotto (night)\" Infidorm map" \ No newline at end of file From c5f4fda14f496a73127fa85fcb102673b7e55178 Mon Sep 17 00:00:00 2001 From: pixelkitty286 <78038207+pixelkitty286@users.noreply.github.com> Date: Thu, 20 Feb 2025 12:32:06 -0600 Subject: [PATCH 100/120] Super Syndicat and Super Cat bug fix (#3136) ## About The Pull Request Fixes a bug / balance with Super cats that were brought up to me. Black lists cats having storage implants being installed. Makes it so super cats drop all held items when entering a vent. ## Why It's Good For The Game It's good for the game because it makes it so Super cats are not doing what I specifically didn't want them doing in the first place. ## Proof Of Testing
Screenshots/Videos
I compiled it and made sure the changes *did* work there is no real noticeable changes. ## Changelog :cl: balance: forbids cats having storage implants fix: Super cats being able to bring things in hand in vents /:cl: --- .../objects/items/implants/implant_storage.dm | 5 +++++ .../mob/living/basic/pets/cat/super_cat.dm | 22 +++++++++++++------ tgstation.dme | 1 + 3 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 modular_zubbers/code/game/objects/items/implants/implant_storage.dm diff --git a/modular_zubbers/code/game/objects/items/implants/implant_storage.dm b/modular_zubbers/code/game/objects/items/implants/implant_storage.dm new file mode 100644 index 00000000000..f775e1117b7 --- /dev/null +++ b/modular_zubbers/code/game/objects/items/implants/implant_storage.dm @@ -0,0 +1,5 @@ +//Prevents super and normal cats from having storage implants. Normal cats don't have hands anyways! +/obj/item/implant/storage/can_be_implanted_in(mob/living/target) + . = ..() + if(iscat(target)) + return FALSE diff --git a/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm b/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm index 97be1834898..c1b1057c708 100644 --- a/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm +++ b/modular_zubbers/code/modules/mob/living/basic/pets/cat/super_cat.dm @@ -16,13 +16,12 @@ melee_damage_lower = 7 melee_damage_upper = 15 ai_controller = /datum/ai_controller/basic_controller/simple_hostile - faction = list(null) // ...and they will fight 'til there's just one. + faction = list(FACTION_HOSTILE) /mob/living/basic/pet/cat/super/Initialize(mapload) . = ..() - add_traits(list(TRAIT_NOGUNS, TRAIT_NO_TWOHANDING, TRAIT_VENTCRAWLER_NUDE), INNATE_TRAIT) - remove_traits(list(TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) + add_traits(list(TRAIT_NOGUNS, TRAIT_NO_TWOHANDING), INNATE_TRAIT) AddElement(/datum/element/dextrous) AddComponent(/datum/component/personal_crafting) @@ -32,6 +31,9 @@ balloon_alert(src, "Your paws are too soft!") return FALSE +/mob/living/basic/pet/cat/super/move_into_vent(obj/machinery/atmospherics/components/ventcrawl_target) + . = ..() + drop_all_held_items() /mob/living/basic/pet/cat/super/tux //Fake runtime name = "Super Tux Cat" @@ -80,11 +82,14 @@ /mob/living/basic/pet/cat/cak/super/Initialize(mapload) . = ..() - add_traits(list(TRAIT_PACIFISM, TRAIT_NO_TWOHANDING, TRAIT_VENTCRAWLER_NUDE), INNATE_TRAIT) //Passive kitty bring kind meows - remove_traits(list(TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) + add_traits(list(TRAIT_PACIFISM, TRAIT_NO_TWOHANDING), INNATE_TRAIT) //Passive kitty bring kind meows AddElement(/datum/element/dextrous) AddComponent(/datum/component/personal_crafting) +/mob/living/basic/pet/cat/cak/move_into_vent(obj/machinery/atmospherics/components/ventcrawl_target) + . = ..() + drop_all_held_items() + // SUPER SYNDICATS!!! GET DAT MRR MRRAW DISK!!! /mob/living/basic/pet/cat/syndicat/super name = "Super Syndie Cat" @@ -95,8 +100,7 @@ /mob/living/basic/pet/cat/syndicat/super/Initialize(mapload) . = ..() - add_traits(list(TRAIT_NOGUNS, TRAIT_NO_TWOHANDING, TRAIT_VENTCRAWLER_NUDE), INNATE_TRAIT) - remove_traits(list(TRAIT_VENTCRAWLER_ALWAYS), INNATE_TRAIT) + add_traits(list(TRAIT_NOGUNS, TRAIT_NO_TWOHANDING), INNATE_TRAIT) AddElement(/datum/element/dextrous) AddComponent(/datum/component/personal_crafting) // get rid of the microbomb normal syndie cats have @@ -109,5 +113,9 @@ balloon_alert(src, "Your paws are too weak!") return FALSE +/mob/living/basic/pet/cat/syndicat/super/move_into_vent(obj/machinery/atmospherics/components/ventcrawl_target) + . = ..() + drop_all_held_items() + #undef SUPER_KITTY_HEALTH #undef SYNDIE_SUPER_KITTY_HEALTH diff --git a/tgstation.dme b/tgstation.dme index f015a57a7a1..cfc5a0525ad 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8820,6 +8820,7 @@ #include "modular_zubbers\code\game\objects\items\food\halloween_chocolate.dm" #include "modular_zubbers\code\game\objects\items\food\meatslab.dm" #include "modular_zubbers\code\game\objects\items\food\misc.dm" +#include "modular_zubbers\code\game\objects\items\implants\implant_storage.dm" #include "modular_zubbers\code\game\objects\items\robot\items\harm_alarm_new.dm" #include "modular_zubbers\code\game\objects\items\robot\items\hypo.dm" #include "modular_zubbers\code\game\objects\items\robot\items\storage.dm" From d31c2c5c5246b37ae05c34a1bc870556b7ef4b0c Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:32:33 +0100 Subject: [PATCH 101/120] Automatic changelog for PR #3136 [ci skip] --- html/changelogs/AutoChangeLog-pr-3136.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3136.yml diff --git a/html/changelogs/AutoChangeLog-pr-3136.yml b/html/changelogs/AutoChangeLog-pr-3136.yml new file mode 100644 index 00000000000..50ae4e3851e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3136.yml @@ -0,0 +1,5 @@ +author: "pixelkitty286" +delete-after: True +changes: + - balance: "forbids cats having storage implants" + - bugfix: "Super cats being able to bring things in hand in vents" \ No newline at end of file From d3d3f63a5892fcacad3a755a8fcd7d71525b9526 Mon Sep 17 00:00:00 2001 From: Roxy <75404941+TealSeer@users.noreply.github.com> Date: Thu, 20 Feb 2025 13:29:41 -0600 Subject: [PATCH 102/120] Fix winter woods killing you (#3130) ## About The Pull Request Fix the winter woods area because it had some problems, chiefly that it would kill you as soon as you enter it. ## Why It's Good For The Game Fixes #3095 ## Proof Of Testing I forgot to take pics but TRUST ME ## Changelog :cl: fix: the winter woods dorm no longer kills you immediately /:cl: --- .../ghostcafe/code/ghost_role_spawners.dm | 8 +- .../ghostcafe/code/hilbertshotel_ghost.dm | 14 +-- .../modules/hotel_rooms/winterwoods.dmm | 108 +++++++++--------- .../code/game/objects/effects/overlays.dm | 2 +- tgstation.dme | 1 + 5 files changed, 62 insertions(+), 71 deletions(-) diff --git a/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm b/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm index 0baf4582d32..11d6cdd803a 100644 --- a/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm +++ b/modular_skyrat/modules/ghostcafe/code/ghost_role_spawners.dm @@ -29,8 +29,8 @@ var/area/A = get_area(src) //new_spawn.AddElement(/datum/element/ghost_role_eligibility, free_ghosting = TRUE) SKYRAT PORT -- Needs to be completely rewritten new_spawn.AddElement(/datum/element/dusts_on_catatonia) - new_spawn.AddElement(/datum/element/dusts_on_leaving_area,list(A.type, /area/misc/hilbertshotel, /area/centcom/holding/cafe, - /area/centcom/holding/cafe/vox, /area/centcom/holding/cafe/dorms, /area/centcom/holding/cafe/park)) + new_spawn.AddElement(/datum/element/dusts_on_leaving_area,list(A.type, /area/misc/hilbertshotel, /area/misc/hilbertshotel/winterwoods, + /area/centcom/holding/cafe, /area/centcom/holding/cafe/vox, /area/centcom/holding/cafe/dorms, /area/centcom/holding/cafe/park)) ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, TRAIT_GHOSTROLE) ADD_TRAIT(new_spawn, TRAIT_FREE_GHOST, TRAIT_GHOSTROLE) to_chat(new_spawn,span_warning("Ghosting is free!")) @@ -58,8 +58,8 @@ if(new_spawn.client) var/area/A = get_area(src) new_spawn.AddElement(/datum/element/dusts_on_catatonia) - new_spawn.AddElement(/datum/element/dusts_on_leaving_area,list(A.type, /area/misc/hilbertshotel, /area/centcom/holding/cafe, - /area/centcom/holding/cafe/vox, /area/centcom/holding/cafe/dorms, /area/centcom/holding/cafe/park)) + new_spawn.AddElement(/datum/element/dusts_on_leaving_area,list(A.type, /area/misc/hilbertshotel, /area/misc/hilbertshotel/winterwoods, + /area/centcom/holding/cafe, /area/centcom/holding/cafe/vox, /area/centcom/holding/cafe/dorms, /area/centcom/holding/cafe/park)) ADD_TRAIT(new_spawn, TRAIT_SIXTHSENSE, TRAIT_GHOSTROLE) ADD_TRAIT(new_spawn, TRAIT_FREE_GHOST, TRAIT_GHOSTROLE) to_chat(new_spawn,span_warning("Ghosting is free!")) diff --git a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm index af96fec03cf..3ccc0761590 100644 --- a/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm +++ b/modular_skyrat/modules/ghostcafe/code/hilbertshotel_ghost.dm @@ -37,19 +37,9 @@ name = "Winter Woods" mappath = "modular_skyrat/modules/hotel_rooms/winterwoods.dmm" -/area/misc/winterwoods +/area/misc/hilbertshotel/winterwoods name = "Winter Woods" - icon = 'icons/area/areas_ruins.dmi' - icon_state = "hilbertshotel" - requires_power = FALSE - has_gravity = TRUE - area_flags = NOTELEPORT | HIDDEN_AREA - static_lighting = TRUE - ambientsounds = "icemoon" - var/roomnumber = 0 - var/obj/item/hilbertshotel/parentSphere - var/datum/turf_reservation/reservation - var/turf/storageTurf + ambientsounds = AMBIENCE_ICEMOON /datum/map_template/ghost_cafe_rooms/evacuationstation name = "Evacuated Station" diff --git a/modular_skyrat/modules/hotel_rooms/winterwoods.dmm b/modular_skyrat/modules/hotel_rooms/winterwoods.dmm index 04fd0b07916..a7aa1b06030 100644 --- a/modular_skyrat/modules/hotel_rooms/winterwoods.dmm +++ b/modular_skyrat/modules/hotel_rooms/winterwoods.dmm @@ -1,13 +1,13 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aj" = ( /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "aI" = ( /obj/structure/flora/bush/snow/style_random, /mob/living/basic/pet/penguin/baby/permanent/snowdin, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "aL" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -21,7 +21,7 @@ pixel_y = 9 }, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "by" = ( /obj/structure/flora/bush/snow/style_4, /obj/effect/turf_decal/weather/snow/corner{ @@ -29,18 +29,18 @@ }, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "cg" = ( /obj/structure/railing/wooden_fencing{ dir = 4 }, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "cI" = ( /obj/structure/sign/flag/nri, /turf/closed/indestructible/wood, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "de" = ( /obj/structure/fireplace, /obj/effect/turf_decal/siding/wood{ @@ -50,7 +50,7 @@ dir = 8 }, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "eh" = ( /obj/structure/closet/crate/wooden, /obj/item/clothing/suit/modern_winter, @@ -70,17 +70,17 @@ /obj/effect/overlay/light_snow, /obj/item/gun/ballistic/revolver/nagant, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "es" = ( /obj/item/grown/log/tree, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "fQ" = ( /obj/effect/turf_decal/weather/snow/corner, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "fS" = ( /obj/structure/chair/wood{ dir = 4 @@ -90,12 +90,12 @@ }, /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "gD" = ( /obj/effect/turf_decal/weather/snow/corner, /obj/effect/overlay/light_snow, /turf/closed/indestructible/rock/snow/ice/ore, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "ht" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -108,7 +108,7 @@ }, /obj/item/toy/plush/skyrat/snow_owl, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "kv" = ( /obj/structure/chair/sofa/bench/left{ dir = 4; @@ -117,18 +117,18 @@ }, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "lf" = ( /obj/effect/overlay/light_snow, /obj/structure/flora/bush/snow/style_4, /obj/structure/flora/tree/pine, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "mU" = ( /obj/effect/overlay/light_snow, /obj/structure/flora/bush/snow/style_4, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "pI" = ( /obj/structure/table/wood/shuttle_bar, /obj/effect/turf_decal/siding/wood, @@ -153,15 +153,15 @@ pixel_y = 8 }, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "rB" = ( /turf/closed/indestructible/rock/snow/ice/ore, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "tT" = ( /obj/structure/flora/bush/snow/style_random, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "ua" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -183,84 +183,84 @@ }, /obj/structure/rack/wooden, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "uY" = ( /obj/item/wisp_lantern, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "wq" = ( /obj/effect/overlay/light_snow, /obj/effect/decal/remains/plasma, /turf/open/floor/fakeice/slippery, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "wr" = ( /obj/structure/flora/tree/dead/style_random, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "wK" = ( /obj/effect/spawner/structure/window/ice, /obj/structure/barricade/wooden/crude/snow, /obj/structure/curtain/bounty/start_closed, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "xR" = ( /obj/structure/flora/tree/pine/style_random, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "yd" = ( /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "yf" = ( /obj/effect/overlay/light_snow, /obj/structure/flora/tree/dead/style_random, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "AG" = ( /turf/closed/indestructible/wood, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "AY" = ( /obj/structure/flora/grass/both/style_random, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Cs" = ( /obj/effect/overlay/light_snow, /obj/structure/flora/tree/pine, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "CC" = ( /obj/effect/overlay/light_snow, /turf/open/lava/plasma/biodome, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Dx" = ( /obj/effect/overlay/light_snow, /obj/structure/flora/grass/both/style_random, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "EN" = ( /obj/effect/overlay/light_snow, /turf/open/floor/fakeice/slippery, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "ET" = ( /obj/structure/barricade/wooden/snowed, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "FP" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Hg" = ( /obj/effect/turf_decal/weather/snow/corner, /obj/effect/overlay/light_snow, /obj/structure/statue/snow/snowman, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "HG" = ( /obj/structure/chair/wood/wings{ dir = 8 @@ -270,66 +270,66 @@ dir = 4 }, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Jn" = ( /obj/structure/sign/poster/contraband/soviet_propaganda, /turf/closed/indestructible/wood, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Jv" = ( /obj/effect/overlay/light_snow, /turf/open/floor/plating/snowed/smoothed{ planetary_atmos = 0 }, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "KZ" = ( /obj/structure/mineral_door/wood, /obj/effect/turf_decal/weather/snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Lw" = ( /obj/effect/overlay/light_snow, /turf/closed/indestructible/rock/snow/ice/ore, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Mr" = ( /obj/effect/turf_decal/weather/snow, /obj/effect/overlay/light_snow, /turf/open/misc/dirt/jungle, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "MJ" = ( /obj/structure/flora/tree/pine, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Nh" = ( /obj/effect/spawner/structure/window/ice, /obj/structure/barricade/wooden/crude/snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "No" = ( /obj/effect/turf_decal/weather/snow/corner, /obj/effect/overlay/light_snow, /turf/open/floor/plating/snowed/smoothed{ planetary_atmos = 0 }, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "OB" = ( /obj/structure/bonfire/prelit, /obj/effect/turf_decal/weather/snow, /obj/effect/overlay/light_snow, /turf/open/misc/dirt/jungle, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "OH" = ( /mob/living/basic/pet/penguin/baby/permanent/snowdin, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "ON" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 8 }, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Qb" = ( /obj/structure/railing/wooden_fencing{ dir = 4 @@ -337,24 +337,24 @@ /obj/structure/railing/wooden_fencing, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Tt" = ( /obj/structure/flora/grass/both/style_random, /obj/effect/turf_decal/weather/snow/corner, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Ve" = ( /obj/structure/barricade/wooden/snowed, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "Yk" = ( /turf/closed/indestructible/hoteldoor{ icon_state = "door_closed"; icon = 'icons/obj/doors/puzzledoor/default.dmi' }, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "YY" = ( /obj/structure/chair/sofa/bench/right{ dir = 4; @@ -364,13 +364,13 @@ /obj/structure/railing/wooden_fencing, /obj/effect/overlay/light_snow, /turf/open/floor/fake_snow/safe, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) "ZK" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 }, /turf/open/floor/wood/tile, -/area/misc/winterwoods) +/area/misc/hilbertshotel/winterwoods) (1,1,1) = {" rB diff --git a/modular_zubbers/code/game/objects/effects/overlays.dm b/modular_zubbers/code/game/objects/effects/overlays.dm index 808aa8a63ae..7b5256e7fa3 100644 --- a/modular_zubbers/code/game/objects/effects/overlays.dm +++ b/modular_zubbers/code/game/objects/effects/overlays.dm @@ -1,7 +1,7 @@ /obj/effect/overlay/light_snow gender = PLURAL name = "snowfall" - icon = 'icons/effects/effects.dmi' + icon = 'icons/effects/weather_effects.dmi' icon_state = "light_snow" anchored = TRUE diff --git a/tgstation.dme b/tgstation.dme index cfc5a0525ad..f6ad3262c03 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -8798,6 +8798,7 @@ #include "modular_zubbers\code\game\machinery\doors\firedoor.dm" #include "modular_zubbers\code\game\machinery\pipe\construction.dm" #include "modular_zubbers\code\game\objects\effects\landmarks.dm" +#include "modular_zubbers\code\game\objects\effects\overlays.dm" #include "modular_zubbers\code\game\objects\effects\decals\cleanable.dm" #include "modular_zubbers\code\game\objects\effects\effects_system\effect_sparks.dm" #include "modular_zubbers\code\game\objects\effects\items\plushes.dm" From 053d06ac21ff2d1a1596bd91b3089987acfe7bf6 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 20 Feb 2025 20:30:08 +0100 Subject: [PATCH 103/120] Automatic changelog for PR #3130 [ci skip] --- html/changelogs/AutoChangeLog-pr-3130.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3130.yml diff --git a/html/changelogs/AutoChangeLog-pr-3130.yml b/html/changelogs/AutoChangeLog-pr-3130.yml new file mode 100644 index 00000000000..c99c3ba04ca --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3130.yml @@ -0,0 +1,4 @@ +author: "TealSeer" +delete-after: True +changes: + - bugfix: "the winter woods dorm no longer kills you immediately" \ No newline at end of file From c84d2f7067a807f14475d3b84566e7b57e72e2c4 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Thu, 20 Feb 2025 23:23:15 +0000 Subject: [PATCH 104/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3130.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3136.yml | 5 ----- html/changelogs/AutoChangeLog-pr-3140.yml | 7 ------- html/changelogs/archive/2025-02.yml | 11 +++++++++++ 4 files changed, 11 insertions(+), 16 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3130.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3136.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3140.yml diff --git a/html/changelogs/AutoChangeLog-pr-3130.yml b/html/changelogs/AutoChangeLog-pr-3130.yml deleted file mode 100644 index c99c3ba04ca..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3130.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TealSeer" -delete-after: True -changes: - - bugfix: "the winter woods dorm no longer kills you immediately" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3136.yml b/html/changelogs/AutoChangeLog-pr-3136.yml deleted file mode 100644 index 50ae4e3851e..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3136.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "pixelkitty286" -delete-after: True -changes: - - balance: "forbids cats having storage implants" - - bugfix: "Super cats being able to bring things in hand in vents" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3140.yml b/html/changelogs/AutoChangeLog-pr-3140.yml deleted file mode 100644 index 63cff458836..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3140.yml +++ /dev/null @@ -1,7 +0,0 @@ -author: "JustMeTheIInd" -delete-after: True -changes: - - map: "Added \"Corporate Office\" Infidorm map" - - map: "Added \"Recovery Wing\" Infidorm map" - - map: "Added \"Grotto\" Infidorm map" - - map: "Added \"Grotto (night)\" Infidorm map" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 632dc297d25..8c462e67a8b 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -185,3 +185,14 @@ sippykot: - rscadd: Syringes have been fatfinger-proofed, letting you inject in 1u and 2u increments +2025-02-20: + JustMeTheIInd: + - map: Added "Corporate Office" Infidorm map + - map: Added "Recovery Wing" Infidorm map + - map: Added "Grotto" Infidorm map + - map: Added "Grotto (night)" Infidorm map + TealSeer: + - bugfix: the winter woods dorm no longer kills you immediately + pixelkitty286: + - balance: forbids cats having storage implants + - bugfix: Super cats being able to bring things in hand in vents From d290d838597aa30d732d87789fe4f527ae8f1ae6 Mon Sep 17 00:00:00 2001 From: Roxy <75404941+TealSeer@users.noreply.github.com> Date: Thu, 20 Feb 2025 22:16:50 -0600 Subject: [PATCH 105/120] Fix cryo dumping storage implant items (#3131) ## About The Pull Request - Move cryo item storage behavior to separate proc cause it was getting big - Don't store `DROPDEL` items (includes implants among other things) - Empty out storage implants and attempt to store the contents instead of dumping on the floor - Make the cryo pod angrily launch the nuke disk across the room if someone tries to cryo with it ## Why It's Good For The Game Fixes #3111 ## Proof Of Testing Imagine a picture of a cryo pod but with no random items dumped on the floor ## Changelog :cl: fix: fixed cryoing with a storage implant dumping the contents of said implant onto the floor /:cl: --- .../modules/cryosleep/code/cryopod.dm | 52 ++++++++++++++----- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/modular_skyrat/modules/cryosleep/code/cryopod.dm b/modular_skyrat/modules/cryosleep/code/cryopod.dm index 6da1a207057..4f3ba1cdf53 100644 --- a/modular_skyrat/modules/cryosleep/code/cryopod.dm +++ b/modular_skyrat/modules/cryosleep/code/cryopod.dm @@ -337,6 +337,36 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod, 32) update_objective.owner.announce_objectives() qdel(objective) +/** + * Attempt to store a given item in either the control computer or on the ground. + * * holder - mob holding the item being stored + * * target_item - the item to store + * * control_computer - the cryo console connected to this pod, can be null + */ +/obj/machinery/cryopod/proc/try_store_item(mob/living/holder, obj/item/target_item, obj/machinery/computer/cryopod/control_computer) + if(!istype(target_item) || HAS_TRAIT(target_item, TRAIT_NODROP)) + return FALSE + if (issilicon(holder) && istype(target_item, /obj/item/mmi)) + return FALSE + if(istype(target_item, /obj/item/implant/storage)) // store the contents of the storage implant + for(var/obj/item/nested_item as anything in target_item) + try_store_item(holder, nested_item, control_computer) + return FALSE + if(target_item.item_flags & DROPDEL) + return FALSE + + if(control_computer) + if(istype(target_item, /obj/item/modular_computer)) + var/obj/item/modular_computer/computer = target_item + for(var/datum/computer_file/program/messenger/message_app in computer.stored_files) + message_app.invisible = TRUE + holder.transferItemToLoc(target_item, control_computer, force = TRUE, silent = TRUE) + target_item.dropped(holder) + control_computer.frozen_item += target_item + else + holder.transferItemToLoc(target_item, drop_location(), force = TRUE, silent = TRUE) + return TRUE + /// This function can not be undone; do not call this unless you are sure. /// Handles despawning the player. /obj/machinery/cryopod/proc/despawn_occupant() @@ -391,21 +421,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod, 32) visible_message(span_notice("[src] hums and hisses as it moves [mob_occupant.real_name] into storage.")) + var/list/nuke_disks = mob_occupant.get_all_contents_type(/obj/item/disk/nuclear) // No + for(var/obj/item/disk/nuclear/the_disk as anything in nuke_disks) + var/turf/launch_target = get_edge_target_turf(src, pick(GLOB.alldirs)) + mob_occupant.transferItemToLoc(the_disk, drop_location(), force = TRUE, silent = TRUE) + the_disk.throw_at(launch_target, 8, 14) + visible_message(span_warning("[src] violently ejects [the_disk]!")) + for(var/obj/item/item_content as anything in mob_occupant) - if(!istype(item_content) || HAS_TRAIT(item_content, TRAIT_NODROP)) - continue - if (issilicon(mob_occupant) && istype(item_content, /obj/item/mmi)) - continue - if(control_computer) - if(istype(item_content, /obj/item/modular_computer)) - var/obj/item/modular_computer/computer = item_content - for(var/datum/computer_file/program/messenger/message_app in computer.stored_files) - message_app.invisible = TRUE - mob_occupant.transferItemToLoc(item_content, control_computer, force = TRUE, silent = TRUE) - item_content.dropped(mob_occupant) - control_computer.frozen_item += item_content - else - mob_occupant.transferItemToLoc(item_content, drop_location(), force = TRUE, silent = TRUE) + try_store_item(mob_occupant, item_content, control_computer) GLOB.joined_player_list -= stored_ckey From 15be9ff7f33f160b3f9c765cd77635f81542931e Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 21 Feb 2025 05:17:14 +0100 Subject: [PATCH 106/120] Automatic changelog for PR #3131 [ci skip] --- html/changelogs/AutoChangeLog-pr-3131.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3131.yml diff --git a/html/changelogs/AutoChangeLog-pr-3131.yml b/html/changelogs/AutoChangeLog-pr-3131.yml new file mode 100644 index 00000000000..3afd0fe4baf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3131.yml @@ -0,0 +1,4 @@ +author: "TealSeer" +delete-after: True +changes: + - bugfix: "fixed cryoing with a storage implant dumping the contents of said implant onto the floor" \ No newline at end of file From f5cec8797a2010ca62521db555915d19ef71a5d5 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Fri, 21 Feb 2025 23:23:02 +0000 Subject: [PATCH 107/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-3131.yml | 4 ---- html/changelogs/archive/2025-02.yml | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-3131.yml diff --git a/html/changelogs/AutoChangeLog-pr-3131.yml b/html/changelogs/AutoChangeLog-pr-3131.yml deleted file mode 100644 index 3afd0fe4baf..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3131.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "TealSeer" -delete-after: True -changes: - - bugfix: "fixed cryoing with a storage implant dumping the contents of said implant onto the floor" \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index 8c462e67a8b..d0395f7b5de 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -196,3 +196,7 @@ pixelkitty286: - balance: forbids cats having storage implants - bugfix: Super cats being able to bring things in hand in vents +2025-02-21: + TealSeer: + - bugfix: fixed cryoing with a storage implant dumping the contents of said implant + onto the floor From 71ac0ad1fd6558a6e12c8169f75fc32151916c82 Mon Sep 17 00:00:00 2001 From: Return Date: Mon, 24 Feb 2025 05:58:58 -0600 Subject: [PATCH 108/120] Puts sigmar's favorite nurse suit in the loadout and vendor (#3129) ## About The Pull Request They want their nurse suit Closes #3108 ## Why It's Good For The Game Sigmar will be happy ## Proof Of Testing
Screenshots/Videos
## Changelog :cl: ReturnToZender add: Nurse costume suit now in loadout and medical vendor /:cl: --- modular_zubbers/code/modules/loadout/categories/under.dm | 4 ++++ modular_zubbers/code/modules/vending/wardrobe.dm | 1 + 2 files changed, 5 insertions(+) diff --git a/modular_zubbers/code/modules/loadout/categories/under.dm b/modular_zubbers/code/modules/loadout/categories/under.dm index 920e66c5ded..d03f77c1b3c 100644 --- a/modular_zubbers/code/modules/loadout/categories/under.dm +++ b/modular_zubbers/code/modules/loadout/categories/under.dm @@ -140,3 +140,7 @@ /datum/loadout_item/uniform/miscellaneous/custom_bunnysuit name = "Custom Bunnysuit" item_path = /obj/item/clothing/under/costume/playbunny/custom_playbunny + +/datum/loadout_item/uniform/miscellaneous/nurse + name = "Nurse's suit" + item_path = /obj/item/clothing/under/rank/medical/doctor/nurse diff --git a/modular_zubbers/code/modules/vending/wardrobe.dm b/modular_zubbers/code/modules/vending/wardrobe.dm index e57156df804..a8898a1d009 100644 --- a/modular_zubbers/code/modules/vending/wardrobe.dm +++ b/modular_zubbers/code/modules/vending/wardrobe.dm @@ -85,6 +85,7 @@ /obj/item/clothing/glasses/hud/health/surgerygoggles = 3, /obj/item/clothing/gloves/latex/nitrile/longrubbergloves = 3, /obj/item/clothing/suit/leatherapron = 3, + /obj/item/clothing/under/rank/medical/doctor/nurse = 3, /obj/item/clothing/head/playbunnyears/doctor = 3, /obj/item/clothing/under/rank/medical/doctor_bunnysuit = 3, /obj/item/clothing/suit/toggle/labcoat/doctor_tailcoat = 3, From 8bce6c2860a1267dc324752a3f329275ac468bd3 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 24 Feb 2025 12:59:25 +0100 Subject: [PATCH 109/120] Automatic changelog for PR #3129 [ci skip] --- html/changelogs/AutoChangeLog-pr-3129.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3129.yml diff --git a/html/changelogs/AutoChangeLog-pr-3129.yml b/html/changelogs/AutoChangeLog-pr-3129.yml new file mode 100644 index 00000000000..ea8822ddde7 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3129.yml @@ -0,0 +1,4 @@ +author: "ReturnToZender" +delete-after: True +changes: + - rscadd: "Nurse costume suit now in loadout and medical vendor" \ No newline at end of file From d1ab24ab2fdfd2e8278f85658faa23583f32f425 Mon Sep 17 00:00:00 2001 From: KazooBard <65713506+KazooBard@users.noreply.github.com> Date: Mon, 24 Feb 2025 13:04:13 +0100 Subject: [PATCH 110/120] Craftable chisels [suggestions channel post] (#2978) ## About The Pull Request Chisel is craftable 1 wood 1 iron screwdriver, people wanted in suggestions channel with like fuckign 12 voters in 24 hours so that's insane amounts and here you go ## Why It's Good For The Game [ ![cood](https://github.com/user-attachments/assets/2b15ac23-9b9a-4c02-a4e6-b2c038f9b7ab) ](url) I rest my case ## Proof Of Testing ## Changelog :cl: add: Chisels can be crafted [1 wood, 1 iron, screwdriver] /:cl: --- .../modules/modular_items/code/recipes_misc.dm | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modular_skyrat/modules/modular_items/code/recipes_misc.dm b/modular_skyrat/modules/modular_items/code/recipes_misc.dm index 63c23024520..534a071b788 100644 --- a/modular_skyrat/modules/modular_items/code/recipes_misc.dm +++ b/modular_skyrat/modules/modular_items/code/recipes_misc.dm @@ -50,3 +50,12 @@ /obj/item/stack/sheet/cloth = 2) time = 80 category = CAT_MISC + +/datum/crafting_recipe/makeshift/chisel //BUBBERSTATION ADDITION + name = "Makeshift Chisel" + tool_behaviors = list(TOOL_SCREWDRIVER) + result = /obj/item/chisel + reqs = list(/obj/item/stack/sheet/iron = 1, + /obj/item/stack/sheet/mineral/wood = 1) + time = 80 + category = CAT_MISC From 8726902e507b854eeed85bc5e337bd328aa33895 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 24 Feb 2025 13:04:37 +0100 Subject: [PATCH 111/120] Automatic changelog for PR #2978 [ci skip] --- html/changelogs/AutoChangeLog-pr-2978.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-2978.yml diff --git a/html/changelogs/AutoChangeLog-pr-2978.yml b/html/changelogs/AutoChangeLog-pr-2978.yml new file mode 100644 index 00000000000..3c7553928c4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-2978.yml @@ -0,0 +1,4 @@ +author: "KazooBard" +delete-after: True +changes: + - rscadd: "Chisels can be crafted [1 wood, 1 iron, screwdriver]" \ No newline at end of file From 7723b9de982b15c94bf5f77874c624f1c0f960ac Mon Sep 17 00:00:00 2001 From: Arturlang <24881678+Arturlang@users.noreply.github.com> Date: Mon, 24 Feb 2025 20:29:21 +0200 Subject: [PATCH 112/120] Fixes malf ai screen (#89079) (#3141) 1. Removed an errant :: in objectives list 2. Fixed height of modules selector, this fixes #89071 3. Fixed the categories loop, this fixes #86881 4. Did some stylistic code changes 5. Made a common ui component to reduce code duplication 6. Fixed a typo from a previous pr fixes https://github.com/Bubberstation/Bubberstation/issues/3062 >[!Note] > This does not address #85999, which seems to be an issue on the DM side.
pics ![Screenshot 2025-01-14 173954](https://github.com/user-attachments/assets/997ee3ff-4283-4b0c-a9b2-f05b68bb6fd2) ![Screenshot 2025-01-14 175903](https://github.com/user-attachments/assets/a12f493b-fc58-49aa-b9bf-a8162cc794a6)
Better ui, bug fixes :cl: fix: Fixed some bugs in the malf ai screen: one bluescreen, an extra colon, modules view /:cl: --- .../tgui/interfaces/AntagInfoMalf.tsx | 101 ++++++++---------- .../interfaces/MalfunctionModulePicker.jsx | 39 ------- .../interfaces/MalfunctionModulePicker.tsx | 12 +++ .../tgui/interfaces/common/MalfAiModules.tsx | 49 +++++++++ 4 files changed, 106 insertions(+), 95 deletions(-) delete mode 100644 tgui/packages/tgui/interfaces/MalfunctionModulePicker.jsx create mode 100644 tgui/packages/tgui/interfaces/MalfunctionModulePicker.tsx create mode 100644 tgui/packages/tgui/interfaces/common/MalfAiModules.tsx diff --git a/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx b/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx index 88520752b1e..2126de62796 100644 --- a/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx +++ b/tgui/packages/tgui/interfaces/AntagInfoMalf.tsx @@ -5,12 +5,13 @@ import { BooleanLike } from 'tgui-core/react'; import { useBackend } from '../backend'; import { Window } from '../layouts'; import { Rules } from './AntagInfoRules'; // SKYRAT EDIT ADDITION +import { MalfAiModules } from './common/MalfAiModules'; import { Objective, ObjectivePrintout, ReplaceObjectivesButton, } from './common/Objectives'; -import { GenericUplink, Item } from './Uplink/GenericUplink'; +import { Item } from './Uplink/GenericUplink'; const allystyle = { fontWeight: 'bold', @@ -27,7 +28,12 @@ const goalstyle = { fontWeight: 'bold', }; -type Info = { +type Category = { + name: string; + items: Item[]; +}; + +type Data = { has_codewords: BooleanLike; phrases: string; responses: string; @@ -37,13 +43,14 @@ type Info = { intro: string; processingTime: string; objectives: Objective[]; - categories: any[]; + categories: Category[]; can_change_objective: BooleanLike; }; -const IntroductionSection = (props) => { - const { act, data } = useBackend(); +function IntroductionSection(props) { + const { data } = useBackend(); const { intro, objectives, can_change_objective } = data; + return (
@@ -51,13 +58,13 @@ const IntroductionSection = (props) => { } /> @@ -66,11 +73,12 @@ const IntroductionSection = (props) => {
); -}; +} -const FlavorSection = (props) => { - const { data } = useBackend(); +function FlavorSection(props) { + const { data } = useBackend(); const { allies, goal } = data; + return (
{
); -}; +} -const CodewordsSection = (props) => { - const { data } = useBackend(); +function CodewordsSection(props) { + const { data } = useBackend(); const { has_codewords, phrases, responses } = data; + return (
- {(!has_codewords && ( + {!has_codewords ? (
You have not been supplied the Syndicate codewords. You will have to use alternative methods to find potential allies. Proceed with caution, however, as everyone is a potential foe.
- )) || ( + ) : ( <>
@@ -172,36 +181,21 @@ const CodewordsSection = (props) => {
); -}; +} + +enum Screen { + Intro, + Modules, +} + +export function AntagInfoMalf(props) { + const [antagInfoTab, setAntagInfoTab] = useState(Screen.Intro); -export const AntagInfoMalf = (props) => { - const { act, data } = useBackend(); - const { processingTime, categories } = data; - const [antagInfoTab, setAntagInfoTab] = useState(0); - const categoriesList: string[] = []; - const items: Item[] = []; - for (let i = 0; i < categories.length; i++) { - const category = categories[i]; - categoriesList.push(category.name); - for (let itemIndex = 0; itemIndex < category.items.length; itemIndex++) { - const item = category.items[itemIndex]; - items.push({ - id: item.name, - name: item.name, - icon: item.icon, - icon_state: item.icon_state, - category: category.name, - cost: `${item.cost} PT`, - desc: item.desc, - disabled: processingTime < item.cost, - }); - } - } return ( @@ -209,21 +203,21 @@ export const AntagInfoMalf = (props) => { setAntagInfoTab(0)} + selected={antagInfoTab === Screen.Intro} + onClick={() => setAntagInfoTab(Screen.Intro)} > Information setAntagInfoTab(1)} + selected={antagInfoTab === Screen.Modules} + onClick={() => setAntagInfoTab(Screen.Modules)} > Malfunction Modules - {(antagInfoTab === 0 && ( + {antagInfoTab === Screen.Intro ? ( <> @@ -239,15 +233,10 @@ export const AntagInfoMalf = (props) => { - )) || ( - -
- act('buy', { name: item.name })} - /> + ) : ( + +
+
)} @@ -255,4 +244,4 @@ export const AntagInfoMalf = (props) => { ); -}; +} diff --git a/tgui/packages/tgui/interfaces/MalfunctionModulePicker.jsx b/tgui/packages/tgui/interfaces/MalfunctionModulePicker.jsx deleted file mode 100644 index 7ffc12400b4..00000000000 --- a/tgui/packages/tgui/interfaces/MalfunctionModulePicker.jsx +++ /dev/null @@ -1,39 +0,0 @@ -import { useBackend } from '../backend'; -import { Window } from '../layouts'; -import { GenericUplink } from './Uplink/GenericUplink'; - -export const MalfunctionModulePicker = (props) => { - const { act, data } = useBackend(); - const { processingTime, categories } = data; - - const categoriesList = []; - const items = []; - for (let i = 0; i < categories.length; i++) { - const category = categories[i]; - categoriesList.push(category.name); - for (let itemIndex = 0; itemIndex < category.items.length; itemIndex++) { - const item = category.items[itemIndex]; - items.push({ - id: item.name, - name: item.name, - category: category.name, - cost: `${item.cost} PT`, - desc: item.desc, - disabled: processingTime < item.cost, - }); - } - } - - return ( - - - act('buy', { name: item.name })} - /> - - - ); -}; diff --git a/tgui/packages/tgui/interfaces/MalfunctionModulePicker.tsx b/tgui/packages/tgui/interfaces/MalfunctionModulePicker.tsx new file mode 100644 index 00000000000..199bf699047 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MalfunctionModulePicker.tsx @@ -0,0 +1,12 @@ +import { Window } from '../layouts'; +import { MalfAiModules } from './common/MalfAiModules'; + +export function MalfunctionModulePicker(props) { + return ( + + + + + + ); +} diff --git a/tgui/packages/tgui/interfaces/common/MalfAiModules.tsx b/tgui/packages/tgui/interfaces/common/MalfAiModules.tsx new file mode 100644 index 00000000000..971dfc3ef17 --- /dev/null +++ b/tgui/packages/tgui/interfaces/common/MalfAiModules.tsx @@ -0,0 +1,49 @@ +import { useBackend } from '../../backend'; +import { GenericUplink, Item } from '../Uplink/GenericUplink'; + +type Category = { + name: string; + items: Item[]; +}; + +type Data = { + processingTime: string; + categories: Category[]; +}; + +/** Common ui for selecting malf ai modules */ +export function MalfAiModules(props) { + const { act, data } = useBackend(); + const { processingTime, categories = [] } = data; + + const categoriesList: string[] = []; + const items: Item[] = []; + + for (let idx = 0; idx < categories.length; idx++) { + const category = categories[idx]; + categoriesList.push(category.name); + + for (let itemIndex = 0; itemIndex < category.items?.length; itemIndex++) { + const item = category.items[itemIndex]; + items.push({ + category: category.name, + cost: `${item.cost} PT`, + desc: item.desc, + disabled: processingTime < item.cost, + icon_state: item.icon_state, + icon: item.icon, + id: item.name, + name: item.name, + }); + } + } + + return ( + act('buy', { name: item.name })} + /> + ); +} From 6fc56db3958f46e2f627be36ed4ee93d09bd9d02 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 24 Feb 2025 19:29:48 +0100 Subject: [PATCH 113/120] Automatic changelog for PR #3141 [ci skip] --- html/changelogs/AutoChangeLog-pr-3141.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3141.yml diff --git a/html/changelogs/AutoChangeLog-pr-3141.yml b/html/changelogs/AutoChangeLog-pr-3141.yml new file mode 100644 index 00000000000..c24d749ca9f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3141.yml @@ -0,0 +1,4 @@ +author: "Arturlang" +delete-after: True +changes: + - bugfix: "Fixed some bugs in the malf ai screen: one bluescreen, an extra\ncolon, modules view" \ No newline at end of file From 5579bb809db395a4ed43bc421ad447549d3a2700 Mon Sep 17 00:00:00 2001 From: Anno <66095096+SpooksAnno@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:31:17 -0300 Subject: [PATCH 114/120] Add for engineering borg - Usage of gripper for stock parts and cells (#3143) Fixes #2992 ## About The Pull Request It gives them back the ability to grab parts and cells so to fix minor things such as APCs and machinery that has been destroyed. They are still unable to grab circuits and insert on the machinery however, without either the parts device or the circuit gripper upgrade. ## Why It's Good For The Game It gives them back the ability to grab parts and cells so to fix minor things such as APCs and machinery that has been destroyed. They are still unable to grab circuits and insert on the machinery however, without either the parts device or the circuit gripper upgrade. They are also still unable to take the batteries out of chargers. Its a different issue. ## Proof Of Testing Screenshots/Videos https://github.com/user-attachments/assets/47a1c317-a30b-4830-bc82-2960a4c06e1d ## Changelog :cl: add: The ability to grab parts and cells as a borg. /:cl: --- modular_zubbers/code/game/objects/items/robot/items/storage.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/modular_zubbers/code/game/objects/items/robot/items/storage.dm b/modular_zubbers/code/game/objects/items/robot/items/storage.dm index 64ca8fcf42b..f1a54397624 100644 --- a/modular_zubbers/code/game/objects/items/robot/items/storage.dm +++ b/modular_zubbers/code/game/objects/items/robot/items/storage.dm @@ -156,6 +156,7 @@ /obj/item/conveyor_switch_construct, /obj/item/wallframe, /obj/item/tank, + /obj/item/stock_parts, ) /obj/item/borg/apparatus/mining/examine() From 4db13d3dec3db0f72c8fe2d2d273507b53c28b6b Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 24 Feb 2025 19:32:02 +0100 Subject: [PATCH 115/120] Automatic changelog for PR #3143 [ci skip] --- html/changelogs/AutoChangeLog-pr-3143.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3143.yml diff --git a/html/changelogs/AutoChangeLog-pr-3143.yml b/html/changelogs/AutoChangeLog-pr-3143.yml new file mode 100644 index 00000000000..2238c2d5f2a --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3143.yml @@ -0,0 +1,4 @@ +author: "SpooksAnno" +delete-after: True +changes: + - rscadd: "The ability to grab parts and cells as a borg." \ No newline at end of file From 2929287b354d24afb71d68ea0ff695cb1527db9a Mon Sep 17 00:00:00 2001 From: JustMeTheIInd <145101584+JustMeTheIInd@users.noreply.github.com> Date: Mon, 24 Feb 2025 19:49:48 +0100 Subject: [PATCH 116/120] Standardizes alternate outfits in roundstart command garment bags (#3114) ## About The Pull Request (this is my second ever PR, please bear with me still.) This PR copies (meaning the items are still available in the CommDrobe vendor) the CommDrobe specifc items over to the garment bags of heads of staff. Alternate command outfit items are in that weird state where they are technically only in CommDrobe, and the garment bags are only for roundstart ones, but then there's the HoS who has his alternate outfits already in the bag? but also not every last one? Annoyed me a bit as a HoS enjoyer so decided to standardize it, and my choice fell on making all the items available in the garment bag. Also done the same for all the other Heads of Staff (save for Captain because his garment bag got a bit too ridiculous in size, as well as blueshield's and NTR's but that's mostly due to them already having almost all of their outfits in the bag.) ## Why It's Good For The Game Standarizes the outfits for all Heads of staff. Mostly quality of life. ## Proof Of Testing ![cefinal](https://github.com/user-attachments/assets/909fb19e-c229-4cce-94cf-0a70c90d6231) ![rdfinal](https://github.com/user-attachments/assets/26b14767-f280-4807-836e-6a1d4d85a7ac) ![cmofinal](https://github.com/user-attachments/assets/0b55548b-0076-48d6-8a52-baa73b2d6d48) ![hopfinal](https://github.com/user-attachments/assets/0f687596-b998-4bc2-a8a9-f280b3a0f697) ![qmfinal](https://github.com/user-attachments/assets/98222ed9-f4bb-4fdb-8533-01698e2fdfde) ![hosfinal](https://github.com/user-attachments/assets/f8a91c38-63f4-4dd9-bfa7-8e7c16718b2b) ## Changelog qol: duplicated alternate outfit choices of command to their locker garment bags --- code/game/objects/items/storage/garment.dm | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/code/game/objects/items/storage/garment.dm b/code/game/objects/items/storage/garment.dm index d65531e0a86..2db9f3ff3f8 100644 --- a/code/game/objects/items/storage/garment.dm +++ b/code/game/objects/items/storage/garment.dm @@ -72,6 +72,21 @@ new /obj/item/clothing/head/hats/hopcap(src) new /obj/item/clothing/neck/cloak/hop(src) new /obj/item/clothing/shoes/laceup(src) +//Duplication from Commdrobe + new /obj/item/clothing/head/playbunnyears/hop(src) + new /obj/item/clothing/under/rank/civilian/hop_bunnysuit(src) + new /obj/item/clothing/suit/armor/hop_tailcoat(src) + new /obj/item/clothing/neck/tie/bunnytie/hop(src) + new /obj/item/clothing/head/hopcap/beret(src) + new /obj/item/clothing/head/hopcap/beret/alt(src) + new /obj/item/clothing/head/hats/imperial/hop(src) + new /obj/item/clothing/under/rank/civilian/head_of_personnel/skyrat/turtleneck(src) + new /obj/item/clothing/under/rank/civilian/head_of_personnel/skyrat/turtleneck/skirt(src) + new /obj/item/clothing/under/rank/civilian/head_of_personnel/skyrat/parade(src) + new /obj/item/clothing/under/rank/civilian/head_of_personnel/skyrat/parade/female(src) + new /obj/item/clothing/under/rank/civilian/head_of_personnel/skyrat/imperial(src) + new /obj/item/clothing/suit/armor/vest/hop/hop_formal(src) + new /obj/item/clothing/neck/mantle/hopmantle(src) /obj/item/storage/bag/garment/hos/PopulateContents() new /obj/item/clothing/under/rank/security/head_of_security/skirt(src) @@ -99,6 +114,25 @@ new /obj/item/clothing/head/hos_kepi(src) new /obj/item/clothing/under/rank/security/peacekeeper/skirt_hos(src) //BUBBER ADDITION END +//Duplication from Commdrobe + new /obj/item/clothing/head/hats/warden/drill/hos(src) + new /obj/item/clothing/under/rank/security/head_of_security/alt/roselia(src) + new /obj/item/clothing/glasses/hud/security/sunglasses/gars/giga/roselia(src) + new /obj/item/clothing/under/rank/security/head_of_security/parade/redsec(src) + new /obj/item/clothing/under/rank/security/head_of_security/parade/female/redsec(src) + new /obj/item/clothing/head/hats/hos/elofy(src) + new /obj/item/clothing/suit/armor/hos/elofy(src) + new /obj/item/clothing/gloves/elofy(src) + new /obj/item/clothing/shoes/jackboots/elofy(src) + new /obj/item/clothing/head/playbunnyears/hos(src) + new /obj/item/clothing/under/rank/security/head_of_security/bunnysuit(src) + new /obj/item/clothing/suit/armor/hos_tailcoat(src) + new /obj/item/clothing/head/hats/hos/beret/navyhos(src) + new /obj/item/clothing/head/hats/imperial/hos(src) + new /obj/item/clothing/under/rank/security/head_of_security/peacekeeper(src) + new /obj/item/clothing/under/rank/security/head_of_security/skyrat/imperial(src) + new /obj/item/clothing/suit/jacket/hos/blue(src) + new /obj/item/clothing/neck/mantle/hosmantle(src) /obj/item/storage/bag/garment/warden/PopulateContents() new /obj/item/clothing/suit/armor/vest/warden(src) @@ -126,6 +160,20 @@ new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/neck/cloak/rd(src) new /obj/item/clothing/shoes/jackboots(src) +//Duplication from Commdrobe + new /obj/item/clothing/head/beret/science/rd(src) + new /obj/item/clothing/head/beret/science/rd/alt(src) + new /obj/item/clothing/under/rank/rnd/research_director/skyrat/jumpsuit(src) + new /obj/item/clothing/under/rank/rnd/research_director/skyrat/jumpsuit/skirt(src) + new /obj/item/clothing/under/rank/rnd/research_director/skyrat/imperial(src) + new /obj/item/clothing/neck/mantle/rdmantle(src) + new /obj/item/clothing/suit/toggle/labcoat(src) + new /obj/item/clothing/suit/toggle/labcoat/research_director(src) + new /obj/item/clothing/head/playbunnyears/rd(src) + new /obj/item/clothing/under/rank/rnd/research_director/bunnysuit(src) + new /obj/item/clothing/suit/jacket/research_director/tailcoat(src) + new /obj/item/clothing/neck/tie/bunnytie/rd(src) + /obj/item/storage/bag/garment/chief_medical/PopulateContents() new /obj/item/clothing/under/rank/medical/chief_medical_officer(src) @@ -140,6 +188,15 @@ new /obj/item/clothing/head/utility/surgerycap/cmo(src) new /obj/item/clothing/neck/cloak/cmo(src) new /obj/item/clothing/shoes/sneakers/blue (src) +//Duplication from Commdrobe + new /obj/item/clothing/head/beret/medical/cmo/alt(src) + new /obj/item/clothing/head/hats/imperial/cmo(src) + new /obj/item/clothing/under/rank/medical/chief_medical_officer/skyrat/imperial(src) + new /obj/item/clothing/neck/mantle/cmomantle(src) + new /obj/item/clothing/head/playbunnyears/cmo(src) + new /obj/item/clothing/under/rank/medical/cmo_bunnysuit(src) + new /obj/item/clothing/suit/toggle/labcoat/doctor_tailcoat/cmo(src) + new /obj/item/clothing/neck/tie/bunnytie/cmo(src) /obj/item/storage/bag/garment/engineering_chief/PopulateContents() new /obj/item/clothing/under/rank/engineering/chief_engineer(src) @@ -153,6 +210,15 @@ new /obj/item/clothing/head/utility/hardhat/welding/white(src) new /obj/item/clothing/neck/cloak/ce(src) new /obj/item/clothing/shoes/sneakers/brown(src) +//Duplication from Commdrobe + new /obj/item/clothing/head/beret/engi/ce(src) + new /obj/item/clothing/head/hats/imperial/ce(src) + new /obj/item/clothing/under/rank/engineering/chief_engineer/skyrat/imperial(src) + new /obj/item/clothing/neck/mantle/cemantle(src) + new /obj/item/clothing/head/playbunnyears/ce(src) + new /obj/item/clothing/under/rank/engineering/chief_engineer/bunnysuit(src) + new /obj/item/clothing/suit/utility/fire/ce_tailcoat(src) + new /obj/item/clothing/neck/tie/bunnytie/ce(src) /obj/item/storage/bag/garment/quartermaster/PopulateContents() new /obj/item/clothing/under/rank/cargo/qm(src) @@ -165,3 +231,20 @@ new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/neck/cloak/qm(src) new /obj/item/clothing/shoes/sneakers/brown(src) +//Duplication from Comdrobe + new /obj/item/clothing/head/beret/cargo/qm(src) + new /obj/item/clothing/head/beret/cargo/qm/alt(src) + new /obj/item/clothing/neck/mantle/qm(src) + new /obj/item/clothing/under/rank/cargo/qm/skyrat/gorka(src) + new /obj/item/clothing/under/rank/cargo/qm/skyrat/turtleneck(src) + new /obj/item/clothing/under/rank/cargo/qm/skyrat/turtleneck/skirt(src) + new /obj/item/clothing/suit/brownfurrich(src) + new /obj/item/clothing/under/rank/cargo/qm/skyrat/casual(src) + new /obj/item/clothing/suit/toggle/jacket/supply/head(src) + new /obj/item/clothing/under/rank/cargo/qm/skyrat/formal(src) + new /obj/item/clothing/under/rank/cargo/qm/skyrat/formal/skirt(src) + new /obj/item/clothing/head/playbunnyears/quartermaster(src) + new /obj/item/clothing/under/rank/cargo/quartermaster_bunnysuit(src) + new /obj/item/clothing/suit/jacket/tailcoat/quartermaster(src) + new /obj/item/clothing/neck/tie/bunnytie/cargo(src) + From 4b117a0a8272d7ef55ed3eaab6c00616d01143a0 Mon Sep 17 00:00:00 2001 From: Anno <66095096+SpooksAnno@users.noreply.github.com> Date: Mon, 24 Feb 2025 16:00:14 -0300 Subject: [PATCH 117/120] Fix for service borg - Seed! (#3142) Added the ability to pick up seed and plant using the "Service apparatus" module ## About The Pull Request Service borgs on the moment are unable to do the basic function of planting a seed on the Hydroponics to grow a plant. - Added the ability to pick up seed and plant and plant using the "Service apparatus" module - Minor addition on the description of the tool ## Why It's Good For The Game They'll be able to plant their seeds on hydroponics! ## Proof Of Testing
Screenshots/Videos https://github.com/user-attachments/assets/de858e64-8be6-485d-aed5-85382856c86c
## Changelog :cl: Add: The ability to plant seeds using the service apparatus, followed by a description when examining the tool. /:cl: --------- Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> --- code/game/objects/items/robot/items/storage.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/robot/items/storage.dm b/code/game/objects/items/robot/items/storage.dm index 3e030a9bd8f..c6744f3ca8a 100644 --- a/code/game/objects/items/robot/items/storage.dm +++ b/code/game/objects/items/robot/items/storage.dm @@ -320,7 +320,7 @@ /obj/item/borg/apparatus/service name = "service apparatus" - desc = "A special apparatus for carrying food, bowls, plates, oven trays, soup pots and paper." + desc = "A special apparatus for carrying seeds, food, bowls, plates, oven trays, soup pots, and paper." icon_state = "borg_service_apparatus" storable = list( /obj/item/food, @@ -329,6 +329,7 @@ /obj/item/plate/oven_tray, /obj/item/reagent_containers/cup/bowl, /obj/item/reagent_containers/cup/soup_pot, + /obj/item/seeds, ) /obj/item/borg/apparatus/service/Initialize(mapload) From 9cffc10360a9559b47f9f7f59d379609160eba16 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Mon, 24 Feb 2025 23:24:39 +0000 Subject: [PATCH 118/120] Bubberstation automatic changelog compile [ci skip] --- html/changelogs/AutoChangeLog-pr-2978.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3129.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3141.yml | 4 ---- html/changelogs/AutoChangeLog-pr-3143.yml | 4 ---- html/changelogs/archive/2025-02.yml | 11 +++++++++++ 5 files changed, 11 insertions(+), 16 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-2978.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3129.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3141.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-3143.yml diff --git a/html/changelogs/AutoChangeLog-pr-2978.yml b/html/changelogs/AutoChangeLog-pr-2978.yml deleted file mode 100644 index 3c7553928c4..00000000000 --- a/html/changelogs/AutoChangeLog-pr-2978.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "KazooBard" -delete-after: True -changes: - - rscadd: "Chisels can be crafted [1 wood, 1 iron, screwdriver]" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3129.yml b/html/changelogs/AutoChangeLog-pr-3129.yml deleted file mode 100644 index ea8822ddde7..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3129.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "ReturnToZender" -delete-after: True -changes: - - rscadd: "Nurse costume suit now in loadout and medical vendor" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3141.yml b/html/changelogs/AutoChangeLog-pr-3141.yml deleted file mode 100644 index c24d749ca9f..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3141.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Arturlang" -delete-after: True -changes: - - bugfix: "Fixed some bugs in the malf ai screen: one bluescreen, an extra\ncolon, modules view" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-3143.yml b/html/changelogs/AutoChangeLog-pr-3143.yml deleted file mode 100644 index 2238c2d5f2a..00000000000 --- a/html/changelogs/AutoChangeLog-pr-3143.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "SpooksAnno" -delete-after: True -changes: - - rscadd: "The ability to grab parts and cells as a borg." \ No newline at end of file diff --git a/html/changelogs/archive/2025-02.yml b/html/changelogs/archive/2025-02.yml index d0395f7b5de..ea0a093544e 100644 --- a/html/changelogs/archive/2025-02.yml +++ b/html/changelogs/archive/2025-02.yml @@ -200,3 +200,14 @@ TealSeer: - bugfix: fixed cryoing with a storage implant dumping the contents of said implant onto the floor +2025-02-24: + Arturlang: + - bugfix: 'Fixed some bugs in the malf ai screen: one bluescreen, an extra + + colon, modules view' + KazooBard: + - rscadd: Chisels can be crafted [1 wood, 1 iron, screwdriver] + ReturnToZender: + - rscadd: Nurse costume suit now in loadout and medical vendor + SpooksAnno: + - rscadd: The ability to grab parts and cells as a borg. From c1790b5251b3f8fde7a0454d086bb23310dbe4a5 Mon Sep 17 00:00:00 2001 From: Tojo <32783144+Alecksohs@users.noreply.github.com> Date: Mon, 24 Feb 2025 22:38:58 -0600 Subject: [PATCH 119/120] Clothing Vendor Species Resprite Awareness - Vendors can now see if your sprite will be broken or not. (#3132) ## About The Pull Request Items will now inform you before you purchase if they have received a refit for the supported species. ## Why It's Good For The Game No more blind purchasing. ## Proof Of Testing
Screenshots/Videos https://github.com/user-attachments/assets/c7665503-064d-4f44-81d9-6946a8e0d0ee
## Changelog :cl: code: Vendors are now aware of sprite refits and will inform you if any are available. /:cl: --------- Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com> --- code/modules/vending/_vending.dm | 9 +++ .../code/refithelper.dm | 59 +++++++++++++++++++ tgstation.dme | 1 + tgui/packages/tgui/interfaces/Vending.tsx | 28 +++++++++ 4 files changed, 97 insertions(+) create mode 100644 modular_zubbers/code/modules/species_refits_awareness/code/refithelper.dm diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 074620694ce..1875fb01031 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -41,6 +41,8 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) var/age_restricted = FALSE ///Whether the product can be recolored by the GAGS system var/colorable + /// Available refits for custom bodytypes, such as Vox + var/refits_available // BUBBER EDIT ADDITION /// The category the product was in, if any. /// Sourced directly from product_categories. var/category @@ -448,6 +450,7 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) new_record.age_restricted = initial(temp.age_restricted) new_record.colorable = !!(initial(temp.greyscale_config) && initial(temp.greyscale_colors) && (initial(temp.flags_1) & IS_PLAYER_COLORABLE_1)) new_record.category = product_to_category[typepath] + new_record.refits_available = check_for_refits(temp.icon_state,temp) // BUBBER EDIT ADDITION - Clothing Refits recordlist += new_record /**Builds all available inventories for the vendor - standard, contraband and premium @@ -1307,6 +1310,11 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) user_data = list() user_data["name"] = card_used.registered_account.account_holder user_data["cash"] = fetch_balance_to_use(card_used) + held_cash + // BUBBER EDIT ADDITION - Clothing Refits + if(ishuman(user)) + var/mob/living/carbon/living_user = user + user_data["species"] = living_user?.dna?.species + // BUBBER EDIT END if(card_used.registered_account.account_job) user_data["job"] = card_used.registered_account.account_job.title user_data["department"] = card_used.registered_account.account_job.paycheck_department @@ -1323,6 +1331,7 @@ GLOBAL_LIST_EMPTY(vending_machines_to_restock) path = replacetext(replacetext("[product_record.product_path]", "/obj/item/", ""), "/", "-"), amount = product_record.amount, colorable = product_record.colorable, + refits_available = product_record.refits_available // BUBBER EDIT ADDITION - Clothing Refits ) .["stock"][product_data["path"]] = product_data diff --git a/modular_zubbers/code/modules/species_refits_awareness/code/refithelper.dm b/modular_zubbers/code/modules/species_refits_awareness/code/refithelper.dm new file mode 100644 index 00000000000..ab9dd04d788 --- /dev/null +++ b/modular_zubbers/code/modules/species_refits_awareness/code/refithelper.dm @@ -0,0 +1,59 @@ + +/** + * Builds and returns a list of strings in accordance with the species names that an outfit has resprites for. + * + * This builds up a full set of /datum/data/vending_products from the product list of the vending machine type + * Arguments: + * * icon_state - The iconstate of the item. Usually, call this by the second argument, item.icon_state + * * obj/item - The item path that we'll operate on, to check for refits. + */ +/proc/check_for_refits(icon_state, var/obj/item/referenced_item) + var/list/available_refits = list() + var/list/supported_species = list( + SPECIES_TESHARI, + SPECIES_VOX, + SPECIES_VOX_PRIMALIS + ) + + var/refit_path + var/item_slot + var/list/icons_in_refit_path + switch (referenced_item.slot_flags) + if (ITEM_SLOT_ICLOTHING) + item_slot = "UNIFORM" + else if (ITEM_SLOT_OCLOTHING) + item_slot = "SUIT" + else if (ITEM_SLOT_BELT) + item_slot = "BELT" + else if (ITEM_SLOT_GLOVES) + item_slot = "GLOVES" + else if (ITEM_SLOT_HEAD) + item_slot = "HEAD" + else if (ITEM_SLOT_EARS) + item_slot = "EARS" + else if (ITEM_SLOT_NECK) + item_slot = "NECK" + else if (ITEM_SLOT_MASK) + item_slot = "MASK" + else if (ITEM_SLOT_EYES) + item_slot = "GLASSES" + else if (ITEM_SLOT_FEET) + item_slot = "SHOES" + else + CRASH("There are no item slots that exist by the name of [referenced_item].") + for(var/cur_species in supported_species) + if(cur_species==SPECIES_VOX_PRIMALIS) // Why was this named like this? + cur_species = "better_vox" + // Oh this is awful but its the only way from what I'm seeing. + var/wornicon = "[referenced_item]:worn_icon_[cur_species]" + if(!isnull(wornicon)) // If the species has a worn icon set here, count it too. + refit_path = "modular_skyrat/master_files/icons/mob/clothing/species/[cur_species]/[item_slot].dmi" + if(!fexists(refit_path)) + break + icons_in_refit_path = icon_states(refit_path) + if(icons_in_refit_path.Find(icon_state)) + available_refits += cur_species + else + available_refits += cur_species // We found a worn icon and it wasn't null, this is supported. + + return available_refits diff --git a/tgstation.dme b/tgstation.dme index f6ad3262c03..fbc75d71648 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -9307,6 +9307,7 @@ #include "modular_zubbers\code\modules\snakes\snakes.dm" #include "modular_zubbers\code\modules\space_background\parallax.dm" #include "modular_zubbers\code\modules\space_background\turf_space.dm" +#include "modular_zubbers\code\modules\species_refits_awareness\code\refithelper.dm" #include "modular_zubbers\code\modules\species_synthesizer\sing_tones.dm" #include "modular_zubbers\code\modules\spells\banhammer_item.dm" #include "modular_zubbers\code\modules\spells\spell_types\disabled_spells.dm" diff --git a/tgui/packages/tgui/interfaces/Vending.tsx b/tgui/packages/tgui/interfaces/Vending.tsx index ab4ea98a583..f960610d7d5 100644 --- a/tgui/packages/tgui/interfaces/Vending.tsx +++ b/tgui/packages/tgui/interfaces/Vending.tsx @@ -10,6 +10,7 @@ import { Section, Stack, Table, + Tooltip, } from 'tgui-core/components'; import { createSearch } from '../../common/string'; @@ -63,6 +64,9 @@ type UserData = { cash: number; job: string; department: string; + /** BUBBER EDIT START **/ + species: string; + /** BUBBER EDIT END **/ }; type StockItem = { @@ -70,6 +74,9 @@ type StockItem = { path: string; amount: number; colorable: boolean; + /** BUBBER EDIT START **/ + refits_available: string[]; + /** BUBBER EDIT END **/ }; type CustomInput = { @@ -303,6 +310,17 @@ const VendingRow = (props) => { )} + + {user && + user.species && + productStock.refits_available?.includes( + user.species.toLowerCase(), + ) && ( + + + + )} + @@ -368,7 +386,17 @@ const ProductColorSelect = (props) => { /> ); }; +/** BUBBER EDIT START **/ +/** In the case of customizable items, ie: shoes, + * this displays a color wheel button that opens another window. + */ +const RefitBadgeView = (props) => { + const { act } = useBackend(); + const { disabled, product } = props; + return ; +}; +/** BUBBER EDIT END **/ /** Displays a colored indicator for remaining stock */ const ProductStock = (props) => { const { custom, product, remaining } = props; From 22c656f76ea8cdc9fd44ef12e21f251445063451 Mon Sep 17 00:00:00 2001 From: Bubberbot <151680451+Bubberbot@users.noreply.github.com> Date: Tue, 25 Feb 2025 05:39:30 +0100 Subject: [PATCH 120/120] Automatic changelog for PR #3132 [ci skip] --- html/changelogs/AutoChangeLog-pr-3132.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-3132.yml diff --git a/html/changelogs/AutoChangeLog-pr-3132.yml b/html/changelogs/AutoChangeLog-pr-3132.yml new file mode 100644 index 00000000000..44a38d61561 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3132.yml @@ -0,0 +1,4 @@ +author: "Alecksohs" +delete-after: True +changes: + - code_imp: "Vendors are now aware of sprite refits and will inform you if any are available." \ No newline at end of file