From cb856a512cfc346668b8cc988e6abc8ebfba5334 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Sun, 5 May 2024 00:11:47 +0000 Subject: [PATCH 01/36] Automatic changelog compile [ci skip] --- html/changelog.html | 63 --------------------------------------------- 1 file changed, 63 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 64a3b8b26d381..63f09e5af026f 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -630,69 +630,6 @@

Tsar-Salat updated:

- -

03 March 2024

-

HowToLoLu updated:

- -

RKz, ShizCalev updated:

- -

ToasterBan updated:

- -

Tsar-Salat updated:

- -

rkz, Mickyan, Donkie, willox, Timberpoes, Kush1Push1, AnturK updated:

- -

rkz, Seris02, ExcessiveUseOfCobblestone updated:

- -

rkz, mickyan updated:

- -

zeskorion updated:

- GoonStation 13 Development Team From 67fefdd097cb35133ed2fb00d8cf8f71b5614b11 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Mon, 6 May 2024 00:11:10 +0000 Subject: [PATCH 02/36] Automatic changelog compile [ci skip] --- html/changelog.html | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 63f09e5af026f..cafb393b93889 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -619,17 +619,6 @@

rkz, Mothblocks, ArcaneDefence updated:

- -

04 March 2024

-

EvilDragonfiend updated:

- -

Tsar-Salat updated:

- GoonStation 13 Development Team From 93199acecf278e8a2e5e0013a5868dc1416937c6 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Tue, 7 May 2024 00:10:54 +0000 Subject: [PATCH 03/36] Automatic changelog compile [ci skip] --- html/changelog.html | 6 ------ 1 file changed, 6 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index cafb393b93889..cbae7cf61644d 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -613,12 +613,6 @@

ToasterBan updated:

  • adding a beaker to a medbot is now logged
  • The "Flow Hair" hairstyle, which was identical to "Short Hair 4"
  • - -

    05 March 2024

    -

    rkz, Mothblocks, ArcaneDefence updated:

    - GoonStation 13 Development Team From c24a2a0600dda92e6d2d1a73419b4c72729a0a88 Mon Sep 17 00:00:00 2001 From: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com> Date: Tue, 7 May 2024 18:07:13 +0900 Subject: [PATCH 04/36] Fixes some null runtimes (#10916) * Fixes some nulls * It's been null always, huh * and this can be null --- code/__DEFINES/bodyparts.dm | 3 ++- code/__DEFINES/is_helpers.dm | 2 +- .../mecha/equipment/tools/mining_tools.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 20 ++++++++++--------- code/modules/research/destructive_analyzer.dm | 2 +- 5 files changed, 16 insertions(+), 13 deletions(-) diff --git a/code/__DEFINES/bodyparts.dm b/code/__DEFINES/bodyparts.dm index a17da968ca9af..149dbfd74c225 100644 --- a/code/__DEFINES/bodyparts.dm +++ b/code/__DEFINES/bodyparts.dm @@ -1,4 +1,5 @@ -#define IS_ORGANIC_LIMB(A) (A.bodytype & BODYTYPE_ORGANIC) +#define IS_ORGANIC_LIMB(A) (A && (A.bodytype & BODYTYPE_ORGANIC)) +#define IS_ROBOTIC_LIMB(A) (A && (A.bodytype & BODYTYPE_ROBOTIC)) #define BODYZONE_STYLE_DEFAULT 0 #define BODYZONE_STYLE_MEDICAL 1 diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index c6262b0f6dbcf..1f660c1218ef2 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -207,7 +207,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define ismecha(A) (istype(A, /obj/mecha)) -#define ismopable(A) (A.layer <= HIGH_SIGIL_LAYER) //If something can be cleaned by floor-cleaning devices such as mops or clean bots +#define ismopable(A) (A && (A.layer <= HIGH_SIGIL_LAYER)) //If something can be cleaned by floor-cleaning devices such as mops or clean bots #define isorgan(A) (istype(A, /obj/item/organ)) diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index 44b98a94ed8e5..b59c15b20f6d9 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -129,7 +129,7 @@ target.apply_damage(10, BRUTE, BODY_ZONE_CHEST, target.run_armor_check(target_part, MELEE)) //blood splatters and sparks - if(issilicon(target) || isbot(target) || isswarmer(target) || !IS_ORGANIC_LIMB(target_part)) + if(issilicon(target) || isbot(target) || isswarmer(target) || IS_ROBOTIC_LIMB(target_part)) do_sparks(rand(1, 3), FALSE, target.drop_location()) else var/splatter_dir = get_dir(chassis, target) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 54fca64948e53..79482f58bea95 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -1115,16 +1115,18 @@ O?.wash(clean_types) /datum/reagent/space_cleaner/reaction_turf(turf/T, reac_volume) - if(reac_volume >= 1) - T.wash(clean_types) - for(var/am in T) - var/atom/movable/movable_content - if(ismopable(movable_content)) // Mopables will be cleaned anyways by the turf wash - continue - movable_content.wash(clean_types) + if(reac_volume < 1) + return - for(var/mob/living/simple_animal/slime/M in T) - M.adjustToxLoss(rand(5,10)) + T.wash(clean_types) + for(var/am in T) + var/atom/movable/movable_content = am + if(ismopable(movable_content)) // Mopables will be cleaned anyways by the turf wash + continue + movable_content.wash(clean_types) + + for(var/mob/living/simple_animal/slime/M in T) + M.adjustToxLoss(rand(5,10)) /datum/reagent/space_cleaner/reaction_mob(mob/living/M, method=TOUCH, reac_volume) if(method == TOUCH || method == VAPOR) diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm index d92700c454b96..e81c0f8ed5803 100644 --- a/code/modules/research/destructive_analyzer.dm +++ b/code/modules/research/destructive_analyzer.dm @@ -137,7 +137,7 @@ Note: Must be placed within 3 tiles of the R&D Console var/user_mode_string = "" if(length(point_value)) user_mode_string = " for [json_encode(point_value)] points" - else if(loaded_item.custom_materials.len) + else if(length(loaded_item.custom_materials)) user_mode_string = " for material reclamation" var/choice = input("Are you sure you want to destroy [loaded_item][user_mode_string]?") in list("Proceed", "Cancel") if(choice != "Proceed") From 1d79f0474c8fd33e1a3dd677c6c399805ee4aac1 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Tue, 7 May 2024 04:13:49 -0500 Subject: [PATCH 05/36] Automatic changelog generation for PR #10916 [ci skip] --- html/changelogs/AutoChangeLog-pr-10916.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10916.yml diff --git a/html/changelogs/AutoChangeLog-pr-10916.yml b/html/changelogs/AutoChangeLog-pr-10916.yml new file mode 100644 index 0000000000000..588c30c397560 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10916.yml @@ -0,0 +1,4 @@ +author: EvilDragonfiend +delete-after: true +changes: + - bugfix: fixed some nulls From aa3dd539c2b5f35667fb5b51162e1d5831696074 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Tue, 7 May 2024 10:04:29 +0000 Subject: [PATCH 06/36] Automatic changelog compile [ci skip] --- html/changelog.html | 6 ++++++ html/changelogs/.all_changelog.yml | 3 +++ html/changelogs/AutoChangeLog-pr-10916.yml | 4 ---- 3 files changed, 9 insertions(+), 4 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-10916.yml diff --git a/html/changelog.html b/html/changelog.html index cbae7cf61644d..55283baf5eb7a 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,12 @@ -->
    +

    07 May 2024

    +

    EvilDragonfiend updated:

    + +

    04 May 2024

    XeonMations updated:

    GoonStation 13 Development Team From 9706946eef53d1a113ebfb70ac84fe33bb1b0801 Mon Sep 17 00:00:00 2001 From: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com> Date: Wed, 8 May 2024 17:31:49 +0900 Subject: [PATCH 13/36] simpler (#10637) --- code/modules/language/language.dm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/language/language.dm b/code/modules/language/language.dm index 4fc2dc5c94e4d..5e370146dc573 100644 --- a/code/modules/language/language.dm +++ b/code/modules/language/language.dm @@ -27,6 +27,9 @@ var/icon = 'icons/misc/language.dmi' var/icon_state = "popcorn" + // get_icon() proc will return a complete string rather than calling a proc every time. + var/fast_icon_span + /// Returns TRUE/FALSE based on seeing a language icon is validated to a given hearer in the parameter. /datum/language/proc/display_icon(atom/movable/hearer) // ghosts want to know how it is going. @@ -56,8 +59,10 @@ return TRUE /datum/language/proc/get_icon() - var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) - return sheet.icon_tag("language-[icon_state]") + if(!fast_icon_span) + var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/chat) + fast_icon_span = sheet.icon_tag("language-[icon_state]") + return fast_icon_span /datum/language/proc/get_random_name(gender, name_count=2, syllable_count=4, syllable_divisor=2) if(!syllables || !syllables.len) From 54b5931387ebcb686d0952b3334f59a9c01f7179 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 03:38:33 -0500 Subject: [PATCH 14/36] Automatic changelog generation for PR #10637 [ci skip] --- html/changelogs/AutoChangeLog-pr-10637.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10637.yml diff --git a/html/changelogs/AutoChangeLog-pr-10637.yml b/html/changelogs/AutoChangeLog-pr-10637.yml new file mode 100644 index 0000000000000..476214924d857 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10637.yml @@ -0,0 +1,4 @@ +author: EvilDragonfiend +delete-after: true +changes: + - code_imp: Improved textification of the language icon rendering in TGUI. From ec10994d16302baf1103b84109674f2dbb4c2ad0 Mon Sep 17 00:00:00 2001 From: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com> Date: Wed, 8 May 2024 17:33:29 +0900 Subject: [PATCH 15/36] Removes unused variables in job datums (#10686) * Removes unused variables * Minor fix --- code/__DEFINES/jobs.dm | 53 ------------------- code/controllers/subsystem/job.dm | 2 +- .../hivemind/spells/hivemind_shatter.dm | 9 +++- code/modules/jobs/job_types/ai.dm | 2 - code/modules/jobs/job_types/assistant.dm | 2 - .../jobs/job_types/atmospheric_technician.dm | 2 - code/modules/jobs/job_types/bartender.dm | 2 - code/modules/jobs/job_types/botanist.dm | 2 - code/modules/jobs/job_types/brig_physician.dm | 2 - code/modules/jobs/job_types/captain.dm | 2 - .../jobs/job_types/cargo_technician.dm | 2 - code/modules/jobs/job_types/chaplain.dm | 2 - code/modules/jobs/job_types/chemist.dm | 2 - code/modules/jobs/job_types/chief_engineer.dm | 2 - .../jobs/job_types/chief_medical_officer.dm | 2 - code/modules/jobs/job_types/clown.dm | 2 - code/modules/jobs/job_types/cook.dm | 2 - code/modules/jobs/job_types/curator.dm | 2 - code/modules/jobs/job_types/cyborg.dm | 2 - code/modules/jobs/job_types/deputy.dm | 2 - code/modules/jobs/job_types/detective.dm | 2 - .../jobs/job_types/exploration_team.dm | 2 - code/modules/jobs/job_types/geneticist.dm | 2 - code/modules/jobs/job_types/gimmick.dm | 10 ---- .../jobs/job_types/head_of_personnel.dm | 2 - .../jobs/job_types/head_of_security.dm | 2 - code/modules/jobs/job_types/janitor.dm | 2 - code/modules/jobs/job_types/lawyer.dm | 2 - code/modules/jobs/job_types/medical_doctor.dm | 2 - code/modules/jobs/job_types/mime.dm | 2 - code/modules/jobs/job_types/paramedic.dm | 2 - code/modules/jobs/job_types/quartermaster.dm | 2 - .../jobs/job_types/research_director.dm | 2 - code/modules/jobs/job_types/roboticist.dm | 2 - code/modules/jobs/job_types/scientist.dm | 2 - .../jobs/job_types/security_officer.dm | 2 - code/modules/jobs/job_types/shaft_miner.dm | 2 - .../jobs/job_types/station_engineer.dm | 2 - code/modules/jobs/job_types/virologist.dm | 2 - code/modules/jobs/job_types/warden.dm | 2 - 40 files changed, 9 insertions(+), 137 deletions(-) diff --git a/code/__DEFINES/jobs.dm b/code/__DEFINES/jobs.dm index e17898c697df3..7cacff57a2a97 100644 --- a/code/__DEFINES/jobs.dm +++ b/code/__DEFINES/jobs.dm @@ -1,56 +1,3 @@ - -#define ENGSEC (1<<0) - -#define CAPTAIN (1<<0) -#define HOS (1<<1) -#define WARDEN (1<<2) -#define DETECTIVE (1<<3) -#define OFFICER (1<<4) -#define CHIEF (1<<5) -#define ENGINEER (1<<6) -#define ATMOSTECH (1<<7) -#define ROBOTICIST (1<<8) -#define AI_JF (1<<9) -#define CYBORG (1<<10) -#define BRIG_PHYS (1<<11) -#define DEPUTY (1<<12) - - -#define MEDSCI (1<<1) - -#define RD_JF (1<<0) -#define SCIENTIST (1<<1) -#define EXPLORATION_CREW (1<<2) -#define CHEMIST (1<<3) -#define CMO_JF (1<<4) -#define DOCTOR (1<<5) -#define GENETICIST (1<<6) -#define VIROLOGIST (1<<7) -#define PARAMEDIC (1<<8) - - -#define CIVILIAN (1<<2) - -#define HOP (1<<0) -#define BARTENDER (1<<1) -#define BOTANIST (1<<2) -#define COOK (1<<3) -#define JANITOR (1<<4) -#define CURATOR (1<<5) -#define QUARTERMASTER (1<<6) -#define CARGOTECH (1<<7) -#define MINER (1<<8) -#define LAWYER (1<<9) -#define CHAPLAIN (1<<10) -#define CLOWN (1<<11) -#define MIME (1<<12) -#define ASSISTANT (1<<13) -#define GIMMICK (1<<14) -#define BARBER (1<<15) -#define MAGICIAN (1<<16) -#define PSYCHIATRIST (1<<17) -#define CELEBRITY (1<<18) - #define JOB_AVAILABLE 0 #define JOB_UNAVAILABLE_GENERIC 1 #define JOB_UNAVAILABLE_BANNED 2 diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index e01c21f14777c..9b32998314a0b 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -594,7 +594,7 @@ SUBSYSTEM_DEF(job) /datum/controller/subsystem/job/proc/LoadJobs() var/jobstext = rustg_file_read("[global.config.directory]/jobs.txt") for(var/datum/job/J in occupations) - if(J.flag == GIMMICK || J.gimmick) //gimmick job slots are dependant on random maint + if(J.gimmick) //gimmick job slots are dependant on random maint continue var/regex/jobs = new("[J.title]=(-1|\\d+),(-1|\\d+)") if(jobs.Find(jobstext)) diff --git a/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm b/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm index d2851245c5e2e..a9c453361e46c 100644 --- a/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm +++ b/code/modules/antagonists/hivemind/spells/hivemind_shatter.dm @@ -5,6 +5,13 @@ charge_max = 1800 + var/static/list/special_roles // security roles + Captain are resistant against this spell + +/obj/effect/proc_holder/spell/target_hive/hive_shatter/Initialize(mapload) + . = ..() + if(!special_roles) + special_roles = GLOB.security_positions.Copy() + JOB_NAME_CAPTAIN + /obj/effect/proc_holder/spell/target_hive/hive_shatter/cast(list/targets, mob/living/user = usr) var/mob/living/carbon/human/target = targets[1] var/datum/antagonist/hivemind/hive = user.mind.has_antag_datum(/datum/antagonist/hivemind) @@ -14,7 +21,7 @@ return if(!hive.hivemembers) return - if(target.mind?.assigned_role in GLOB.security_positions || CAPTAIN) + if(target.mind?.assigned_role in special_roles) to_chat(user, "A subconsciously trained response barely protects [target.name]'s mind.") to_chat(target, "Powerful mental attacks strike out against us, our training allows us to barely overcome it.") return diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm index a2de112537f24..980d88fb20f54 100644 --- a/code/modules/jobs/job_types/ai.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -1,11 +1,9 @@ /datum/job/ai title = JOB_NAME_AI - flag = AI_JF description = "Follow your laws above all else, be the invisible eye that watches all." department_for_prefs = DEPT_BITFLAG_SILICON department_head_for_prefs = JOB_NAME_AI auto_deadmin_role_flags = DEADMIN_POSITION_SILICON - department_flag = ENGSEC faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/assistant.dm b/code/modules/jobs/job_types/assistant.dm index 3d3f12a2b4f78..94391df0f8349 100644 --- a/code/modules/jobs/job_types/assistant.dm +++ b/code/modules/jobs/job_types/assistant.dm @@ -3,7 +3,6 @@ Assistant */ /datum/job/assistant title = JOB_NAME_ASSISTANT - flag = ASSISTANT description = "Help out around the station or ask the Head of Personnel for an assignment. As the lowest-level position, expect to be treated like an intern most of the time." department_for_prefs = DEPT_BITFLAG_ASSISTANT supervisors = "absolutely everyone" @@ -18,7 +17,6 @@ Assistant access = list() //See /datum/job/assistant/get_access() minimal_access = list() //See /datum/job/assistant/get_access() - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = NONE // nothing is free for them payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_ASSISTANT) // Get a job. Job reassignment changes your paycheck now. Get over it. diff --git a/code/modules/jobs/job_types/atmospheric_technician.dm b/code/modules/jobs/job_types/atmospheric_technician.dm index d5d304c26a998..3621a9340c799 100644 --- a/code/modules/jobs/job_types/atmospheric_technician.dm +++ b/code/modules/jobs/job_types/atmospheric_technician.dm @@ -1,6 +1,5 @@ /datum/job/atmospheric_technician title = JOB_NAME_ATMOSPHERICTECHNICIAN - flag = ATMOSTECH description = "Maintain the air distribution loop to ensure adequate atmospheric conditions in the station, re-pressurize areas after hull breaches, and be a firefighter if necessary." department_for_prefs = DEPT_BITFLAG_ENG department_head = list(JOB_NAME_CHIEFENGINEER) @@ -18,7 +17,6 @@ ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_ATMOSPHERICS, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) minimal_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS, ACCESS_CONSTRUCTION, ACCESS_MECH_ENGINE, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = ENGSEC departments = DEPT_BITFLAG_ENG bank_account_department = ACCOUNT_ENG_BITFLAG payment_per_department = list(ACCOUNT_ENG_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index 8b19676851e10..b1dc21a83cf25 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -1,6 +1,5 @@ /datum/job/bartender title = JOB_NAME_BARTENDER - flag = BARTENDER description = "Brew a variety of drinks for the crew, cooperate with Botany and Chemistry for more exotic recipes, create a comfy atmosphere in your Bar." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -16,7 +15,6 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE) minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM, ACCESS_THEATRE, ACCESS_WEAPONS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/botanist.dm b/code/modules/jobs/job_types/botanist.dm index 3b6dc26ab0a23..0b93cdb506f14 100644 --- a/code/modules/jobs/job_types/botanist.dm +++ b/code/modules/jobs/job_types/botanist.dm @@ -1,6 +1,5 @@ /datum/job/botanist title = JOB_NAME_BOTANIST - flag = BOTANIST description = "Grow plants for the Kitchen, Bar and Chemistry. Sell cannabis and other goods to the crew. Clone people with Replica Pods when needed." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/brig_physician.dm b/code/modules/jobs/job_types/brig_physician.dm index 5aac9dcf0b14d..ac5bc779b8fdb 100644 --- a/code/modules/jobs/job_types/brig_physician.dm +++ b/code/modules/jobs/job_types/brig_physician.dm @@ -1,6 +1,5 @@ /datum/job/brig_physician title = JOB_NAME_BRIGPHYSICIAN - flag = BRIG_PHYS description = "Tend to the health of Security Officers and Prisoners, help out at Medbay if you have free time." department_for_prefs = DEPT_BITFLAG_SEC department_head_for_prefs = JOB_NAME_HEADOFSECURITY @@ -18,7 +17,6 @@ access = list(ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_MEDICAL, ACCESS_BRIGPHYS, ACCESS_MECH_MEDICAL) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_MEDICAL, ACCESS_BRIGPHYS, ACCESS_MECH_MEDICAL) - department_flag = ENGSEC departments = DEPT_BITFLAG_MED | DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/captain.dm b/code/modules/jobs/job_types/captain.dm index 749a7c719e0ba..e6b52c2f6bb10 100755 --- a/code/modules/jobs/job_types/captain.dm +++ b/code/modules/jobs/job_types/captain.dm @@ -1,6 +1,5 @@ /datum/job/captain title = JOB_NAME_CAPTAIN - flag = CAPTAIN description = "Supreme leader of the station, oversee and appoint missing heads of staff, manage alert levels and contact CentCom if needed. Don't forget to secure the nuclear authentication disk." department_for_prefs = DEPT_BITFLAG_CAPTAIN department_head_for_prefs = JOB_NAME_CAPTAIN @@ -22,7 +21,6 @@ access = list() //See get_access() minimal_access = list() //See get_access() - department_flag = ENGSEC departments = DEPT_BITFLAG_COM bank_account_department = ACCOUNT_SEC_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index fb71ea18b7d4d..f20abfcefed13 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -1,6 +1,5 @@ /datum/job/cargo_technician title = JOB_NAME_CARGOTECHNICIAN - flag = CARGOTECH description = "Push crates around, deliver bounty papers and mail around the station, make use of the Disposals network to make your life easier." department_for_prefs = DEPT_BITFLAG_CAR department_head_for_prefs = JOB_NAME_QUARTERMASTER @@ -16,7 +15,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_CARGO, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CAR bank_account_department = ACCOUNT_CAR_BITFLAG payment_per_department = list(ACCOUNT_CAR_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/chaplain.dm b/code/modules/jobs/job_types/chaplain.dm index 6212934aa20ef..d1f59bd514a11 100644 --- a/code/modules/jobs/job_types/chaplain.dm +++ b/code/modules/jobs/job_types/chaplain.dm @@ -1,6 +1,5 @@ /datum/job/chaplain title = JOB_NAME_CHAPLAIN - flag = CHAPLAIN description = "Tend to the spiritual well-being of the crew, conduct rites and rituals in your Chapel, exorcise evil spirits and other supernatural beings." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) minimal_access = list(ACCESS_MORGUE, ACCESS_CHAPEL_OFFICE, ACCESS_CREMATORIUM, ACCESS_THEATRE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/chemist.dm b/code/modules/jobs/job_types/chemist.dm index b2302e2d1fc0c..1c241b1149322 100644 --- a/code/modules/jobs/job_types/chemist.dm +++ b/code/modules/jobs/job_types/chemist.dm @@ -1,6 +1,5 @@ /datum/job/chemist title = JOB_NAME_CHEMIST - flag = CHEMIST description = "Create healing medicines and fullfill other requests when medicine isn't needed. Label everything you produce correctly to prevent confusion." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -16,7 +15,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/chief_engineer.dm b/code/modules/jobs/job_types/chief_engineer.dm index e58db3ce096a1..4f49591089a26 100644 --- a/code/modules/jobs/job_types/chief_engineer.dm +++ b/code/modules/jobs/job_types/chief_engineer.dm @@ -1,6 +1,5 @@ /datum/job/chief_engineer title = JOB_NAME_CHIEFENGINEER - flag = CHIEF description = "Oversee the engineers and atmospheric technicians, keep a watchful eye on the station's engine, gravity generator, and telecomms. Send your staff to repair hull breaches and damaged equipment as necessary." department_for_prefs = DEPT_BITFLAG_ENG auto_deadmin_role_flags = DEADMIN_POSITION_HEAD @@ -28,7 +27,6 @@ ACCESS_HEADS, ACCESS_CONSTRUCTION, ACCESS_SEC_DOORS, ACCESS_MINISAT, ACCESS_MECH_ENGINE, ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM, ACCESS_WEAPONS) - department_flag = ENGSEC departments = DEPT_BITFLAG_ENG | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_ENG_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/chief_medical_officer.dm b/code/modules/jobs/job_types/chief_medical_officer.dm index aa3495238eae6..7f51c48f7c529 100644 --- a/code/modules/jobs/job_types/chief_medical_officer.dm +++ b/code/modules/jobs/job_types/chief_medical_officer.dm @@ -1,6 +1,5 @@ /datum/job/chief_medical_officer title = JOB_NAME_CHIEFMEDICALOFFICER - flag = CMO_JF description = "Oversee paramedics, doctors, chemists, geneticists and the virologist. \ Ensure doctors and paramedicts are treating people in a timely manner, request medicine and other concoctions from chemists, \ and ensure geneticists and the virologist are following appropriate safety precautions while performing their research." @@ -28,7 +27,6 @@ ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_CMO, ACCESS_SURGERY, ACCESS_RC_ANNOUNCE, ACCESS_MECH_MEDICAL, ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS, ACCESS_BRIGPHYS, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_WEAPONS) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_MED_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index 724e67bfd328f..e597a2710eeb2 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -1,6 +1,5 @@ /datum/job/clown title = JOB_NAME_CLOWN - flag = CLOWN description = "Be the life and soul of the station. Entertain the crew with your hilarious jokes and silly antics, including slipping, pie-ing and honking around. Remember your job is to keep things funny for others, not just yourself." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_MINIMAL) diff --git a/code/modules/jobs/job_types/cook.dm b/code/modules/jobs/job_types/cook.dm index 640defbfed874..2d999e160b0bf 100644 --- a/code/modules/jobs/job_types/cook.dm +++ b/code/modules/jobs/job_types/cook.dm @@ -1,6 +1,5 @@ /datum/job/cook title = JOB_NAME_COOK - flag = COOK description = "Whip up meals for the crew, get creative and cook different meals, request ingredients from Botany and Cargo. Make sure everyone stays well fed and happy." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -16,7 +15,6 @@ access = list(ACCESS_HYDROPONICS, ACCESS_BAR, ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/curator.dm b/code/modules/jobs/job_types/curator.dm index ed143ce073cdd..df966170cd6ec 100644 --- a/code/modules/jobs/job_types/curator.dm +++ b/code/modules/jobs/job_types/curator.dm @@ -1,6 +1,5 @@ /datum/job/curator title = JOB_NAME_CURATOR - flag = CURATOR description = "Be in charge of maintaining the library, engage in peace talks with alien races using your knowledge of all languages, cosplay to your heart's content." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) minimal_access = list(ACCESS_LIBRARY, ACCESS_AUX_BASE, ACCESS_MINING_STATION) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/cyborg.dm b/code/modules/jobs/job_types/cyborg.dm index 3a46423433e18..0800c1916a325 100644 --- a/code/modules/jobs/job_types/cyborg.dm +++ b/code/modules/jobs/job_types/cyborg.dm @@ -1,11 +1,9 @@ /datum/job/cyborg title = JOB_NAME_CYBORG - flag = CYBORG description = "Follow your AI's interpretation of your laws above all else, or your own interpretation if not connected to an AI. Choose one of many modules with different tools, ask robotics for maintenance and upgrades." department_for_prefs = DEPT_BITFLAG_SILICON department_head_for_prefs = JOB_NAME_AI auto_deadmin_role_flags = DEADMIN_POSITION_SILICON - department_flag = ENGSEC faction = "Station" total_positions = 1 spawn_positions = 1 diff --git a/code/modules/jobs/job_types/deputy.dm b/code/modules/jobs/job_types/deputy.dm index f3c5b446e8415..9859642dd8236 100644 --- a/code/modules/jobs/job_types/deputy.dm +++ b/code/modules/jobs/job_types/deputy.dm @@ -1,6 +1,5 @@ /datum/job/deputy title = JOB_NAME_DEPUTY - flag = DEPUTY description = "Follow orders and do your best to maintain order on the station while following Space Law." department_for_prefs = DEPT_BITFLAG_SEC department_head = list(JOB_NAME_HEADOFSECURITY) @@ -18,7 +17,6 @@ access = list(ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_MAINT_TUNNELS, ACCESS_WEAPONS) - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/detective.dm b/code/modules/jobs/job_types/detective.dm index f5435da068fee..5ea9a51b62f4d 100644 --- a/code/modules/jobs/job_types/detective.dm +++ b/code/modules/jobs/job_types/detective.dm @@ -1,6 +1,5 @@ /datum/job/detective title = JOB_NAME_DETECTIVE - flag = DETECTIVE description = "Investigate crimes, solve murder mysteries, report your findings to the rest of Security." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY @@ -20,7 +19,6 @@ access = list(ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_BRIG, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/exploration_team.dm b/code/modules/jobs/job_types/exploration_team.dm index 3a3416b5c95e6..3737e1f1c275d 100644 --- a/code/modules/jobs/job_types/exploration_team.dm +++ b/code/modules/jobs/job_types/exploration_team.dm @@ -1,6 +1,5 @@ /datum/job/exploration_crew title = JOB_NAME_EXPLORATIONCREW - flag = EXPLORATION_CREW description = "Go out into space to complete different missions for loads of cash. Find and deliver back research disks for rare technologies." department_for_prefs = DEPT_BITFLAG_SCI department_head = list(JOB_NAME_RESEARCHDIRECTOR) @@ -18,7 +17,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_RESEARCH, ACCESS_EXPLORATION, ACCESS_TOX,ACCESS_TOX_STORAGE, ACCESS_MECH_SCIENCE, ACCESS_XENOBIOLOGY) minimal_access = list(ACCESS_RESEARCH, ACCESS_EXPLORATION, ACCESS_TOX, ACCESS_MECH_SCIENCE) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI bank_account_department = ACCOUNT_SCI_BITFLAG payment_per_department = list(ACCOUNT_SCI_ID = PAYCHECK_HARD) diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index ea648f5b184b5..bf65e9e84b027 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -1,6 +1,5 @@ /datum/job/geneticist title = JOB_NAME_GENETICIST - flag = GENETICIST description = "Discover useful mutations and give them out to the crew at CMO's approval, oversee Cloning, create humanized monkeys for replacement organs and bodyparts if needed." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -16,7 +15,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MECH_MEDICAL) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/gimmick.dm b/code/modules/jobs/job_types/gimmick.dm index 832f0d9ef4f33..7cc3f4d41cd4a 100644 --- a/code/modules/jobs/job_types/gimmick.dm +++ b/code/modules/jobs/job_types/gimmick.dm @@ -1,6 +1,5 @@ /datum/job/gimmick //gimmick var must be set to true for all gimmick jobs BUT the parent title = JOB_NAME_GIMMICK - flag = GIMMICK description = "Use your unique position to provide a service or entertain the crew." department_for_prefs = DEPT_BITFLAG_ASSISTANT show_in_prefs = TRUE @@ -14,7 +13,6 @@ access = list(ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_ASSISTANT) @@ -32,7 +30,6 @@ /datum/job/gimmick/barber title = JOB_NAME_BARBER - flag = BARBER description = "Give the crew haircuts using the variety of tools at your disposal, and provide less professional and cosmetic surgeries." department_head = list(JOB_NAME_HEADOFPERSONNEL) supervisors = "the head of personnel" @@ -44,7 +41,6 @@ access = list(ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MORGUE, ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_ASSISTANT) @@ -67,7 +63,6 @@ /datum/job/gimmick/stage_magician title = JOB_NAME_STAGEMAGICIAN - flag = MAGICIAN description = "Use your special tools to provide entertainment for the crew, show them than you can do more than simple parlor magic tricks." department_head = list(JOB_NAME_HEADOFPERSONNEL) supervisors = "the head of personnel" @@ -79,7 +74,6 @@ access = list(ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_THEATRE, ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_MINIMAL) @@ -108,7 +102,6 @@ /datum/job/gimmick/psychiatrist title = JOB_NAME_PSYCHIATRIST - flag = PSYCHIATRIST description = "Provide therapy to the crew through talk sessions, psychoactive drugs, and careful consideration of their thoughts and feelings. Provide mental evaluations for Security." department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) supervisors = "the chief medical officer" @@ -120,7 +113,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MEDICAL) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MEDICAL) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_EASY) @@ -141,7 +133,6 @@ /datum/job/gimmick/vip title = JOB_NAME_VIP - flag = CELEBRITY description = "Flaunt around your wealth, organize posh parties and other high life activities with your near-bottomless budget." gimmick = TRUE show_in_prefs = FALSE @@ -151,7 +142,6 @@ access = list(ACCESS_MAINT_TUNNELS) //Assistants with shitloads of money, what could go wrong? minimal_access = list(ACCESS_MAINT_TUNNELS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_VIP bank_account_department = ACCOUNT_VIP_BITFLAG payment_per_department = list(ACCOUNT_VIP_ID = PAYCHECK_VIP) //our power is being fucking rich diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index e4c2b236cdd84..78b0413af8c12 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -1,6 +1,5 @@ /datum/job/head_of_personnel title = JOB_NAME_HEADOFPERSONNEL - flag = HOP description = "Second in command on the station, oversee the crew assigned to service and cargo positions, handle department transfer requests by consulting relevant heads. Protect Ian at all costs." department_for_prefs = DEPT_BITFLAG_CAPTAIN department_head_for_prefs = JOB_NAME_CAPTAIN @@ -35,7 +34,6 @@ ACCESS_THEATRE, ACCESS_CHAPEL_OFFICE, ACCESS_LIBRARY, ACCESS_RESEARCH, ACCESS_MINING, ACCESS_VAULT, ACCESS_MINING_STATION, ACCESS_HOP, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_COM | DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/head_of_security.dm b/code/modules/jobs/job_types/head_of_security.dm index 620b326436696..0423e61e63666 100644 --- a/code/modules/jobs/job_types/head_of_security.dm +++ b/code/modules/jobs/job_types/head_of_security.dm @@ -1,6 +1,5 @@ /datum/job/head_of_security title = JOB_NAME_HEADOFSECURITY - flag = HOS description = "Oversee the members of security and ensure they follow Space Law. Deputize other crew members when the station is in need of additional protection." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_HEAD|DEADMIN_POSITION_SECURITY @@ -27,7 +26,6 @@ ACCESS_FORENSICS_LOCKERS, ACCESS_MORGUE, ACCESS_MAINT_TUNNELS, ACCESS_ALL_PERSONAL_LOCKERS, ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS) - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_SEC_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/janitor.dm b/code/modules/jobs/job_types/janitor.dm index 552e827768909..1f10677173cb5 100644 --- a/code/modules/jobs/job_types/janitor.dm +++ b/code/modules/jobs/job_types/janitor.dm @@ -1,6 +1,5 @@ /datum/job/janitor title = JOB_NAME_JANITOR - flag = JANITOR description = "Clean up vomit, trash, and other messes around the station. Put down signs to warn people of slipping hazards, and eradicate rodents when you find them. Keep the station clean and tidy." department_for_prefs = DEPT_BITFLAG_SRV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_JANITOR, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/lawyer.dm b/code/modules/jobs/job_types/lawyer.dm index 5eb9c3f3c3d30..e290bc11b3865 100644 --- a/code/modules/jobs/job_types/lawyer.dm +++ b/code/modules/jobs/job_types/lawyer.dm @@ -1,6 +1,5 @@ /datum/job/lawyer title = JOB_NAME_LAWYER - flag = LAWYER description = "Ensure Security follows Space Law and Standard Operating Procedure perfectly, represent your clients in trials and other legal troubles, make sure the crew is treated fairly by the men in red." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -16,7 +15,6 @@ access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) minimal_access = list(ACCESS_LAWYER, ACCESS_COURT, ACCESS_SEC_DOORS) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CIV bank_account_department = ACCOUNT_CIV_BITFLAG payment_per_department = list(ACCOUNT_CIV_ID = PAYCHECK_EASY) diff --git a/code/modules/jobs/job_types/medical_doctor.dm b/code/modules/jobs/job_types/medical_doctor.dm index 44ba5dd0715ef..b44cf72c7d612 100644 --- a/code/modules/jobs/job_types/medical_doctor.dm +++ b/code/modules/jobs/job_types/medical_doctor.dm @@ -1,6 +1,5 @@ /datum/job/medical_doctor title = JOB_NAME_MEDICALDOCTOR - flag = DOCTOR description = "Treat people of both minor wounds, serious injuries and resurrect them from the dead. Make use of surgeries and surgical tools, Chemistry's pills and patches, Virology's viruses and in dire cases, Genetics' cloning." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -16,7 +15,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/mime.dm b/code/modules/jobs/job_types/mime.dm index 9da99cc13a582..93d4615d27880 100644 --- a/code/modules/jobs/job_types/mime.dm +++ b/code/modules/jobs/job_types/mime.dm @@ -1,6 +1,5 @@ /datum/job/mime title = JOB_NAME_MIME - flag = MIME description = "Be the Clown's mute counterpart and arch nemesis. Conduct pantomimes and performances, create interesting situations with your mime powers. Remember your job is to keep things funny for others, not just yourself." department_for_prefs = DEPT_BITFLAG_CIV department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -15,7 +14,6 @@ access = list(ACCESS_THEATRE) minimal_access = list(ACCESS_THEATRE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_SRV bank_account_department = ACCOUNT_SRV_BITFLAG payment_per_department = list(ACCOUNT_SRV_ID = PAYCHECK_MINIMAL) diff --git a/code/modules/jobs/job_types/paramedic.dm b/code/modules/jobs/job_types/paramedic.dm index 5343de8394cdf..8d6e204094146 100644 --- a/code/modules/jobs/job_types/paramedic.dm +++ b/code/modules/jobs/job_types/paramedic.dm @@ -1,6 +1,5 @@ /datum/job/paramedic title = JOB_NAME_PARAMEDIC - flag = PARAMEDIC description = "Retrieve the gravely injured and dead people from around the station, deliver medicine for minor wounds, and keep a close eye on the Crew Monitor in your free time." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -17,7 +16,6 @@ minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MECH_MEDICAL, ACCESS_MAINT_TUNNELS, ACCESS_EVA, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_AUX_BASE) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 9417b5adec897..b2c698b4ea610 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -1,6 +1,5 @@ /datum/job/quartermaster title = JOB_NAME_QUARTERMASTER - flag = QUARTERMASTER description = "Oversee and direct cargo technicians to fulfill requests for supplies and keep the station well stocked, request funds from department budgets to cover costs, deny frivolous orders when money is tight, and sell anything the station doesn't need." department_for_prefs = DEPT_BITFLAG_CAR department_head = list(JOB_NAME_HEADOFPERSONNEL) @@ -18,7 +17,6 @@ access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE, ACCESS_EXPLORATION) minimal_access = list(ACCESS_MAINT_TUNNELS, ACCESS_MAILSORTING, ACCESS_CARGO, ACCESS_QM, ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MINERAL_STOREROOM, ACCESS_VAULT, ACCESS_AUX_BASE, ACCESS_EXPLORATION) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CAR bank_account_department = ACCOUNT_CAR_BITFLAG payment_per_department = list(ACCOUNT_CAR_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/research_director.dm b/code/modules/jobs/job_types/research_director.dm index 8bdb103bd55d6..5bdff2825aa28 100644 --- a/code/modules/jobs/job_types/research_director.dm +++ b/code/modules/jobs/job_types/research_director.dm @@ -1,6 +1,5 @@ /datum/job/research_director title = JOB_NAME_RESEARCHDIRECTOR - flag = RD_JF description = "Oversee the scientists and roboticists and keep up with their research projects, take care of any issues with the station's AI that may arise, ensure research is being prioritized in accordance with the needs of the station." department_for_prefs = DEPT_BITFLAG_SCI auto_deadmin_role_flags = DEADMIN_POSITION_HEAD @@ -30,7 +29,6 @@ ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MINERAL_STOREROOM, ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK, ACCESS_AUX_BASE, ACCESS_RD_SERVER, ACCESS_WEAPONS) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI | DEPT_BITFLAG_COM bank_account_department = ACCOUNT_SCI_BITFLAG | ACCOUNT_COM_BITFLAG payment_per_department = list( diff --git a/code/modules/jobs/job_types/roboticist.dm b/code/modules/jobs/job_types/roboticist.dm index b3ffb9e9cdb02..b56f510c08459 100644 --- a/code/modules/jobs/job_types/roboticist.dm +++ b/code/modules/jobs/job_types/roboticist.dm @@ -1,6 +1,5 @@ /datum/job/roboticist title = JOB_NAME_ROBOTICIST - flag = ROBOTICIST description = "Create bots and utility mechs for helping out around the station. Construct war machines by the request of the Captain or Head of Security. Make new Cyborgs, give augmentations and implants to crew members." department_for_prefs = DEPT_BITFLAG_SCI department_head = list(JOB_NAME_RESEARCHDIRECTOR) @@ -19,7 +18,6 @@ minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MECH_SCIENCE, ACCESS_MECH_MINING, ACCESS_MECH_MEDICAL, ACCESS_MECH_ENGINE, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI bank_account_department = ACCOUNT_SCI_BITFLAG payment_per_department = list(ACCOUNT_SCI_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/scientist.dm b/code/modules/jobs/job_types/scientist.dm index b20218a57c5db..e132000e0d34e 100644 --- a/code/modules/jobs/job_types/scientist.dm +++ b/code/modules/jobs/job_types/scientist.dm @@ -1,6 +1,5 @@ /datum/job/scientist title = JOB_NAME_SCIENTIST - flag = SCIENTIST description = "Engage in Xenobiology, Xenoarchaeology, Nanites, and Toxins; research new technology; and upgrade the machine parts around the station." department_for_prefs = DEPT_BITFLAG_SCI department_head = list(JOB_NAME_RESEARCHDIRECTOR) @@ -19,7 +18,6 @@ minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MECH_SCIENCE, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE, ACCESS_EXPLORATION) - department_flag = MEDSCI departments = DEPT_BITFLAG_SCI bank_account_department = ACCOUNT_SCI_BITFLAG payment_per_department = list(ACCOUNT_SCI_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm index d545b262d7e8a..fae1ad7d62609 100644 --- a/code/modules/jobs/job_types/security_officer.dm +++ b/code/modules/jobs/job_types/security_officer.dm @@ -1,6 +1,5 @@ /datum/job/security_officer title = JOB_NAME_SECURITYOFFICER - flag = OFFICER description = "Follow Space Law, patrol the station, arrest criminals and bring them to the Brig." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY @@ -22,7 +21,6 @@ minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MECH_SECURITY, ACCESS_MINERAL_STOREROOM) // See /datum/job/security_officer/get_access() - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_HARD) diff --git a/code/modules/jobs/job_types/shaft_miner.dm b/code/modules/jobs/job_types/shaft_miner.dm index 4867b9f058759..5839ba71cac2e 100644 --- a/code/modules/jobs/job_types/shaft_miner.dm +++ b/code/modules/jobs/job_types/shaft_miner.dm @@ -1,6 +1,5 @@ /datum/job/shaft_miner title = JOB_NAME_SHAFTMINER - flag = MINER description = "Collect resources for the station, redeem them for points, and purchase gear to collect even more ores." department_for_prefs = DEPT_BITFLAG_CAR department_head_for_prefs = JOB_NAME_QUARTERMASTER @@ -18,7 +17,6 @@ minimal_access = list(ACCESS_MINING, ACCESS_MECH_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = CIVILIAN departments = DEPT_BITFLAG_CAR bank_account_department = ACCOUNT_CAR_BITFLAG payment_per_department = list(ACCOUNT_CAR_ID = PAYCHECK_HARD) diff --git a/code/modules/jobs/job_types/station_engineer.dm b/code/modules/jobs/job_types/station_engineer.dm index cd14410c3a887..91f6a312ad6da 100644 --- a/code/modules/jobs/job_types/station_engineer.dm +++ b/code/modules/jobs/job_types/station_engineer.dm @@ -1,6 +1,5 @@ /datum/job/station_engineer title = JOB_NAME_STATIONENGINEER - flag = ENGINEER description = "Ensure the station has an adequate power supply, repair and build new machinery, repair wiring chewed up by mice." department_for_prefs = DEPT_BITFLAG_ENG department_head = list(JOB_NAME_CHIEFENGINEER) @@ -20,7 +19,6 @@ minimal_access = list(ACCESS_ENGINE, ACCESS_ENGINE_EQUIP, ACCESS_TECH_STORAGE, ACCESS_MAINT_TUNNELS, ACCESS_MECH_ENGINE, ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM, ACCESS_AUX_BASE) - department_flag = ENGSEC departments = DEPT_BITFLAG_ENG bank_account_department = ACCOUNT_ENG_BITFLAG payment_per_department = list(ACCOUNT_ENG_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/virologist.dm b/code/modules/jobs/job_types/virologist.dm index c3d90493f9bd2..567af28073c00 100644 --- a/code/modules/jobs/job_types/virologist.dm +++ b/code/modules/jobs/job_types/virologist.dm @@ -1,6 +1,5 @@ /datum/job/virologist title = JOB_NAME_VIROLOGIST - flag = VIROLOGIST description = "Collect virus samples from dormant viruses, old blood, and crusty vomit from around the station, isolate the symptoms and use them to create useful healing viruses for the crew." department_for_prefs = DEPT_BITFLAG_MED department_head = list(JOB_NAME_CHIEFMEDICALOFFICER) @@ -17,7 +16,6 @@ access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CHEMISTRY, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MECH_MEDICAL, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS) - department_flag = MEDSCI departments = DEPT_BITFLAG_MED bank_account_department = ACCOUNT_MED_BITFLAG payment_per_department = list(ACCOUNT_MED_ID = PAYCHECK_MEDIUM) diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm index a51c6488ef30d..d81ada3d53d9d 100644 --- a/code/modules/jobs/job_types/warden.dm +++ b/code/modules/jobs/job_types/warden.dm @@ -1,6 +1,5 @@ /datum/job/warden title = JOB_NAME_WARDEN - flag = WARDEN description = "Oversee prisoners in the brig and guard the armory. Hand out equipment when necessary and ensure it is returned after threats have been contained." department_for_prefs = DEPT_BITFLAG_SEC auto_deadmin_role_flags = DEADMIN_POSITION_SECURITY @@ -20,7 +19,6 @@ access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_BRIG, ACCESS_BRIGPHYS, ACCESS_ARMORY,ACCESS_COURT, ACCESS_MECH_SECURITY, ACCESS_MAINT_TUNNELS, ACCESS_MORGUE, ACCESS_WEAPONS, ACCESS_FORENSICS_LOCKERS, ACCESS_MINERAL_STOREROOM) minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_SEC_RECORDS, ACCESS_BRIG, ACCESS_BRIGPHYS, ACCESS_ARMORY, ACCESS_MECH_SECURITY, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_MINERAL_STOREROOM) // See /datum/job/warden/get_access() - department_flag = ENGSEC departments = DEPT_BITFLAG_SEC bank_account_department = ACCOUNT_SEC_BITFLAG payment_per_department = list(ACCOUNT_SEC_ID = PAYCHECK_HARD) From a335d3332fccce8a2c5cd54510e43570bf8eefa4 Mon Sep 17 00:00:00 2001 From: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com> Date: Wed, 8 May 2024 17:35:33 +0900 Subject: [PATCH 16/36] religion code clean up (#10689) --- beestation.dme | 13 +- code/modules/religion/_religion_sects.dm | 123 +++ code/modules/religion/_religion_structures.dm | 71 ++ code/modules/religion/_rites.dm | 78 ++ code/modules/religion/religion_sects.dm | 359 ------- code/modules/religion/religion_structures.dm | 216 ---- code/modules/religion/rites.dm | 975 ------------------ code/modules/religion/sects/candle_sect.dm | 153 +++ code/modules/religion/sects/carp_sect.dm | 133 +++ code/modules/religion/sects/necro_sect.dm | 273 +++++ code/modules/religion/sects/plant_sect.dm | 240 +++++ code/modules/religion/sects/puritan_sect.dm | 7 + code/modules/religion/sects/shadow_sect.dm | 303 ++++++ code/modules/religion/sects/techno_sect.dm | 202 ++++ 14 files changed, 1593 insertions(+), 1553 deletions(-) create mode 100644 code/modules/religion/_religion_sects.dm create mode 100644 code/modules/religion/_religion_structures.dm create mode 100644 code/modules/religion/_rites.dm delete mode 100644 code/modules/religion/religion_sects.dm delete mode 100644 code/modules/religion/religion_structures.dm delete mode 100644 code/modules/religion/rites.dm create mode 100644 code/modules/religion/sects/candle_sect.dm create mode 100644 code/modules/religion/sects/carp_sect.dm create mode 100644 code/modules/religion/sects/necro_sect.dm create mode 100644 code/modules/religion/sects/plant_sect.dm create mode 100644 code/modules/religion/sects/puritan_sect.dm create mode 100644 code/modules/religion/sects/shadow_sect.dm create mode 100644 code/modules/religion/sects/techno_sect.dm diff --git a/beestation.dme b/beestation.dme index 99c4fe7ff66d5..cbaa0bef1e8b1 100644 --- a/beestation.dme +++ b/beestation.dme @@ -3684,9 +3684,16 @@ #include "code\modules\recycling\disposal\pipe.dm" #include "code\modules\recycling\disposal\pipe_sorting.dm" #include "code\modules\relay\relay.dm" -#include "code\modules\religion\religion_sects.dm" -#include "code\modules\religion\religion_structures.dm" -#include "code\modules\religion\rites.dm" +#include "code\modules\religion\_religion_sects.dm" +#include "code\modules\religion\_religion_structures.dm" +#include "code\modules\religion\_rites.dm" +#include "code\modules\religion\sects\candle_sect.dm" +#include "code\modules\religion\sects\carp_sect.dm" +#include "code\modules\religion\sects\necro_sect.dm" +#include "code\modules\religion\sects\plant_sect.dm" +#include "code\modules\religion\sects\puritan_sect.dm" +#include "code\modules\religion\sects\shadow_sect.dm" +#include "code\modules\religion\sects\techno_sect.dm" #include "code\modules\requests\request.dm" #include "code\modules\requests\request_manager.dm" #include "code\modules\research\designs.dm" diff --git a/code/modules/religion/_religion_sects.dm b/code/modules/religion/_religion_sects.dm new file mode 100644 index 0000000000000..d9290a9aa151d --- /dev/null +++ b/code/modules/religion/_religion_sects.dm @@ -0,0 +1,123 @@ +/** + * # Religious Sects + * + * Religious Sects are a way to convert the fun of having an active 'god' (admin) to code-mechanics so you aren't having to press adminwho. + * + * Sects are not meant to overwrite the fun of choosing a custom god/religion, but meant to enhance it. + * The idea is that Space Jesus (or whoever you worship) can be an evil bloodgod who takes the lifeforce out of people, a nature lover, or all things righteous and good. You decide! + * + */ +/datum/religion_sect + /// Name of the religious sect + var/name = "Religious Sect Base Type" + /// Flavorful quote given about the sect, used in tgui + var/quote = "Hail Coderbus! Coderbus #1! Fuck the playerbase!" + /// Opening message when someone gets converted + var/desc = "Oh My! What Do We Have Here?!!?!?!?" + /// Tgui icon used by this sect - https://fontawesome.com/icons/ + var/tgui_icon = "bug" + /// holder for alignments. + var/alignment = ALIGNMENT_GOOD + /// Does this require something before being available as an option? + var/starter = TRUE + /// species traits that block you from picking + var/invalidating_qualities = NONE + /// The Sect's 'Mana' + var/favor = 0 //MANA! + /// The max amount of favor the sect can have + var/max_favor = 1000 + /// The default value for an item that can be sacrificed + var/default_item_favor = 5 + /// Turns into 'desired_items_typecache', and is optionally assoc'd to sacrifice instructions if needed. + var/list/desired_items + /// Autopopulated by `desired_items` + var/list/desired_items_typecache + /// Lists of rites by type. Converts itself into a list of rites with "name - desc (favor_cost)" = type + var/list/rites_list + /// Changes the Altar of Gods icon + var/altar_icon + /// Changes the Altar of Gods icon_state + var/altar_icon_state + /// Currently Active (non-deleted) rites + var/list/active_rites + /// Whether the structure has CANDLE OVERLAYS! + var/candle_overlay = TRUE + /// Whether the altar of the gods is anchored + var/altar_anchored = TRUE + +/datum/religion_sect/proc/is_available(mob/user) + return TRUE // basically all available + +/datum/religion_sect/New() + . = ..() + if(desired_items) + desired_items_typecache = typecacheof(desired_items) + +/// Activates once selected +/datum/religion_sect/proc/on_select() + SHOULD_CALL_PARENT(TRUE) + SSblackbox.record_feedback("text", "sect_chosen", 1, name) + +/// Activates once selected and on newjoins, oriented around people who become holy. +/datum/religion_sect/proc/on_conversion(mob/living/chap) + SHOULD_CALL_PARENT(TRUE) + to_chat(chap, "\"[quote]\"") + to_chat(chap, "[desc]") + +/// Returns TRUE if the item can be sacrificed. Can be modified to fit item being tested as well as person offering. Returning TRUE will stop the attackby sequence and proceed to on_sacrifice. +/datum/religion_sect/proc/can_sacrifice(obj/item/I, mob/living/chap) + . = TRUE + if(chap.mind.holy_role == HOLY_ROLE_DEACON) + to_chat(chap, "You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.") + return + if(!is_type_in_typecache(I,desired_items_typecache)) + return FALSE + +/// Activates when the sect sacrifices an item. This proc has NO bearing on the attackby sequence of other objects when used in conjunction with the religious_tool component. +/datum/religion_sect/proc/on_sacrifice(obj/item/I, mob/living/chap) + return adjust_favor(default_item_favor,chap) + +/// Returns a description for religious tools +/datum/religion_sect/proc/tool_examine(mob/living/holy_creature) + return "You are currently at [round(favor)] favor with [GLOB.deity]." + +/// Adjust Favor by a certain amount. Can provide optional features based on a user. Returns actual amount added/removed +/datum/religion_sect/proc/adjust_favor(amount = 0, mob/living/chap) + . = amount + if(favor + amount < 0) + . = favor //if favor = 5 and we want to subtract 10, we'll only be able to subtract 5 + if((favor + amount > max_favor)) + . = (max_favor-favor) //if favor = 5 and we want to add 10 with a max of 10, we'll only be able to add 5 + favor = clamp(0,max_favor, favor+amount) + +/// Sets favor to a specific amount. Can provide optional features based on a user. +/datum/religion_sect/proc/set_favor(amount = 0, mob/living/chap) + favor = clamp(0,max_favor,amount) + return favor + +/// Activates when an individual uses a rite. Can provide different/additional benefits depending on the user. +/datum/religion_sect/proc/on_riteuse(mob/living/user, atom/religious_tool) + +/// Replaces the bible's bless mechanic. Return TRUE if you want to not do the brain hit. +/datum/religion_sect/proc/sect_bless(mob/living/target, mob/living/chap) + if(!ishuman(target)) + return FALSE + var/mob/living/carbon/human/blessed = target + for(var/obj/item/bodypart/bodypart as anything in blessed.bodyparts) + if(!IS_ORGANIC_LIMB(bodypart)) + to_chat(chap, "[GLOB.deity] refuses to heal this metallic taint!") + return TRUE + + var/heal_amt = 10 + var/list/hurt_limbs = blessed.get_damaged_bodyparts(1, 1, null, BODYTYPE_ORGANIC) + + if(hurt_limbs.len) + for(var/X in hurt_limbs) + var/obj/item/bodypart/affecting = X + if(affecting.heal_damage(heal_amt, heal_amt, null, BODYTYPE_ORGANIC)) + blessed.update_damage_overlays() + blessed.visible_message("[chap] heals [blessed] with the power of [GLOB.deity]!") + to_chat(blessed, "May the power of [GLOB.deity] compel you to be healed!") + playsound(chap, "punch", 25, TRUE, -1) + SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE diff --git a/code/modules/religion/_religion_structures.dm b/code/modules/religion/_religion_structures.dm new file mode 100644 index 0000000000000..897c11faae179 --- /dev/null +++ b/code/modules/religion/_religion_structures.dm @@ -0,0 +1,71 @@ +/obj/structure/altar_of_gods + name = "\improper Altar of the Gods" + desc = "An altar which allows the head of the church to choose a sect of religious teachings as well as provide sacrifices to earn favor." + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "convertaltar" + density = TRUE + anchored = TRUE + layer = TABLE_LAYER + pass_flags_self = LETPASSTHROW + can_buckle = TRUE + buckle_lying = 90 //we turn to you! + resistance_flags = INDESTRUCTIBLE + ///Avoids having to check global everytime by referencing it locally. + var/datum/religion_sect/sect_to_altar + +/obj/structure/altar_of_gods/Initialize(mapload) + . = ..() + reflect_sect_in_icons() + AddElement(/datum/element/climbable) + +/obj/structure/altar_of_gods/ComponentInitialize() + . = ..() + AddComponent(/datum/component/religious_tool, ALL, FALSE, CALLBACK(src, PROC_REF(reflect_sect_in_icons))) + +/obj/structure/altar_of_gods/attack_hand(mob/living/user) + if(!Adjacent(user) || !user.pulling) + return ..() + if(!isliving(user.pulling)) + return ..() + var/mob/living/pushed_mob = user.pulling + if(pushed_mob.buckled) + to_chat(user, "[pushed_mob] is buckled to [pushed_mob.buckled]!") + return ..() + to_chat(user,"Only the faithful may control the disposition of [src]!") + return + anchored = !anchored + if(GLOB.religious_sect) + GLOB.religious_sect.altar_anchored = anchored //Having more than one altar of the gods is only possible through adminbus so this should screw with normal gameplay + user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") + playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) + user.do_attack_animation(src) + return + if(I.tool_behaviour == TOOL_WRENCH) + return + return ..() + + +/obj/structure/altar_of_gods/proc/reflect_sect_in_icons() + if(GLOB.religious_sect) + sect_to_altar = GLOB.religious_sect + if(sect_to_altar.altar_icon) + icon = sect_to_altar.altar_icon + if(sect_to_altar.altar_icon_state) + icon_state = sect_to_altar.altar_icon_state + +/obj/structure/destructible/religion + density = TRUE + anchored = FALSE + icon = 'icons/obj/religion.dmi' + light_power = 2 + var/cooldowntime = 0 + break_sound = 'sound/effects/glassbr2.ogg' diff --git a/code/modules/religion/_rites.dm b/code/modules/religion/_rites.dm new file mode 100644 index 0000000000000..010a8c59c04ef --- /dev/null +++ b/code/modules/religion/_rites.dm @@ -0,0 +1,78 @@ +/datum/religion_rites + /// name of the religious rite + var/name = "religious rite" + /// Description of the religious rite + var/desc = "immm gonna rooon" + /// length it takes to complete the ritual + var/ritual_length = (10 SECONDS) //total length it'll take + /// list of invocations said (strings) throughout the rite + var/list/ritual_invocations //strings that are by default said evenly throughout the rite + /// message when you invoke + var/invoke_msg + var/favor_cost = 0 + /// does the altar auto-delete the rite + var/auto_delete = TRUE + +/datum/religion_rites/New() + . = ..() + if(!GLOB?.religious_sect) + return + LAZYADD(GLOB.religious_sect.active_rites, src) + +/datum/religion_rites/Destroy() + if(!GLOB?.religious_sect) + return + LAZYREMOVE(GLOB.religious_sect.active_rites, src) + return ..() + +/datum/religion_rites/proc/can_afford(mob/living/user) + if(GLOB.religious_sect?.favor < favor_cost) + to_chat(user, "This rite requires more favor!") + return FALSE + return TRUE + +///Called to perform the invocation of the rite, with args being the performer and the altar where it's being performed. Maybe you want it to check for something else? +/datum/religion_rites/proc/perform_rite(mob/living/user, atom/religious_tool) + if(!can_afford(user)) + return FALSE + var/turf/T = get_turf(religious_tool) + if(!T.is_holy()) + to_chat(user, "The altar can only function in a holy area!") + return FALSE + if(!GLOB.religious_sect.altar_anchored) + to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") + return FALSE + to_chat(user, "You begin to perform the rite of [name]...") + if(!ritual_invocations) + if(do_after(user, target = user, delay = ritual_length)) + return TRUE + return FALSE + var/first_invoke = TRUE + for(var/i in ritual_invocations) + if(!GLOB.religious_sect.altar_anchored) + to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") + return FALSE + if(first_invoke) //instant invoke + user.say(i) + first_invoke = FALSE + continue + if(!length(ritual_invocations)) //we divide so we gotta protect + return FALSE + if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) + return FALSE + user.say(i) + if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) //because we start at 0 and not the first fraction in invocations, we still have another fraction of ritual_length to complete + return FALSE + if(!GLOB.religious_sect.altar_anchored) + to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") + return FALSE + if(invoke_msg) + user.say(invoke_msg) + return TRUE + + +///Does the thing if the rite was successfully performed. return value denotes that the effect successfully (IE a harm rite does harm) +/datum/religion_rites/proc/invoke_effect(mob/living/user, atom/religious_tool) + SHOULD_CALL_PARENT(TRUE) + GLOB.religious_sect.on_riteuse(user,religious_tool) + return TRUE diff --git a/code/modules/religion/religion_sects.dm b/code/modules/religion/religion_sects.dm deleted file mode 100644 index c773691fe9b8e..0000000000000 --- a/code/modules/religion/religion_sects.dm +++ /dev/null @@ -1,359 +0,0 @@ -/** - * # Religious Sects - * - * Religious Sects are a way to convert the fun of having an active 'god' (admin) to code-mechanics so you aren't having to press adminwho. - * - * Sects are not meant to overwrite the fun of choosing a custom god/religion, but meant to enhance it. - * The idea is that Space Jesus (or whoever you worship) can be an evil bloodgod who takes the lifeforce out of people, a nature lover, or all things righteous and good. You decide! - * - */ -/datum/religion_sect - /// Name of the religious sect - var/name = "Religious Sect Base Type" - /// Flavorful quote given about the sect, used in tgui - var/quote = "Hail Coderbus! Coderbus #1! Fuck the playerbase!" - /// Opening message when someone gets converted - var/desc = "Oh My! What Do We Have Here?!!?!?!?" - /// Tgui icon used by this sect - https://fontawesome.com/icons/ - var/tgui_icon = "bug" - /// holder for alignments. - var/alignment = ALIGNMENT_GOOD - /// Does this require something before being available as an option? - var/starter = TRUE - /// species traits that block you from picking - var/invalidating_qualities = NONE - /// The Sect's 'Mana' - var/favor = 0 //MANA! - /// The max amount of favor the sect can have - var/max_favor = 1000 - /// The default value for an item that can be sacrificed - var/default_item_favor = 5 - /// Turns into 'desired_items_typecache', and is optionally assoc'd to sacrifice instructions if needed. - var/list/desired_items - /// Autopopulated by `desired_items` - var/list/desired_items_typecache - /// Lists of rites by type. Converts itself into a list of rites with "name - desc (favor_cost)" = type - var/list/rites_list - /// Changes the Altar of Gods icon - var/altar_icon - /// Changes the Altar of Gods icon_state - var/altar_icon_state - /// Currently Active (non-deleted) rites - var/list/active_rites - /// Whether the structure has CANDLE OVERLAYS! - var/candle_overlay = TRUE - /// Whether the altar of the gods is anchored - var/altar_anchored = TRUE - -/datum/religion_sect/proc/is_available(mob/user) - return TRUE // basically all available - -/datum/religion_sect/New() - . = ..() - if(desired_items) - desired_items_typecache = typecacheof(desired_items) - -/// Activates once selected -/datum/religion_sect/proc/on_select() - SHOULD_CALL_PARENT(TRUE) - SSblackbox.record_feedback("text", "sect_chosen", 1, name) - -/// Activates once selected and on newjoins, oriented around people who become holy. -/datum/religion_sect/proc/on_conversion(mob/living/chap) - SHOULD_CALL_PARENT(TRUE) - to_chat(chap, "\"[quote]\"") - to_chat(chap, "[desc]") - -/// Returns TRUE if the item can be sacrificed. Can be modified to fit item being tested as well as person offering. Returning TRUE will stop the attackby sequence and proceed to on_sacrifice. -/datum/religion_sect/proc/can_sacrifice(obj/item/I, mob/living/chap) - . = TRUE - if(chap.mind.holy_role == HOLY_ROLE_DEACON) - to_chat(chap, "You are merely a deacon of [GLOB.deity], and therefore cannot perform rites.") - return - if(!is_type_in_typecache(I,desired_items_typecache)) - return FALSE - -/// Activates when the sect sacrifices an item. This proc has NO bearing on the attackby sequence of other objects when used in conjunction with the religious_tool component. -/datum/religion_sect/proc/on_sacrifice(obj/item/I, mob/living/chap) - return adjust_favor(default_item_favor,chap) - -/// Returns a description for religious tools -/datum/religion_sect/proc/tool_examine(mob/living/holy_creature) - return "You are currently at [round(favor)] favor with [GLOB.deity]." - -/// Adjust Favor by a certain amount. Can provide optional features based on a user. Returns actual amount added/removed -/datum/religion_sect/proc/adjust_favor(amount = 0, mob/living/chap) - . = amount - if(favor + amount < 0) - . = favor //if favor = 5 and we want to subtract 10, we'll only be able to subtract 5 - if((favor + amount > max_favor)) - . = (max_favor-favor) //if favor = 5 and we want to add 10 with a max of 10, we'll only be able to add 5 - favor = clamp(0,max_favor, favor+amount) - -/// Sets favor to a specific amount. Can provide optional features based on a user. -/datum/religion_sect/proc/set_favor(amount = 0, mob/living/chap) - favor = clamp(0,max_favor,amount) - return favor - -/// Activates when an individual uses a rite. Can provide different/additional benefits depending on the user. -/datum/religion_sect/proc/on_riteuse(mob/living/user, atom/religious_tool) - -/// Replaces the bible's bless mechanic. Return TRUE if you want to not do the brain hit. -/datum/religion_sect/proc/sect_bless(mob/living/target, mob/living/chap) - if(!ishuman(target)) - return FALSE - var/mob/living/carbon/human/blessed = target - for(var/obj/item/bodypart/bodypart as anything in blessed.bodyparts) - if(!IS_ORGANIC_LIMB(bodypart)) - to_chat(chap, "[GLOB.deity] refuses to heal this metallic taint!") - return TRUE - - var/heal_amt = 10 - var/list/hurt_limbs = blessed.get_damaged_bodyparts(1, 1, null, BODYTYPE_ORGANIC) - - if(hurt_limbs.len) - for(var/X in hurt_limbs) - var/obj/item/bodypart/affecting = X - if(affecting.heal_damage(heal_amt, heal_amt, null, BODYTYPE_ORGANIC)) - blessed.update_damage_overlays() - blessed.visible_message("[chap] heals [blessed] with the power of [GLOB.deity]!") - to_chat(blessed, "May the power of [GLOB.deity] compel you to be healed!") - playsound(chap, "punch", 25, TRUE, -1) - SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - return TRUE - -/**** Nanotrasen Approved God ****/ - -/datum/religion_sect/puritanism - name = "Nanotrasen Approved God" - desc = "Your run-of-the-mill sect, there are no benefits or boons associated." - quote = "Nanotrasen Recommends!" - tgui_icon = "bible" - -/**** Technophile Sect ****/ - -/datum/religion_sect/technophile - name = "Technophile" - quote = "May you find peace in a metal shell." - desc = "Bibles now recharge cyborgs and heal robotic limbs if targeted, but they \ - do not heal organic limbs. You can now sacrifice cells, with favor depending on their charge." - tgui_icon = "robot" - alignment = ALIGNMENT_NEUT - desired_items = list(/obj/item/stock_parts/cell = "with battery charge") - rites_list = list(/datum/religion_rites/synthconversion, /datum/religion_rites/machine_blessing, /datum/religion_rites/machine_implantation) - altar_icon_state = "convertaltar-blue" - max_favor = 5000 - -/datum/religion_sect/technophile/sect_bless(mob/living/target, mob/living/chap) - if(iscyborg(target)) - var/mob/living/silicon/robot/R = target - var/charge_amt = 50 - if(target.mind?.holy_role == HOLY_ROLE_HIGHPRIEST) - charge_amt *= 2 - R.cell?.charge += charge_amt - R.visible_message("[chap] charges [R] with the power of [GLOB.deity]!") - to_chat(R, "You are charged by the power of [GLOB.deity]!") - SEND_SIGNAL(R, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) - return TRUE - if(!ishuman(target)) - return - var/mob/living/carbon/human/blessed = target - - //first we determine if we can charge them - var/did_we_charge = FALSE - var/obj/item/organ/stomach/battery/ethereal/eth_stomach = blessed.getorganslot(ORGAN_SLOT_STOMACH) - if(istype(eth_stomach)) - eth_stomach.adjust_charge(60) - did_we_charge = TRUE - - //if we're not targeting a robot part we stop early - var/obj/item/bodypart/bodypart = blessed.get_bodypart(chap.get_combat_bodyzone(target, zone_context = BODYZONE_CONTEXT_ROBOTIC_LIMB_HEALING)) - if(IS_ORGANIC_LIMB(bodypart)) - if(!did_we_charge) - to_chat(chap, "[GLOB.deity] scoffs at the idea of healing such fleshy matter!") - else - blessed.visible_message("[chap] charges [blessed] with the power of [GLOB.deity]!") - to_chat(blessed, "You feel charged by the power of [GLOB.deity]!") - SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - playsound(chap, 'sound/machines/synth_yes.ogg', 25, TRUE, -1) - return TRUE - - //charge(?) and go - if(bodypart.heal_damage(5,5,null,BODYTYPE_ROBOTIC)) - blessed.update_damage_overlays() - - blessed.visible_message("[chap] [did_we_charge ? "repairs" : "repairs and charges"] [blessed] with the power of [GLOB.deity]!") - to_chat(blessed, "The inner machinations of [GLOB.deity] [did_we_charge ? "repairs" : "repairs and charges"] you!") - playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) - SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - return TRUE - -/datum/religion_sect/technophile/on_sacrifice(obj/item/I, mob/living/chap) - var/obj/item/stock_parts/cell/the_cell = I - if(!istype(the_cell)) //how... - return - if(the_cell.charge < 300) - to_chat(chap,"[GLOB.deity] does not accept pity amounts of power.") - return - adjust_favor(round(the_cell.charge/100), chap) - to_chat(chap, "You offer [the_cell]'s power to [GLOB.deity], pleasing them.") - qdel(I) - return TRUE - -/**** Ever-Burning Candle sect ****/ - -/datum/religion_sect/candle_sect - name = "Ever-Burning Candle" - desc = "Sacrificing burning corpses with a lot of burn damage and candles grants you favor." - quote = "It must burn! The primal energy must be respected." - tgui_icon = "fire-alt" - alignment = ALIGNMENT_NEUT - max_favor = 10000 - desired_items = list(/obj/item/candle = "already lit") - rites_list = list(/datum/religion_rites/fireproof, /datum/religion_rites/burning_sacrifice, /datum/religion_rites/infinite_candle) - altar_icon_state = "convertaltar-red" - -//candle sect bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/candle_sect/sect_bless(mob/living/target, mob/living/chap) - return TRUE - -/datum/religion_sect/candle_sect/on_sacrifice(obj/item/candle/offering, mob/living/user) - if(!istype(offering)) - return - if(!offering.lit) - to_chat(user, "The candle needs to be lit to be offered!") - return - to_chat(user, "[GLOB.deity] is pleased with your sacrifice.") - adjust_favor(20, user) //it's not a lot but hey there's a pacifist favor option at least - qdel(offering) - return TRUE - -/**** Necromantic Sect ****/ - -/datum/religion_sect/necro_sect - name = "Necromancy" - desc = "A sect dedicated to the revival and summoning of the dead. Sacrificing living animals grants you favor." - quote = "An undead army is a must have!" - tgui_icon = "skull" - alignment = ALIGNMENT_EVIL - max_favor = 10000 - desired_items = list(/obj/item/organ/) - rites_list = list(/datum/religion_rites/raise_dead, /datum/religion_rites/living_sacrifice, /datum/religion_rites/raise_undead, /datum/religion_rites/create_lesser_lich) - altar_icon_state = "convertaltar-green" - -//Necro bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/necro_sect/sect_bless(mob/living/blessed, mob/living/user) - return TRUE - -/datum/religion_sect/necro_sect/on_sacrifice(obj/item/N, mob/living/L) - if(!istype(N, /obj/item/organ)) - return - adjust_favor(10, L) - to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 10 favor in the process.") - qdel(N) - return TRUE - -/**** Carp Sect ****/ - -/datum/religion_sect/carp_sect - name = "Followers of the Great Carp" - desc = "A sect dedicated to the space carp and carp'sie, Offer the gods meat for favor." - quote = "Drown the station in fish and water." - tgui_icon = "fish" - alignment = ALIGNMENT_NEUT - max_favor = 10000 - desired_items = list(/obj/item/food/meat/slab) - rites_list = list(/datum/religion_rites/summon_carp, /datum/religion_rites/flood_area, /datum/religion_rites/summon_carpsuit) - altar_icon_state = "convertaltar-blue" - -//Carp bibles give people the carp faction! -/datum/religion_sect/carp_sect/sect_bless(mob/living/L, mob/living/user) - if(!isliving(L)) - return FALSE - L.faction |= "carp" - user.visible_message("[user] blessed [L] with the power of [GLOB.deity]! They are now protected from Space Carps, Although carps will still fight back if attacked.") - SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) - return TRUE - -/datum/religion_sect/carp_sect/on_sacrifice(obj/item/N, mob/living/L) //and this - var/obj/item/food/meat/meat = N - if(!istype(meat)) //how... - return - adjust_favor(20, L) - to_chat(L, "You offer [meat] to [GLOB.deity], pleasing them and gaining 20 favor in the process.") - qdel(N) - return TRUE - -/**** Plant Sect ****/ - -/datum/religion_sect/plant_sect - name = "Nature" - desc = "A sect dedicated to nature, plants, and animals. Sacrificing seeds grants you favor." - quote = "Living plant people? What has the world come to!" - tgui_icon = "tree" - alignment = ALIGNMENT_GOOD - max_favor = 10000 - desired_items = list(/obj/item/seeds) - rites_list = list(/datum/religion_rites/create_podperson, /datum/religion_rites/create_sandstone, /datum/religion_rites/grass_generator, /datum/religion_rites/summon_animals) - altar_icon_state = "convertaltar-green" - -//plant bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/plant_sect/sect_bless(mob/living/blessed, mob/living/user) - return TRUE - -/datum/religion_sect/plant_sect/on_sacrifice(obj/item/N, mob/living/L) - if(!istype(N, /obj/item/seeds)) - return - adjust_favor(25, L) - to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 25 favor in the process.") - qdel(N) - return TRUE - -/**** Shadow Sect ****/ - -/datum/religion_sect/shadow_sect - starter = FALSE - name = "Shadow" - desc = "A sect dedicated to the darkness. The manifested obelisks will generate favor from being in darkness." - quote = "Turn out the lights, and let the darkness cover the world!" - tgui_icon = "moon" - alignment = ALIGNMENT_EVIL - favor = 100 //Starts off with enough favor to make an obelisk - max_favor = 25000 - desired_items = list(/obj/item/flashlight) - rites_list = list(/datum/religion_rites/expand_shadows,/datum/religion_rites/shadow_obelisk, /datum/religion_rites/shadow_conversion,/datum/religion_rites/shadow_blessing,/datum/religion_rites/shadow_eyes) - altar_icon_state = "convertaltar-dark" - var/light_reach = 1 - var/light_power = 0 - var/list/obelisks = list() - -/datum/religion_sect/shadow_sect/is_available(mob/user) - if(isshadow(user)) - return TRUE - return FALSE - -//Shadow bibles don't heal or do anything special apart from the standard holy water blessings -/datum/religion_sect/shadow_sect/sect_bless(mob/living/blessed, mob/living/user) - return TRUE - -/datum/religion_sect/shadow_sect/on_sacrifice(obj/item/N, mob/living/L) - if(!istype(N, /obj/item/flashlight)) - return - adjust_favor(5, L) - to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 5 favor in the process.") - qdel(N) - return TRUE - -/datum/religion_sect/shadow_sect/on_select(atom/religious_tool, mob/living/user) - . = ..() - if(!religious_tool || !user) - return - religious_tool.AddComponent(/datum/component/dark_favor, user) - -/datum/religion_sect/shadow_sect/on_conversion(mob/living/chap) //When sect is selected, and when a new chaplain joins after sect has been selected - . = ..() - if(is_special_character(chap)) - to_chat(chap, "As you are an antagonist role, you are free to spread darkness across the station.") - else - to_chat(chap, "You are not an antagonist, please do not spread darkness outside of the chapel without Command Staff approval.") diff --git a/code/modules/religion/religion_structures.dm b/code/modules/religion/religion_structures.dm deleted file mode 100644 index 929544ec4c31d..0000000000000 --- a/code/modules/religion/religion_structures.dm +++ /dev/null @@ -1,216 +0,0 @@ -/obj/structure/altar_of_gods - name = "\improper Altar of the Gods" - desc = "An altar which allows the head of the church to choose a sect of religious teachings as well as provide sacrifices to earn favor." - icon = 'icons/obj/hand_of_god_structures.dmi' - icon_state = "convertaltar" - density = TRUE - anchored = TRUE - layer = TABLE_LAYER - pass_flags_self = LETPASSTHROW - can_buckle = TRUE - buckle_lying = 90 //we turn to you! - resistance_flags = INDESTRUCTIBLE - ///Avoids having to check global everytime by referencing it locally. - var/datum/religion_sect/sect_to_altar - -/obj/structure/altar_of_gods/Initialize(mapload) - . = ..() - reflect_sect_in_icons() - AddElement(/datum/element/climbable) - -/obj/structure/altar_of_gods/ComponentInitialize() - . = ..() - AddComponent(/datum/component/religious_tool, ALL, FALSE, CALLBACK(src, PROC_REF(reflect_sect_in_icons))) - -/obj/structure/altar_of_gods/attack_hand(mob/living/user) - if(!Adjacent(user) || !user.pulling) - return ..() - if(!isliving(user.pulling)) - return ..() - var/mob/living/pushed_mob = user.pulling - if(pushed_mob.buckled) - to_chat(user, "[pushed_mob] is buckled to [pushed_mob.buckled]!") - return ..() - to_chat(user,"Only the faithful may control the disposition of [src]!") - return - anchored = !anchored - if(GLOB.religious_sect) - GLOB.religious_sect.altar_anchored = anchored //Having more than one altar of the gods is only possible through adminbus so this should screw with normal gameplay - user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") - playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - user.do_attack_animation(src) - return - if(I.tool_behaviour == TOOL_WRENCH) - return - return ..() - - -/obj/structure/altar_of_gods/proc/reflect_sect_in_icons() - if(GLOB.religious_sect) - sect_to_altar = GLOB.religious_sect - if(sect_to_altar.altar_icon) - icon = sect_to_altar.altar_icon - if(sect_to_altar.altar_icon_state) - icon_state = sect_to_altar.altar_icon_state - -/obj/structure/destructible/religion - density = TRUE - anchored = FALSE - icon = 'icons/obj/religion.dmi' - light_power = 2 - var/cooldowntime = 0 - break_sound = 'sound/effects/glassbr2.ogg' - -/obj/structure/destructible/religion/nature_pylon - name = "Orb of Nature" - desc = "A floating crystal that slowly heals all plantlife and holy creatures. It can be anchored with a null rod." - icon_state = "nature_orb" - anchored = FALSE - light_range = 5 - light_color = LIGHT_COLOR_GREEN - break_message = "The luminous green crystal shatters!" - var/heal_delay = 20 - var/last_heal = 0 - var/spread_delay = 45 - var/last_spread = 0 - -/obj/structure/destructible/religion/nature_pylon/Initialize(mapload) - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/structure/destructible/religion/nature_pylon/LateInitialize() - . = ..() - START_PROCESSING(SSobj, src) - -/obj/structure/destructible/religion/nature_pylon/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - - -/obj/structure/destructible/religion/nature_pylon/process(delta_time) - if(last_heal <= world.time) - last_heal = world.time + heal_delay - for(var/mob/living/L in range(5, src)) - if(L.health == L.maxHealth) - continue - if(!ispodperson(L) && !L.mind?.holy_role) - continue - new /obj/effect/temp_visual/heal(get_turf(src), "#47ac05") - if(ispodperson(L) || L.mind?.holy_role) - L.adjustBruteLoss(-2*delta_time, 0) - L.adjustToxLoss(-2*delta_time, 0) - L.adjustOxyLoss(-2*delta_time, 0) - L.adjustFireLoss(-2*delta_time, 0) - L.adjustCloneLoss(-2*delta_time, 0) - L.updatehealth() - if(L.blood_volume < BLOOD_VOLUME_NORMAL) - L.blood_volume += 1.0 - CHECK_TICK - if(last_spread <= world.time) - var/list/validturfs = list() - var/list/natureturfs = list() - for(var/T in circleviewturfs(src, 5)) - if(istype(T, /turf/open/floor/grass)) - natureturfs |= T - continue - var/static/list/blacklisted_pylon_turfs = typecacheof(list( - /turf/closed, - /turf/open/floor/grass, - /turf/open/space, - /turf/open/lava, - /turf/open/chasm)) - if(is_type_in_typecache(T, blacklisted_pylon_turfs)) - continue - else - validturfs |= T - - last_spread = world.time + spread_delay - - var/turf/T = safepick(validturfs) - if(T) - if(istype(T, /turf/open/floor/plating)) - T.PlaceOnTop(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) - else - T.ChangeTurf(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) - else - var/turf/open/floor/grass/F = safepick(natureturfs) - if(F) - new /obj/effect/temp_visual/religion/turf/floor(F) - else - // Are we in space or something? No grass turfs or - // convertable turfs? - last_spread = world.time + spread_delay*2 - -/obj/structure/destructible/religion/nature_pylon/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/nullrod)) - if(user.mind?.holy_role == NONE) - to_chat(user, "Only the faithful may control the disposition of [src]!") - return - anchored = !anchored - user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") - playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - user.do_attack_animation(src) - return - if(I.tool_behaviour == TOOL_WRENCH) - return - return ..() - -////Shadow Sect //Original code by DingoDongler - -/obj/structure/destructible/religion/shadow_obelisk - name = "Shadow Obelisk" - desc = "Grants favor from being shrouded in shadows." - icon = 'icons/obj/hand_of_god_structures.dmi' - icon_state = "shadow-obelisk" - anchored = FALSE - break_message = "The Obelisk crumbles before you!" - -/obj/structure/destructible/religion/shadow_obelisk/attackby(obj/item/I, mob/living/user, params) - if(istype(I, /obj/item/nullrod)) - if(user.mind?.holy_role == NONE) - to_chat(user, "Only the faithful may control the disposition of [src]!") - return - anchored = !anchored - user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") - playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - user.do_attack_animation(src) - return - if(I.tool_behaviour == TOOL_WRENCH) - return - return ..() - -// Favor generator component. Used on the altar and obelisks -/datum/component/dark_favor //Original code by DingoDongler - var/mob/living/creator - -/datum/component/dark_favor/Initialize(mob/living/L) - . = ..() - if(!L) - return - creator = L - START_PROCESSING(SSobj, src) - -/datum/component/dark_favor/Destroy() //Original code by DingoDongler - . = ..() - STOP_PROCESSING(SSobj, src) - -/datum/component/dark_favor/process(delta_time) //Original code by DingoDongler - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - if(!istype(parent, /atom) || !istype(creator) || !istype(sect)) - return - var/atom/P = parent - var/turf/T = P.loc - if(!istype(T)) - return - var/light_amount = T.get_lumcount() - var/favor_gained = max(1 - light_amount, 0) * delta_time - sect.adjust_favor(favor_gained, creator) diff --git a/code/modules/religion/rites.dm b/code/modules/religion/rites.dm deleted file mode 100644 index da88445a6ed82..0000000000000 --- a/code/modules/religion/rites.dm +++ /dev/null @@ -1,975 +0,0 @@ -/datum/religion_rites - /// name of the religious rite - var/name = "religious rite" - /// Description of the religious rite - var/desc = "immm gonna rooon" - /// length it takes to complete the ritual - var/ritual_length = (10 SECONDS) //total length it'll take - /// list of invocations said (strings) throughout the rite - var/list/ritual_invocations //strings that are by default said evenly throughout the rite - /// message when you invoke - var/invoke_msg - var/favor_cost = 0 - /// does the altar auto-delete the rite - var/auto_delete = TRUE - -/datum/religion_rites/New() - . = ..() - if(!GLOB?.religious_sect) - return - LAZYADD(GLOB.religious_sect.active_rites, src) - -/datum/religion_rites/Destroy() - if(!GLOB?.religious_sect) - return - LAZYREMOVE(GLOB.religious_sect.active_rites, src) - return ..() - -/datum/religion_rites/proc/can_afford(mob/living/user) - if(GLOB.religious_sect?.favor < favor_cost) - to_chat(user, "This rite requires more favor!") - return FALSE - return TRUE - -///Called to perform the invocation of the rite, with args being the performer and the altar where it's being performed. Maybe you want it to check for something else? -/datum/religion_rites/proc/perform_rite(mob/living/user, atom/religious_tool) - if(!can_afford(user)) - return FALSE - var/turf/T = get_turf(religious_tool) - if(!T.is_holy()) - to_chat(user, "The altar can only function in a holy area!") - return FALSE - if(!GLOB.religious_sect.altar_anchored) - to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") - return FALSE - to_chat(user, "You begin to perform the rite of [name]...") - if(!ritual_invocations) - if(do_after(user, target = user, delay = ritual_length)) - return TRUE - return FALSE - var/first_invoke = TRUE - for(var/i in ritual_invocations) - if(!GLOB.religious_sect.altar_anchored) - to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") - return FALSE - if(first_invoke) //instant invoke - user.say(i) - first_invoke = FALSE - continue - if(!length(ritual_invocations)) //we divide so we gotta protect - return FALSE - if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) - return FALSE - user.say(i) - if(!do_after(user, target = user, delay = ritual_length/length(ritual_invocations))) //because we start at 0 and not the first fraction in invocations, we still have another fraction of ritual_length to complete - return FALSE - if(!GLOB.religious_sect.altar_anchored) - to_chat(user, "The altar must be secured to the floor if you wish to perform the rite!") - return FALSE - if(invoke_msg) - user.say(invoke_msg) - return TRUE - - -///Does the thing if the rite was successfully performed. return value denotes that the effect successfully (IE a harm rite does harm) -/datum/religion_rites/proc/invoke_effect(mob/living/user, atom/religious_tool) - SHOULD_CALL_PARENT(TRUE) - GLOB.religious_sect.on_riteuse(user,religious_tool) - return TRUE - - -/**** Technophile Sect ****/ - -/datum/religion_rites/synthconversion - name = "Synthetic Conversion" - desc = "Convert a human-esque individual into a (superior) Android. Buckle a human to convert them, otherwise it will convert you." - ritual_length = 25 SECONDS - ritual_invocations = list("By the inner workings of our god ...", - "... We call upon you, in the face of adversity ...", - "... to complete us, removing that which is undesirable ...") - invoke_msg = "... Arise, our champion! Become that which your soul craves, live in the world as your true form!!" - favor_cost = 1800 - -/datum/religion_rites/synthconversion/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!movable_reltool) - return FALSE - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to convert the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(isandroid(user)) - to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to convert yourself with this ritual.") - return ..() - -/datum/religion_rites/synthconversion/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - rite_target.set_species(/datum/species/android) - rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") - return TRUE - - -/datum/religion_rites/machine_blessing - name = "Receive Blessing" - desc = "Receive a random blessing from the machine god to further your ascension." - ritual_length = 5 SECONDS - ritual_invocations =list( "Let your will power our forges.", - "... Help us in our great conquest!") - invoke_msg = "The end of flesh is near!" - favor_cost = 800 - -/datum/religion_rites/machine_blessing/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - var/altar_turf = get_turf(religious_tool) - var/blessing = pick( - /obj/item/organ/cyberimp/arm/surgery, - /obj/item/organ/cyberimp/eyes/hud/diagnostic, - /obj/item/organ/cyberimp/eyes/hud/medical, - /obj/item/organ/cyberimp/mouth/breathing_tube, - /obj/item/organ/cyberimp/chest/thrusters, - /obj/item/organ/cyberimp/chest/nutriment, - /obj/item/organ/cyberimp/arm/toolset, - /obj/item/organ/wings/cybernetic, - /obj/item/organ/eyes/robotic/glow) - new blessing(altar_turf) - return TRUE - - -/datum/religion_rites/machine_implantation - name = "Machine Implantation" - desc = "Apply a provided upgrade to your body. Place a cybernetic item on the altar, then buckle someone to implant them, otherwise it will implant you." - ritual_length = 20 SECONDS - ritual_invocations = list("Lend us your power ...", - "... We call upon you, grant us this upgrade ...", - "... Complete us, joining man and machine ...") - invoke_msg = "... Let the mechanical parts, Merge!!" - favor_cost = 1000 - var/obj/item/organ/chosen_implant - -/datum/religion_rites/machine_implantation/perform_rite(mob/living/user, atom/religious_tool) - chosen_implant = locate() in get_turf(religious_tool) - if(!chosen_implant) - to_chat(user, "This rite requires cybernetics for implantation.") - return FALSE - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(length(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to merge the implant with the one buckled on [movable_reltool].") - else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - to_chat(user,"You're going to merge the implant into yourself with this ritual.") - return ..() - -/datum/religion_rites/machine_implantation/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!length(movable_reltool.buckled_mobs)) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - chosen_implant = null - return FALSE - chosen_implant.Insert(rite_target) - rite_target.visible_message("[chosen_implant] has been merged into [rite_target] by the rite of [name]!") - chosen_implant = null - return TRUE - - -/**** Ever-Burning Candle sect ****/ - -///apply a bunch of fire immunity effect to clothing -/datum/religion_rites/fireproof/proc/apply_fireproof(obj/item/clothing/fireproofed) - fireproofed.name = "unmelting [fireproofed.name]" - fireproofed.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT - fireproofed.heat_protection = chosen_clothing.body_parts_covered - fireproofed.resistance_flags |= FIRE_PROOF - -/datum/religion_rites/fireproof - name = "Unmelting Protection" - desc = "Grants fire immunity to any piece of clothing." - ritual_length = 15 SECONDS - ritual_invocations = list("And so to support the holder of the Ever-Burning candle...", - "... allow this unworthy apparel to serve you ...", - "... make it strong enough to burn a thousand time and more ...") - invoke_msg = "... Come forth in your new form, and join the unmelting wax of the one true flame!" - favor_cost = 1000 -///the piece of clothing that will be fireproofed, only one per rite - var/obj/item/clothing/chosen_clothing - -/datum/religion_rites/fireproof/perform_rite(mob/living/user, atom/religious_tool) - for(var/obj/item/clothing/apparel in get_turf(religious_tool)) - if(apparel.max_heat_protection_temperature >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) - continue //we ignore anything that is already fireproof - chosen_clothing = apparel //the apparel has been chosen by our lord and savior - return ..() - return FALSE - -/datum/religion_rites/fireproof/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there - if(istype(chosen_clothing,/obj/item/clothing/suit/hooded)) - var/obj/item/clothing/suit/hooded/as_hooded = chosen_clothing - if(as_hooded.hood) - apply_fireproof(as_hooded.hood) - else if(istype(chosen_clothing,/obj/item/clothing/suit/space/hardsuit)) - var/obj/item/clothing/suit/space/hardsuit/suit = chosen_clothing - if(suit.helmet) - apply_fireproof(suit.helmet) - apply_fireproof(chosen_clothing) - playsound(get_turf(religious_tool), 'sound/magic/fireball.ogg', 50, TRUE) - chosen_clothing = null //our lord and savior no longer cares about this apparel - return TRUE - chosen_clothing = null - to_chat(user,"The clothing that was chosen for the rite is no longer on the altar!") - return FALSE - -/datum/religion_rites/burning_sacrifice - name = "Burning Offering" - desc = "Sacrifice a buckled burning corpse for favor, the more burn damage the corpse has the more favor you will receive." - ritual_length = 15 SECONDS - ritual_invocations = list("Burning body ...", - "... cleansed by the flame ...", - "... we were all created from fire ...", - "... and to it ...") - invoke_msg = "... WE RETURN! " -///the burning corpse chosen for the sacrifice of the rite - var/mob/living/carbon/chosen_sacrifice - -/datum/religion_rites/burning_sacrifice/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!movable_reltool) - return FALSE - if(!LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"Nothing is buckled to the altar!") - return FALSE - for(var/corpse in movable_reltool.buckled_mobs) - if(!iscarbon(corpse))// only works with carbon corpse since most normal mobs can't be set on fire. - to_chat(user,"Only carbon lifeforms can be properly burned for the sacrifice!") - return FALSE - chosen_sacrifice = corpse - if(chosen_sacrifice.stat != DEAD) - to_chat(user,"You can only sacrifice dead bodies, this one is still alive!") - return FALSE - if(!chosen_sacrifice.on_fire) - to_chat(user,"This corpse needs to be on fire to be sacrificed!") - return FALSE - return ..() - -/datum/religion_rites/burning_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right corpse is still buckled - to_chat(user,"The right sacrifice is no longer on the altar!") - chosen_sacrifice = null - return FALSE - if(!chosen_sacrifice.on_fire) - to_chat(user,"The sacrifice is no longer on fire, it needs to burn until the end of the rite!") - chosen_sacrifice = null - return FALSE - if(chosen_sacrifice.stat != DEAD) - to_chat(user,"The sacrifice has to stay dead for the rite to work!") - chosen_sacrifice = null - return FALSE - var/favor_gained = 100 + round(chosen_sacrifice.getFireLoss()) - GLOB.religious_sect.adjust_favor(favor_gained, user) - to_chat(user, "[GLOB.deity] absorbs the burning corpse and any trace of fire with it. [GLOB.deity] rewards you with [favor_gained] favor.") - chosen_sacrifice.dust(force = TRUE) - playsound(get_turf(religious_tool), 'sound/effects/supermatter.ogg', 50, TRUE) - chosen_sacrifice = null - return TRUE - -/datum/religion_rites/infinite_candle - name = "Immortal Candles" - desc = "Creates 5 candles that never run out of wax." - ritual_length = 10 SECONDS - invoke_msg = "Burn bright, little candles, for you will only extinguish along with the universe." - favor_cost = 200 - -/datum/religion_rites/infinite_candle/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - var/altar_turf = get_turf(religious_tool) - for(var/i in 1 to 5) - new /obj/item/candle/infinite(altar_turf) - playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) - return TRUE - -/// Necro Rites - -/datum/religion_rites/create_lesser_lich - name = "Create Lesser Lich" - desc = "Gives the bound creature a spell granting them the ability to create a lesser phylactery, causing them to become a skeleton and revive on death twice if the phylactery still exists on-station. Be warned, becoming a lesser lich will prevent revivial by any other means." - ritual_length = 60 SECONDS //This one's pretty powerful so it'll still be long - ritual_invocations = list("From the depths of the soul pool ...", - "... come forth into this being ...", - "... grant this servant power ...", - "... grant them temporary immortality ...") - invoke_msg = "... Grant them the power to become one with necromancy!!" - favor_cost = 2250 -/// the creature chosen for the rite - var/mob/living/lich_to_be -/// the the typepath of the spell to gran - var/lichspell = /obj/effect/proc_holder/spell/targeted/lesserlichdom - -/datum/religion_rites/create_lesser_lich/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(length(movable_reltool.buckled_mobs)) - for(var/creature in movable_reltool.buckled_mobs) - lich_to_be = creature - if(!lich_to_be.mind.hasSoul) - to_chat(user,"[lich_to_be] has no soul, as such this rite would not help them. To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) - if(knownspell.type == lichspell) - to_chat(user,"You've already empowered [lich_to_be], get them to use the spell granted to them! To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - to_chat(user,"You're going to empower the [lich_to_be] who is buckled on [movable_reltool].") - return ..() - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - lich_to_be = user - if(!lich_to_be.mind.hasSoul) - to_chat(user,"You have no soul, as such this rite would not help you. To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) - if(knownspell.type == lichspell) - to_chat(user,"You've already empowered yourself, use the spell granted to you! To empower another, they must be buckled to [movable_reltool].") - lich_to_be = null - return FALSE - to_chat(user,"You're empowering yourself!") - return ..() - - -/datum/religion_rites/create_lesser_lich/invoke_effect(mob/living/user, atom/movable/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - if(!length(movable_reltool.buckled_mobs)) - lich_to_be = user - else - for(var/mob/living/carbon/human/buckled in movable_reltool.buckled_mobs) - lich_to_be = buckled - break - if(!lich_to_be) - return FALSE - lich_to_be.AddSpell(new lichspell(null)) - lich_to_be.visible_message("[lich_to_be] has been empowered by the soul pool!") - lich_to_be = null - return ..() - -/datum/religion_rites/raise_undead - name = "Raise Undead" - desc = "Creates an undead creature if a soul is willing to take it." - ritual_length = 50 SECONDS - ritual_invocations = list("Come forth from the pool of souls ...", - "... enter our realm ...", - "... become one with our world ...", - "... rise ...", - "... RISE! ...") - invoke_msg = "... RISE!!!" - favor_cost = 1250 - -/datum/religion_rites/raise_undead/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - new /obj/effect/temp_visual/cult/blood/long(altar_turf) - new /obj/effect/temp_visual/dir_setting/curse/long(altar_turf) - var/list/candidates = poll_ghost_candidates("Do you wish to be resurrected as a Holy Summoned Undead?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYUNDEAD) - if(!length(candidates)) - to_chat(user, "The soul pool is empty...") - new /obj/effect/gibspawner/human/bodypartless(altar_turf) - user.visible_message("The soul pool was not strong enough to bring forth the undead.") - GLOB.religious_sect?.adjust_favor(favor_cost, user) //refund if nobody takes the role - return NOT_ENOUGH_PLAYERS - var/mob/dead/observer/selected = pick_n_take(candidates) - var/datum/mind/Mind = new /datum/mind(selected.key) - var/undead_species = pick(/mob/living/carbon/human/species/zombie, /mob/living/carbon/human/species/skeleton) - var/mob/living/carbon/human/species/undead = new undead_species(altar_turf) - undead.real_name = "Holy Undead ([rand(1,999)])" - Mind.active = 1 - Mind.transfer_to(undead) - undead.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(undead), ITEM_SLOT_BACK) - undead.equip_to_slot_or_del(new /obj/item/clothing/under/costume/skeleton(undead), ITEM_SLOT_ICLOTHING) - undead.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/chaplain_hoodie(undead), ITEM_SLOT_OCLOTHING) - undead.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(undead), ITEM_SLOT_FEET) - undead.AddSpell(new /obj/effect/proc_holder/spell/targeted/smoke(null)) - if(GLOB.religion) - var/obj/item/storage/book/bible/booze/B = new - undead.mind?.holy_role = HOLY_ROLE_PRIEST - B.deity_name = GLOB.deity - B.name = GLOB.bible_name - B.icon_state = GLOB.bible_icon_state - B.item_state = GLOB.bible_item_state - to_chat(undead, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") - undead.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) - GLOB.religious_sect?.on_conversion(undead) - if(is_special_character(user)) - to_chat(undead, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") - else - to_chat(undead, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") - playsound(altar_turf, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg',), 50, TRUE) - return ..() - -/datum/religion_rites/raise_dead - name = "Raise Dead" - desc = "Revives a buckled dead creature or person." - ritual_length = 40 SECONDS - ritual_invocations = list("Rejoin our world ...", - "... come forth from the beyond ...", - "... fresh life awaits you ...", - "... return to us ...", - "... by the power granted by the gods ...", - "... you shall rise again ...") - invoke_msg = "Welcome back to the mortal plain." - favor_cost = 1500 - -///the target - var/mob/living/carbon/human/raise_target - -/datum/religion_rites/raise_dead/perform_rite(mob/living/user, atom/religious_tool) - if(!religious_tool || !ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!length(movable_reltool.buckled_mobs)) - to_chat(user, "Nothing is buckled to the altar!") - return FALSE - for(var/mob/living/carbon/r_target in movable_reltool.buckled_mobs) - if(!iscarbon(r_target)) - to_chat(user, "Only carbon lifeforms can be properly resurrected!") - return FALSE - if(r_target.stat != DEAD) - to_chat(user, "You can only resurrect dead bodies, this one is still alive!") - return FALSE - if(!r_target.mind) - to_chat(user, "This creature has no connected soul...") - return FALSE - raise_target = r_target - raise_target.notify_ghost_cloning("Your soul is being summoned back to your body by mystical power!", source = src) - return ..() - -/datum/religion_rites/raise_dead/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - if(!(raise_target in religious_tool.buckled_mobs)) - to_chat(user, "The body is no longer on the altar!") - raise_target = null - return FALSE - if(!raise_target.mind) - to_chat(user, "This creature's soul has left the pool...") - raise_target = null - return FALSE - if(raise_target.stat != DEAD) - to_chat(user, "The target has to stay dead for the rite to work! If they came back without your spiritual guidence... Who knows what could happen!?") - raise_target = null - return FALSE - raise_target.grab_ghost() // Shove them back in their body. - raise_target.revive(full_heal = 1, admin_revive = 1) - playsound(altar_turf, 'sound/magic/staff_healing.ogg', 50, TRUE) - raise_target = null - return ..() - -/datum/religion_rites/living_sacrifice - name = "Living Sacrifice" - desc = "Sacrifice a non-sentient living buckled creature for favor." - ritual_length = 25 SECONDS - ritual_invocations = list("To offer this being unto the gods ...", - "... to feed them with its soul ...", - "... so that they may consume all within their path ...", - "... release their binding on this mortal plane ...", - "... I offer you this living being ...") - invoke_msg = "... may it join the horde of undead, and become one with the souls of the damned. " - -//the living creature chosen for the sacrifice of the rite - var/mob/living/chosen_sacrifice -/datum/religion_rites/living_sacrifice/perform_rite(mob/living/user, atom/religious_tool) - if(!religious_tool || !ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!length(movable_reltool.buckled_mobs)) - to_chat(user, "Nothing is buckled to the altar!") - return FALSE - for(var/creature in movable_reltool.buckled_mobs) - chosen_sacrifice = creature - if(chosen_sacrifice.stat == DEAD) - to_chat(user, "You can only sacrifice living creatures, this one is dead!") - chosen_sacrifice = null - return FALSE - if(chosen_sacrifice.mind) - to_chat(user, "This sacrifice is sentient! [GLOB.deity] will not accept this offering.") - chosen_sacrifice = null - return FALSE - var/mob/living/carbon/C = creature - if(!isnull(C)) - cuff(C) - return ..() - -/datum/religion_rites/living_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right creature is still buckled - to_chat(user, "The right sacrifice is no longer on the altar!") - chosen_sacrifice = null - return FALSE - if(chosen_sacrifice.stat == DEAD) - to_chat(user, "The sacrifice is no longer alive, it needs to be alive until the end of the rite!") - chosen_sacrifice = null - return FALSE - var/favor_gained = 200 + round(chosen_sacrifice.health * 2) - GLOB.religious_sect?.adjust_favor(favor_gained, user) - new /obj/effect/temp_visual/cult/blood/out(altar_turf) - to_chat(user, "[GLOB.deity] absorbs [chosen_sacrifice], leaving blood and gore in its place. [GLOB.deity] rewards you with [favor_gained] favor.") - chosen_sacrifice.gib(TRUE, FALSE, TRUE) - playsound(get_turf(religious_tool), 'sound/effects/bamf.ogg', 50, TRUE) - chosen_sacrifice = null - return ..() - -/datum/religion_rites/living_sacrifice/proc/cuff(var/mob/living/carbon/C) - if(C.handcuffed) - return - C.handcuffed = new /obj/item/restraints/handcuffs/energy/cult(C) - C.update_handcuffed() - playsound(C, 'sound/magic/smoke.ogg', 50, 1) - C.visible_message("Darkness forms around [C]'s wrists as shadowy bindings appear on them!") - -/**** Carp rites ****/ - -/datum/religion_rites/summon_carp - name = "Summon Carp" - desc = "Creates a Sentient Space Carp, if a soul is willing to take it. If not, the favor is refunded." - ritual_length = 50 SECONDS - ritual_invocations = list("Grant us a new follower ...", - "... let them enter our realm ...", - "... become one with our world ...", - "... to swim in our space ...", - "... and help our cause ...") - invoke_msg = "... We summon thee, Holy Carp!" - favor_cost = 500 - -/datum/religion_rites/summon_carp/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) - user.visible_message("A tear in reality appears above the altar!") - var/list/candidates = poll_ghost_candidates("Do you wish to be summoned as a Holy Carp?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYCARP) - if(!length(candidates)) - new /obj/effect/gibspawner/generic(altar_turf) - user.visible_message("The carp pool was not strong enough to bring forth a space carp.") - GLOB.religious_sect?.adjust_favor(400, user) - return NOT_ENOUGH_PLAYERS - var/mob/dead/observer/selected = pick_n_take(candidates) - var/datum/mind/M = new /datum/mind(selected.key) - var/carp_species = pick(/mob/living/simple_animal/hostile/carp/megacarp, /mob/living/simple_animal/hostile/carp) - var/mob/living/simple_animal/hostile/carp = new carp_species(altar_turf) - carp.name = "Holy Space-Carp ([rand(1,999)])" - carp.key = selected.key - carp.sentience_act() - carp.maxHealth += 100 - carp.health += 100 - M.transfer_to(carp) - if(GLOB.religion) - carp.mind?.holy_role = HOLY_ROLE_PRIEST - to_chat(carp, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") - GLOB.religious_sect?.on_conversion(carp) - if(is_special_character(user)) - to_chat(carp, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") - else - to_chat(carp, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") - playsound(altar_turf, 'sound/effects/slosh.ogg', 50, TRUE) - return ..() - -/datum/religion_rites/summon_carpsuit - name = "Summon Carp-Suit" - desc = "Summons a Space-Carp Suit" - ritual_length = 30 SECONDS - ritual_invocations = list("We shall become one ...", - "... we shall blend in ...", - "... we shall join in the ways of the carp ...", - "... grant us new clothing ...") - invoke_msg = "So we can swim." - favor_cost = 300 - var/obj/item/clothing/suit/chosen_clothing - -/datum/religion_rites/summon_carpsuit/perform_rite(mob/living/user, atom/religious_tool) - var/turf/T = get_turf(religious_tool) - var/list/L = T.contents - if(!locate(/obj/item/clothing/suit) in L) - to_chat(user, "There is no suit clothing on the altar!") - return FALSE - for(var/obj/item/clothing/suit/apparel in L) - chosen_clothing = apparel //the apparel has been chosen by our lord and savior - return ..() - return FALSE - -/datum/religion_rites/summon_carpsuit/invoke_effect(mob/living/user, atom/religious_tool) - if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there - user.visible_message("The [chosen_clothing] transforms!") - chosen_clothing.obj_destruction() - chosen_clothing = null - new /obj/item/clothing/suit/space/hardsuit/carp/old(get_turf(religious_tool)) - playsound(get_turf(religious_tool), 'sound/effects/slosh.ogg', 50, TRUE) - return ..() - chosen_clothing = null - to_chat(user, "The clothing that was chosen for the rite is no longer on the altar!") - return FALSE - -/datum/religion_rites/flood_area - name = "Flood Area" - desc = "Flood the area with water vapor, great for learning to swim!" - ritual_length = 25 SECONDS - ritual_invocations = list("We must swim ...", - "... but to do so, we need water ...", - "... grant us a great flood ...", - "... soak us in your glory ...", - "... we shall swim forever ...") - invoke_msg = "... in our own personal ocean." - favor_cost = 200 - -/datum/religion_rites/flood_area/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/open/T = get_turf(religious_tool) - if(istype(T)) - T.atmos_spawn_air("water_vapor=5000;TEMP=255") - return ..() - -/**** Plant rites ****/ - -/datum/religion_rites/summon_animals - name = "Create Life" - desc = "Creates a few animals, this can range from butterflys to giant frogs! Please be careful." - ritual_length = 30 SECONDS - ritual_invocations = list("Great Mother ...", - "... bring us new life ...", - "... to join with our nature ...", - "... and live amongst us ...") - invoke_msg = "... We summon thee, Animals from the Byond!" //might adjust to beyond due to ooc/ic/meta - favor_cost = 500 - -/datum/religion_rites/summon_animals/perform_rite(mob/living/user, atom/religious_tool) - var/turf/altar_turf = get_turf(religious_tool) - new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) - user.visible_message("A tear in reality appears above the altar!") - return ..() - -/datum/religion_rites/summon_animals/invoke_effect(mob/living/user, atom/religious_tool) - ..() - var/turf/altar_turf = get_turf(religious_tool) - for(var/i in 1 to 8) - var/mob/living/spawned_mob = create_random_mob(altar_turf, FRIENDLY_SPAWN) - spawned_mob.faction |= "neutral" - playsound(altar_turf, 'sound/ambience/servicebell.ogg', 25, TRUE) - if(prob(0.1)) - playsound(altar_turf, 'sound/effects/bamf.ogg', 100, TRUE) - altar_turf.visible_message("A large form seems to be forcing its way into your reality via the portal [user] opened! RUN!!!") - new /mob/living/simple_animal/hostile/jungle/leaper(altar_turf) - return ..() - -/datum/religion_rites/create_sandstone - name = "Create Sandstone" - desc = "Create Sandstone for soil production to help create a plant garden." - ritual_length = 35 SECONDS - ritual_invocations = list("Bring to us ...", - "... the stone we need ...", - "... so we can toil away ...") - invoke_msg = "and spread many seeds." - favor_cost = 800 - -/datum/religion_rites/create_sandstone/invoke_effect(mob/living/user, atom/religious_tool) - new /obj/item/stack/sheet/mineral/sandstone/fifty(get_turf(religious_tool)) - playsound(get_turf(religious_tool), 'sound/effects/pop_expl.ogg', 50, TRUE) - return ..() - -/datum/religion_rites/grass_generator - name = "Blessing of Nature" - desc = "Summon a moveable object that slowly generates grass and fairy-grass around itself while healing any Pod-People or Holy people nearby." - ritual_length = 60 SECONDS - ritual_invocations = list("Let the plantlife grow ...", - "... let it grow across the land ...", - "... far and wide it shall spread ...", - "... show us true nature ...", - "... and we shall worship it all ...") - invoke_msg = "... in our own personal haven." - favor_cost = 1000 - -/datum/religion_rites/grass_generator/invoke_effect(mob/living/user, atom/movable/religious_tool) - var/turf/open/T = get_turf(religious_tool) - if(istype(T)) - new /obj/structure/destructible/religion/nature_pylon(T) - return ..() - -/datum/religion_rites/create_podperson - name = "Nature Conversion" - desc = "Convert a human-esque individual into a being of nature. Buckle a human to convert them, otherwise it will convert you." - ritual_length = 30 SECONDS - ritual_invocations = list("By the power of nature ...", - "... We call upon you, in this time of need ...", - "... to merge us with all that is natural ...") - invoke_msg = "... May the grass be greener on the other side, show us what it means to be one with nature!!" - favor_cost = 300 - -/datum/religion_rites/create_podperson/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(!movable_reltool) - return FALSE - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to convert the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(ispodperson(user)) - to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to convert yourself with this ritual.") - return ..() - -/datum/religion_rites/create_podperson/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - rite_target.set_species(/datum/species/pod) - rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") - return TRUE - -/**** Shadow rites ****/ //Original code by DingoDongler - -#define DARKNESS_INVERSE_COLOR "#AAD84B" //The color of light has to be inverse, since we're using negative light power - -/datum/religion_rites/shadow_conversion - name = "Shadowperson Conversion" - desc = "Converts a humanoid into a shadowperson, a race blessed by darkness." - ritual_length = 30 SECONDS - ritual_invocations = list("Let the darkness seep into you...", - "... And cover you, envelope you ...", - "... And make you one with it ...") - invoke_msg = "... And let you be born again!" - favor_cost = 1200 - -/datum/religion_rites/shadow_conversion/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to convert the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(isshadow(user)) - to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to convert yourself with this ritual.") - return ..() - -/datum/religion_rites/shadow_conversion/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - rite_target.set_species(/datum/species/shadow) - rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") - return TRUE - -/datum/religion_rites/shadow_obelisk - name = "Obelisk Manifestation" - desc = "Creates an obelisk that generates favor when in a dark area." - ritual_length = 45 SECONDS - ritual_invocations = list("Let the shadows combine...", - "... Solidify and grow ...", - "... Make an idol to eminate shadows ...") - invoke_msg = "I summon forth an obelisk, to appease the darkness." - favor_cost = 100 //Sect starts with 100 favor to begin - -/datum/religion_rites/shadow_obelisk/invoke_effect(mob/living/user, atom/religious_tool) - var/altar_turf = get_turf(religious_tool) - var/obj/structure/destructible/religion/shadow_obelisk/obelisk = new(altar_turf) - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - sect.obelisks += obelisk - obelisk.AddComponent(/datum/component/dark_favor, user) - obelisk.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) - playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) - return ..() - -/datum/religion_rites/expand_shadows - name = "Shadow Expansion" - desc = "Grow the reach of shadows extending from the altar, and any obelisks." - ritual_length = 40 SECONDS - ritual_invocations = list("Spread out...", - "... Kill the light ...", - "... Encompass it all in darkness ...") - invoke_msg = "Shadows, reach your tendrils from my altar, and extend thy domain." - favor_cost = 175 - -/datum/religion_rites/expand_shadows/perform_rite(mob/living/user, atom/religious_tool) - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - if((sect.light_power <= -5) || (sect.light_reach >= 10)) - to_chat(user, "The shadows emanating from your idols is as strong as it could be.") - return FALSE - return ..() - -/datum/religion_rites/expand_shadows/invoke_effect(mob/living/user, atom/religious_tool) - . = ..() - var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect - if(!sect) - return - sect.light_reach += 2 - sect.light_power -= 1 - religious_tool.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) - for(var/obj/structure/destructible/religion/shadow_obelisk/D in sect.obelisks) - D.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) - -/datum/religion_rites/shadow_blessing - name = "Shadow Blessing" - desc = "Bless someone with the power of shadows, and make them immune to all magic." - ritual_length = 60 SECONDS - ritual_invocations = list("Let the darkness reside within us...", - "... Let the power flow ...", - "... Encompass our souls in shade ...", - "... And let the demons know ...", - "... That their powers will not work apon us any more...",) - invoke_msg = "Bless thy brethen, and grant them immunity!" - favor_cost = 8000 - -/datum/religion_rites/shadow_blessing/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user, "This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(LAZYLEN(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to bless the one buckled on [movable_reltool].") - else - if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - if(isshadow(user)) - to_chat(user,"You've already blessed yourself. To convert others, they must be buckled to [movable_reltool].") - return FALSE - to_chat(user,"You're going to bless yourself with this ritual.") - return ..() - -/datum/religion_rites/shadow_blessing/invoke_effect(mob/living/user, atom/religious_tool) - ..() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!movable_reltool?.buckled_mobs?.len) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - ADD_TRAIT(rite_target, TRAIT_ANTIMAGIC, MAGIC_TRAIT) - //glowing wings overlay - playsound(rite_target, 'sound/weapons/fwoosh.ogg', 75, 0) - rite_target.visible_message("[rite_target] has been blessed by the rite of [name]!") - return TRUE - - -/datum/religion_rites/shadow_eyes - name = "Grant Shadow Eyes" - desc = "Grants either the caster, or the buckled person, shadow eyes that give night vision." - ritual_length = 30 SECONDS - ritual_invocations = list("Grant us the sight ...", - "... We call upon the shadows ...", - "... Show us the way ...") - invoke_msg = "... Let the darkness be our guide!!" - favor_cost = 1000 - -/datum/religion_rites/shadow_eyes/perform_rite(mob/living/user, atom/religious_tool) - if(!ismovable(religious_tool)) - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - var/atom/movable/movable_reltool = religious_tool - if(length(movable_reltool.buckled_mobs)) - to_chat(user,"You're going to grant the eyes to the one buckled on [movable_reltool].") - else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! - to_chat(user,"This rite requires a religious device that individuals can be buckled to.") - return FALSE - else - to_chat(user,"You're going to grant the eyes to yourself with this ritual.") - return ..() - -/datum/religion_rites/shadow_eyes/invoke_effect(mob/living/user, atom/religious_tool) - ..() - var/obj/item/organ/eyes/night_vision/organ = new() - if(!ismovable(religious_tool)) - CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") - var/atom/movable/movable_reltool = religious_tool - var/mob/living/carbon/human/rite_target - if(!length(movable_reltool.buckled_mobs)) - rite_target = user - else - for(var/buckled in movable_reltool.buckled_mobs) - if(ishuman(buckled)) - rite_target = buckled - break - if(!rite_target) - return FALSE - organ.Insert(rite_target) - rite_target.visible_message("[organ] have been merged into [rite_target] by the rite of [name]!") - return TRUE diff --git a/code/modules/religion/sects/candle_sect.dm b/code/modules/religion/sects/candle_sect.dm new file mode 100644 index 0000000000000..aa45e5165b46c --- /dev/null +++ b/code/modules/religion/sects/candle_sect.dm @@ -0,0 +1,153 @@ +/datum/religion_sect/candle_sect + name = "Ever-Burning Candle" + desc = "Sacrificing burning corpses with a lot of burn damage and candles grants you favor." + quote = "It must burn! The primal energy must be respected." + tgui_icon = "fire-alt" + alignment = ALIGNMENT_NEUT + max_favor = 10000 + desired_items = list( + /obj/item/candle = "already lit") + rites_list = list( + /datum/religion_rites/fireproof, + /datum/religion_rites/burning_sacrifice, + /datum/religion_rites/infinite_candle) + altar_icon_state = "convertaltar-red" + +//candle sect bibles don't heal or do anything special apart from the standard holy water blessings +/datum/religion_sect/candle_sect/sect_bless(mob/living/target, mob/living/chap) + return TRUE + +/datum/religion_sect/candle_sect/on_sacrifice(obj/item/candle/offering, mob/living/user) + if(!istype(offering)) + return + if(!offering.lit) + to_chat(user, "The candle needs to be lit to be offered!") + return + to_chat(user, "[GLOB.deity] is pleased with your sacrifice.") + adjust_favor(20, user) //it's not a lot but hey there's a pacifist favor option at least + qdel(offering) + return TRUE + + + +/**** Ever-Burning Candle sect rites ****/ + +///apply a bunch of fire immunity effect to clothing +/datum/religion_rites/fireproof/proc/apply_fireproof(obj/item/clothing/fireproofed) + fireproofed.name = "unmelting [fireproofed.name]" + fireproofed.max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + fireproofed.heat_protection = chosen_clothing.body_parts_covered + fireproofed.resistance_flags |= FIRE_PROOF + +/datum/religion_rites/fireproof + name = "Unmelting Protection" + desc = "Grants fire immunity to any piece of clothing." + ritual_length = 15 SECONDS + ritual_invocations = list( + "And so to support the holder of the Ever-Burning candle...", + "... allow this unworthy apparel to serve you ...", + "... make it strong enough to burn a thousand time and more ...") + invoke_msg = "... Come forth in your new form, and join the unmelting wax of the one true flame!" + favor_cost = 1000 +///the piece of clothing that will be fireproofed, only one per rite + var/obj/item/clothing/chosen_clothing + +/datum/religion_rites/fireproof/perform_rite(mob/living/user, atom/religious_tool) + for(var/obj/item/clothing/apparel in get_turf(religious_tool)) + if(apparel.max_heat_protection_temperature >= FIRE_IMMUNITY_MAX_TEMP_PROTECT) + continue //we ignore anything that is already fireproof + chosen_clothing = apparel //the apparel has been chosen by our lord and savior + return ..() + return FALSE + +/datum/religion_rites/fireproof/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there + if(istype(chosen_clothing,/obj/item/clothing/suit/hooded)) + var/obj/item/clothing/suit/hooded/as_hooded = chosen_clothing + if(as_hooded.hood) + apply_fireproof(as_hooded.hood) + else if(istype(chosen_clothing,/obj/item/clothing/suit/space/hardsuit)) + var/obj/item/clothing/suit/space/hardsuit/suit = chosen_clothing + if(suit.helmet) + apply_fireproof(suit.helmet) + apply_fireproof(chosen_clothing) + playsound(get_turf(religious_tool), 'sound/magic/fireball.ogg', 50, TRUE) + chosen_clothing = null //our lord and savior no longer cares about this apparel + return TRUE + chosen_clothing = null + to_chat(user,"The clothing that was chosen for the rite is no longer on the altar!") + return FALSE + +/datum/religion_rites/burning_sacrifice + name = "Burning Offering" + desc = "Sacrifice a buckled burning corpse for favor, the more burn damage the corpse has the more favor you will receive." + ritual_length = 15 SECONDS + ritual_invocations = list( + "Burning body ...", + "... cleansed by the flame ...", + "... we were all created from fire ...", + "... and to it ...") + invoke_msg = "... WE RETURN! " +///the burning corpse chosen for the sacrifice of the rite + var/mob/living/carbon/chosen_sacrifice + +/datum/religion_rites/burning_sacrifice/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!movable_reltool) + return FALSE + if(!LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"Nothing is buckled to the altar!") + return FALSE + for(var/corpse in movable_reltool.buckled_mobs) + if(!iscarbon(corpse))// only works with carbon corpse since most normal mobs can't be set on fire. + to_chat(user,"Only carbon lifeforms can be properly burned for the sacrifice!") + return FALSE + chosen_sacrifice = corpse + if(chosen_sacrifice.stat != DEAD) + to_chat(user,"You can only sacrifice dead bodies, this one is still alive!") + return FALSE + if(!chosen_sacrifice.on_fire) + to_chat(user,"This corpse needs to be on fire to be sacrificed!") + return FALSE + return ..() + +/datum/religion_rites/burning_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right corpse is still buckled + to_chat(user,"The right sacrifice is no longer on the altar!") + chosen_sacrifice = null + return FALSE + if(!chosen_sacrifice.on_fire) + to_chat(user,"The sacrifice is no longer on fire, it needs to burn until the end of the rite!") + chosen_sacrifice = null + return FALSE + if(chosen_sacrifice.stat != DEAD) + to_chat(user,"The sacrifice has to stay dead for the rite to work!") + chosen_sacrifice = null + return FALSE + var/favor_gained = 100 + round(chosen_sacrifice.getFireLoss()) + GLOB.religious_sect.adjust_favor(favor_gained, user) + to_chat(user, "[GLOB.deity] absorbs the burning corpse and any trace of fire with it. [GLOB.deity] rewards you with [favor_gained] favor.") + chosen_sacrifice.dust(force = TRUE) + playsound(get_turf(religious_tool), 'sound/effects/supermatter.ogg', 50, TRUE) + chosen_sacrifice = null + return TRUE + +/datum/religion_rites/infinite_candle + name = "Immortal Candles" + desc = "Creates 5 candles that never run out of wax." + ritual_length = 10 SECONDS + invoke_msg = "Burn bright, little candles, for you will only extinguish along with the universe." + favor_cost = 200 + +/datum/religion_rites/infinite_candle/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + var/altar_turf = get_turf(religious_tool) + for(var/i in 1 to 5) + new /obj/item/candle/infinite(altar_turf) + playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) + return TRUE diff --git a/code/modules/religion/sects/carp_sect.dm b/code/modules/religion/sects/carp_sect.dm new file mode 100644 index 0000000000000..01b1ca252e29d --- /dev/null +++ b/code/modules/religion/sects/carp_sect.dm @@ -0,0 +1,133 @@ +/datum/religion_sect/carp_sect + name = "Followers of the Great Carp" + desc = "A sect dedicated to the space carp and carp'sie, Offer the gods meat for favor." + quote = "Drown the station in fish and water." + tgui_icon = "fish" + alignment = ALIGNMENT_NEUT + max_favor = 10000 + desired_items = list( + /obj/item/food/meat/slab) + rites_list = list( + /datum/religion_rites/summon_carp, + /datum/religion_rites/flood_area, + /datum/religion_rites/summon_carpsuit) + altar_icon_state = "convertaltar-blue" + +//Carp bibles give people the carp faction! +/datum/religion_sect/carp_sect/sect_bless(mob/living/L, mob/living/user) + if(!isliving(L)) + return FALSE + L.faction |= "carp" + user.visible_message("[user] blessed [L] with the power of [GLOB.deity]! They are now protected from Space Carps, Although carps will still fight back if attacked.") + SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE + +/datum/religion_sect/carp_sect/on_sacrifice(obj/item/N, mob/living/L) //and this + var/obj/item/food/meat/meat = N + if(!istype(meat)) //how... + return + adjust_favor(20, L) + to_chat(L, "You offer [meat] to [GLOB.deity], pleasing them and gaining 20 favor in the process.") + qdel(N) + return TRUE + + +/**** Carp rites ****/ +/datum/religion_rites/summon_carp + name = "Summon Carp" + desc = "Creates a Sentient Space Carp, if a soul is willing to take it. If not, the favor is refunded." + ritual_length = 50 SECONDS + ritual_invocations = list( + "Grant us a new follower ...", + "... let them enter our realm ...", + "... become one with our world ...", + "... to swim in our space ...", + "... and help our cause ...") + invoke_msg = "... We summon thee, Holy Carp!" + favor_cost = 500 + +/datum/religion_rites/summon_carp/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) + user.visible_message("A tear in reality appears above the altar!") + var/list/candidates = poll_ghost_candidates("Do you wish to be summoned as a Holy Carp?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYCARP) + if(!length(candidates)) + new /obj/effect/gibspawner/generic(altar_turf) + user.visible_message("The carp pool was not strong enough to bring forth a space carp.") + GLOB.religious_sect?.adjust_favor(400, user) + return NOT_ENOUGH_PLAYERS + var/mob/dead/observer/selected = pick_n_take(candidates) + var/datum/mind/M = new /datum/mind(selected.key) + var/carp_species = pick(/mob/living/simple_animal/hostile/carp/megacarp, /mob/living/simple_animal/hostile/carp) + var/mob/living/simple_animal/hostile/carp = new carp_species(altar_turf) + carp.name = "Holy Space-Carp ([rand(1,999)])" + carp.key = selected.key + carp.sentience_act() + carp.maxHealth += 100 + carp.health += 100 + M.transfer_to(carp) + if(GLOB.religion) + carp.mind?.holy_role = HOLY_ROLE_PRIEST + to_chat(carp, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") + GLOB.religious_sect?.on_conversion(carp) + if(is_special_character(user)) + to_chat(carp, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") + else + to_chat(carp, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") + playsound(altar_turf, 'sound/effects/slosh.ogg', 50, TRUE) + return ..() + +/datum/religion_rites/summon_carpsuit + name = "Summon Carp-Suit" + desc = "Summons a Space-Carp Suit" + ritual_length = 30 SECONDS + ritual_invocations = list( + "We shall become one ...", + "... we shall blend in ...", + "... we shall join in the ways of the carp ...", + "... grant us new clothing ...") + invoke_msg = "So we can swim." + favor_cost = 300 + var/obj/item/clothing/suit/chosen_clothing + +/datum/religion_rites/summon_carpsuit/perform_rite(mob/living/user, atom/religious_tool) + var/turf/T = get_turf(religious_tool) + var/list/L = T.contents + if(!locate(/obj/item/clothing/suit) in L) + to_chat(user, "There is no suit clothing on the altar!") + return FALSE + for(var/obj/item/clothing/suit/apparel in L) + chosen_clothing = apparel //the apparel has been chosen by our lord and savior + return ..() + return FALSE + +/datum/religion_rites/summon_carpsuit/invoke_effect(mob/living/user, atom/religious_tool) + if(!QDELETED(chosen_clothing) && get_turf(religious_tool) == chosen_clothing.loc) //check if the same clothing is still there + user.visible_message("The [chosen_clothing] transforms!") + chosen_clothing.obj_destruction() + chosen_clothing = null + new /obj/item/clothing/suit/space/hardsuit/carp/old(get_turf(religious_tool)) + playsound(get_turf(religious_tool), 'sound/effects/slosh.ogg', 50, TRUE) + return ..() + chosen_clothing = null + to_chat(user, "The clothing that was chosen for the rite is no longer on the altar!") + return FALSE + +/datum/religion_rites/flood_area + name = "Flood Area" + desc = "Flood the area with water vapor, great for learning to swim!" + ritual_length = 25 SECONDS + ritual_invocations = list( + "We must swim ...", + "... but to do so, we need water ...", + "... grant us a great flood ...", + "... soak us in your glory ...", + "... we shall swim forever ...") + invoke_msg = "... in our own personal ocean." + favor_cost = 200 + +/datum/religion_rites/flood_area/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/open/T = get_turf(religious_tool) + if(istype(T)) + T.atmos_spawn_air("water_vapor=5000;TEMP=255") + return ..() diff --git a/code/modules/religion/sects/necro_sect.dm b/code/modules/religion/sects/necro_sect.dm new file mode 100644 index 0000000000000..1adbc03fdd4f0 --- /dev/null +++ b/code/modules/religion/sects/necro_sect.dm @@ -0,0 +1,273 @@ +/datum/religion_sect/necro_sect + name = "Necromancy" + desc = "A sect dedicated to the revival and summoning of the dead. Sacrificing living animals grants you favor." + quote = "An undead army is a must have!" + tgui_icon = "skull" + alignment = ALIGNMENT_EVIL + max_favor = 10000 + desired_items = list( + /obj/item/organ/) + rites_list = list( + /datum/religion_rites/raise_dead, + /datum/religion_rites/living_sacrifice, + /datum/religion_rites/raise_undead, + /datum/religion_rites/create_lesser_lich) + altar_icon_state = "convertaltar-green" + +//Necro bibles don't heal or do anything special apart from the standard holy water blessings +/datum/religion_sect/necro_sect/sect_bless(mob/living/blessed, mob/living/user) + return TRUE + +/datum/religion_sect/necro_sect/on_sacrifice(obj/item/N, mob/living/L) + if(!istype(N, /obj/item/organ)) + return + adjust_favor(10, L) + to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 10 favor in the process.") + qdel(N) + return TRUE + + +/// Necro Rites + +/datum/religion_rites/create_lesser_lich + name = "Create Lesser Lich" + desc = "Gives the bound creature a spell granting them the ability to create a lesser phylactery, causing them to become a skeleton and revive on death twice if the phylactery still exists on-station. Be warned, becoming a lesser lich will prevent revivial by any other means." + ritual_length = 60 SECONDS //This one's pretty powerful so it'll still be long + ritual_invocations = list("From the depths of the soul pool ...", + "... come forth into this being ...", + "... grant this servant power ...", + "... grant them temporary immortality ...") + invoke_msg = "... Grant them the power to become one with necromancy!!" + favor_cost = 2250 +/// the creature chosen for the rite + var/mob/living/lich_to_be +/// the the typepath of the spell to gran + var/lichspell = /obj/effect/proc_holder/spell/targeted/lesserlichdom + +/datum/religion_rites/create_lesser_lich/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(length(movable_reltool.buckled_mobs)) + for(var/creature in movable_reltool.buckled_mobs) + lich_to_be = creature + if(!lich_to_be.mind.hasSoul) + to_chat(user,"[lich_to_be] has no soul, as such this rite would not help them. To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) + if(knownspell.type == lichspell) + to_chat(user,"You've already empowered [lich_to_be], get them to use the spell granted to them! To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + to_chat(user,"You're going to empower the [lich_to_be] who is buckled on [movable_reltool].") + return ..() + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + lich_to_be = user + if(!lich_to_be.mind.hasSoul) + to_chat(user,"You have no soul, as such this rite would not help you. To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + for(var/obj/effect/proc_holder/spell/knownspell in lich_to_be.mob_spell_list) + if(knownspell.type == lichspell) + to_chat(user,"You've already empowered yourself, use the spell granted to you! To empower another, they must be buckled to [movable_reltool].") + lich_to_be = null + return FALSE + to_chat(user,"You're empowering yourself!") + return ..() + + +/datum/religion_rites/create_lesser_lich/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + if(!length(movable_reltool.buckled_mobs)) + lich_to_be = user + else + for(var/mob/living/carbon/human/buckled in movable_reltool.buckled_mobs) + lich_to_be = buckled + break + if(!lich_to_be) + return FALSE + lich_to_be.AddSpell(new lichspell(null)) + lich_to_be.visible_message("[lich_to_be] has been empowered by the soul pool!") + lich_to_be = null + return ..() + +/datum/religion_rites/raise_undead + name = "Raise Undead" + desc = "Creates an undead creature if a soul is willing to take it." + ritual_length = 50 SECONDS + ritual_invocations = list("Come forth from the pool of souls ...", + "... enter our realm ...", + "... become one with our world ...", + "... rise ...", + "... RISE! ...") + invoke_msg = "... RISE!!!" + favor_cost = 1250 + +/datum/religion_rites/raise_undead/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + new /obj/effect/temp_visual/cult/blood/long(altar_turf) + new /obj/effect/temp_visual/dir_setting/curse/long(altar_turf) + var/list/candidates = poll_ghost_candidates("Do you wish to be resurrected as a Holy Summoned Undead?", ROLE_HOLY_SUMMONED, null, 10 SECONDS, POLL_IGNORE_HOLYUNDEAD) + if(!length(candidates)) + to_chat(user, "The soul pool is empty...") + new /obj/effect/gibspawner/human/bodypartless(altar_turf) + user.visible_message("The soul pool was not strong enough to bring forth the undead.") + GLOB.religious_sect?.adjust_favor(favor_cost, user) //refund if nobody takes the role + return NOT_ENOUGH_PLAYERS + var/mob/dead/observer/selected = pick_n_take(candidates) + var/datum/mind/Mind = new /datum/mind(selected.key) + var/undead_species = pick(/mob/living/carbon/human/species/zombie, /mob/living/carbon/human/species/skeleton) + var/mob/living/carbon/human/species/undead = new undead_species(altar_turf) + undead.real_name = "Holy Undead ([rand(1,999)])" + Mind.active = 1 + Mind.transfer_to(undead) + undead.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(undead), ITEM_SLOT_BACK) + undead.equip_to_slot_or_del(new /obj/item/clothing/under/costume/skeleton(undead), ITEM_SLOT_ICLOTHING) + undead.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/chaplain_hoodie(undead), ITEM_SLOT_OCLOTHING) + undead.equip_to_slot_or_del(new /obj/item/clothing/shoes/sneakers/black(undead), ITEM_SLOT_FEET) + undead.AddSpell(new /obj/effect/proc_holder/spell/targeted/smoke(null)) + if(GLOB.religion) + var/obj/item/storage/book/bible/booze/B = new + undead.mind?.holy_role = HOLY_ROLE_PRIEST + B.deity_name = GLOB.deity + B.name = GLOB.bible_name + B.icon_state = GLOB.bible_icon_state + B.item_state = GLOB.bible_item_state + to_chat(undead, "There is already an established religion onboard the station. You are an acolyte of [GLOB.deity]. Defer to the Chaplain.") + undead.equip_to_slot_or_del(B, ITEM_SLOT_BACKPACK) + GLOB.religious_sect?.on_conversion(undead) + if(is_special_character(user)) + to_chat(undead, "You are grateful to have been summoned into this word by [user]. Serve [user.real_name], and assist [user.p_them()] in completing [user.p_their()] goals at any cost.") + else + to_chat(undead, "You are grateful to have been summoned into this world. You are now a member of this station's crew, Try not to cause any trouble.") + playsound(altar_turf, pick('sound/hallucinations/growl1.ogg','sound/hallucinations/growl2.ogg','sound/hallucinations/growl3.ogg',), 50, TRUE) + return ..() + +/datum/religion_rites/raise_dead + name = "Raise Dead" + desc = "Revives a buckled dead creature or person." + ritual_length = 40 SECONDS + ritual_invocations = list("Rejoin our world ...", + "... come forth from the beyond ...", + "... fresh life awaits you ...", + "... return to us ...", + "... by the power granted by the gods ...", + "... you shall rise again ...") + invoke_msg = "Welcome back to the mortal plain." + favor_cost = 1500 + +///the target + var/mob/living/carbon/human/raise_target + +/datum/religion_rites/raise_dead/perform_rite(mob/living/user, atom/religious_tool) + if(!religious_tool || !ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!length(movable_reltool.buckled_mobs)) + to_chat(user, "Nothing is buckled to the altar!") + return FALSE + for(var/mob/living/carbon/r_target in movable_reltool.buckled_mobs) + if(!iscarbon(r_target)) + to_chat(user, "Only carbon lifeforms can be properly resurrected!") + return FALSE + if(r_target.stat != DEAD) + to_chat(user, "You can only resurrect dead bodies, this one is still alive!") + return FALSE + if(!r_target.mind) + to_chat(user, "This creature has no connected soul...") + return FALSE + raise_target = r_target + raise_target.notify_ghost_cloning("Your soul is being summoned back to your body by mystical power!", source = src) + return ..() + +/datum/religion_rites/raise_dead/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + if(!(raise_target in religious_tool.buckled_mobs)) + to_chat(user, "The body is no longer on the altar!") + raise_target = null + return FALSE + if(!raise_target.mind) + to_chat(user, "This creature's soul has left the pool...") + raise_target = null + return FALSE + if(raise_target.stat != DEAD) + to_chat(user, "The target has to stay dead for the rite to work! If they came back without your spiritual guidence... Who knows what could happen!?") + raise_target = null + return FALSE + raise_target.grab_ghost() // Shove them back in their body. + raise_target.revive(full_heal = 1, admin_revive = 1) + playsound(altar_turf, 'sound/magic/staff_healing.ogg', 50, TRUE) + raise_target = null + return ..() + +/datum/religion_rites/living_sacrifice + name = "Living Sacrifice" + desc = "Sacrifice a non-sentient living buckled creature for favor." + ritual_length = 25 SECONDS + ritual_invocations = list("To offer this being unto the gods ...", + "... to feed them with its soul ...", + "... so that they may consume all within their path ...", + "... release their binding on this mortal plane ...", + "... I offer you this living being ...") + invoke_msg = "... may it join the horde of undead, and become one with the souls of the damned. " + +//the living creature chosen for the sacrifice of the rite + var/mob/living/chosen_sacrifice +/datum/religion_rites/living_sacrifice/perform_rite(mob/living/user, atom/religious_tool) + if(!religious_tool || !ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!length(movable_reltool.buckled_mobs)) + to_chat(user, "Nothing is buckled to the altar!") + return FALSE + for(var/creature in movable_reltool.buckled_mobs) + chosen_sacrifice = creature + if(chosen_sacrifice.stat == DEAD) + to_chat(user, "You can only sacrifice living creatures, this one is dead!") + chosen_sacrifice = null + return FALSE + if(chosen_sacrifice.mind) + to_chat(user, "This sacrifice is sentient! [GLOB.deity] will not accept this offering.") + chosen_sacrifice = null + return FALSE + var/mob/living/carbon/C = creature + if(!isnull(C)) + cuff(C) + return ..() + +/datum/religion_rites/living_sacrifice/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + if(!(chosen_sacrifice in religious_tool.buckled_mobs)) //checks one last time if the right creature is still buckled + to_chat(user, "The right sacrifice is no longer on the altar!") + chosen_sacrifice = null + return FALSE + if(chosen_sacrifice.stat == DEAD) + to_chat(user, "The sacrifice is no longer alive, it needs to be alive until the end of the rite!") + chosen_sacrifice = null + return FALSE + var/favor_gained = 200 + round(chosen_sacrifice.health * 2) + GLOB.religious_sect?.adjust_favor(favor_gained, user) + new /obj/effect/temp_visual/cult/blood/out(altar_turf) + to_chat(user, "[GLOB.deity] absorbs [chosen_sacrifice], leaving blood and gore in its place. [GLOB.deity] rewards you with [favor_gained] favor.") + chosen_sacrifice.gib(TRUE, FALSE, TRUE) + playsound(get_turf(religious_tool), 'sound/effects/bamf.ogg', 50, TRUE) + chosen_sacrifice = null + return ..() + +/datum/religion_rites/living_sacrifice/proc/cuff(var/mob/living/carbon/C) + if(C.handcuffed) + return + C.handcuffed = new /obj/item/restraints/handcuffs/energy/cult(C) + C.update_handcuffed() + playsound(C, 'sound/magic/smoke.ogg', 50, 1) + C.visible_message("Darkness forms around [C]'s wrists as shadowy bindings appear on them!") diff --git a/code/modules/religion/sects/plant_sect.dm b/code/modules/religion/sects/plant_sect.dm new file mode 100644 index 0000000000000..c8a0207e293c3 --- /dev/null +++ b/code/modules/religion/sects/plant_sect.dm @@ -0,0 +1,240 @@ +/datum/religion_sect/plant_sect + name = "Nature" + desc = "A sect dedicated to nature, plants, and animals. Sacrificing seeds grants you favor." + quote = "Living plant people? What has the world come to!" + tgui_icon = "tree" + alignment = ALIGNMENT_GOOD + max_favor = 10000 + desired_items = list( + /obj/item/seeds) + rites_list = list( + /datum/religion_rites/create_podperson, + /datum/religion_rites/create_sandstone, + /datum/religion_rites/grass_generator, + /datum/religion_rites/summon_animals) + altar_icon_state = "convertaltar-green" + +//plant bibles don't heal or do anything special apart from the standard holy water blessings +/datum/religion_sect/plant_sect/sect_bless(mob/living/blessed, mob/living/user) + return TRUE + +/datum/religion_sect/plant_sect/on_sacrifice(obj/item/N, mob/living/L) + if(!istype(N, /obj/item/seeds)) + return + adjust_favor(25, L) + to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 25 favor in the process.") + qdel(N) + return TRUE + + + +/obj/structure/destructible/religion/nature_pylon + name = "Orb of Nature" + desc = "A floating crystal that slowly heals all plantlife and holy creatures. It can be anchored with a null rod." + icon_state = "nature_orb" + anchored = FALSE + light_range = 5 + light_color = LIGHT_COLOR_GREEN + break_message = "The luminous green crystal shatters!" + var/heal_delay = 20 + var/last_heal = 0 + var/spread_delay = 45 + var/last_spread = 0 + +/obj/structure/destructible/religion/nature_pylon/Initialize(mapload) + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/structure/destructible/religion/nature_pylon/LateInitialize() + . = ..() + START_PROCESSING(SSobj, src) + +/obj/structure/destructible/religion/nature_pylon/Destroy() + STOP_PROCESSING(SSobj, src) + return ..() + + +/obj/structure/destructible/religion/nature_pylon/process(delta_time) + if(last_heal <= world.time) + last_heal = world.time + heal_delay + for(var/mob/living/L in range(5, src)) + if(L.health == L.maxHealth) + continue + if(!ispodperson(L) && !L.mind?.holy_role) + continue + new /obj/effect/temp_visual/heal(get_turf(src), "#47ac05") + if(ispodperson(L) || L.mind?.holy_role) + L.adjustBruteLoss(-2*delta_time, 0) + L.adjustToxLoss(-2*delta_time, 0) + L.adjustOxyLoss(-2*delta_time, 0) + L.adjustFireLoss(-2*delta_time, 0) + L.adjustCloneLoss(-2*delta_time, 0) + L.updatehealth() + if(L.blood_volume < BLOOD_VOLUME_NORMAL) + L.blood_volume += 1.0 + CHECK_TICK + if(last_spread <= world.time) + var/list/validturfs = list() + var/list/natureturfs = list() + for(var/T in circleviewturfs(src, 5)) + if(istype(T, /turf/open/floor/grass)) + natureturfs |= T + continue + var/static/list/blacklisted_pylon_turfs = typecacheof(list( + /turf/closed, + /turf/open/floor/grass, + /turf/open/space, + /turf/open/lava, + /turf/open/chasm)) + if(is_type_in_typecache(T, blacklisted_pylon_turfs)) + continue + else + validturfs |= T + + last_spread = world.time + spread_delay + + var/turf/T = safepick(validturfs) + if(T) + if(istype(T, /turf/open/floor/plating)) + T.PlaceOnTop(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) + else + T.ChangeTurf(pick(/turf/open/floor/grass, /turf/open/floor/grass/fairy/green), flags = CHANGETURF_INHERIT_AIR) + else + var/turf/open/floor/grass/F = safepick(natureturfs) + if(F) + new /obj/effect/temp_visual/religion/turf/floor(F) + else + // Are we in space or something? No grass turfs or + // convertable turfs? + last_spread = world.time + spread_delay*2 + +/obj/structure/destructible/religion/nature_pylon/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/nullrod)) + if(user.mind?.holy_role == NONE) + to_chat(user, "Only the faithful may control the disposition of [src]!") + return + anchored = !anchored + user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") + playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) + user.do_attack_animation(src) + return + if(I.tool_behaviour == TOOL_WRENCH) + return + return ..() + + +/**** Plant rites ****/ +/datum/religion_rites/summon_animals + name = "Create Life" + desc = "Creates a few animals, this can range from butterflys to giant frogs! Please be careful." + ritual_length = 30 SECONDS + ritual_invocations = list( + "Great Mother ...", + "... bring us new life ...", + "... to join with our nature ...", + "... and live amongst us ...") + invoke_msg = "... We summon thee, Animals from the Byond!" //might adjust to beyond due to ooc/ic/meta + favor_cost = 500 + +/datum/religion_rites/summon_animals/perform_rite(mob/living/user, atom/religious_tool) + var/turf/altar_turf = get_turf(religious_tool) + new /obj/effect/temp_visual/bluespace_fissure/long(altar_turf) + user.visible_message("A tear in reality appears above the altar!") + return ..() + +/datum/religion_rites/summon_animals/invoke_effect(mob/living/user, atom/religious_tool) + ..() + var/turf/altar_turf = get_turf(religious_tool) + for(var/i in 1 to 8) + var/mob/living/spawned_mob = create_random_mob(altar_turf, FRIENDLY_SPAWN) + spawned_mob.faction |= "neutral" + playsound(altar_turf, 'sound/ambience/servicebell.ogg', 25, TRUE) + if(prob(0.1)) + playsound(altar_turf, 'sound/effects/bamf.ogg', 100, TRUE) + altar_turf.visible_message("A large form seems to be forcing its way into your reality via the portal [user] opened! RUN!!!") + new /mob/living/simple_animal/hostile/jungle/leaper(altar_turf) + return ..() + +/datum/religion_rites/create_sandstone + name = "Create Sandstone" + desc = "Create Sandstone for soil production to help create a plant garden." + ritual_length = 35 SECONDS + ritual_invocations = list( + "Bring to us ...", + "... the stone we need ...", + "... so we can toil away ...") + invoke_msg = "and spread many seeds." + favor_cost = 800 + +/datum/religion_rites/create_sandstone/invoke_effect(mob/living/user, atom/religious_tool) + new /obj/item/stack/sheet/mineral/sandstone/fifty(get_turf(religious_tool)) + playsound(get_turf(religious_tool), 'sound/effects/pop_expl.ogg', 50, TRUE) + return ..() + +/datum/religion_rites/grass_generator + name = "Blessing of Nature" + desc = "Summon a moveable object that slowly generates grass and fairy-grass around itself while healing any Pod-People or Holy people nearby." + ritual_length = 60 SECONDS + ritual_invocations = list( + "Let the plantlife grow ...", + "... let it grow across the land ...", + "... far and wide it shall spread ...", + "... show us true nature ...", + "... and we shall worship it all ...") + invoke_msg = "... in our own personal haven." + favor_cost = 1000 + +/datum/religion_rites/grass_generator/invoke_effect(mob/living/user, atom/movable/religious_tool) + var/turf/open/T = get_turf(religious_tool) + if(istype(T)) + new /obj/structure/destructible/religion/nature_pylon(T) + return ..() + +/datum/religion_rites/create_podperson + name = "Nature Conversion" + desc = "Convert a human-esque individual into a being of nature. Buckle a human to convert them, otherwise it will convert you." + ritual_length = 30 SECONDS + ritual_invocations = list( + "By the power of nature ...", + "... We call upon you, in this time of need ...", + "... to merge us with all that is natural ...") + invoke_msg = "... May the grass be greener on the other side, show us what it means to be one with nature!!" + favor_cost = 300 + +/datum/religion_rites/create_podperson/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!movable_reltool) + return FALSE + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to convert the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(ispodperson(user)) + to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to convert yourself with this ritual.") + return ..() + +/datum/religion_rites/create_podperson/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + rite_target.set_species(/datum/species/pod) + rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") + return TRUE diff --git a/code/modules/religion/sects/puritan_sect.dm b/code/modules/religion/sects/puritan_sect.dm new file mode 100644 index 0000000000000..1fbdfc94409b0 --- /dev/null +++ b/code/modules/religion/sects/puritan_sect.dm @@ -0,0 +1,7 @@ +/datum/religion_sect/puritanism + name = "Nanotrasen Approved God" + desc = "Your run-of-the-mill sect, there are no benefits or boons associated." + quote = "Nanotrasen Recommends!" + tgui_icon = "bible" + +// Yes, that's all. diff --git a/code/modules/religion/sects/shadow_sect.dm b/code/modules/religion/sects/shadow_sect.dm new file mode 100644 index 0000000000000..0b010ec1678a2 --- /dev/null +++ b/code/modules/religion/sects/shadow_sect.dm @@ -0,0 +1,303 @@ +// Shadow sect - Original code by DingoDongler +/datum/religion_sect/shadow_sect + starter = FALSE + name = "Shadow" + desc = "A sect dedicated to the darkness. The manifested obelisks will generate favor from being in darkness." + quote = "Turn out the lights, and let the darkness cover the world!" + tgui_icon = "moon" + alignment = ALIGNMENT_EVIL + favor = 100 //Starts off with enough favor to make an obelisk + max_favor = 25000 + desired_items = list( + /obj/item/flashlight) + rites_list = list( + /datum/religion_rites/expand_shadows, + /datum/religion_rites/shadow_obelisk, + /datum/religion_rites/shadow_conversion, + /datum/religion_rites/shadow_blessing, + /datum/religion_rites/shadow_eyes) + altar_icon_state = "convertaltar-dark" + var/light_reach = 1 + var/light_power = 0 + var/list/obelisks = list() + +/datum/religion_sect/shadow_sect/is_available(mob/user) + if(isshadow(user)) + return TRUE + return FALSE + +//Shadow sect doesn't heal +/datum/religion_sect/shadow_sect/sect_bless(mob/living/blessed, mob/living/user) + return TRUE + +/datum/religion_sect/shadow_sect/on_sacrifice(obj/item/N, mob/living/L) + if(!istype(N, /obj/item/flashlight)) + return + adjust_favor(5, L) + to_chat(L, "You offer [N] to [GLOB.deity], pleasing them and gaining 5 favor in the process.") + qdel(N) + return TRUE + +/datum/religion_sect/shadow_sect/on_select(atom/religious_tool, mob/living/user) + . = ..() + if(!religious_tool || !user) + return + religious_tool.AddComponent(/datum/component/dark_favor, user) + +/datum/religion_sect/shadow_sect/on_conversion(mob/living/chap) //When sect is selected, and when a new chaplain joins after sect has been selected + . = ..() + if(is_special_character(chap)) + to_chat(chap, "As you are an antagonist role, you are free to spread darkness across the station.") + else + to_chat(chap, "You are not an antagonist, please do not spread darkness outside of the chapel without Command Staff approval.") + + +// Shadow sect construction +/obj/structure/destructible/religion/shadow_obelisk + name = "Shadow Obelisk" + desc = "Grants favor from being shrouded in shadows." + icon = 'icons/obj/hand_of_god_structures.dmi' + icon_state = "shadow-obelisk" + anchored = FALSE + break_message = "The Obelisk crumbles before you!" + +/obj/structure/destructible/religion/shadow_obelisk/attackby(obj/item/I, mob/living/user, params) + if(istype(I, /obj/item/nullrod)) + if(user.mind?.holy_role == NONE) + to_chat(user, "Only the faithful may control the disposition of [src]!") + return + anchored = !anchored + user.visible_message("[user] [anchored ? "" : "un"]anchors [src] [anchored ? "to" : "from"] the floor with [I].", "You [anchored ? "" : "un"]anchor [src] [anchored ? "to" : "from"] the floor with [I].") + playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) + user.do_attack_animation(src) + return + if(I.tool_behaviour == TOOL_WRENCH) + return + return ..() + +// Favor generator component. Used on the altar and obelisks +/datum/component/dark_favor //Original code by DingoDongler + var/mob/living/creator + +/datum/component/dark_favor/Initialize(mob/living/L) + . = ..() + if(!L) + return + creator = L + START_PROCESSING(SSobj, src) + +/datum/component/dark_favor/Destroy() //Original code by DingoDongler + . = ..() + STOP_PROCESSING(SSobj, src) + +/datum/component/dark_favor/process(delta_time) //Original code by DingoDongler + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + if(!istype(parent, /atom) || !istype(creator) || !istype(sect)) + return + var/atom/P = parent + var/turf/T = P.loc + if(!istype(T)) + return + var/light_amount = T.get_lumcount() + var/favor_gained = max(1 - light_amount, 0) * delta_time + sect.adjust_favor(favor_gained, creator) + + + +/**** Shadow rites ****/ //Original code by DingoDongler + +#define DARKNESS_INVERSE_COLOR "#AAD84B" //The color of light has to be inverse, since we're using negative light power + +/datum/religion_rites/shadow_conversion + name = "Shadowperson Conversion" + desc = "Converts a humanoid into a shadowperson, a race blessed by darkness." + ritual_length = 30 SECONDS + ritual_invocations = list( + "Let the darkness seep into you...", + "... And cover you, envelope you ...", + "... And make you one with it ...") + invoke_msg = "... And let you be born again!" + favor_cost = 1200 + +/datum/religion_rites/shadow_conversion/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to convert the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(isshadow(user)) + to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to convert yourself with this ritual.") + return ..() + +/datum/religion_rites/shadow_conversion/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + rite_target.set_species(/datum/species/shadow) + rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") + return TRUE + +/datum/religion_rites/shadow_obelisk + name = "Obelisk Manifestation" + desc = "Creates an obelisk that generates favor when in a dark area." + ritual_length = 45 SECONDS + ritual_invocations = list( + "Let the shadows combine...", + "... Solidify and grow ...", + "... Make an idol to eminate shadows ...") + invoke_msg = "I summon forth an obelisk, to appease the darkness." + favor_cost = 100 //Sect starts with 100 favor to begin + +/datum/religion_rites/shadow_obelisk/invoke_effect(mob/living/user, atom/religious_tool) + var/altar_turf = get_turf(religious_tool) + var/obj/structure/destructible/religion/shadow_obelisk/obelisk = new(altar_turf) + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + sect.obelisks += obelisk + obelisk.AddComponent(/datum/component/dark_favor, user) + obelisk.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) + playsound(altar_turf, 'sound/magic/fireball.ogg', 50, TRUE) + return ..() + +/datum/religion_rites/expand_shadows + name = "Shadow Expansion" + desc = "Grow the reach of shadows extending from the altar, and any obelisks." + ritual_length = 40 SECONDS + ritual_invocations = list( + "Spread out...", + "... Kill the light ...", + "... Encompass it all in darkness ...") + invoke_msg = "Shadows, reach your tendrils from my altar, and extend thy domain." + favor_cost = 175 + +/datum/religion_rites/expand_shadows/perform_rite(mob/living/user, atom/religious_tool) + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + if((sect.light_power <= -5) || (sect.light_reach >= 10)) + to_chat(user, "The shadows emanating from your idols is as strong as it could be.") + return FALSE + return ..() + +/datum/religion_rites/expand_shadows/invoke_effect(mob/living/user, atom/religious_tool) + . = ..() + var/datum/religion_sect/shadow_sect/sect = GLOB.religious_sect + if(!sect) + return + sect.light_reach += 2 + sect.light_power -= 1 + religious_tool.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) + for(var/obj/structure/destructible/religion/shadow_obelisk/D in sect.obelisks) + D.set_light(sect.light_reach, sect.light_power, DARKNESS_INVERSE_COLOR) + +/datum/religion_rites/shadow_blessing + name = "Shadow Blessing" + desc = "Bless someone with the power of shadows, and make them immune to all magic." + ritual_length = 60 SECONDS + ritual_invocations = list( + "Let the darkness reside within us...", + "... Let the power flow ...", + "... Encompass our souls in shade ...", + "... And let the demons know ...", + "... That their powers will not work apon us any more...",) + invoke_msg = "Bless thy brethen, and grant them immunity!" + favor_cost = 8000 + +/datum/religion_rites/shadow_blessing/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user, "This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to bless the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(isshadow(user)) + to_chat(user,"You've already blessed yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to bless yourself with this ritual.") + return ..() + +/datum/religion_rites/shadow_blessing/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + ADD_TRAIT(rite_target, TRAIT_ANTIMAGIC, MAGIC_TRAIT) + //glowing wings overlay + playsound(rite_target, 'sound/weapons/fwoosh.ogg', 75, 0) + rite_target.visible_message("[rite_target] has been blessed by the rite of [name]!") + return TRUE + + +/datum/religion_rites/shadow_eyes + name = "Grant Shadow Eyes" + desc = "Grants either the caster, or the buckled person, shadow eyes that give night vision." + ritual_length = 30 SECONDS + ritual_invocations = list( + "Grant us the sight ...", + "... We call upon the shadows ...", + "... Show us the way ...") + invoke_msg = "... Let the darkness be our guide!!" + favor_cost = 1000 + +/datum/religion_rites/shadow_eyes/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(length(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to grant the eyes to the one buckled on [movable_reltool].") + else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + else + to_chat(user,"You're going to grant the eyes to yourself with this ritual.") + return ..() + +/datum/religion_rites/shadow_eyes/invoke_effect(mob/living/user, atom/religious_tool) + ..() + var/obj/item/organ/eyes/night_vision/organ = new() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!length(movable_reltool.buckled_mobs)) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + organ.Insert(rite_target) + rite_target.visible_message("[organ] have been merged into [rite_target] by the rite of [name]!") + return TRUE diff --git a/code/modules/religion/sects/techno_sect.dm b/code/modules/religion/sects/techno_sect.dm new file mode 100644 index 0000000000000..0ab00c54fd295 --- /dev/null +++ b/code/modules/religion/sects/techno_sect.dm @@ -0,0 +1,202 @@ +/datum/religion_sect/technophile + name = "Technophile" + quote = "May you find peace in a metal shell." + desc = "Bibles now recharge cyborgs and heal robotic limbs if targeted, but they \ + do not heal organic limbs. You can now sacrifice cells, with favor depending on their charge." + tgui_icon = "robot" + alignment = ALIGNMENT_NEUT + desired_items = list( + /obj/item/stock_parts/cell = "with battery charge") + rites_list = list( + /datum/religion_rites/synthconversion, + /datum/religion_rites/machine_blessing, + /datum/religion_rites/machine_implantation) + altar_icon_state = "convertaltar-blue" + max_favor = 5000 + +/datum/religion_sect/technophile/sect_bless(mob/living/target, mob/living/chap) + if(iscyborg(target)) + var/mob/living/silicon/robot/R = target + var/charge_amt = 50 + if(target.mind?.holy_role == HOLY_ROLE_HIGHPRIEST) + charge_amt *= 2 + R.cell?.charge += charge_amt + R.visible_message("[chap] charges [R] with the power of [GLOB.deity]!") + to_chat(R, "You are charged by the power of [GLOB.deity]!") + SEND_SIGNAL(R, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) + return TRUE + if(!ishuman(target)) + return + var/mob/living/carbon/human/blessed = target + + //first we determine if we can charge them + var/did_we_charge = FALSE + var/obj/item/organ/stomach/battery/ethereal/eth_stomach = blessed.getorganslot(ORGAN_SLOT_STOMACH) + if(istype(eth_stomach)) + eth_stomach.adjust_charge(60) + did_we_charge = TRUE + + //if we're not targeting a robot part we stop early + var/obj/item/bodypart/bodypart = blessed.get_bodypart(chap.get_combat_bodyzone(target, zone_context = BODYZONE_CONTEXT_ROBOTIC_LIMB_HEALING)) + if(IS_ORGANIC_LIMB(bodypart)) + if(!did_we_charge) + to_chat(chap, "[GLOB.deity] scoffs at the idea of healing such fleshy matter!") + else + blessed.visible_message("[chap] charges [blessed] with the power of [GLOB.deity]!") + to_chat(blessed, "You feel charged by the power of [GLOB.deity]!") + SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + playsound(chap, 'sound/machines/synth_yes.ogg', 25, TRUE, -1) + return TRUE + + //charge(?) and go + if(bodypart.heal_damage(5,5,null,BODYTYPE_ROBOTIC)) + blessed.update_damage_overlays() + + blessed.visible_message("[chap] [did_we_charge ? "repairs" : "repairs and charges"] [blessed] with the power of [GLOB.deity]!") + to_chat(blessed, "The inner machinations of [GLOB.deity] [did_we_charge ? "repairs" : "repairs and charges"] you!") + playsound(chap, 'sound/effects/bang.ogg', 25, TRUE, -1) + SEND_SIGNAL(blessed, COMSIG_ADD_MOOD_EVENT, "blessing", /datum/mood_event/blessing) + return TRUE + +/datum/religion_sect/technophile/on_sacrifice(obj/item/I, mob/living/chap) + var/obj/item/stock_parts/cell/the_cell = I + if(!istype(the_cell)) //how... + return + if(the_cell.charge < 300) + to_chat(chap,"[GLOB.deity] does not accept pity amounts of power.") + return + adjust_favor(round(the_cell.charge/100), chap) + to_chat(chap, "You offer [the_cell]'s power to [GLOB.deity], pleasing them.") + qdel(I) + return TRUE + + + +/**** Technophile Sect ****/ +/datum/religion_rites/synthconversion + name = "Synthetic Conversion" + desc = "Convert a human-esque individual into a (superior) Android. Buckle a human to convert them, otherwise it will convert you." + ritual_length = 25 SECONDS + ritual_invocations = list( + "By the inner workings of our god ...", + "... We call upon you, in the face of adversity ...", + "... to complete us, removing that which is undesirable ...") + invoke_msg = "... Arise, our champion! Become that which your soul craves, live in the world as your true form!!" + favor_cost = 1800 + +/datum/religion_rites/synthconversion/perform_rite(mob/living/user, atom/religious_tool) + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(!movable_reltool) + return FALSE + if(LAZYLEN(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to convert the one buckled on [movable_reltool].") + else + if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + if(isandroid(user)) + to_chat(user,"You've already converted yourself. To convert others, they must be buckled to [movable_reltool].") + return FALSE + to_chat(user,"You're going to convert yourself with this ritual.") + return ..() + +/datum/religion_rites/synthconversion/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!movable_reltool?.buckled_mobs?.len) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + return FALSE + rite_target.set_species(/datum/species/android) + rite_target.visible_message("[rite_target] has been converted by the rite of [name]!") + return TRUE + + +/datum/religion_rites/machine_blessing + name = "Receive Blessing" + desc = "Receive a random blessing from the machine god to further your ascension." + ritual_length = 5 SECONDS + ritual_invocations =list( + "Let your will power our forges.", + "... Help us in our great conquest!") + invoke_msg = "The end of flesh is near!" + favor_cost = 800 + +/datum/religion_rites/machine_blessing/invoke_effect(mob/living/user, atom/movable/religious_tool) + ..() + var/altar_turf = get_turf(religious_tool) + var/blessing = pick( + /obj/item/organ/cyberimp/arm/surgery, + /obj/item/organ/cyberimp/eyes/hud/diagnostic, + /obj/item/organ/cyberimp/eyes/hud/medical, + /obj/item/organ/cyberimp/mouth/breathing_tube, + /obj/item/organ/cyberimp/chest/thrusters, + /obj/item/organ/cyberimp/chest/nutriment, + /obj/item/organ/cyberimp/arm/toolset, + /obj/item/organ/wings/cybernetic, + /obj/item/organ/eyes/robotic/glow) + new blessing(altar_turf) + return TRUE + + +/datum/religion_rites/machine_implantation + name = "Machine Implantation" + desc = "Apply a provided upgrade to your body. Place a cybernetic item on the altar, then buckle someone to implant them, otherwise it will implant you." + ritual_length = 20 SECONDS + ritual_invocations = list( + "Lend us your power ...", + "... We call upon you, grant us this upgrade ...", + "... Complete us, joining man and machine ...") + invoke_msg = "... Let the mechanical parts, Merge!!" + favor_cost = 1000 + var/obj/item/organ/chosen_implant + +/datum/religion_rites/machine_implantation/perform_rite(mob/living/user, atom/religious_tool) + chosen_implant = locate() in get_turf(religious_tool) + if(!chosen_implant) + to_chat(user, "This rite requires cybernetics for implantation.") + return FALSE + if(!ismovable(religious_tool)) + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + var/atom/movable/movable_reltool = religious_tool + if(length(movable_reltool.buckled_mobs)) + to_chat(user,"You're going to merge the implant with the one buckled on [movable_reltool].") + else if(!movable_reltool.can_buckle) //yes, if you have somehow managed to have someone buckled to something that now cannot buckle, we will still let you perform the rite! + to_chat(user,"This rite requires a religious device that individuals can be buckled to.") + return FALSE + to_chat(user,"You're going to merge the implant into yourself with this ritual.") + return ..() + +/datum/religion_rites/machine_implantation/invoke_effect(mob/living/user, atom/religious_tool) + ..() + if(!ismovable(religious_tool)) + CRASH("[name]'s perform_rite had a movable atom that has somehow turned into a non-movable!") + var/atom/movable/movable_reltool = religious_tool + var/mob/living/carbon/human/rite_target + if(!length(movable_reltool.buckled_mobs)) + rite_target = user + else + for(var/buckled in movable_reltool.buckled_mobs) + if(ishuman(buckled)) + rite_target = buckled + break + if(!rite_target) + chosen_implant = null + return FALSE + chosen_implant.Insert(rite_target) + rite_target.visible_message("[chosen_implant] has been merged into [rite_target] by the rite of [name]!") + chosen_implant = null + return TRUE From 15eb7551014bd2c899cbc787575fd0a9de2cc6e0 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 03:45:00 -0500 Subject: [PATCH 17/36] Automatic changelog generation for PR #10689 [ci skip] --- html/changelogs/AutoChangeLog-pr-10689.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10689.yml diff --git a/html/changelogs/AutoChangeLog-pr-10689.yml b/html/changelogs/AutoChangeLog-pr-10689.yml new file mode 100644 index 0000000000000..eb68063294b22 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10689.yml @@ -0,0 +1,4 @@ +author: EvilDragonfiend +delete-after: true +changes: + - code_imp: cleaned up religion code into multiple dm files From 0ccc58b9eab551deb753b4dfcf1182ccf1b0bc26 Mon Sep 17 00:00:00 2001 From: ToasterBan <54711687+ToasterBan@users.noreply.github.com> Date: Wed, 8 May 2024 10:39:42 +0200 Subject: [PATCH 18/36] adds intentional check to emotes with effects (#10713) --- code/datums/components/aiming.dm | 2 +- code/modules/mob/living/emote.dm | 62 ++++++++++--------- .../nanites/nanite_programs/suppression.dm | 6 -- 3 files changed, 34 insertions(+), 36 deletions(-) diff --git a/code/datums/components/aiming.dm b/code/datums/components/aiming.dm index b968656ff4ce3..aa254eabdf982 100644 --- a/code/datums/components/aiming.dm +++ b/code/datums/components/aiming.dm @@ -334,7 +334,7 @@ AIMING_DROP_WEAPON means they selected the "drop your weapon" command /datum/component/aiming/proc/aim_react_act(choice) if(choice == SURRENDER) - target.emote(SURRENDER) + target.emote(SURRENDER,intentional = TRUE) QDEL_NULL(choice_menu_target) // Shows a crosshair effect when aiming at a target diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index f0d7ffa02ce91..473b83fd49cd1 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -73,7 +73,7 @@ /datum/emote/living/collapse/run_emote(mob/user, params, type_override, intentional) . = ..() - if(. && isliving(user)) + if(. && isliving(user) && intentional) var/mob/living/L = user L.Unconscious(40) @@ -121,7 +121,7 @@ /datum/emote/living/faint/run_emote(mob/user, params, type_override, intentional) . = ..() - if(. && isliving(user)) + if(. && isliving(user) && intentional) var/mob/living/L = user L.SetSleeping(200) @@ -243,7 +243,7 @@ /datum/emote/living/point/run_emote(mob/user, params, type_override, intentional) message_param = initial(message_param) // reset - if(ishuman(user)) + if(ishuman(user) && intentional) var/mob/living/carbon/human/H = user if(H.get_num_arms() == 0) if(H.get_num_legs() != 0) @@ -338,7 +338,7 @@ /datum/emote/living/surrender/run_emote(mob/user, params, type_override, intentional) . = ..() - if(. && isliving(user)) + if(. && isliving(user) && intentional) var/mob/living/L = user L.Paralyze(200) @@ -471,12 +471,13 @@ /datum/emote/living/circle/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/circlegame/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You make a circle with your hand.") - else - qdel(N) - to_chat(user, "You don't have any free hands to make a circle with.") + if(intentional) + var/obj/item/circlegame/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You make a circle with your hand.") + else + qdel(N) + to_chat(user, "You don't have any free hands to make a circle with.") /datum/emote/living/slap key = "slap" @@ -487,11 +488,12 @@ . = ..() if(!.) return - var/obj/item/slapper/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You ready your slapping hand.") - else - to_chat(user, "You're incapable of slapping in your current state.") + if(intentional) + var/obj/item/slapper/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You ready your slapping hand.") + else + to_chat(user, "You're incapable of slapping in your current state.") /datum/emote/living/raisehand key = "highfive" @@ -499,14 +501,15 @@ message = "raises their hand" restraint_check = TRUE -/datum/emote/living/raisehand/run_emote(mob/user, params) +/datum/emote/living/raisehand/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/highfive/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You raise your hand for a high-five.") - else - qdel(N) - to_chat(user, "You don't have any free hands to high-five with.") + if(intentional) + var/obj/item/highfive/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You raise your hand for a high-five.") + else + qdel(N) + to_chat(user, "You don't have any free hands to high-five with.") /datum/emote/living/fingergun key = "fingergun" @@ -514,14 +517,15 @@ message = "forms their fingers into the shape of a crude gun" restraint_check = TRUE -/datum/emote/living/fingergun/run_emote(mob/user, params) +/datum/emote/living/fingergun/run_emote(mob/user, params, type_override, intentional) . = ..() - var/obj/item/gun/ballistic/revolver/mime/N = new(user) - if(user.put_in_hands(N)) - to_chat(user, "You form your fingers into a gun.") - else - qdel(N) - to_chat(user, "You don't have any free hands to make fingerguns with.") + if(intentional) + var/obj/item/gun/ballistic/revolver/mime/N = new(user) + if(user.put_in_hands(N)) + to_chat(user, "You form your fingers into a gun.") + else + qdel(N) + to_chat(user, "You don't have any free hands to make fingerguns with.") /datum/emote/living/click key = "click" diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm index c0fc41fa4db21..21e7cb7245dea 100644 --- a/code/modules/research/nanites/nanite_programs/suppression.dm +++ b/code/modules/research/nanites/nanite_programs/suppression.dm @@ -134,10 +134,6 @@ trigger_cost = 3 trigger_cooldown = 20 rogue_types = list(/datum/nanite_program/brain_misfire, /datum/nanite_program/brain_decay) - var/static/list/blacklist = list( - "*surrender", - "*collapse" - ) /datum/nanite_program/comm/speech/register_extra_settings() . = ..() @@ -155,8 +151,6 @@ if(!comm_message) var/datum/nanite_extra_setting/sentence = extra_settings[NES_SENTENCE] sent_message = sentence.get_value() - if(sent_message in blacklist) - return to_chat(host_mob, "You feel compelled to speak...") host_mob.say(sent_message, forced = "nanite speech") From 89660ff93095ad9eee575ac206620862bee81b0e Mon Sep 17 00:00:00 2001 From: PowerfulBacon <26465327+PowerfulBacon@users.noreply.github.com> Date: Wed, 8 May 2024 09:40:37 +0100 Subject: [PATCH 19/36] Gun equip changes (#10648) * Gun balance * Reduces syndicate hardsuit slowdown * Update gun.dm * Apply suggestions from code review --- code/modules/antagonists/cult/cult_items.dm | 1 + code/modules/clothing/spacesuits/hardsuit.dm | 4 ++- code/modules/projectiles/gun.dm | 29 +++++++++---------- .../projectiles/guns/ballistic/pistol.dm | 3 +- .../projectiles/guns/ballistic/rifle.dm | 1 + code/modules/projectiles/guns/energy/stun.dm | 1 - code/modules/projectiles/guns/magic.dm | 1 + 7 files changed, 20 insertions(+), 20 deletions(-) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index 17418e5b8d719..d5733af499ffb 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -758,6 +758,7 @@ Striking a noncultist, however, will tear their flesh."} fire_sound = 'sound/magic/wand_teleport.ogg' weapon_weight = WEAPON_LIGHT equip_time = 0 + has_weapon_slowdown = FALSE /obj/item/ammo_box/magazine/internal/boltaction/enchanted/arcane_barrage/blood ammo_type = /obj/item/ammo_casing/magic/arcane_barrage/blood diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm index f6ab865e2ff16..ca31601d7f6c9 100644 --- a/code/modules/clothing/spacesuits/hardsuit.dm +++ b/code/modules/clothing/spacesuits/hardsuit.dm @@ -497,6 +497,7 @@ helmettype = /obj/item/clothing/head/helmet/space/hardsuit/syndi jetpack = /obj/item/tank/jetpack/suit item_flags = ILLEGAL //Syndicate only and difficult to obtain outside of uplink anyway. Nukie hardsuits on the ship are illegal. + slowdown = 0.5 actions_types = list( /datum/action/item_action/toggle_helmet, /datum/action/item_action/toggle_beacon, @@ -527,7 +528,7 @@ /obj/item/clothing/suit/space/hardsuit/syndi/proc/activate_space_mode() name = initial(name) desc = initial(desc) - slowdown = 1 + slowdown = 0.5 clothing_flags |= STOPSPRESSUREDAMAGE cold_protection |= CHEST | GROIN | LEGS | FEET | ARMS | HANDS if(ishuman(loc)) @@ -559,6 +560,7 @@ heat_protection = HEAD max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT resistance_flags = FIRE_PROOF | ACID_PROOF + /obj/item/clothing/suit/space/hardsuit/syndi/elite name = "elite syndicate hardsuit" desc = "An elite version of the syndicate hardsuit, with improved armour and fireproofing. It is in travel mode." diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index ef43a95d157d2..43b51205ba111 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -10,6 +10,7 @@ item_state = "gun" flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT + item_flags = SLOWS_WHILE_IN_HAND custom_materials = list(/datum/material/iron=2000) w_class = WEIGHT_CLASS_LARGE throwforce = 5 @@ -91,13 +92,14 @@ var/ranged_cooldown = 0 // Equipping - /// The slowdown applied to mobs upon a gun being equipped - var/equip_slowdown = 0.5 /// The time it takes for a gun to count as equipped, null to get a precalculated value var/equip_time = null /// The timer ID of our equipping action VAR_PRIVATE/equip_timer_id + // Weapon slowdown + var/has_weapon_slowdown = TRUE + /obj/item/gun/Initialize(mapload) . = ..() if(pin) @@ -111,12 +113,16 @@ canMouseDown = automatic //Nsv13 / Bee change. build_zooming() if (isnull(equip_time)) - // Light guns: 1.5 second equip time - // Medium guns: 2 second equip time - // Heavy guns: 2.5 second equip time - equip_time = weapon_weight * 5 + 10 - if(isnull(spread_unwielded)) + // Light guns: 0.5 second equip time + // Medium guns: 0.8 second equip time + // Heavy guns: 1.1 second equip time + equip_time = weapon_weight * 3 + 2 + if (isnull(spread_unwielded)) spread_unwielded = weapon_weight * 10 + 10 + if (has_weapon_slowdown) + if (!slowdown) + slowdown = 0.3 + weapon_weight * 0.1 + item_flags |= SLOWS_WHILE_IN_HAND if(requires_wielding) RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(wield)) RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(unwield)) @@ -194,10 +200,7 @@ if (slot == ITEM_SLOT_HANDS) ranged_cooldown = max(world.time + equip_time, ranged_cooldown) user.client?.give_cooldown_cursor(ranged_cooldown - world.time) - equip_timer_id = addtimer(CALLBACK(src, PROC_REF(clear_gun_equip_slowdown), user), equip_time, TIMER_STOPPABLE) - user.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/drawing_firearm, multiplicative_slowdown = equip_slowdown) else - clear_gun_equip_slowdown(user) if (equip_timer_id) deltimer(equip_timer_id) equip_timer_id = null @@ -215,16 +218,10 @@ zoom(user, user.dir) update_icon() user.client?.clear_cooldown_cursor() - clear_gun_equip_slowdown(user) if (equip_timer_id) deltimer(equip_timer_id) equip_timer_id = null -/obj/item/gun/proc/clear_gun_equip_slowdown(mob/living/user) - slowdown = initial(slowdown) - user.remove_movespeed_modifier(/datum/movespeed_modifier/drawing_firearm) - equip_timer_id = null - //called after the gun has successfully fired its chambered ammo. /obj/item/gun/proc/process_chamber() return FALSE diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm index ae12c1b291cbc..39a23bedd4240 100644 --- a/code/modules/projectiles/guns/ballistic/pistol.dm +++ b/code/modules/projectiles/guns/ballistic/pistol.dm @@ -16,7 +16,6 @@ fire_rate = 3 automatic = 0 weapon_weight = WEAPON_LIGHT - equip_time = 1 SECONDS /obj/item/gun/ballistic/automatic/pistol/no_mag spawnwithmagazine = FALSE @@ -51,6 +50,7 @@ wild_spread = TRUE wild_factor = 0.70 //Minimum spread is 70% of spread value equip_time = 0 + has_weapon_slowdown = FALSE /obj/item/gun/ballistic/automatic/pistol/der38/twelveshooter //For debugging only, or meme shit name = "palm pistol devastator" @@ -77,7 +77,6 @@ mag_type = /obj/item/ammo_box/magazine/m50 can_suppress = FALSE mag_display = TRUE - equip_time = 2 SECONDS /obj/item/gun/ballistic/automatic/pistol/deagle/gold desc = "A gold plated Desert Eagle folded over a million times by superior martian gunsmiths. Uses .50 AE ammo." diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index dca47c5c7775c..122958ed3814c 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -64,6 +64,7 @@ desc = "Careful not to lose your head." can_sawoff = FALSE equip_time = 0 SECONDS + has_weapon_slowdown = FALSE recoil = 0 var/guns_left = 30 mag_type = /obj/item/ammo_box/magazine/internal/boltaction/enchanted diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm index b16d26bfb6e63..6cddac9147b03 100644 --- a/code/modules/projectiles/guns/energy/stun.dm +++ b/code/modules/projectiles/guns/energy/stun.dm @@ -42,7 +42,6 @@ can_flashlight = TRUE flight_x_offset = 15 flight_y_offset = 10 - equip_time = 2 SECONDS /obj/item/gun/energy/disabler/cyborg name = "cyborg disabler" diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index d64cace153faf..1e1c36ed1a78f 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -22,6 +22,7 @@ pin = /obj/item/firing_pin/magic requires_wielding = FALSE //Magic has no recoil, just hold with 1 hand equip_time = 0 + has_weapon_slowdown = FALSE lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands righthand_file = 'icons/mob/inhands/items_righthand.dmi' From 6b1dc9331eb5b3799e6bfa85a2e1a8ef82b4cfc7 Mon Sep 17 00:00:00 2001 From: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Date: Wed, 8 May 2024 04:41:08 -0400 Subject: [PATCH 20/36] Ports carbon 'core-temperatures' & more advanced human temperature handling/stabilization (#10317) * finish movement modifiers first * fix conflicts * https://github.com/tgstation/tgstation/pull/55610 * https://github.com/tgstation/tgstation/pull/48912 * fix issue with movespeed modifiers --- code/__DEFINES/atmospherics.dm | 51 ++- code/__HELPERS/mobs.dm | 14 + .../datums/diseases/advance/symptoms/fever.dm | 7 +- .../diseases/advance/symptoms/shivering.dm | 7 +- code/datums/status_effects/buffs.dm | 3 + .../mecha/equipment/tools/medical_tools.dm | 7 +- code/game/objects/items/devices/scanners.dm | 1 + code/modules/mob/living/carbon/human/human.dm | 2 + .../mob/living/carbon/human/human_defines.dm | 6 + code/modules/mob/living/carbon/human/life.dm | 16 +- .../mob/living/carbon/human/species.dm | 349 ++++++++++++------ .../human/species_types/lizardpeople.dm | 2 +- .../carbon/human/species_types/zombies.dm | 2 +- code/modules/mob/living/carbon/life.dm | 2 +- .../hostile/mining_mobs/basilisk.dm | 4 +- code/modules/mob/mob_defines.dm | 3 + code/modules/projectiles/projectile/magic.dm | 2 +- .../projectile/special/temperature.dm | 19 +- .../chemistry/reagents/medicine_reagents.dm | 6 + .../reagents/pyrotechnic_reagents.dm | 6 + .../crossbreeding/_status_effects.dm | 8 +- .../spells/spell_types/construct_spells.dm | 3 + 22 files changed, 370 insertions(+), 150 deletions(-) diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index a2f42354530be..033b608bfe17e 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -62,22 +62,32 @@ #define STOP_REACTIONS 2 // Pressure limits. -#define HAZARD_HIGH_PRESSURE 550 //! This determines at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) -#define WARNING_HIGH_PRESSURE 325 //! This determines when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) -#define WARNING_LOW_PRESSURE 50 //! This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) -#define HAZARD_LOW_PRESSURE 20 //! This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) - -#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 //! This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. - -#define BODYTEMP_NORMAL 310.15 //! The natural temperature for a body -#define BODYTEMP_AUTORECOVERY_DIVISOR 11 //! This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. -#define BODYTEMP_AUTORECOVERY_MINIMUM 12 //! Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50. +/// This determins at what pressure the ultra-high pressure red icon is displayed. (This one is set as a constant) +#define HAZARD_HIGH_PRESSURE 550 +/// This determins when the orange pressure icon is displayed (it is 0.7 * HAZARD_HIGH_PRESSURE) +#define WARNING_HIGH_PRESSURE 325 +/// This is when the gray low pressure icon is displayed. (it is 2.5 * HAZARD_LOW_PRESSURE) +#define WARNING_LOW_PRESSURE 50 +/// This is when the black ultra-low pressure icon is displayed. (This one is set as a constant) +#define HAZARD_LOW_PRESSURE 20 + +/// This is used in handle_temperature_damage() for humans, and in reagents that affect body temperature. Temperature damage is multiplied by this amount. +#define TEMPERATURE_DAMAGE_COEFFICIENT 1.5 + +/// The natural temperature for a body +#define BODYTEMP_NORMAL 310.15 +/// This is the divisor which handles how much of the temperature difference between the current body temperature and 310.15K (optimal temperature) humans auto-regenerate each tick. The higher the number, the slower the recovery. This is applied each tick, so long as the mob is alive. +#define BODYTEMP_AUTORECOVERY_DIVISOR 14 +/// Minimum amount of kelvin moved toward 310K per tick. So long as abs(310.15 - bodytemp) is more than 50. +#define BODYTEMP_AUTORECOVERY_MINIMUM 6 ///Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is lower than their body temperature. Make it lower to lose bodytemp faster. #define BODYTEMP_COLD_DIVISOR 15 /// Similar to the BODYTEMP_AUTORECOVERY_DIVISOR, but this is the divisor which is applied at the stage that follows autorecovery. This is the divisor which comes into play when the human's loc temperature is higher than their body temperature. Make it lower to gain bodytemp faster. #define BODYTEMP_HEAT_DIVISOR 15 -#define BODYTEMP_COOLING_MAX -100 //! The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area. -#define BODYTEMP_HEATING_MAX 30 //! The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area. +/// The maximum number of degrees that your body can cool in 1 tick, due to the environment, when in a cold area. +#define BODYTEMP_COOLING_MAX -30 +/// The maximum number of degrees that your body can heat up in 1 tick, due to the environment, when in a hot area. +#define BODYTEMP_HEATING_MAX 30 /// The body temperature limit the human body can take before it starts taking damage from heat. /// This also affects how fast the body normalises it's temperature when hot. @@ -87,7 +97,22 @@ /// This also affects how fast the body normalises it's temperature when cold. /// 270k is about -3c, that is below freezing and would hurt over time. #define BODYTEMP_COLD_DAMAGE_LIMIT (BODYTEMP_NORMAL - 40) - +/// The body temperature limit the human body can take before it will take wound damage. +#define BODYTEMP_HEAT_WOUND_LIMIT (BODYTEMP_NORMAL + 90) // 400.5 k + +// Body temperature warning icons +/// The temperature the red icon is displayed. +#define BODYTEMP_HEAT_WARNING_3 (BODYTEMP_HEAT_DAMAGE_LIMIT + 360) //+700k +/// The temperature the orange icon is displayed. +#define BODYTEMP_HEAT_WARNING_2 (BODYTEMP_HEAT_DAMAGE_LIMIT + 120) //460K +/// The temperature the yellow icon is displayed. +#define BODYTEMP_HEAT_WARNING_1 (BODYTEMP_HEAT_DAMAGE_LIMIT) //340K +/// The temperature the light green icon is displayed. +#define BODYTEMP_COLD_WARNING_1 (BODYTEMP_COLD_DAMAGE_LIMIT) //270k +/// The temperature the cyan icon is displayed. +#define BODYTEMP_COLD_WARNING_2 (BODYTEMP_COLD_DAMAGE_LIMIT - 70) //200k +/// The temperature the blue icon is displayed. +#define BODYTEMP_COLD_WARNING_3 (BODYTEMP_COLD_DAMAGE_LIMIT - 150) //120k #define SPACE_HELM_MIN_TEMP_PROTECT 2.0 //! what min_cold_protection_temperature is set to for space-helmet quality headwear. MUST NOT BE 0. #define SPACE_HELM_MAX_TEMP_PROTECT 1500 //! Thermal insulation works both ways /Malkevin diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 71a3f315fac28..17fd243d2adf0 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -716,6 +716,20 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) . = pick(ais) return . +/** + * Used to get the amount of change between two body temperatures + * + * When passed the difference between two temperatures returns the amount of change to temperature to apply. + * The change rate should be kept at a low value tween 0.16 and 0.02 for optimal results. + * vars: + * * temp_diff (required) The differance between two temperatures + * * change_rate (optional)(Default: 0.06) The rate of range multiplyer + */ +/proc/get_temp_change_amount(temp_diff, change_rate = 0.06) + if(temp_diff < 0) + return (log((temp_diff * -1) * change_rate + 1) * BODYTEMP_AUTORECOVERY_DIVISOR) * -1 + return log(temp_diff * change_rate + 1) * BODYTEMP_AUTORECOVERY_DIVISOR + //// Generalised helper proc for letting mobs rename themselves. Used to be clname() and ainame() /mob/proc/apply_pref_name(preference_type, client/C) if(!C) diff --git a/code/datums/diseases/advance/symptoms/fever.dm b/code/datums/diseases/advance/symptoms/fever.dm index 8bc959bea097b..042a34f2fdf11 100644 --- a/code/datums/diseases/advance/symptoms/fever.dm +++ b/code/datums/diseases/advance/symptoms/fever.dm @@ -50,7 +50,6 @@ Bonus unsafe = TRUE if(A.resistance >= 10) power = 2.5 - set_body_temp(A.affected_mob, A) /datum/symptom/fever/Activate(datum/disease/advance/A) if(!..()) @@ -62,6 +61,7 @@ Bonus to_chat(M, "[pick("You feel hot.", "You feel like you're burning.")]") else to_chat(M, "[pick("You feel too hot.", "You feel like your blood is boiling.")]") + set_body_temp(A.affected_mob, A) /** * set_body_temp Sets the body temp change @@ -72,7 +72,10 @@ Bonus * * datum/disease/advance/A The disease applying the symptom */ /datum/symptom/fever/proc/set_body_temp(mob/living/M, datum/disease/advance/A) - M.add_body_temperature_change("fever", (6 * power) * A.stage) + if(!unsafe) + M.add_body_temperature_change("fever", max((6 * power) * A.stage, (BODYTEMP_HEAT_DAMAGE_LIMIT - 1))) + else + M.add_body_temperature_change("fever", max((6 * power) * A.stage, (BODYTEMP_HEAT_DAMAGE_LIMIT + 20))) /// Update the body temp change based on the new stage /datum/symptom/fever/on_stage_change(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index 6dd8738936443..f55d3097f5a4a 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -47,7 +47,6 @@ Bonus unsafe = TRUE if(A.stage_rate >= 10) power = 2.5 - set_body_temp(A.affected_mob, A) /datum/symptom/shivering/Activate(datum/disease/advance/A) if(!..()) @@ -59,6 +58,7 @@ Bonus to_chat(M, "[pick("You feel cold.", "You shiver.")]") else to_chat(M, "[pick("You feel your blood run cold.", "You feel ice in your veins.", "You feel like you can't heat up.", "You shiver violently." )]") + set_body_temp(A.affected_mob, A) /** * set_body_temp Sets the body temp change @@ -69,7 +69,10 @@ Bonus * * datum/disease/advance/A The disease applying the symptom */ /datum/symptom/shivering/proc/set_body_temp(mob/living/M, datum/disease/advance/A) - M.add_body_temperature_change("shivering", -((6 * power) * A.stage)) + if(!unsafe) + M.add_body_temperature_change("shivering", max(-((6 * power) * A.stage), (BODYTEMP_COLD_DAMAGE_LIMIT + 1))) + else + M.add_body_temperature_change("shivering", max(-((6 * power) * A.stage), (BODYTEMP_COLD_DAMAGE_LIMIT - 20))) /// Update the body temp change based on the new stage /datum/symptom/shivering/on_stage_change(datum/disease/advance/A) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index d2f115db8aa2b..95d573a3d8283 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -568,6 +568,9 @@ owner.set_blurriness(0) owner.restore_blood() owner.bodytemperature = owner.get_body_temp_normal() + if(istype(owner, /mob/living/carbon/human)) + var/mob/living/carbon/human/humi = owner + humi.coretemperature = humi.get_body_temp_normal() owner.restoreEars() duration = rand(150, 450) * power return TRUE diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 99ab20edbbe60..22faa231ac704 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -163,8 +163,13 @@ t1 = "*dead*" else t1 = "Unknown" + var/core_temp = "" + if(ishuman(patient)) + var/mob/living/carbon/human/humi = patient + core_temp = {"Body Temperature: [humi.bodytemperature-T0C]°C ([humi.bodytemperature*1.8-459.67]°F)
    "} return {"Health: [patient.stat > 1 ? "[t1]" : "[patient.health]% ([t1])"]
    - Core Temperature: [patient.bodytemperature-T0C]°C ([patient.bodytemperature*1.8-459.67]°F)
    + [core_temp] + Body Temperature: [patient.bodytemperature-T0C]°C ([patient.bodytemperature*1.8-459.67]°F)
    Brute Damage: [patient.getBruteLoss()]%
    Respiratory Damage: [patient.getOxyLoss()]%
    Toxin Content: [patient.getToxLoss()]%
    diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 88ffd03dbb0af..6eb9233fd7d8f 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -432,6 +432,7 @@ GENE SCANNER mutant = TRUE message += "Species: [S.name][mutant ? "-derived mutant" : ""]" + message += "Core temperature: [round(H.coretemperature-T0C,0.1)] °C ([round(H.coretemperature*1.8-459.67,0.1)] °F)" message += "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)" // Time of death diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 611aa231c2afd..8f4e3d2bcb40b 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -792,6 +792,8 @@ for(var/datum/mutation/HM as() in dna.mutations) if(HM.quality != POSITIVE) dna.remove_mutation(HM.name) + coretemperature = get_body_temp_normal(apply_change=FALSE) + heat_exposure_stacks = 0 ..() /mob/living/carbon/human/check_weakness(obj/item/weapon, mob/living/attacker) diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm index 244a62d152206..5f37d1326c7b8 100644 --- a/code/modules/mob/living/carbon/human/human_defines.dm +++ b/code/modules/mob/living/carbon/human/human_defines.dm @@ -59,3 +59,9 @@ var/static/list/can_ride_typecache = typecacheof(list(/mob/living/carbon/human, /mob/living/simple_animal/slime, /mob/living/simple_animal/parrot, /mob/living/carbon/monkey)) var/lastpuke = 0 var/last_fire_update + + /// The core temperature of the human compaired to the skin temp of the body + var/coretemperature = BODYTEMP_NORMAL + + ///Exposure to damaging heat levels increases stacks, stacks clean over time when temperatures are lower. Stack is consumed to add a wound. + var/heat_exposure_stacks = 0 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 68be90ff43967..71bb4a23a6177 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -39,6 +39,9 @@ // Tissues die without blood circulation adjustBruteLoss(2) + //Body temperature stability and damage + dna.species.handle_body_temperature(src) + dna.species.spec_life(src) // for mutantraces //Update our name based on whether our face is obscured/disfigured @@ -113,8 +116,17 @@ return dna.species.handle_environment(environment, src) - dna.species.handle_environment_pressure(environment, src) - dna.species.handle_body_temperature(src) + +/** + * Adjust the core temperature of a mob + * + * vars: + * * amount The amount of degrees to change body temperature by + * * min_temp (optional) The minimum body temperature after adjustment + * * max_temp (optional) The maximum body temperature after adjustment + */ +/mob/living/carbon/human/proc/adjust_coretemperature(amount, min_temp=0, max_temp=INFINITY) + coretemperature = clamp(coretemperature + amount, min_temp, max_temp) /** * get_body_temperature Returns the body temperature with any modifications applied diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 66f4b98fc712b..79c5b0587ec50 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1843,86 +1843,257 @@ GLOBAL_LIST_EMPTY(features_by_species) ////////////////////////// /** - * Enviroment handler for species + * Environment handler for species * * vars: - * * environment The environment gas mix - * * H The mob we will stabilize + * * environment (required) The environment gas mix + * * humi (required)(type: /mob/living/carbon/human) The mob we will target */ -/datum/species/proc/handle_environment(datum/gas_mixture/environment, mob/living/carbon/human/H) - var/areatemp = H.get_temperature(environment) +/datum/species/proc/handle_environment(datum/gas_mixture/environment, mob/living/carbon/human/humi) + handle_environment_pressure(environment, humi) - if(H.stat != DEAD) // If you are dead your body does not stabilize naturally - natural_bodytemperature_stabilization(environment, H) +/** + * Body temperature handler for species + * + * These procs manage body temp, bamage, and alerts + * Some of these will still fire when not alive to balance body temp to the room temp. + * vars: + * * humi (required)(type: /mob/living/carbon/human) The mob we will target + */ +/datum/species/proc/handle_body_temperature(mob/living/carbon/human/humi) + //when in a cryo unit we suspend all natural body regulation + if(istype(humi.loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) + return + + //Only stabilise core temp when alive and not in statis + if(humi.stat < DEAD && !IS_IN_STASIS(humi)) + body_temperature_core(humi) + + //These do run in statis + body_temperature_skin(humi) + body_temperature_alerts(humi) + + //Do not cause more damage in statis + if(!IS_IN_STASIS(humi)) + body_temperature_damage(humi) + +/** + * Used to stabilize the core temperature back to normal on living mobs + * + * The metabolisim heats up the core of the mob trying to keep it at the normal body temp + * vars: + * * humi (required) The mob we will stabilize + */ +/datum/species/proc/body_temperature_core(mob/living/carbon/human/humi) + var/natural_change = get_temp_change_amount(humi.get_body_temp_normal() - humi.coretemperature, 0.12) + humi.adjust_coretemperature(humi.metabolism_efficiency * natural_change) + +/** + * Used to normalize the skin temperature on living mobs + * + * The core temp effects the skin, then the enviroment effects the skin, then we refect that back to the core. + * This happens even when dead so bodies revert to room temp over time. + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/body_temperature_skin(mob/living/carbon/human/humi) - if(!H.on_fire || areatemp > H.bodytemperature) // If we are not on fire or the area is hotter - H.adjust_bodytemperature((areatemp - H.bodytemperature), use_insulation=TRUE, use_steps=TRUE, hardsuit_fix=bodytemp_normal - H.bodytemperature) + // change the core based on the skin temp + var/skin_core_diff = humi.bodytemperature - humi.coretemperature + // change rate of 0.08 to be slightly below area to skin change rate and still have a solid curve + var/skin_core_change = get_temp_change_amount(skin_core_diff, 0.08) -/// Handle the body temperature status effects for the species -/// Traits for resitance to heat or cold are handled here. -/datum/species/proc/handle_body_temperature(mob/living/carbon/human/H) + humi.adjust_coretemperature(skin_core_change) + + // get the enviroment details of where the mob is standing + var/datum/gas_mixture/environment = humi.loc.return_air() + if(!environment) // if there is no environment (nullspace) drop out here. + return + + // Get the temperature of the environment for area + var/area_temp = humi.get_temperature(environment) + + // Get the insulation value based on the area's temp + var/thermal_protection = humi.get_insulation_protection(area_temp) + + // Changes to the skin temperature based on the area + var/area_skin_diff = area_temp - humi.bodytemperature + if(!humi.on_fire || area_skin_diff > 0) + // change rate of 0.1 as area temp has large impact on the surface + var/area_skin_change = get_temp_change_amount(area_skin_diff, 0.1) + + // We need to apply the thermal protection of the clothing when applying area to surface change + // If the core bodytemp goes over the normal body temp you are overheating and becom sweaty + // This will cause the insulation value of any clothing to reduced in effect (70% normal rating) + // we add 10 degree over normal body temp before triggering as thick insulation raises body temp + if(humi.get_body_temp_normal(apply_change=FALSE) + 10 < humi.coretemperature) + // we are overheating and sweaty insulation is not as good reducing thermal protection + area_skin_change = (1 - (thermal_protection * 0.7)) * area_skin_change + else + area_skin_change = (1 - thermal_protection) * area_skin_change + + humi.adjust_bodytemperature(area_skin_change) + + // Core to skin temp transfer, when not on fire + if(!humi.on_fire) + // Get the changes to the skin from the core temp + var/core_skin_diff = humi.coretemperature - humi.bodytemperature + // change rate of 0.08 to reflect temp back in to the core at the same rate as core to skin + var/core_skin_change = (1 + thermal_protection) * get_temp_change_amount(core_skin_diff, 0.08) + + // We do not want to over shoot after using protection + if(core_skin_diff > 0) + core_skin_change = min(core_skin_change, core_skin_diff) + else + core_skin_change = max(core_skin_change, core_skin_diff) + + humi.adjust_bodytemperature(core_skin_change) + + +/** + * Used to set alerts and debuffs based on body temperature + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/body_temperature_alerts(mob/living/carbon/human/humi) + var/old_bodytemp = humi.old_bodytemperature + var/bodytemp = humi.bodytemperature // Body temperature is too hot, and we do not have resist traits - if(H.bodytemperature > bodytemp_heat_damage_limit && !HAS_TRAIT(H, TRAIT_RESISTHEAT)) + if(bodytemp > bodytemp_heat_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTHEAT)) // Clear cold mood and apply hot mood - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") - SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot) + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "cold") + SEND_SIGNAL(humi, COMSIG_ADD_MOOD_EVENT, "hot", /datum/mood_event/hot) + + //Remove any slowdown from the cold. + humi.remove_movespeed_modifier(/datum/movespeed_modifier/cold) + // display alerts based on how hot it is + // Can't be a switch due to http://www.byond.com/forum/post/2750423 + if(bodytemp in bodytemp_heat_damage_limit to BODYTEMP_HEAT_WARNING_2) + humi.throw_alert("temp", /atom/movable/screen/alert/hot, 1) + else if(bodytemp in BODYTEMP_HEAT_WARNING_2 to BODYTEMP_HEAT_WARNING_3) + humi.throw_alert("temp", /atom/movable/screen/alert/hot, 2) + else + humi.throw_alert("temp", /atom/movable/screen/alert/hot, 3) - // Remove any slow down from the cold - H.remove_movespeed_modifier(/datum/movespeed_modifier/cold) + // Body temperature is too cold, and we do not have resist traits + else if(humi.bodytemperature < bodytemp_cold_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTCOLD)) + // clear any hot moods and apply cold mood + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "hot") + SEND_SIGNAL(humi, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold) + // Apply cold slow down + humi.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((bodytemp_cold_damage_limit - humi.bodytemperature) / COLD_SLOWDOWN_FACTOR)) + // Display alerts based how cold it is + // Can't be a switch due to http://www.byond.com/forum/post/2750423 + if(bodytemp in BODYTEMP_COLD_WARNING_2 to bodytemp_cold_damage_limit) + humi.throw_alert("temp", /atom/movable/screen/alert/cold, 1) + else if(bodytemp in BODYTEMP_COLD_WARNING_3 to BODYTEMP_COLD_WARNING_2) + humi.throw_alert("temp", /atom/movable/screen/alert/cold, 2) + else + humi.throw_alert("temp", /atom/movable/screen/alert/cold, 3) + + // We are not to hot or cold, remove status and moods + // Optimization here, we check these things based off the old temperature to avoid unneeded work + // We're not perfect about this, because it'd just add more work to the base case, and resistances are rare + else if (old_bodytemp > bodytemp_heat_damage_limit || old_bodytemp < bodytemp_cold_damage_limit) + humi.clear_alert("temp") + humi.remove_movespeed_modifier(/datum/movespeed_modifier/cold) + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "cold") + SEND_SIGNAL(humi, COMSIG_CLEAR_MOOD_EVENT, "hot") + + // Store the old bodytemp for future checking + humi.old_bodytemperature = bodytemp + +/** + * Used to apply wounds and damage based on core/body temp + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/body_temperature_damage(mob/living/carbon/human/humi) + + //If the body temp is above the wound limit start adding exposure stacks + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT) + humi.heat_exposure_stacks = min(humi.heat_exposure_stacks + 1, 40) + else //When below the wound limit, reduce the exposure stacks fast. + humi.heat_exposure_stacks = max(humi.heat_exposure_stacks - 4, 0) - var/burn_damage = 0 - var/firemodifier = H.fire_stacks / 50 - if (!H.on_fire) // We are not on fire, reduce the modifier + //when exposure stacks are greater then 10 + rand20 try to apply wounds and reset stacks + if(humi.heat_exposure_stacks > (10 + rand(0, 20))) + apply_burn_wounds(humi) + humi.heat_exposure_stacks = 0 + + // Body temperature is too hot, and we do not have resist traits + // Apply some burn damage to the body + if(humi.coretemperature > bodytemp_heat_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTHEAT)) + var/firemodifier = humi.fire_stacks / 50 + if (!humi.on_fire) // We are not on fire, reduce the modifier firemodifier = min(firemodifier, 0) // this can go below 5 at log 2.5 - burn_damage = max(log(2 - firemodifier, (H.bodytemperature - H.get_body_temp_normal())) - 5,0) - - // Display alerts based on the amount of fire damage being taken - if (burn_damage) - switch(burn_damage) - if(0 to 2) - H.throw_alert("temp", /atom/movable/screen/alert/hot, 1) - if(2 to 4) - H.throw_alert("temp", /atom/movable/screen/alert/hot, 2) - else - H.throw_alert("temp", /atom/movable/screen/alert/hot, 3) + var/burn_damage = max(log(2 - firemodifier, (humi.coretemperature - humi.get_body_temp_normal(apply_change=FALSE))) - 5,0) // Apply species and physiology modifiers to heat damage - burn_damage = burn_damage * heatmod * H.physiology.heat_mod + burn_damage = burn_damage * heatmod * humi.physiology.heat_mod // 40% for level 3 damage on humans to scream in pain - if (H.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4) - H.emote("scream") + if (humi.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4) + humi.emote("scream") // Apply the damage to all body parts - H.apply_damage(burn_damage, BURN) + humi.apply_damage(burn_damage, BURN) + + // Apply some burn damage to the body + if(humi.coretemperature < bodytemp_cold_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTCOLD)) + switch(humi.coretemperature) + if(201 to bodytemp_cold_damage_limit) + humi.apply_damage(COLD_DAMAGE_LEVEL_1 * coldmod * humi.physiology.cold_mod, BURN) + if(120 to 200) + humi.apply_damage(COLD_DAMAGE_LEVEL_2 * coldmod * humi.physiology.cold_mod, BURN) + else + humi.apply_damage(COLD_DAMAGE_LEVEL_3 * coldmod * humi.physiology.cold_mod, BURN) - // Body temperature is too cold, and we do not have resist traits - else if(H.bodytemperature < bodytemp_cold_damage_limit && !HAS_TRAIT(H, TRAIT_RESISTCOLD)) - // clear any hot moods and apply cold mood - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") - SEND_SIGNAL(H, COMSIG_ADD_MOOD_EVENT, "cold", /datum/mood_event/cold) - // Apply cold slow down - H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/cold, multiplicative_slowdown = ((bodytemp_cold_damage_limit - H.bodytemperature) / COLD_SLOWDOWN_FACTOR)) - // Display alerts based on the amount of cold damage being taken - // Apply more damage based on how cold you are - if (H.bodytemperature >= 200 && H.bodytemperature <= bodytemp_cold_damage_limit) - H.throw_alert("temp", /atom/movable/screen/alert/cold, 1) - H.apply_damage(COLD_DAMAGE_LEVEL_1 * coldmod * H.physiology.cold_mod, BURN) - else if (H.bodytemperature >= 120 && H.bodytemperature < 200) - H.throw_alert("temp", /atom/movable/screen/alert/cold, 2) - H.apply_damage(COLD_DAMAGE_LEVEL_2 * coldmod * H.physiology.cold_mod, BURN) - else - H.throw_alert("temp", /atom/movable/screen/alert/cold, 3) - H.apply_damage(COLD_DAMAGE_LEVEL_3 * coldmod * H.physiology.cold_mod, BURN) +/** + * Used to apply burn wounds on random limbs + * + * This is called from body_temperature_damage when exposure to extream heat adds up and causes a wound. + * The wounds will increase in severity as the temperature increases. + * vars: + * * humi (required) The mob we will targeting + */ +/datum/species/proc/apply_burn_wounds(mob/living/carbon/human/humi) + // If we are resistant to heat exit + if(HAS_TRAIT(humi, TRAIT_RESISTHEAT)) + return - // We are not to hot or cold, remove status and moods - else - H.clear_alert("temp") - H.remove_movespeed_modifier(/datum/movespeed_modifier/cold) - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "cold") - SEND_SIGNAL(H, COMSIG_CLEAR_MOOD_EVENT, "hot") + // If our body temp is to low for a wound exit + if(humi.bodytemperature < BODYTEMP_HEAT_WOUND_LIMIT) + return + + // Lets pick a random body part and check for an existing burn + var/obj/item/bodypart/bodypart = pick(humi.bodyparts) + /* No wounds yet + var/datum/wound/burn/existing_burn = locate(/datum/wound/burn) in bodypart.wounds + + // If we have an existing burn try to upgrade it + if(existing_burn) + switch(existing_burn.severity) + if(WOUND_SEVERITY_MODERATE) + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 400) // 800k + bodypart.force_wound_upwards(/datum/wound/burn/severe) + if(WOUND_SEVERITY_SEVERE) + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 2800) // 3200k + bodypart.force_wound_upwards(/datum/wound/burn/critical) + else // If we have no burn apply the lowest level burn + bodypart.force_wound_upwards(/datum/wound/burn/moderate) + */ + + // always take some burn damage + var/burn_damage = HEAT_DAMAGE_LEVEL_1 + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 400) + burn_damage = HEAT_DAMAGE_LEVEL_2 + if(humi.bodytemperature > BODYTEMP_HEAT_WOUND_LIMIT + 2800) + burn_damage = HEAT_DAMAGE_LEVEL_3 + + humi.apply_damage(burn_damage, BURN, bodypart) /// Handle the air pressure of the environment /datum/species/proc/handle_environment_pressure(datum/gas_mixture/environment, mob/living/carbon/human/H) @@ -1931,12 +2102,10 @@ GLOBAL_LIST_EMPTY(features_by_species) // Set alerts and apply damage based on the amount of pressure switch(adjusted_pressure) - // Very high pressure, show an alert and take damage if(HAZARD_HIGH_PRESSURE to INFINITY) if(!HAS_TRAIT(H, TRAIT_RESISTHIGHPRESSURE)) - H.adjustBruteLoss(min(((adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 ) * \ - PRESSURE_DAMAGE_COEFFICIENT, MAX_HIGH_PRESSURE_DAMAGE) * H.physiology.pressure_mod) + H.adjustBruteLoss(min(((adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 ) * PRESSURE_DAMAGE_COEFFICIENT, MAX_HIGH_PRESSURE_DAMAGE) * H.physiology.pressure_mod) H.throw_alert("pressure", /atom/movable/screen/alert/highpressure, 2) else H.clear_alert("pressure") @@ -1966,62 +2135,6 @@ GLOBAL_LIST_EMPTY(features_by_species) H.adjustBruteLoss(LOW_PRESSURE_DAMAGE * H.physiology.pressure_mod) H.throw_alert("pressure", /atom/movable/screen/alert/lowpressure, 2) -/** - * Used to stabilize the body temperature back to normal on living mobs - * - * vars: - * * environment The environment gas mix - * * H The mob we will stabilize - */ -/datum/species/proc/natural_bodytemperature_stabilization(datum/gas_mixture/environment, mob/living/carbon/human/H) - var/areatemp = H.get_temperature(environment) - var/body_temp = H.bodytemperature // Get current body temperature - var/body_temperature_difference = H.get_body_temp_normal() - body_temp - var/natural_change = 0 - - // We are very cold, increase body temperature - if(body_temp <= bodytemp_cold_damage_limit) - natural_change = max((body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR), \ - bodytemp_autorecovery_min) - - // we are cold, reduce the minimum increment and do not jump over the difference - else if(body_temp > bodytemp_cold_damage_limit && body_temp < H.get_body_temp_normal()) - natural_change = max(body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ - min(body_temperature_difference, bodytemp_autorecovery_min / 4)) - - // We are hot, reduce the minimum increment and do not jump below the difference - else if(body_temp > H.get_body_temp_normal() && body_temp <= bodytemp_heat_damage_limit) - natural_change = min(body_temperature_difference * H.metabolism_efficiency / BODYTEMP_AUTORECOVERY_DIVISOR, \ - max(body_temperature_difference, -(bodytemp_autorecovery_min / 4))) - - // We are very hot, reduce the body temperature - else if(body_temp >= bodytemp_heat_damage_limit) - natural_change = min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -bodytemp_autorecovery_min) - - var/thermal_protection = H.get_insulation_protection(body_temp + natural_change) - if(areatemp > body_temp) // It is hot here - if(body_temp < H.get_body_temp_normal()) - // Our bodytemp is below normal we are cold, insulation helps us retain body heat - // and will reduce the heat we lose to the environment - natural_change = (thermal_protection + 1) * natural_change - else - // Our bodytemp is above normal and sweating, insulation hinders out ability to reduce heat - // but will reduce the amount of heat we get from the environment - natural_change = (1 / (thermal_protection + 1)) * natural_change - else // It is cold here - if(!H.on_fire) // If on fire ignore ignore local temperature in cold areas - if(body_temp < H.get_body_temp_normal()) - // Our bodytemp is below normal, insulation helps us retain body heat - // and will reduce the heat we lose to the environment - natural_change = (thermal_protection + 1) * natural_change - else - // Our bodytemp is above normal and sweating, insulation hinders out ability to reduce heat - // but will reduce the amount of heat we get from the environment - natural_change = (1 / (thermal_protection + 1)) * natural_change - - // Apply the natural stabilization changes - H.adjust_bodytemperature(natural_change) - ////////// // FIRE // ////////// diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 1b250df301b49..3ffbcfa97eabb 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -37,7 +37,7 @@ species_r_leg = /obj/item/bodypart/r_leg/lizard /// Lizards are cold blooded and do not stabilize body temperature naturally -/datum/species/lizard/natural_bodytemperature_stabilization(datum/gas_mixture/environment, mob/living/carbon/human/H) +/datum/species/lizard/body_temperature_core(mob/living/carbon/human/humi) return /datum/species/lizard/random_name(gender, unique, lastname, attempts) diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 915675b096a9b..5271df3f8a909 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -49,7 +49,7 @@ changesource_flags = MIRROR_BADMIN | WABBAJACK | ERT_SPAWN /// Zombies do not stabilize body temperature they are the walking dead and are cold blooded -/datum/species/zombie/natural_bodytemperature_stabilization(datum/gas_mixture/environment, mob/living/carbon/human/H) +/datum/species/zombie/body_temperature_core(mob/living/carbon/human/humi) return /datum/species/zombie/infectious/check_roundstart_eligible() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index caa03d3ed5587..19863f210eb53 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -681,7 +681,7 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put amount = (amount > 0) ? min(amount / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX) : max(amount / BODYTEMP_COLD_DIVISOR, BODYTEMP_COOLING_MAX) if(bodytemperature >= min_temp && bodytemperature <= max_temp) - bodytemperature = clamp(bodytemperature + amount,min_temp,max_temp) + bodytemperature = clamp(bodytemperature + amount, min_temp, max_temp) ///////// //LIVER// diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm index ba1a973306c90..e7449cae7af34 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/basilisk.dm @@ -41,7 +41,7 @@ damage_type = BURN nodamage = TRUE armor_flag = ENERGY - temperature = 50 + temperature = -50 // Cools you down! per hit! /mob/living/simple_animal/hostile/asteroid/basilisk/GiveTarget(new_target) if(..()) //we have a target @@ -129,7 +129,7 @@ damage = 5 damage_type = BURN nodamage = FALSE - temperature = 500 //Heats you up! + temperature = 200 // Heats you up! per hit! /obj/projectile/temp/basilisk/magmawing/on_hit(atom/target, blocked = FALSE) . = ..() diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index bb49c951331bc..0a39af6912142 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -93,6 +93,9 @@ /// Default body temperature var/bodytemperature = BODYTEMP_NORMAL //310.15K / 98.6F + /// Our body temperatue as of the last process, prevents pointless work when handling alerts + var/old_bodytemperature = 0 + /// Drowsyness level of the mob var/drowsyness = 0//Carbon /// Dizziness level of the mob diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index c4f8a40c9c02d..d7372c5e07634 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -730,5 +730,5 @@ damage_type = BURN nodamage = FALSE armour_penetration = 100 - temperature = 50 + temperature = -200 // Cools you down greatly per hit armor_flag = MAGIC diff --git a/code/modules/projectiles/projectile/special/temperature.dm b/code/modules/projectiles/projectile/special/temperature.dm index 65dfd5c04d42a..6f6e39004e5d9 100644 --- a/code/modules/projectiles/projectile/special/temperature.dm +++ b/code/modules/projectiles/projectile/special/temperature.dm @@ -5,22 +5,31 @@ damage_type = BURN nodamage = FALSE armor_flag = ENERGY - var/temperature = 100 + var/temperature = -50 // reduce the body temperature by 50 points /obj/projectile/temp/on_hit(atom/target, blocked = 0) . = ..() - if(isliving(target)) + if(iscarbon(target)) + var/mob/living/carbon/hit_mob = target + var/thermal_protection = 1 - hit_mob.get_insulation_protection(hit_mob.bodytemperature + temperature) + + // The new body temperature is adjusted by the bullet's effect temperature + // Reduce the amount of the effect temperature change based on the amount of insulation the mob is wearing + hit_mob.adjust_bodytemperature((thermal_protection * temperature) + temperature) + + else if(isliving(target)) var/mob/living/L = target - L.adjust_bodytemperature(((100-blocked)/100)*(temperature - L.bodytemperature)) // the new body temperature is adjusted by 100-blocked % of the delta between body temperature and the bullet's effect temperature + // the new body temperature is adjusted by the bullet's effect temperature + L.adjust_bodytemperature((1 - blocked) * temperature) /obj/projectile/temp/hot name = "heat beam" - temperature = 400 + temperature = 100 // Raise the body temp by 100 points /obj/projectile/temp/cryo name = "cryo beam" range = 3 - temperature = -240 + temperature = -240 // Single slow shot reduces temp greatly /obj/projectile/temp/cryo/on_range() var/turf/T = get_turf(src) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 31704cc1e0950..c7ce0a2806bbc 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -29,6 +29,12 @@ M.adjust_bodytemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, M.get_body_temp_normal(apply_change=FALSE)) else if(M.bodytemperature < (M.get_body_temp_normal(apply_change=FALSE) + 1)) M.adjust_bodytemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, M.get_body_temp_normal(apply_change=FALSE)) + if(ishuman(M)) + var/mob/living/carbon/human/humi = M + if(humi.coretemperature > humi.get_body_temp_normal(apply_change=FALSE)) + humi.adjust_coretemperature(-40 * TEMPERATURE_DAMAGE_COEFFICIENT, humi.get_body_temp_normal(apply_change=FALSE)) + else if(humi.coretemperature < (humi.get_body_temp_normal(apply_change=FALSE) + 1)) + humi.adjust_coretemperature(40 * TEMPERATURE_DAMAGE_COEFFICIENT, 0, humi.get_body_temp_normal(apply_change=FALSE)) ..() /datum/reagent/medicine/leporazine/overdose_process(mob/living/M) diff --git a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm index ffb8c55fddcdd..3d8aa24424613 100644 --- a/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/pyrotechnic_reagents.dm @@ -209,6 +209,9 @@ if(M.reagents.has_reagent(/datum/reagent/oxygen)) M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(-15) + if(ishuman(M)) + var/mob/living/carbon/human/humi = M + humi.adjust_coretemperature(-15) ..() /datum/reagent/cryostylane/reaction_turf(turf/T, reac_volume) @@ -231,6 +234,9 @@ if(M.reagents.has_reagent(/datum/reagent/oxygen)) M.reagents.remove_reagent(/datum/reagent/oxygen, 0.5) M.adjust_bodytemperature(15) + if(ishuman(M)) + var/mob/living/carbon/human/humi = M + humi.adjust_coretemperature(15) ..() /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index 1274132407b04..d348f5b29ed57 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -220,6 +220,9 @@ owner.adjustFireLoss(1) owner.Jitter(3) owner.adjust_bodytemperature(-10) + if(ishuman(owner)) + var/mob/living/carbon/human/humi = owner + humi.adjust_coretemperature(-10) /datum/status_effect/bonechill/on_remove() owner.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/bonechill) @@ -478,7 +481,10 @@ /datum/status_effect/stabilized/orange/tick() var/body_temperature_difference = owner.get_body_temp_normal(apply_change=FALSE) - owner.bodytemperature - owner.adjust_bodytemperature(min(5,body_temperature_difference)) + owner.adjust_bodytemperature(min(5, body_temperature_difference)) + if(ishuman(owner)) + var/mob/living/carbon/human/humi = owner + humi.adjust_coretemperature(min(5, humi.get_body_temp_normal(apply_change=FALSE) - humi.coretemperature)) return ..() /datum/status_effect/stabilized/purple diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm index 76f1bb748128c..7a0247f5b6e9c 100644 --- a/code/modules/spells/spell_types/construct_spells.dm +++ b/code/modules/spells/spell_types/construct_spells.dm @@ -245,6 +245,9 @@ user.playsound_local(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) target.become_blind(MAGIC_BLIND) addtimer(CALLBACK(src, PROC_REF(cure_blindness), target), 40) + if(ishuman(targets[1])) + var/mob/living/carbon/human/humi = targets[1] + humi.adjust_coretemperature(-200) target.adjust_bodytemperature(-200) /obj/effect/proc_holder/spell/targeted/abyssal_gaze/proc/cure_blindness(mob/living/L) From 3fbc1bb431cf964acc2cbb9b16a7c7a52dd20efe Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 03:51:28 -0500 Subject: [PATCH 21/36] Automatic changelog generation for PR #10317 [ci skip] --- html/changelogs/AutoChangeLog-pr-10317.yml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10317.yml diff --git a/html/changelogs/AutoChangeLog-pr-10317.yml b/html/changelogs/AutoChangeLog-pr-10317.yml new file mode 100644 index 0000000000000..254ffc80d828b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10317.yml @@ -0,0 +1,9 @@ +author: rkz, nightred, lemoninthedark +delete-after: true +changes: + - refactor: refactored temperature stabilization in humans. Split human temperature + into core temperature, which is affected by fevers & shivering symptoms and + represents the overall temperature range, and Body Temperature which is what + is directly affected by environmental factors and projectiles. + - rscadd: All species will now receive temperature HUD alerts before receiving damage. + - balance: recalculates burn damage based on overall temperature From 8641b07a14925c1b1f6367d281066393c58f111c Mon Sep 17 00:00:00 2001 From: Miliviu <45698448+Miliviu@users.noreply.github.com> Date: Wed, 8 May 2024 10:44:20 +0200 Subject: [PATCH 22/36] Cool SM stuff (#10808) --- code/modules/events/supermatter_surge.dm | 39 +++++++++++++++++++++--- 1 file changed, 34 insertions(+), 5 deletions(-) diff --git a/code/modules/events/supermatter_surge.dm b/code/modules/events/supermatter_surge.dm index 175ecd07df125..0b1335ea5a3e5 100644 --- a/code/modules/events/supermatter_surge.dm +++ b/code/modules/events/supermatter_surge.dm @@ -14,11 +14,40 @@ var/power = 2000 /datum/round_event/supermatter_surge/setup() - power = rand(200,4000) - + if(prob(70)) + power = rand(200,100000) + else + power = rand(200,200000) /datum/round_event/supermatter_surge/announce() - if(power > 800 || prob(round(power/8))) - priority_announce("Class [round(power/500) + 1] supermatter surge detected. Intervention may be required.", "Anomaly Alert", SSstation.announcer.get_rand_alert_sound()) + var/severity = "" + switch(power) + if(-INFINITY to 100000) + var/low_threat_perc = 100-round(100*((power-200)/(100000-200))) + if(prob(low_threat_perc)) + if(prob(low_threat_perc)) + severity = "low; the supermatter should return to normal operation shortly." + else + severity = "medium; the supermatter should return to normal operation, but regardless, check if the emitters may need to be turned off temporarily." + else + severity = "high; the emitters likely need to be turned off, and if the supermatter's cooling loop is not fortified, pre-cooled gas may need to be added." + if(100000 to INFINITY) + severity = "extreme; emergency action is likely to be required even if coolant loop is fine. Turn off the emitters and make sure the loop is properly cooling gases." + if(power > 20000 || prob(round(power/200))) + priority_announce("Supermatter surge detected. Estimated severity is [severity]", "Anomaly Alert", SSstation.announcer.get_rand_alert_sound()) /datum/round_event/supermatter_surge/start() - GLOB.main_supermatter_engine.matter_power += power + var/obj/machinery/power/supermatter_crystal/supermatter = GLOB.main_supermatter_engine + var/power_proportion = supermatter.powerloss_inhibitor/2 // what % of the power goes into matter power, at most 50% + // we reduce the proportion that goes into actual matter power based on powerloss inhibitor + // primarily so the supermatter doesn't tesla the instant these happen + supermatter.matter_power += power * power_proportion + var/datum/gas_mixture/gas_puff = new + var/selected_gas = pick(4;GAS_CO2, 4;GAS_H2O, 1;GAS_BZ) + gas_puff.set_moles(selected_gas, 500) + gas_puff.set_temperature(500) + var/energy_ratio = (power * 500 * (1-power_proportion)) / gas_puff.thermal_energy() + if(energy_ratio < 1) // energy output we want is lower than current energy, reduce the amount of gas we puff out + gas_puff.set_moles(GAS_H2O, energy_ratio * 500) + else // energy output we want is higher than current energy, increase its actual heat + gas_puff.set_temperature(energy_ratio * 500) + supermatter.assume_air(gas_puff) From c19510a4c7500aee5d2dbfe08c1f5358a88515fa Mon Sep 17 00:00:00 2001 From: Tsar-Salat <62388554+Tsar-Salat@users.noreply.github.com> Date: Wed, 8 May 2024 04:48:58 -0400 Subject: [PATCH 23/36] step_action to pure signals (#10694) --- .../signals_item/signals_clothing.dm | 4 ++- code/modules/clothing/shoes/bananashoes.dm | 28 +++++++++++-------- code/modules/clothing/shoes/cluwne.dm | 5 +++- code/modules/clothing/shoes/miscellaneous.dm | 10 +++++-- .../mob/living/carbon/human/human_movement.dm | 3 +- 5 files changed, 31 insertions(+), 19 deletions(-) diff --git a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm index 9e654a2b7da0e..06e9484c867ca 100644 --- a/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm +++ b/code/__DEFINES/dcs/signals/signals_obj/signals_item/signals_clothing.dm @@ -3,4 +3,6 @@ // All signals send the source datum of the signal as the first argument // /obj/item/clothing signals -#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" //! from base of obj/item/clothing/shoes/proc/step_action(): () + +///from [/mob/living/carbon/human/Move]: () +#define COMSIG_SHOES_STEP_ACTION "shoes_step_action" diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm index 133d80f67c07b..1ae58dd045454 100644 --- a/code/modules/clothing/shoes/bananashoes.dm +++ b/code/modules/clothing/shoes/bananashoes.dm @@ -12,23 +12,27 @@ . = ..() AddComponent(/datum/component/material_container, list(/datum/material/bananium), 200000, TRUE, /obj/item/stack) AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75, falloff_exponent = 20) + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step)) if(always_noslip) clothing_flags |= NOSLIP -/obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() - . = ..() +/obj/item/clothing/shoes/clown_shoes/banana_shoes/proc/on_step() + SIGNAL_HANDLER + var/mob/wearer = loc var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - if(on && istype(wearer)) - if(bananium.get_material_amount(/datum/material/bananium) < 100) - on = !on - if(!always_noslip) - clothing_flags &= ~NOSLIP - update_icon() - to_chat(loc, "You ran out of bananium!") - else - new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(wearer.dir, 180))) //honk - bananium.use_amount_mat(100, /datum/material/bananium) + if(!on || !istype(wearer)) + return + + if(bananium.get_material_amount(/datum/material/bananium) < 100) + on = !on + if(!always_noslip) + clothing_flags &= ~NOSLIP + update_icon() + to_chat(loc, "You ran out of bananium!") + else + new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(wearer.dir, 180))) //honk + bananium.use_amount_mat(100, /datum/material/bananium) /obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) diff --git a/code/modules/clothing/shoes/cluwne.dm b/code/modules/clothing/shoes/cluwne.dm index d45d3753fb3af..b65bedff42fce 100644 --- a/code/modules/clothing/shoes/cluwne.dm +++ b/code/modules/clothing/shoes/cluwne.dm @@ -11,9 +11,12 @@ /obj/item/clothing/shoes/cluwne/Initialize(mapload) .=..() + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step)) ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT) -/obj/item/clothing/shoes/cluwne/step_action() +/obj/item/clothing/shoes/cluwne/proc/on_step() + SIGNAL_HANDLER + if(footstep > 1) playsound(src, "clownstep", 50, 1) footstep = 0 diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index a58e4c78e8118..68eb7b389753b 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -1,5 +1,3 @@ -/obj/item/clothing/shoes/proc/step_action() //this was made to rewrite clown shoes squeaking - SEND_SIGNAL(src, COMSIG_SHOES_STEP_ACTION) /obj/item/clothing/shoes/combat //basic syndicate combat boots for nuke ops and mob corpses name = "combat boots" @@ -55,7 +53,13 @@ desc = "A pair of orange rubber boots, designed to prevent slipping on wet surfaces while also drying them." icon_state = "galoshes_dry" -/obj/item/clothing/shoes/galoshes/dry/step_action() +/obj/item/clothing/shoes/galoshes/dry/Initialize(mapload) + . = ..() + RegisterSignal(src, COMSIG_SHOES_STEP_ACTION, PROC_REF(on_step)) + +/obj/item/clothing/shoes/galoshes/dry/proc/on_step() + SIGNAL_HANDLER + var/turf/open/t_loc = get_turf(src) SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY) diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm index b3640ae6f1abb..e6de200042cbb 100644 --- a/code/modules/mob/living/carbon/human/human_movement.dm +++ b/code/modules/mob/living/carbon/human/human_movement.dm @@ -43,8 +43,7 @@ /mob/living/carbon/human/Move(NewLoc, direct) . = ..() if(shoes && (mobility_flags & MOBILITY_STAND) && loc == NewLoc && has_gravity(loc)) - var/obj/item/clothing/shoes/S = shoes - S.step_action() + SEND_SIGNAL(shoes, COMSIG_SHOES_STEP_ACTION) /mob/living/carbon/human/Process_Spacemove(movement_dir = 0) //Temporary laziness thing. Will change to handles by species reee. if(dna.species.space_move(src)) From c68d47bf6d0b9c67035b1f9d9df1c762fd4120bf Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 03:57:39 -0500 Subject: [PATCH 24/36] Automatic changelog generation for PR #10694 [ci skip] --- html/changelogs/AutoChangeLog-pr-10694.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10694.yml diff --git a/html/changelogs/AutoChangeLog-pr-10694.yml b/html/changelogs/AutoChangeLog-pr-10694.yml new file mode 100644 index 0000000000000..3d904a14e0ef9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10694.yml @@ -0,0 +1,5 @@ +author: rkz, coiax +delete-after: true +changes: + - refactor: Refactors step_action to save us from a few thousand useless proccalls + per shift From 619155f001fd86bea3ecf8228b982a8d7e970cbd Mon Sep 17 00:00:00 2001 From: ToasterBan <54711687+ToasterBan@users.noreply.github.com> Date: Wed, 8 May 2024 10:50:46 +0200 Subject: [PATCH 25/36] cullls a large amount of minor moodlets (#10791) * cullls a large amount of minor moodlets * fix missed signals * Revert "fix missed signals" This reverts commit 11df9fe0c6d966b0a64fad65bb539a92c123794e. * revert 2 * Revert "Revert "fix missed signals"" This reverts commit 70ef10600d82fb4341b56dcd9ffd0b2d6c77633b. * Revert "revert 2" This reverts commit 80fd217a70e54544d8ca1e16fc559117f960919a. * the branch is a bit fucked but its salvagable * fix up the things, makes things 0 mood, re-adds some moodlets * more fixes + grey neutral moodlets * gives everything timers + re-adds CPR * specific css colour and seperation * changes speed to be based off of hunger * merge-unconflict * requested changes + removes unused variable --- beestation.dme | 3 +- code/__DEFINES/actionspeed_modification.dm | 2 +- code/__DEFINES/movespeed_modification.dm | 36 +++++++- code/datums/components/mood.dm | 33 +++---- .../mood_events/generic_negative_events.dm | 87 ++----------------- .../mood_events/generic_neutral_events.dm | 66 ++++++++++++++ .../mood_events/generic_positive_events.dm | 71 ++------------- code/modules/actionspeed/modifiers/hunger.dm | 7 ++ code/modules/actionspeed/modifiers/mood.dm | 7 -- .../mob/living/carbon/carbon_defense.dm | 1 - .../mob/living/carbon/human/species.dm | 33 ++++--- .../modules/movespeed/modifiers/components.dm | 13 --- code/modules/movespeed/modifiers/mobs.dm | 10 +++ .../tgui-panel/styles/goon/chat-dark.scss | 4 + .../tgui-panel/styles/goon/chat-light.scss | 4 + 15 files changed, 179 insertions(+), 198 deletions(-) create mode 100644 code/datums/mood_events/generic_neutral_events.dm create mode 100644 code/modules/actionspeed/modifiers/hunger.dm delete mode 100644 code/modules/actionspeed/modifiers/mood.dm diff --git a/beestation.dme b/beestation.dme index cbaa0bef1e8b1..d13ccb00ab5c7 100644 --- a/beestation.dme +++ b/beestation.dme @@ -892,6 +892,7 @@ #include "code\datums\mood_events\drink_events.dm" #include "code\datums\mood_events\drug_events.dm" #include "code\datums\mood_events\generic_negative_events.dm" +#include "code\datums\mood_events\generic_neutral_events.dm" #include "code\datums\mood_events\generic_positive_events.dm" #include "code\datums\mood_events\mood_event.dm" #include "code\datums\mood_events\needs_events.dm" @@ -1712,8 +1713,8 @@ #include "code\game\turfs\open\space\transit.dm" #include "code\modules\actionspeed\_actionspeed_modifier.dm" #include "code\modules\actionspeed\modifiers\base.dm" -#include "code\modules\actionspeed\modifiers\mood.dm" #include "code\modules\actionspeed\modifiers\race.dm" +#include "code\modules\actionspeed\modifiers\hunger.dm" #include "code\modules\actionspeed\modifiers\status_effects.dm" #include "code\modules\admin\admin.dm" #include "code\modules\admin\admin_fax_panel.dm" diff --git a/code/__DEFINES/actionspeed_modification.dm b/code/__DEFINES/actionspeed_modification.dm index 40fbd3fe26dcc..7354ac44a3eb7 100644 --- a/code/__DEFINES/actionspeed_modification.dm +++ b/code/__DEFINES/actionspeed_modification.dm @@ -1,2 +1,2 @@ //ids -#define ACTIONSPEED_ID_SANITY "sanity_component" +#define ACTIONSPEED_ID_SATIETY "nutrition" diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm index 4e2b67c790696..0bd415d1b3466 100644 --- a/code/__DEFINES/movespeed_modification.dm +++ b/code/__DEFINES/movespeed_modification.dm @@ -6,10 +6,44 @@ #define MOVE_CONFLICT_JETPACK "JETPACK" //ids -#define MOVESPEED_ID_SANITY "sanity_component" +#define MOVESPEED_ID_VISIBLE_HUNGER "VISIBLE_HUNGER" #define MOVESPEED_ID_MOB_GRAB_STATE "mob_grab_state" #define MOVESPEED_ID_MOB_WALK_RUN "mob_walk_run" +#define MOVESPEED_ID_SLIME_STATUS "SLIME_STATUS" + +#define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD" +#define MOVESPEED_ID_LIVING_LIMBLESS "LIVING_LIMBLESS" + +#define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT" +#define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED" +#define MOVESPEED_ID_CARBON_CRAWLING "CARBON_CRAWLING" + +#define MOVESPEED_ID_DNA_VAULT "DNA_VAULT" + +#define MOVESPEED_ID_YELLOW_ORB "YELLOW_ORB" + +#define MOVESPEED_ID_TARFOOT "TARFOOT" + +#define MOVESPEED_ID_SEPIA "SEPIA" +#define MOVESPEED_ID_SLIME_SEPIA "SLIME_SEPIA" // slime transforming sepia crossbreed + +#define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD" +#define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD" +#define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD" + +#define MOVESPEED_ID_CHANGELING_MUSCLES "CHANGELING_MUSCLES" + +#define MOVESPEED_ID_BASIC_MOB_VARSPEED "BASIC_MOB_VARSPEED_MODIFIER" +#define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER" +#define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER" + +#define MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD "PAI_SPACEWALK_MODIFIER" + +#define MOVESPEED_ID_PHOBIA "TRAUMA_PHOBIA" + +#define MOVESPEED_ID_SPECIES "SPECIES_SPEED_MOD" +#define MOVESPEED_ID_SNAIL_CRAWL "SNAIL_CRAWL_SPEED_MOD" #define MOVESPEED_ID_CYBER_THRUSTER "CYBER_IMPLANT_THRUSTER" #define MOVESPEED_ID_JETPACK "JETPACK" diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 90f1852d847c3..6e3b8cee429d7 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -77,12 +77,20 @@ msg += "I love life!\n" msg += "Moodlets:\n"//All moodlets - if(mood_events.len) - for(var/i in mood_events) - var/datum/mood_event/event = mood_events[i] - msg += "[event.description]\n" - else - msg += "I don't have much of a reaction to anything right now.\n" + var/mood_msg = "" + var/thought_msg = "" + for(var/i in mood_events) + var/datum/mood_event/event = mood_events[i] + if(event.mood_change) + mood_msg += "[event.description]\n" + else + thought_msg += "[event.description]\n" + if(!mood_msg) + msg += "I don't have much of a reaction to anything right now.\n" + msg += mood_msg + if(thought_msg) + msg += "Thoughts:\n" + msg += thought_msg to_chat(user || parent, EXAMINE_BLOCK(msg)) /datum/component/mood/proc/update_mood() //Called whenever a mood event is added or removed @@ -217,37 +225,24 @@ else sanity = amount - var/mob/living/master = parent switch(sanity) if(SANITY_INSANE to SANITY_CRAZY) setInsanityEffect(MAJOR_INSANITY_PEN) - master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/insane) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 6 if(SANITY_CRAZY to SANITY_UNSTABLE) setInsanityEffect(MINOR_INSANITY_PEN) - master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/crazy) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 5 if(SANITY_UNSTABLE to SANITY_DISTURBED) setInsanityEffect(0) - master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/disturbed) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/low_sanity) sanity_level = 4 if(SANITY_DISTURBED to SANITY_NEUTRAL) setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) - master.remove_actionspeed_modifier(ACTIONSPEED_ID_SANITY) sanity_level = 3 if(SANITY_NEUTRAL+1 to SANITY_GREAT+1) //shitty hack but +1 to prevent it from responding to super small differences setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/high_sanity) sanity_level = 2 if(SANITY_GREAT+1 to INFINITY) setInsanityEffect(0) - master.remove_movespeed_modifier(MOVESPEED_ID_SANITY) - master.add_actionspeed_modifier(/datum/actionspeed_modifier/high_sanity) sanity_level = 1 update_mood_icon() diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm index 31cedace325bd..9d629931bd06d 100644 --- a/code/datums/mood_events/generic_negative_events.dm +++ b/code/datums/mood_events/generic_negative_events.dm @@ -14,11 +14,6 @@ description = "CAN'T... BREATHE..." mood_change = -12 -/datum/mood_event/burnt_thumb - description = "I shouldn't play with lighters..." - mood_change = -1 - timeout = 2 MINUTES - /datum/mood_event/cold description = "It's way too cold in here." mood_change = -5 @@ -27,16 +22,6 @@ description = "It's getting hot in here." mood_change = -5 -/datum/mood_event/creampie - description = "I've been creamed. Tastes like pie flavor." - mood_change = -2 - timeout = 3 MINUTES - -/datum/mood_event/slipped - description = "I slipped. I should be more careful next time..." - mood_change = -2 - timeout = 3 MINUTES - /datum/mood_event/eye_stab description = "AHHH my eyes, that was really sharp!" mood_change = -4 @@ -86,29 +71,6 @@ description = "Pull it out!" mood_change = -7 -/datum/mood_event/table - description = "Someone threw me on a table!" - mood_change = -2 - timeout = 2 MINUTES - -/datum/mood_event/table/add_effects() - var/datum/component/L = owner //owner is lying about its type, its component/mood while pretending to be mob. You must cast it to use it properly - var/mob/living/T = L.parent - if(ishuman(T)) - var/mob/living/carbon/human/H = T - if(iscatperson(H) || (istype(H.getorganslot(ORGAN_SLOT_EARS), /obj/item/organ/ears/cat) && istype(H.getorganslot(ORGAN_SLOT_TAIL), /obj/item/organ/tail/cat))) - var/obj/item/organ/tail/tail = H.getorganslot(ORGAN_SLOT_TAIL) - if(tail) - tail.set_wagging(H, TRUE) - addtimer(CALLBACK(tail, TYPE_PROC_REF(/obj/item/organ/tail, set_wagging), H, FALSE), 3 SECONDS) - description = "They want to play on the table!" - mood_change = 2 - -/datum/mood_event/table_headsmash - description = "My fucking head, that hurt..." - mood_change = -3 - timeout = 3 MINUTES - /datum/mood_event/brain_damage mood_change = -3 @@ -138,20 +100,6 @@ mood_change = -4 timeout = 2 MINUTES -/datum/mood_event/jittery - description = "I'm nervous and on edge and I can't stand still!!!" - mood_change = -2 - -/datum/mood_event/vomit - description = "I just threw up. Gross." - mood_change = -2 - timeout = 2 MINUTES - -/datum/mood_event/vomitself - description = "I just threw up all over myself. This is disgusting." - mood_change = -4 - timeout = 3 MINUTES - /datum/mood_event/painful_medicine description = "Medicine may be good for me but right now it stings like hell." mood_change = -5 @@ -162,11 +110,6 @@ mood_change = -4 timeout = 4 MINUTES -/datum/mood_event/loud_gong - description = "That loud gong noise really hurt my ears!" - mood_change = -3 - timeout = 2 MINUTES - /datum/mood_event/notcreeping description = "The voices are not happy, and they painfully contort my thoughts into getting back on task." mood_change = -6 @@ -202,35 +145,16 @@ /datum/mood_event/sad_empath/add_effects(mob/sadtarget) description = "[sadtarget.name] seems upset..." -/datum/mood_event/artbad - description = "I've produced better art than that from my ass.\n" - mood_change = -2 - timeout = 2 MINUTES - /datum/mood_event/sacrifice_bad description ="Those darn savages!" mood_change = -5 timeout = 2 MINUTES -/datum/mood_event/artbad - description = "I've produced better art than that from my ass." - mood_change = -2 - timeout = 2 MINUTES - /datum/mood_event/gates_of_mansus description = "LIVING IN A PERFORMANCE IS WORSE THAN DEATH" mood_change = -25 timeout = 4 MINUTES -//These are unused so far but I want to remember them to use them later -/datum/mood_event/cloned_corpse - description = "I recently saw my own corpse..." - mood_change = -6 - -/datum/mood_event/surgery - description = "HE'S CUTTING ME OPEN!!!" - mood_change = -8 - /datum/mood_event/nanite_sadness description = "+++++++HAPPINESS SUPPRESSION+++++++" mood_change = -7 @@ -241,17 +165,11 @@ /datum/mood_event/sec_insulated_gloves description = "I look like an Assistant..." mood_change = -1 - /datum/mood_event/burnt_wings description = "MY PRECIOUS WINGS!!!" mood_change = -10 timeout = 10 MINUTES -/datum/mood_event/aquarium_negative - description = "All the fish are dead..." - mood_change = -3 - timeout = 1.5 MINUTES - /datum/mood_event/feline_dysmorphia description = "I'm so ugly. I wish I was cuter!" mood_change = -10 @@ -273,3 +191,8 @@ /datum/mood_event/saw_holopara_death/add_effects(name) description = "Oh god, [name] just painfully turned to dust... What an horrifying sight..." + +/datum/mood_event/loud_gong + description = "That loud gong noise really hurt my ears!" + mood_change = -3 + timeout = 2 MINUTES diff --git a/code/datums/mood_events/generic_neutral_events.dm b/code/datums/mood_events/generic_neutral_events.dm new file mode 100644 index 0000000000000..a0b5e28b850a0 --- /dev/null +++ b/code/datums/mood_events/generic_neutral_events.dm @@ -0,0 +1,66 @@ +/datum/mood_event/burnt_thumb + description = "I shouldn't play with lighters..." + timeout = 1 MINUTES + +/datum/mood_event/creampie + description = "I've been creamed. Tastes like pie flavor." + timeout = 1 MINUTES + +/datum/mood_event/slipped + description = "I slipped. I should be more careful next time..." + timeout = 1 MINUTES + +/datum/mood_event/table + description = "Someone threw me on a table!" + timeout = 1 MINUTES + +/datum/mood_event/table_headsmash + description = "My fucking head, that hurt..." + timeout = 1 MINUTES + +/datum/mood_event/jittery + description = "I'm nervous and on edge and I can't stand still!!!" + +/datum/mood_event/vomit + description = "I just threw up. Gross." + timeout = 1 MINUTES + +/datum/mood_event/vomitself + description = "I just threw up all over myself. This is disgusting." + timeout = 1 MINUTES + +/datum/mood_event/aquarium_negative + description = "All the fish are dead..." + timeout = 1 MINUTES + +/datum/mood_event/hug + description = "Hugs are nice." + timeout = 1 MINUTES + +/datum/mood_event/warmhug + description = "Warm cozy hugs are the best!\n" + timeout = 1 MINUTES +/datum/mood_event/book_nerd + description = "I have recently read a book." + timeout = 1 MINUTES +/datum/mood_event/exercise + description = "Working out releases those endorphins!" + timeout = 1 MINUTES +/datum/mood_event/pet_animal + description = "Animals are adorable! I can't stop petting them!" + timeout = 1 MINUTES +/datum/mood_event/animal_play + description = "Aww, it's having fun!" + timeout = 1 MINUTES +/datum/mood_event/honk + description = "Maybe clowns aren't so bad after all. Honk!" + timeout = 1 MINUTES +/datum/mood_event/artok + description = "It's nice to see people are making art around here.\n" + timeout = 1 MINUTES +/datum/mood_event/artbad + description = "I've produced better art than that from my ass.\n" + timeout = 1 MINUTES +/datum/mood_event/aquarium_positive + description = "Watching fish in aquarium is calming." + timeout = 1 MINUTES diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index e0bf73adb3b64..befcfc21427fb 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -1,7 +1,3 @@ -/datum/mood_event/hug - description = "Hugs are nice." - mood_change = 1 - timeout = 2 MINUTES /datum/mood_event/betterhug description = "Someone was very nice to me." @@ -19,16 +15,6 @@ /datum/mood_event/besthug/add_effects(mob/friend) description = "[friend.name] is great to be around, [friend.p_they()] makes me feel so happy!" -/datum/mood_event/warmhug - description = "Warm cozy hugs are the best!\n" - mood_change = 1 - timeout = 2 MINUTES - -/datum/mood_event/headpat - description = "Headpats are lovely!" - mood_change = 1 - timeout = 2 MINUTES - /datum/mood_event/arcade description = "I beat the arcade game!" mood_change = 3 @@ -39,37 +25,6 @@ mood_change = 3 timeout = 8 MINUTES -/datum/mood_event/book_nerd - description = "I have recently read a book." - mood_change = 1 - timeout = 5 MINUTES - -/datum/mood_event/exercise - description = "Working out releases those endorphins!" - mood_change = 2 - timeout = 5 MINUTES - -/datum/mood_event/pet_animal - description = "Animals are adorable! I can't stop petting them!" - mood_change = 2 - timeout = 5 MINUTES - -/datum/mood_event/pet_animal/add_effects(mob/animal) - description = "\The [animal.name] is adorable! I can't stop petting [animal.p_them()]!" - -/datum/mood_event/animal_play - description = "Aww, it's having fun!" - mood_change = 2 - timeout = 3 MINUTES - -/datum/mood_event/animal_play/add_effects(mob/animal) - description = "Aww, [animal.name]'s having fun!" - -/datum/mood_event/honk - description = "Maybe clowns aren't so bad after all. Honk!" - mood_change = 2 - timeout = 4 MINUTES - /datum/mood_event/perform_cpr description = "It feels good to save a life." mood_change = 6 @@ -163,11 +118,6 @@ description = "The shoes are a clown's legacy, I never want to take them off!" mood_change = 5 -/datum/mood_event/artok - description = "It's nice to see people are making art around here.\n" - mood_change = 2 - timeout = 2 MINUTES - /datum/mood_event/artgood description = "What a thought-provoking piece of art. I'll remember that for a while.\n" mood_change = 3 @@ -223,6 +173,14 @@ description = "I feel proud to show my remembrance of the many who have died to ensure that I have freedom." mood_change = 1 +/datum/mood_event/sec_black_gloves + description = "Black gloves look good on me." + mood_change = 1 + +/datum/mood_event/assistant_insulated_gloves + description = "Finally got my hands on a good pair of gloves!" + mood_change = 1 + /datum/mood_event/funny_prank description = "That was a funny prank, clown!" mood_change = 2 @@ -236,19 +194,6 @@ mood_change = param[1] description = param[2] -/datum/mood_event/sec_black_gloves - description = "Black gloves look good on me." - mood_change = 1 - -/datum/mood_event/assistant_insulated_gloves - description = "Finally got my hands on a good pair of gloves!" - mood_change = 1 - -/datum/mood_event/aquarium_positive - description = "Watching fish in aquarium is calming." - mood_change = 3 - timeout = 1.5 MINUTES - /datum/mood_event/toxoplasmosis description = "I really like being around cats!" mood_change = 2 diff --git a/code/modules/actionspeed/modifiers/hunger.dm b/code/modules/actionspeed/modifiers/hunger.dm new file mode 100644 index 0000000000000..8e9007dcbfda9 --- /dev/null +++ b/code/modules/actionspeed/modifiers/hunger.dm @@ -0,0 +1,7 @@ +/datum/actionspeed_modifier/starving + multiplicative_slowdown = 0.25 + id = ACTIONSPEED_ID_SATIETY + +/datum/actionspeed_modifier/well_fed + multiplicative_slowdown = -0.1 + id = ACTIONSPEED_ID_SATIETY diff --git a/code/modules/actionspeed/modifiers/mood.dm b/code/modules/actionspeed/modifiers/mood.dm deleted file mode 100644 index d8ed005d42b35..0000000000000 --- a/code/modules/actionspeed/modifiers/mood.dm +++ /dev/null @@ -1,7 +0,0 @@ -/datum/actionspeed_modifier/low_sanity - multiplicative_slowdown = 0.25 - id = ACTIONSPEED_ID_SANITY - -/datum/actionspeed_modifier/high_sanity - multiplicative_slowdown = -0.1 - id = ACTIONSPEED_ID_SANITY diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 24adf825d4053..d27ffb8b289a4 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -304,7 +304,6 @@ else if(M.is_zone_selected(BODY_ZONE_HEAD)) M.visible_message("[M] pats [src] on the head.", \ "You pat [src] on the head.") - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "headpat", /datum/mood_event/headpat, M) for(var/datum/brain_trauma/trauma in M.get_traumas()) trauma.on_hug(M, src) else if((M.is_zone_selected(BODY_ZONE_L_ARM)) || (M.is_zone_selected(BODY_ZONE_R_ARM))) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 79c5b0587ec50..acfb89c13b2f7 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1410,39 +1410,52 @@ GLOBAL_LIST_EMPTY(features_by_species) to_chat(H, "You no longer feel vigorous.") H.metabolism_efficiency = 1 - //Hunger slowdown for if mood isn't enabled - if(CONFIG_GET(flag/disable_human_mood)) - if(!HAS_TRAIT(H, TRAIT_NOHUNGER)) - var/hungry = (500 - H.nutrition) / 5 //So overeat would be 100 and default level would be 80 - if(hungry >= 70) - H.add_or_update_variable_movespeed_modifier(/datum/movespeed_modifier/hunger, multiplicative_slowdown = (hungry / 50)) - else - H.remove_movespeed_modifier(/datum/movespeed_modifier/hunger) - if(HAS_TRAIT(H, TRAIT_POWERHUNGRY)) handle_charge(H) else switch(H.nutrition) if(NUTRITION_LEVEL_FULL to INFINITY) H.throw_alert("nutrition", /atom/movable/screen/alert/fat) - if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FULL) + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.remove_actionspeed_modifier(ACTIONSPEED_ID_SATIETY) + if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_FULL) + H.clear_alert("nutrition") + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/well_fed) + if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) H.clear_alert("nutrition") + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.remove_actionspeed_modifier(ACTIONSPEED_ID_SATIETY) if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) H.throw_alert("nutrition", /atom/movable/screen/alert/hungry) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/hungry) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) if(0 to NUTRITION_LEVEL_STARVING) H.throw_alert("nutrition", /atom/movable/screen/alert/starving) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/starving) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) /datum/species/proc/handle_charge(mob/living/carbon/human/H) switch(H.nutrition) if(NUTRITION_LEVEL_FED to INFINITY) H.clear_alert("nutrition") + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/well_fed) if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED) H.throw_alert("nutrition", /atom/movable/screen/alert/lowcell, 1) + H.remove_movespeed_modifier(MOVESPEED_ID_VISIBLE_HUNGER) + H.remove_actionspeed_modifier(ACTIONSPEED_ID_SATIETY) if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY) H.throw_alert("nutrition", /atom/movable/screen/alert/lowcell, 2) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/hungry) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) if(1 to NUTRITION_LEVEL_STARVING) H.throw_alert("nutrition", /atom/movable/screen/alert/lowcell, 3) + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/starving) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) else + H.add_movespeed_modifier(/datum/movespeed_modifier/visible_hunger/starving) + H.add_actionspeed_modifier(/datum/actionspeed_modifier/starving) var/obj/item/organ/stomach/battery/battery = H.getorganslot(ORGAN_SLOT_STOMACH) if(!istype(battery)) H.throw_alert("nutrition", /atom/movable/screen/alert/nocell) diff --git a/code/modules/movespeed/modifiers/components.dm b/code/modules/movespeed/modifiers/components.dm index a80bb1cf08b13..d74793f9b5b9b 100644 --- a/code/modules/movespeed/modifiers/components.dm +++ b/code/modules/movespeed/modifiers/components.dm @@ -6,16 +6,3 @@ /datum/movespeed_modifier/snail_crawl multiplicative_slowdown = -7 movetypes = GROUND - -/datum/movespeed_modifier/sanity - id = MOVESPEED_ID_SANITY - movetypes = (~FLYING) - -/datum/movespeed_modifier/sanity/insane - multiplicative_slowdown = 0.6 - -/datum/movespeed_modifier/sanity/crazy - multiplicative_slowdown = 0.3 - -/datum/movespeed_modifier/sanity/disturbed - multiplicative_slowdown = 0.15 diff --git a/code/modules/movespeed/modifiers/mobs.dm b/code/modules/movespeed/modifiers/mobs.dm index 8fe3cbb80b03b..659b0ca082c42 100644 --- a/code/modules/movespeed/modifiers/mobs.dm +++ b/code/modules/movespeed/modifiers/mobs.dm @@ -138,3 +138,13 @@ /datum/movespeed_modifier/nopowercell multiplicative_slowdown = 1.5 blacklisted_movetypes = FLOATING + +/datum/movespeed_modifier/visible_hunger + id = MOVESPEED_ID_VISIBLE_HUNGER + movetypes = (~FLYING) + +/datum/movespeed_modifier/visible_hunger/starving + multiplicative_slowdown = 0.6 + +/datum/movespeed_modifier/visible_hunger/hungry + multiplicative_slowdown = 0.2 diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss index f31a16878b8e3..7f0900ee516e1 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss @@ -1391,3 +1391,7 @@ em { .stat_br { color: #2ace53; } + +.mood_neutral { + color: #99aac0; +} diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss index 52900f43b4ac1..44e3ea8702b07 100644 --- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss @@ -1396,3 +1396,7 @@ h2.alert { .stat_br { color: #2ace53; } + +.mood_neutral { + color: #34383d; +} From 84bb779bdbe7b68511f15178cc3816eff0dfb617 Mon Sep 17 00:00:00 2001 From: PestoVerde322 <75247747+PestoVerde322@users.noreply.github.com> Date: Wed, 8 May 2024 10:54:11 +0200 Subject: [PATCH 26/36] [Port-ish] Digital clocks (#10232) * Clocks! Clock cult rejoice! (even if it doesn't synergise with clock cult) * fixes some stuff * and rad done --------- Co-authored-by: PigeonVerde322 --- _maps/map_files/BoxStation/BoxStation.dmm | 853 +- _maps/map_files/CorgStation/CorgStation.dmm | 239 +- .../map_files/Deltastation/DeltaStation2.dmm | 244 +- _maps/map_files/EchoStation/EchoStation.dmm | 10354 ++++++++-------- _maps/map_files/FlandStation/FlandStation.dmm | 346 +- _maps/map_files/KiloStation/KiloStation.dmm | 463 +- _maps/map_files/MetaStation/MetaStation.dmm | 381 +- _maps/map_files/RadStation/RadStation.dmm | 250 +- beestation.dme | 3 + code/__DEFINES/cooldowns.dm | 1 + code/__HELPERS/time.dm | 4 +- code/_globalvars/time_vars.dm | 6 + .../subsystem/processing/digital_clock.dm | 5 + code/game/machinery/digital_clock.dm | 181 + code/game/mecha/mecha.dm | 3 - .../research/designs/autolathe_designs.dm | 10 + icons/obj/digital_clock.dmi | Bin 0 -> 549 bytes icons/obj/wallframe.dmi | Bin 1183 -> 1382 bytes sound/machines/westminister_chimes.ogg | Bin 0 -> 298815 bytes 19 files changed, 6832 insertions(+), 6511 deletions(-) create mode 100644 code/_globalvars/time_vars.dm create mode 100644 code/controllers/subsystem/processing/digital_clock.dm create mode 100644 code/game/machinery/digital_clock.dm create mode 100644 icons/obj/digital_clock.dmi create mode 100644 sound/machines/westminister_chimes.ogg diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 61e05c1584277..4615925df47f9 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -17,23 +17,6 @@ "aai" = ( /turf/closed/wall/r_wall, /area/security/prison) -"aaq" = ( -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark, -/area/storage/tech) "aaF" = ( /obj/machinery/light/small{ dir = 1 @@ -182,13 +165,6 @@ /obj/item/stack/cable_coil/random, /turf/open/space, /area/space/nearstation) -"acC" = ( -/obj/structure/chair/fancy/sofa/old/right{ - color = "#742925" - }, -/obj/effect/landmark/start/detective, -/turf/open/floor/wood, -/area/security/detectives_office) "acO" = ( /obj/structure/lattice/catwalk/over, /obj/structure/cable/yellow{ @@ -2096,30 +2072,6 @@ }, /turf/open/floor/iron, /area/storage/primary) -"aDc" = ( -/obj/item/stack/sheet/glass, -/obj/structure/table/glass, -/obj/item/stack/sheet/glass, -/obj/item/stack/sheet/glass, -/obj/item/stock_parts/matter_bin, -/obj/item/stock_parts/matter_bin, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/stock_parts/scanning_module{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/stock_parts/scanning_module, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/iron/white, -/area/science/lab) "aDg" = ( /obj/machinery/biogenerator, /turf/open/floor/iron, @@ -4882,10 +4834,6 @@ dir = 8 }, /area/engine/atmos) -"aZm" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/iron, -/area/hallway/secondary/exit) "aZp" = ( /obj/structure/rack, /obj/item/electronics/apc, @@ -7750,6 +7698,13 @@ /obj/effect/turf_decal/tile/blue/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/central) +"bwm" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/iron, +/area/science/mixing) "bww" = ( /obj/structure/cable/yellow{ icon_state = "0-2" @@ -8797,6 +8752,21 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) +"bFP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/port) "bFQ" = ( /obj/structure/sign/warning/nosmoking{ pixel_x = -32 @@ -14255,16 +14225,6 @@ /obj/machinery/cell_charger, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"clB" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/solars/port/aft) "clE" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -16410,6 +16370,12 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"cCn" = ( +/obj/structure/table/reinforced, +/obj/structure/displaycase/forsale/kitchen, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "cCo" = ( /obj/machinery/gateway{ dir = 6 @@ -18040,6 +18006,22 @@ /obj/item/stack/sheet/mineral/plasma/five, /turf/open/floor/iron, /area/quartermaster/exploration_dock) +"cRw" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/east, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 8; + name = "output gas connector port" + }, +/obj/machinery/portable_atmospherics/canister, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "cRG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/cable/yellow{ @@ -18689,22 +18671,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/hallway/primary/central) -"dgZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/security/checkpoint/auxiliary) "dhN" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -20090,16 +20056,6 @@ }, /turf/open/floor/iron/dark, /area/security/execution/transfer) -"dKy" = ( -/obj/structure/closet/secure_closet/hop, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/hop) "dKA" = ( /obj/effect/turf_decal/tile/dark_blue{ dir = 8 @@ -20501,24 +20457,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/quartermaster/storage) -"dSG" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8; - name = "output gas connector port" - }, -/obj/machinery/portable_atmospherics/canister, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "dSJ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -21290,6 +21228,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/hallway/primary/aft) +"elv" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/effect/turf_decal/trimline/dark_blue/filled/line, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/bridge) "elC" = ( /obj/structure/chair/wood/normal{ dir = 1 @@ -21406,6 +21353,16 @@ /obj/machinery/light/small, /turf/open/floor/carpet, /area/vacant_room/office) +"ent" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/heads/cmo) "enz" = ( /turf/open/floor/iron/techmaint, /area/crew_quarters/fitness) @@ -21742,13 +21699,6 @@ }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai_upload) -"etR" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/aisat/hallway) "etZ" = ( /obj/structure/table/glass, /obj/item/storage/belt/medical, @@ -21765,6 +21715,18 @@ /obj/machinery/gateway/centerstation, /turf/open/floor/engine, /area/gateway) +"euk" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/xenoartifact_console{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/science/misc_lab) "euG" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -22285,6 +22247,10 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/quartermaster/exploration_prep) +"eEZ" = ( +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/chapel/main) "eFB" = ( /obj/machinery/computer/station_alert, /obj/effect/turf_decal/tile/yellow/fourcorners/contrasted, @@ -22818,15 +22784,6 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/iron/techmaint, /area/security/prison) -"eQJ" = ( -/obj/structure/noticeboard{ - pixel_y = 26 - }, -/obj/structure/chair/fancy/sofa/old/left{ - color = "#742925" - }, -/turf/open/floor/wood, -/area/security/detectives_office) "eRh" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -22917,6 +22874,14 @@ /obj/item/kirbyplants/random, /turf/open/floor/iron, /area/quartermaster/miningdock) +"eSr" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/solars/port/aft) "eSA" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/flour, @@ -23563,12 +23528,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) -"fhS" = ( -/obj/structure/chair/fancy/comfy{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/hallway/secondary/entry) "fhT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 @@ -24134,19 +24093,22 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron/white, /area/medical/virology) -"ftT" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 +"fub" = ( +/obj/structure/closet/secure_closet/security/med, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/machinery/light{ - dir = 1 +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 }, -/obj/effect/turf_decal/siding/thinplating_new, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 +/obj/machinery/camera/autoname{ + dir = 9 }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron, -/area/crew_quarters/dorms) +/area/security/checkpoint/medical) "ful" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -24463,6 +24425,23 @@ }, /turf/open/floor/engine/o2, /area/engine/atmos) +"fCz" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/button/door{ + id = "barShutters"; + name = "bar shutters"; + pixel_x = 4; + pixel_y = 28 + }, +/obj/machinery/light_switch{ + pixel_x = -6; + pixel_y = 26 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "fCK" = ( /obj/machinery/power/solar{ id = "auxsolareast"; @@ -25124,6 +25103,14 @@ }, /turf/open/floor/iron/dark, /area/tcommsat/computer) +"fTY" = ( +/obj/effect/turf_decal/siding/thinplating_new, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "fUp" = ( /obj/machinery/light{ dir = 1 @@ -25495,12 +25482,6 @@ }, /turf/open/floor/carpet/grimy, /area/chapel/office) -"gby" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/office) "gbR" = ( /obj/machinery/holopad, /turf/open/floor/iron/white, @@ -25896,14 +25877,6 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/prison, /area/security/prison) -"gkV" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/security/execution/transfer) "glg" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -27078,16 +27051,6 @@ }, /turf/open/floor/iron, /area/construction/mining/aux_base) -"gNO" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/structure/cable/yellow, -/turf/open/floor/iron/white/corner, -/area/hallway/secondary/entry) "gOf" = ( /obj/effect/landmark/start/station_engineer, /obj/effect/turf_decal/stripes/corner{ @@ -27533,12 +27496,6 @@ /obj/effect/turf_decal/bot/left, /turf/open/floor/iron/dark, /area/security/execution/transfer) -"hbt" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -30 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "hbA" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -28468,23 +28425,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) -"hzw" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/port) "hzA" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line{ dir = 1 @@ -29601,6 +29541,10 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"hWn" = ( +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "hWw" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -29754,6 +29698,20 @@ /obj/machinery/ecto_sniffer, /turf/open/floor/iron/white, /area/science/robotics/lab) +"hYz" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/security/checkpoint/auxiliary) "hYG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -30218,6 +30176,12 @@ /obj/item/stack/sheet/iron/fifty, /turf/open/floor/iron/dark, /area/engine/engineering) +"ijd" = ( +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white/side{ + dir = 9 + }, +/area/science/research) "ijs" = ( /obj/machinery/door/airlock/public/glass{ name = "Chapel" @@ -31450,6 +31414,16 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"iKr" = ( +/obj/machinery/light, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/clothing/glasses/meson, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/item/book/manual/wiki/sopengineering, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/engine/break_room) "iKv" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -31488,20 +31462,6 @@ /obj/effect/spawner/structure/window/reinforced/prison, /turf/open/floor/plating, /area/security/prison) -"iLs" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/xenoartifact_console{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/science/misc_lab) "iLQ" = ( /obj/machinery/airalarm{ dir = 4; @@ -31563,6 +31523,17 @@ }, /turf/open/floor/wood, /area/vacant_room/office) +"iNJ" = ( +/obj/structure/rack, +/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, +/obj/item/storage/firstaid/regular, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/machinery/light_switch{ + pixel_y = -26 + }, +/turf/open/floor/iron/techmaint, +/area/gateway) "iNO" = ( /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1; @@ -31873,6 +31844,17 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) +"iUu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/power/apc/auto_name/east, +/turf/open/floor/iron, +/area/crew_quarters/locker) "iVg" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -32045,15 +32027,6 @@ }, /turf/open/floor/iron, /area/crew_quarters/fitness) -"iXX" = ( -/obj/structure/closet, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plating, -/area/maintenance/disposal) "iXY" = ( /obj/structure/chair/office{ dir = 1 @@ -32217,6 +32190,12 @@ }, /turf/open/floor/iron, /area/hallway/secondary/service) +"jbk" = ( +/obj/machinery/telecomms/receiver/preset_exploration, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/circuit/green/telecomms/mainframe, +/area/quartermaster/exploration_dock) "jbn" = ( /obj/machinery/light_switch{ pixel_x = -28 @@ -36788,15 +36767,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"laq" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/iron, -/area/science/mixing) "lbh" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, @@ -37090,6 +37060,11 @@ }, /turf/open/floor/iron, /area/engine/atmos) +"liE" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/aisat/hallway) "liI" = ( /obj/machinery/button/door{ id = "ViroA"; @@ -37204,17 +37179,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plating, /area/hallway/secondary/entry) -"ljV" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/cable/yellow, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/turf/open/floor/iron/freezer, -/area/crew_quarters/toilet/locker) "ljZ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -38640,6 +38604,12 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"lPG" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/iron/dark, +/area/security/execution/transfer) "lPH" = ( /obj/structure/dresser, /turf/open/floor/carpet/orange, @@ -40596,24 +40566,6 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) -"mOL" = ( -/obj/structure/closet/secure_closet/security/med, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/machinery/camera/autoname{ - dir = 9 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/iron, -/area/security/checkpoint/medical) "mOX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -41300,6 +41252,14 @@ }, /turf/open/floor/iron/white, /area/science/mixing) +"nbG" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/chair, +/turf/open/floor/iron/dark, +/area/ai_monitored/turret_protected/aisat_interior) "nbZ" = ( /obj/effect/turf_decal/tile/dark_blue, /turf/open/floor/iron, @@ -41928,27 +41888,6 @@ }, /turf/open/floor/prison/dark, /area/security/execution/transfer) -"npW" = ( -/obj/machinery/disposal/bin, -/obj/structure/sign/plaques/deempisi{ - pixel_x = -28; - pixel_y = -4 - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "barShutters"; - name = "bar shutters"; - pixel_x = 4; - pixel_y = 28 - }, -/obj/machinery/light_switch{ - pixel_x = -6; - pixel_y = 26 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "nqq" = ( /obj/machinery/camera/motion{ c_tag = "AI Upload Chamber - External"; @@ -42368,6 +42307,15 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/science/mixing) +"nyq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/cable/yellow, +/obj/machinery/power/apc/auto_name/east, +/turf/open/floor/iron/freezer, +/area/crew_quarters/toilet/locker) "nyw" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -43667,6 +43615,16 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat_interior) +"obc" = ( +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron/dark, +/area/hallway/secondary/command) "obi" = ( /obj/structure/sign/poster/official/random{ pixel_y = -32 @@ -44033,6 +43991,21 @@ /obj/item/reagent_containers/glass/rag, /turf/open/floor/iron/cafeteria_red, /area/crew_quarters/bar) +"ojg" = ( +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/power/apc/auto_name/east, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/dark, +/area/storage/tech) "ojl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -45215,14 +45188,6 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"oRr" = ( -/obj/machinery/telecomms/receiver/preset_exploration, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/turf/open/floor/circuit/green/telecomms/mainframe, -/area/quartermaster/exploration_dock) "oRK" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -45563,6 +45528,28 @@ }, /turf/open/floor/carpet, /area/quartermaster/exploration_prep) +"pam" = ( +/obj/item/stack/sheet/glass, +/obj/structure/table/glass, +/obj/item/stack/sheet/glass, +/obj/item/stack/sheet/glass, +/obj/item/stock_parts/matter_bin, +/obj/item/stock_parts/matter_bin, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/stock_parts/scanning_module{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/stock_parts/scanning_module, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/white, +/area/science/lab) "pan" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/northleft{ @@ -46067,19 +46054,6 @@ }, /turf/open/floor/iron/white, /area/medical/virology) -"ppQ" = ( -/obj/structure/rack, -/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, -/obj/item/storage/firstaid/regular, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/obj/machinery/light_switch{ - pixel_y = -26 - }, -/turf/open/floor/iron/techmaint, -/area/gateway) "pqp" = ( /obj/machinery/camera/autoname{ dir = 8 @@ -46587,19 +46561,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"pAX" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/port_gen/pacman, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat/service) "pAZ" = ( /obj/structure/table, /obj/item/surgicaldrill, @@ -47352,6 +47313,13 @@ }, /turf/open/floor/iron, /area/crew_quarters/locker) +"pQd" = ( +/obj/structure/closet, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/plating, +/area/maintenance/disposal) "pQr" = ( /obj/structure/cable/yellow{ icon_state = "0-8" @@ -49089,13 +49057,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron, /area/vacant_room/commissary) -"qIB" = ( -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "qJm" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -49757,6 +49718,13 @@ }, /turf/open/floor/iron, /area/quartermaster/sorting) +"qYp" = ( +/obj/machinery/light/small, +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "qYK" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -50633,10 +50601,6 @@ /obj/item/reagent_containers/food/drinks/flask/det, /turf/open/floor/carpet/green, /area/security/detectives_office) -"rpr" = ( -/obj/machinery/light/small, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "rpN" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -52430,6 +52394,17 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/dorms) +"scs" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ai_monitored/turret_protected/aisat/service) "scX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -53241,6 +53216,18 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"suK" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/structure/noticeboard{ + pixel_y = 26 + }, +/obj/structure/chair/fancy/sofa/old/left{ + color = "#742925" + }, +/turf/open/floor/wood, +/area/security/detectives_office) "suU" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -54129,6 +54116,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"sKt" = ( +/obj/machinery/power/apc/auto_name/east, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/cable/yellow, +/turf/open/floor/iron/white/corner, +/area/hallway/secondary/entry) "sKx" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -54159,6 +54154,14 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/security/main) +"sLr" = ( +/obj/structure/chair/fancy/sofa/old/right{ + color = "#742925" + }, +/obj/effect/landmark/start/detective, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/security/detectives_office) "sMt" = ( /obj/structure/sink{ dir = 8; @@ -54206,16 +54209,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/hallway/primary/central) -"sNi" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/chair, -/turf/open/floor/iron/dark, -/area/ai_monitored/turret_protected/aisat_interior) "sNm" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/carpet/green, @@ -55548,6 +55541,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/iron, /area/hallway/primary/starboard) +"trd" = ( +/obj/machinery/digital_clock, +/turf/closed/wall, +/area/hallway/secondary/exit) "trl" = ( /obj/structure/table, /obj/machinery/camera/autoname{ @@ -56389,18 +56386,6 @@ }, /turf/open/floor/iron/techmaint, /area/storage/tech) -"tEM" = ( -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron/dark, -/area/hallway/secondary/command) "tFe" = ( /obj/machinery/door/firedoor, /turf/open/floor/iron, @@ -58328,6 +58313,14 @@ }, /turf/open/floor/iron, /area/quartermaster/storage) +"uyq" = ( +/obj/structure/closet/secure_closet/hop, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/hop) "uyT" = ( /obj/structure/chair/fancy, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -58438,13 +58431,6 @@ }, /turf/open/floor/iron, /area/security/checkpoint/supply) -"uBy" = ( -/obj/effect/spawner/randomarcade{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted, -/turf/open/floor/prison, -/area/security/prison) "uCp" = ( /obj/structure/table, /obj/structure/window/reinforced{ @@ -58573,6 +58559,12 @@ }, /turf/open/floor/iron/white, /area/medical/virology) +"uGy" = ( +/obj/structure/sign/plaques/deempisi{ + pixel_y = -28 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "uGA" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -59302,6 +59294,13 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) +"uZe" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/quartermaster/office) "uZo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -60134,6 +60133,16 @@ }, /turf/open/floor/iron, /area/crew_quarters/theatre) +"vwU" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/thinplating_new, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "vwZ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -60157,18 +60166,6 @@ /obj/item/shovel/spade, /turf/open/floor/iron, /area/hallway/secondary/service) -"vxz" = ( -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/heads/cmo) "vyz" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -60214,6 +60211,20 @@ }, /turf/open/floor/iron/white, /area/medical/cryo) +"vAe" = ( +/obj/item/radio/intercom{ + pixel_y = 20 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/vending/medical{ + pixel_x = -2 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "vAh" = ( /obj/machinery/door/window{ name = "SMES Chamber"; @@ -60227,6 +60238,13 @@ }, /turf/open/floor/iron/dark, /area/engine/gravity_generator) +"vAE" = ( +/obj/effect/spawner/randomarcade{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted, +/turf/open/floor/prison, +/area/security/prison) "vBe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -61145,19 +61163,6 @@ }, /turf/open/floor/iron/grid/steel, /area/ai_monitored/turret_protected/ai_upload) -"vVO" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/turf/open/floor/iron, -/area/crew_quarters/locker) "vWb" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/structure/cable/yellow{ @@ -61721,15 +61726,6 @@ }, /turf/open/floor/iron/dark, /area/security/courtroom) -"wjg" = ( -/obj/machinery/light, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/clothing/glasses/meson, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted, -/obj/item/book/manual/wiki/sopengineering, -/turf/open/floor/iron, -/area/engine/break_room) "wji" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -61959,19 +61955,6 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) -"wnP" = ( -/obj/item/radio/intercom{ - pixel_y = 20 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/vending/medical{ - pixel_x = -2 - }, -/obj/effect/turf_decal/tile/blue, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "wnQ" = ( /obj/structure/lattice/catwalk, /obj/structure/cable, @@ -64228,11 +64211,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/quartermaster/exploration_prep) -"xpH" = ( -/obj/structure/table/reinforced, -/obj/structure/displaycase/forsale/kitchen, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/bar) "xqa" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 @@ -65505,6 +65483,13 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) +"xRB" = ( +/obj/structure/chair/fancy/comfy{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/carpet, +/area/hallway/secondary/entry) "xRN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -78994,7 +78979,7 @@ azD azD azD lMl -gNO +sKt aFG mQN ayl @@ -80542,7 +80527,7 @@ aHy ayl loh nBU -fhS +xRB vJi nBU jPx @@ -80792,7 +80777,7 @@ amC alU pSV hua -dgZ +hYz fLd qvR aBI @@ -80818,7 +80803,7 @@ beO beZ bje bkC -iXX +pQd beO aaa aaa @@ -82351,7 +82336,7 @@ vwZ hgc hNY vlj -hzw +bFP vlj nrz ngR @@ -83635,7 +83620,7 @@ aQN aQN xIt vmV -ljV +nyq jAB jzB fkM @@ -85950,7 +85935,7 @@ aQW aQW aQN ugj -vVO +iUu wuZ rqX xVS @@ -86000,7 +85985,7 @@ bHE cfw cgB ewu -clB +eSr cfw aag aag @@ -90071,7 +90056,7 @@ cNG ebc xxk aZK -gby +uZe bbR bqt cBq @@ -92056,7 +92041,7 @@ pLE sNN vZK kNn -gkV +lPG acZ cEo aHK @@ -92341,7 +92326,7 @@ pNh mBn cPf kKO -uBy +vAE acd ivE bpn @@ -93662,7 +93647,7 @@ bjz hEA bmr rPD -dKy +uyq bmo olu bmo @@ -94197,7 +94182,7 @@ byU bCs tpu qWt -aaq +ojg gGm iIx vDe @@ -94464,7 +94449,7 @@ vZz bJu osw cmX -ppQ +iNJ ayG bCq bCq @@ -94941,7 +94926,7 @@ uHS vSj grf lCw -nmS +elv aTQ ifm vGV @@ -95461,7 +95446,7 @@ gef eXz cMU lDI -tEM +obc ifH hCs mmm @@ -97474,7 +97459,7 @@ iiK flQ ikG aiX -acC +sLr bAJ vkO kzV @@ -97731,7 +97716,7 @@ aiX aiX aiX aiX -eQJ +suK nRu fPz gzH @@ -97818,7 +97803,7 @@ caA nCY sJB bZw -wjg +iKr ctR ccn fWY @@ -98261,7 +98246,7 @@ arf fLe hqH arf -sIK +fTY sbv kSu ooz @@ -99032,7 +99017,7 @@ arf arf arf arf -ftT +vwU sbv eOe fqi @@ -102647,13 +102632,13 @@ aJC aJC aJC aJC -xpH +cCn gEU sAL mvz mvz ikR -hbt +hWn aJC aYV iGe @@ -102903,14 +102888,14 @@ aKQ aLU aNu aJC -npW +fCz fRF fRF dWa fRF lLK jOB -qIB +uGy aJC aYV cuf @@ -103167,7 +103152,7 @@ fRF fRF tAG fRF -rpr +qYp aJC aYV cuf @@ -103243,7 +103228,7 @@ cua cua omb gWx -sNi +nbG qwN cuA cuA @@ -103256,7 +103241,7 @@ rrE jfI rrE hNs -etR +liE jfI rrE rrE @@ -103430,7 +103415,7 @@ aYV cuf nEu uwZ -wnP +vAe qjW qjW qjW @@ -103695,7 +103680,7 @@ bok btZ pVe xaA -mOL +fub btZ eJE ucP @@ -104276,7 +104261,7 @@ cvc cvc qLr xXU -pAX +scs cvc cvk cvk @@ -105024,7 +105009,7 @@ cfj qwH cmZ vOh -dSG +cRw fGe fkS cqs @@ -107315,7 +107300,7 @@ pnv hZm lPA pWy -vxz +ent dPm bWj lwA @@ -112154,7 +112139,7 @@ daL nGk ruS aFw -aFz +eEZ aFz aRR aTe @@ -112692,7 +112677,7 @@ bpX kUF brm kfz -bBD +ijd bvf bBD bBD @@ -114485,7 +114470,7 @@ bhF xNj fHf dpp -aDc +pam wRV bpO eHS @@ -114515,7 +114500,7 @@ bUo bNq bEC pKk -iLs +euk lRv bSc bTl @@ -115527,7 +115512,7 @@ fZi kch uUy uUy -laq +bwm glg xxW bKa @@ -115757,9 +115742,9 @@ aPq ffm aPs aPq -aZm -aMZ -aZm +aNa +trd +aNa aPq ecE scX @@ -118858,7 +118843,7 @@ aaa xkR rKw eQc -oRr +jbk gQd wOv pqr diff --git a/_maps/map_files/CorgStation/CorgStation.dmm b/_maps/map_files/CorgStation/CorgStation.dmm index ea6161c73c61c..3c7715cd8a3bd 100644 --- a/_maps/map_files/CorgStation/CorgStation.dmm +++ b/_maps/map_files/CorgStation/CorgStation.dmm @@ -5065,13 +5065,6 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) -"boO" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bpn" = ( /obj/machinery/atmospherics/pipe/simple/general/hidden, /obj/effect/turf_decal/tile/neutral/opposingcorners, @@ -10660,6 +10653,14 @@ }, /turf/open/floor/iron/dark, /area/engine/engine_room) +"djm" = ( +/obj/machinery/light, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/engine/engineering) "djA" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -13948,6 +13949,16 @@ /obj/machinery/advanced_airlock_controller/directional/east, /turf/open/floor/plating, /area/medical/virology) +"enx" = ( +/obj/structure/chair, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/hallway/primary/central) "enz" = ( /obj/machinery/door/airlock/external{ name = "Transport Airlock" @@ -17401,6 +17412,13 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/maintenance/department/science) +"fyd" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "fye" = ( /obj/machinery/light/small{ dir = 8 @@ -18136,13 +18154,6 @@ }, /turf/open/floor/iron, /area/medical/morgue) -"fKw" = ( -/obj/machinery/light, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/iron, -/area/engine/engineering) "fKx" = ( /turf/open/floor/plating, /area/maintenance/port/central) @@ -18198,12 +18209,6 @@ }, /turf/open/floor/iron/freezer, /area/security/prison) -"fLt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) "fLv" = ( /obj/machinery/gateway{ dir = 5 @@ -23226,6 +23231,14 @@ }, /turf/open/floor/iron/dark, /area/maintenance/department/chapel/monastery) +"htt" = ( +/obj/effect/turf_decal/tile/green, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit) "htA" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -25288,6 +25301,22 @@ /obj/item/radio, /turf/open/floor/iron/dark, /area/security/main) +"iap" = ( +/obj/machinery/camera/autoname, +/obj/effect/landmark/start/security_officer, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/item/radio/intercom{ + frequency = 1423; + name = "Interrogation Intercom"; + pixel_y = 21 + }, +/turf/open/floor/iron, +/area/security/brig) "iaD" = ( /obj/structure/grille, /turf/closed/wall/r_wall, @@ -26433,15 +26462,6 @@ }, /turf/open/floor/wood, /area/maintenance/port) -"irR" = ( -/obj/structure/chair, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/turf/open/floor/iron, -/area/hallway/primary/central) "isl" = ( /obj/structure/table/glass, /obj/item/stack/sheet/iron/fifty, @@ -31104,6 +31124,11 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) +"jVN" = ( +/obj/effect/turf_decal/tile/purple, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white, +/area/science/research) "jVV" = ( /obj/structure/window/reinforced/spawner/west, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ @@ -31656,13 +31681,6 @@ }, /turf/open/floor/iron, /area/engine/storage) -"kgg" = ( -/obj/machinery/vending/medical, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "kgh" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -32562,6 +32580,14 @@ "ksE" = ( /turf/open/floor/circuit/green, /area/engine/gravity_generator) +"ksG" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/chapel/main/monastery) "ksO" = ( /obj/structure/chair/office/light{ dir = 8 @@ -34138,21 +34164,6 @@ /obj/effect/spawner/room/tenxten, /turf/open/floor/plating, /area/maintenance/starboard/secondary) -"kVR" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/west{ - pixel_x = -24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/theatre) "kVV" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{ dir = 1 @@ -44976,6 +44987,14 @@ }, /turf/open/floor/iron, /area/hydroponics) +"opK" = ( +/obj/machinery/vending/medical, +/obj/machinery/vending/medical, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "opS" = ( /obj/structure/table/reinforced, /obj/item/storage/toolbox/drone, @@ -47402,6 +47421,21 @@ }, /turf/open/floor/iron, /area/engine/engine_room) +"piU" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/west{ + pixel_x = -24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/theatre) "piY" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -50075,6 +50109,12 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) +"qdF" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/theatre) "qdG" = ( /obj/item/crowbar/red, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -50554,14 +50594,6 @@ /obj/item/storage/toolbox/mechanical, /turf/open/floor/iron/dark, /area/engine/storage) -"qmt" = ( -/obj/effect/spawner/randomvend/cola, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "qmJ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -52211,16 +52243,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/science/xenobiology) -"qNp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/turf/open/floor/iron, -/area/security/brig) "qNr" = ( /obj/machinery/atmospherics/pipe/simple/dark/visible, /turf/open/floor/iron/dark, @@ -55730,6 +55752,14 @@ /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /turf/open/floor/iron, /area/hallway/primary/central) +"rVM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/wood, +/area/crew_quarters/bar) "rVS" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/preopen{ @@ -57892,6 +57922,15 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/engine/storage) +"sGm" = ( +/obj/effect/spawner/randomvend/cola, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "sGn" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -63068,6 +63107,17 @@ }, /turf/open/floor/iron/white, /area/medical/storage) +"uqH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "uqS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -68319,12 +68369,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) -"vXY" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/theatre) "vYc" = ( /obj/machinery/light, /obj/effect/turf_decal/tile/yellow{ @@ -71783,23 +71827,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) -"xfY" = ( -/obj/machinery/camera/autoname{ - network = list("ss13","security") - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/item/radio/intercom{ - frequency = 1423; - name = "Interrogation Intercom"; - pixel_y = 21 - }, -/turf/open/floor/iron, -/area/security/brig) "xgn" = ( /obj/structure/window/reinforced/spawner{ dir = 8 @@ -94169,7 +94196,7 @@ fSz gwG ahW eGl -gHL +ksG vqg qqc gHL @@ -97932,7 +97959,7 @@ dEa wXZ ces hYd -fKw +djm amI pFF lXu @@ -102384,8 +102411,8 @@ mmp fHv rdA mQA -kVR -vXY +piU +qdF glo fpf aQQ @@ -104707,7 +104734,7 @@ guQ hAT gKS pIk -rnt +htt bOf qyv wIF @@ -105925,7 +105952,7 @@ dWH jpk jDg ipY -jpk +jVN jpk aKt nwP @@ -109825,7 +109852,7 @@ xXn oRy tSP flm -boO +rVM fhO fhO fhO @@ -110567,8 +110594,8 @@ lrx uQJ ehY xVh -xVx -irR +vJi +enx eIz ouI boA @@ -112585,7 +112612,7 @@ tTo tTo tTo tTo -xfY +iap wod kpV cUn @@ -112842,7 +112869,7 @@ sim umx thk tTo -qNp +uqH vvb veZ rZs @@ -114408,7 +114435,7 @@ sNC tSC kEQ iDL -qmt +sGm vvO bOi iDL @@ -115179,7 +115206,7 @@ sNC xRS iBX iDL -kgg +opK btd btd btd @@ -118249,7 +118276,7 @@ oeF ivK lhX aWM -fLt +fyd eWf sCf eWf diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 7de1e97e0fac8..5e59cd31e112b 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -1565,12 +1565,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/hallway/secondary/entry) -"akL" = ( -/obj/machinery/vending/clothing, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron, -/area/hallway/secondary/entry) "akM" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/bot, @@ -6557,6 +6551,13 @@ "aKV" = ( /turf/closed/wall, /area/security/prison) +"aLa" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, +/obj/machinery/fax/bridge, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/bridge) "aLb" = ( /obj/item/wrench, /obj/effect/turf_decal/stripes/line{ @@ -31679,6 +31680,13 @@ }, /turf/open/floor/iron, /area/maintenance/port/fore) +"dJC" = ( +/obj/machinery/vending/clothing, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/entry) "dJG" = ( /obj/structure/chair, /obj/effect/decal/cleanable/dirt, @@ -32168,6 +32176,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/science/storage) +"dMg" = ( +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/obj/structure/chair/fancy/bench/right{ + dir = 1 + }, +/turf/open/floor/iron, +/area/security/prison) "dMr" = ( /obj/structure/chair/stool, /turf/open/floor/prison, @@ -33343,13 +33361,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) -"dXN" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/hallway/secondary/exit/departure_lounge) "dYc" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, @@ -33873,9 +33884,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/port/aft) -"ecz" = ( -/turf/open/floor/iron/dark, -/area/chapel/main) "ecF" = ( /obj/machinery/camera{ c_tag = "Departures - Port"; @@ -35010,6 +35018,17 @@ }, /turf/open/floor/iron, /area/maintenance/port/fore) +"epc" = ( +/obj/structure/chair/stool/bar{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/effect/turf_decal/tile/yellow/opposingcorners{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/crew_quarters/bar/atrium) "epk" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -35603,6 +35622,17 @@ }, /turf/open/floor/iron, /area/hallway/secondary/service) +"ewS" = ( +/obj/machinery/holopad, +/obj/machinery/light, +/obj/machinery/camera{ + c_tag = "Chapel - Aft"; + dir = 1; + name = "chapel camera" + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/carpet/grimy, +/area/chapel/main) "exc" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -36558,12 +36588,6 @@ }, /turf/open/floor/iron, /area/engine/storage_shared) -"eNB" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/prison, -/area/security/prison) "eNJ" = ( /obj/item/radio/intercom{ pixel_x = -28; @@ -36744,6 +36768,14 @@ }, /turf/open/floor/iron, /area/medical/patients_rooms) +"eQl" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/effect/turf_decal/delivery, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit/departure_lounge) "eQt" = ( /obj/structure/cable/yellow{ icon_state = "0-4" @@ -36955,6 +36987,19 @@ }, /turf/open/floor/iron, /area/hallway/secondary/entry) +"eUE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/science/research) "eUM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -40903,13 +40948,6 @@ }, /turf/open/floor/plating, /area/security/checkpoint/medical) -"gmT" = ( -/obj/structure/chair/fancy/bench/right, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/security/prison) "gnF" = ( /obj/machinery/light_switch{ pixel_x = 26; @@ -50605,6 +50643,13 @@ /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/aft) +"jId" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/medical/medbay/lobby) "jIo" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -61146,6 +61191,16 @@ }, /turf/open/floor/iron, /area/construction/mining/aux_base) +"nfA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/engine/break_room) "nfZ" = ( /obj/effect/turf_decal/tile/brown/half/contrasted{ dir = 4 @@ -64868,22 +64923,6 @@ }, /turf/open/floor/iron, /area/ai_monitored/security/armory) -"orD" = ( -/obj/structure/noticeboard{ - desc = "A board for remembering the fallen of the station."; - dir = 1; - name = "memorial board"; - pixel_y = -32 - }, -/obj/machinery/holopad, -/obj/machinery/light, -/obj/machinery/camera{ - c_tag = "Chapel - Aft"; - dir = 1; - name = "chapel camera" - }, -/turf/open/floor/carpet/grimy, -/area/chapel/main) "orI" = ( /obj/effect/decal/cleanable/dirt, /obj/item/radio/intercom{ @@ -67005,12 +67044,6 @@ /mob/living/basic/cockroach, /turf/open/floor/plating, /area/maintenance/port) -"peV" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, -/obj/machinery/fax/bridge, -/turf/open/floor/iron/dark, -/area/bridge) "peY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor, @@ -68452,12 +68485,6 @@ }, /turf/open/floor/iron, /area/crew_quarters/bar/atrium) -"pGA" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron, -/area/medical/medbay/lobby) "pGC" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -68512,6 +68539,21 @@ /obj/machinery/light/small, /turf/open/floor/iron/freezer, /area/security/prison) +"pHp" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/fax/cargo, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/quartermaster/office) "pHy" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -70996,13 +71038,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/engine/atmos) -"qvl" = ( -/obj/structure/chair/fancy/bench/right, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 8 - }, -/turf/open/floor/iron, -/area/security/prison) "qwa" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -76995,6 +77030,12 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/storage/tech) +"swg" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/prison, +/area/security/prison) "swh" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -82808,19 +82849,6 @@ }, /turf/open/floor/iron, /area/security/main) -"uDx" = ( -/obj/item/radio/intercom{ - pixel_x = 26 - }, -/obj/structure/chair/stool/bar{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/obj/effect/turf_decal/tile/yellow/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron, -/area/crew_quarters/bar/atrium) "uDH" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -88085,20 +88113,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/starboard) -"wmz" = ( -/obj/structure/table/reinforced, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 1 - }, -/obj/machinery/fax/cargo, -/turf/open/floor/iron, -/area/quartermaster/office) "wmE" = ( /obj/machinery/airalarm{ dir = 8; @@ -88948,6 +88962,15 @@ }, /turf/open/floor/iron, /area/maintenance/aft) +"wCn" = ( +/obj/structure/noticeboard{ + desc = "A board for remembering the fallen of the station."; + dir = 1; + name = "memorial board"; + pixel_y = -32 + }, +/turf/open/floor/iron/dark, +/area/chapel/main) "wCo" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, @@ -94174,6 +94197,15 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/science/xenobiology) +"ygO" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 8 + }, +/obj/structure/chair/fancy/bench/left{ + dir = 1 + }, +/turf/open/floor/iron, +/area/security/prison) "ygX" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, @@ -118520,7 +118552,7 @@ pvf bxE iBx bzg -bGl +nfA mTm bGl bHW @@ -127307,7 +127339,7 @@ cMY cMY cMY cMY -xDg +eUE fjQ gPv cOR @@ -128634,7 +128666,7 @@ dZR dZk dWN dZk -ecz +wCn dTA dUu dTw @@ -129405,7 +129437,7 @@ vFF lBG xfp hNX -orD +ewS dTA oes edS @@ -132627,7 +132659,7 @@ lrd erE aHE fag -uDx +epc wmE rOT rOT @@ -132739,8 +132771,8 @@ gEI mIR xUd vpZ -dXN -dYH +eQl +dST dZp vpZ bFn @@ -133375,8 +133407,8 @@ aaa aaO pjz hPl -akL -aaO +dJC +abf bPv ano eDD @@ -134175,7 +134207,7 @@ rkO hqP rwP aFe -wmz +pHp mNG aXg poY @@ -134457,7 +134489,7 @@ bYc esA rMZ yaH -peV +aLa bKH rdd mUt @@ -137324,7 +137356,7 @@ jlI tUL ffv vlB -pGA +jId ats cjk pFX @@ -144747,10 +144779,10 @@ amO oMz kMh vjt -qvl +dMg aFm hll -eNB +swg mkq fab aFm @@ -145004,7 +145036,7 @@ kkr uCU ofj dLy -gmT +ygO hwA nZc ueX diff --git a/_maps/map_files/EchoStation/EchoStation.dmm b/_maps/map_files/EchoStation/EchoStation.dmm index 7e48b86fc012e..0163bd4ffc432 100644 --- a/_maps/map_files/EchoStation/EchoStation.dmm +++ b/_maps/map_files/EchoStation/EchoStation.dmm @@ -104,6 +104,17 @@ }, /turf/open/floor/iron/tech/grid, /area/ai_monitored/turret_protected/ai_upload) +"acj" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/table, +/obj/item/kitchen/rollingpin{ + pixel_x = -6; + pixel_y = -1 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "acC" = ( /obj/machinery/light{ dir = 4 @@ -119,32 +130,6 @@ }, /turf/open/floor/engine, /area/science/explab) -"acD" = ( -/obj/machinery/button/door{ - id = "meetingshutter"; - name = "Privacy Shutter Control"; - pixel_x = 26; - pixel_y = 2 - }, -/obj/structure/filingcabinet{ - pixel_x = 8 - }, -/obj/structure/filingcabinet{ - pixel_x = -8 - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line{ - dir = 5 - }, -/obj/machinery/light_switch{ - pixel_x = 35; - pixel_y = 2 - }, -/obj/structure/sign/painting/library{ - pixel_x = 1; - pixel_y = 29 - }, -/turf/open/floor/iron/dark, -/area/bridge/meeting_room) "acU" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/iron/tech, @@ -172,25 +157,6 @@ /obj/structure/flora/rock, /turf/open/floor/plating/asteroid/basalt/planetary, /area/asteroid/paradise) -"adV" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/item/paicard, -/turf/open/floor/plating, -/area/maintenance/department/chapel) -"aea" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/chair/fancy/bench{ - layer = 2.5 - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/security/prison) "aej" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /obj/structure/sign/warning/vacuum{ @@ -219,6 +185,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark, /area/science/mixing) +"aeN" = ( +/obj/effect/landmark/start/cook, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "aeV" = ( /obj/structure/railing/corner{ dir = 1 @@ -237,14 +210,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/engine, /area/science/mixing/chamber) -"afd" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "afq" = ( /obj/structure/sign/departments/minsky/engineering/telecommmunications{ pixel_x = -32 @@ -269,6 +234,13 @@ "afw" = ( /turf/closed/wall, /area/crew_quarters/kitchen) +"afy" = ( +/obj/item/paicard{ + pixel_x = 5; + pixel_y = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/warehouse) "afA" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -278,16 +250,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"afQ" = ( -/obj/machinery/computer/security/mining, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/iron, -/area/bridge) "agi" = ( /obj/structure/closet/secure_closet/hop, /obj/item/modular_computer/tablet/pda, @@ -308,24 +270,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/hop) -"agu" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/poddoor{ - id = "engstorage"; - name = "Engineering Secure Storage Lockdown" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/engine/engineering) "agI" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 @@ -398,16 +342,6 @@ }, /turf/open/floor/iron, /area/crew_quarters/heads/hop) -"ahC" = ( -/obj/structure/lattice/catwalk/over, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/closet/firecloset/full, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "ahQ" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/line{ @@ -438,23 +372,6 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/central) -"ait" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 5 - }, -/obj/structure/closet/firecloset/full, -/obj/effect/turf_decal/bot, -/obj/item/extinguisher/advanced{ - pixel_x = -1; - pixel_y = -2 - }, -/turf/open/floor/iron/dark, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "aiv" = ( /obj/structure/table/reinforced, /obj/item/xenoartifact_labeler{ @@ -517,6 +434,10 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) +"aiU" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "aja" = ( /obj/machinery/computer/cargo/request, /obj/effect/turf_decal/tile/brown/half/contrasted{ @@ -788,20 +709,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"amn" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) "amw" = ( /obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -893,6 +800,18 @@ }, /turf/open/openspace, /area/ai_monitored/turret_protected/aisat/maint) +"aof" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1; + initialize_directions = 1 + }, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -30 + }, +/turf/open/floor/iron/tech, +/area/engine/engineering) "aog" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 1; @@ -1281,6 +1200,15 @@ /obj/item/lightreplacer, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"atE" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "aua" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input, /obj/machinery/sparker/toxmix{ @@ -1351,6 +1279,15 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/crew_quarters/dorms) +"avs" = ( +/obj/structure/flora/ausbushes/fullgrass, +/obj/machinery/camera/autoname{ + dir = 8; + network = list("ss13","engine") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "avD" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plating/airless, @@ -1413,28 +1350,19 @@ "awE" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/aisat_interior) -"awV" = ( -/obj/structure/table, -/obj/item/stock_parts/micro_laser, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/manipulator, -/obj/item/stock_parts/capacitor, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/stock_parts/micro_laser/high, -/obj/item/paicard{ - pixel_x = 17; - pixel_y = 1 - }, -/turf/open/floor/iron/dark, -/area/engine/atmos) "axa" = ( /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/department/engine) +"axc" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "12;5"; + security_level = 6 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "axj" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -1583,21 +1511,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) -"azx" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/vending/clothing, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/crew_quarters/dorms) "azy" = ( /obj/structure/table/optable{ pixel_y = 7 @@ -1664,20 +1577,6 @@ }, /turf/open/floor/wood, /area/hallway/secondary/service) -"aAb" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "aAh" = ( /obj/effect/turf_decal/bot, /obj/structure/extinguisher_cabinet{ @@ -1862,6 +1761,16 @@ /obj/item/pool/rubber_ring, /turf/open/floor/plating/beach/water, /area/asteroid/paradise/surface/water) +"aDi" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/table, +/obj/machinery/microwave{ + pixel_y = 5 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "aDn" = ( /obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -1898,54 +1807,6 @@ "aEM" = ( /turf/closed/wall/r_wall, /area/science/server) -"aEU" = ( -/obj/item/radio/intercom{ - freerange = 1; - name = "Common Channel"; - pixel_x = 29; - pixel_y = 6 - }, -/obj/item/radio/intercom{ - freerange = 1; - listening = 0; - name = "Custom Channel"; - pixel_x = 29; - pixel_y = 35 - }, -/obj/item/radio/intercom{ - freerange = 1; - frequency = 1447; - name = "Private Channel"; - pixel_x = 29; - pixel_y = 20 - }, -/obj/effect/landmark/start/ai, -/obj/machinery/button/door{ - id = "AI Chamber entrance shutters"; - name = "AI Chamber Lockdown"; - pixel_x = -25; - pixel_y = 8; - req_access_txt = "16" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/button/door{ - id = "AIwindows"; - name = "AI View Blast doors"; - pixel_x = -38; - pixel_y = 8; - req_access_txt = "19" - }, -/obj/machinery/button/door{ - id = "AI Core shutters"; - name = "AI Core Shutters Toggle"; - pixel_x = -38; - pixel_y = -3; - req_access_txt = "16" - }, -/turf/open/floor/circuit/red, -/area/ai_monitored/turret_protected/ai) "aFj" = ( /obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /obj/effect/mapping_helpers/airlock/locked, @@ -1967,24 +1828,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plating, /area/science/xenobiology) -"aFA" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "aFL" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -2043,13 +1886,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/iron, /area/maintenance/department/science/central) -"aFW" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/machinery/deepfryer, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "aGd" = ( /obj/structure/stairs{ dir = 4 @@ -2170,20 +2006,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/chapel) -"aIQ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/power/rad_collector, -/turf/open/floor/iron/dark, -/area/engine/engineering) "aIR" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/fullgrass, @@ -2194,11 +2016,6 @@ }, /turf/open/floor/grass/no_border, /area/bridge) -"aJb" = ( -/obj/structure/table, -/obj/item/paicard, -/turf/open/floor/iron/dark, -/area/maintenance/department/crew_quarters/dorms) "aJe" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 @@ -2293,6 +2110,17 @@ }, /turf/open/floor/iron/tech, /area/science/mixing/chamber) +"aJD" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/cargo) "aJO" = ( /obj/item/radio/intercom{ pixel_x = -1; @@ -2355,19 +2183,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/engine, /area/science/explab) -"aKB" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/prison/dark, -/area/security/prison) "aKC" = ( /obj/structure/dresser, /obj/item/camera{ @@ -2397,24 +2212,6 @@ /obj/effect/landmark/start/botanist, /turf/open/floor/iron, /area/hydroponics) -"aKI" = ( -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_x = -32; - pixel_y = -3 - }, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "aLc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -2682,6 +2479,17 @@ /obj/effect/spawner/room/fivexfour, /turf/open/floor/plating, /area/maintenance/department/science/central) +"aQs" = ( +/obj/structure/reflector/box{ + anchored = 1; + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "aQv" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/beach/sand, @@ -2877,10 +2685,24 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/orange, /area/crew_quarters/dorms) +"aSF" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "aSN" = ( /obj/structure/sign/warning/nosmoking, /turf/closed/wall, /area/medical/surgery) +"aST" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "aSX" = ( /turf/closed/wall, /area/crew_quarters/heads/hor) @@ -2912,6 +2734,21 @@ /obj/effect/landmark/start/security_officer, /turf/open/floor/iron/dark, /area/security/brig) +"aUc" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "aUf" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -3010,6 +2847,22 @@ }, /turf/open/floor/iron/dark, /area/security/detectives_office) +"aVM" = ( +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "aVS" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/firecloset/full, @@ -3020,6 +2873,13 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"aWb" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/cook, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "aWm" = ( /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /obj/effect/decal/cleanable/dirt/dust, @@ -3034,6 +2894,24 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"aWp" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "aWy" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 @@ -3054,6 +2932,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/eva) +"aXp" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/power/port_gen/pacman, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "aXq" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -3081,12 +2969,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/ai) -"aXZ" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "aYa" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, @@ -3231,20 +3113,6 @@ }, /turf/open/floor/iron/tech, /area/engine/engineering) -"bcT" = ( -/obj/structure/chair/stool/bar{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = -35 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/cafeteria) "bdh" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -3322,6 +3190,10 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"bfz" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "bfI" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -3363,6 +3235,21 @@ dir = 10 }, /area/asteroid/paradise/surface/water) +"bgu" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 29; + pixel_y = -3 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/fitness/recreation) "bgS" = ( /turf/closed/wall, /area/security/prison/shielded) @@ -3386,29 +3273,25 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"bhE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/iron, -/area/maintenance/department/science/xenobiology) -"bhN" = ( -/obj/structure/cable{ - icon_state = "1-2" +"bhy" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/rnd/production/techfab/department/cargo, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ +/obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Atmos to Loop" - }, -/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) +"bhE" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/iron, -/area/engine/engineering) +/area/maintenance/department/science/xenobiology) "bhX" = ( /obj/machinery/door/firedoor, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -3462,44 +3345,6 @@ /obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall/r_wall/rust, /area/engine/engineering) -"biX" = ( -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai"; - icon_state = "control_stun"; - name = "AI Chamber turret control"; - pixel_x = -1; - pixel_y = 33 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/camera/autoname{ - dir = 6; - network = list("aiupload") - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) -"bja" = ( -/obj/effect/turf_decal/siding/white{ - alpha = 100 - }, -/obj/structure/flora/ausbushes/ywflowers, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = 26 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/crew_quarters/dorms) "bjl" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -3623,24 +3468,6 @@ /obj/structure/sign/departments/minsky/security/command, /turf/closed/wall/r_wall, /area/bridge/meeting_room) -"bns" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "bnW" = ( /obj/structure/table/reinforced, /obj/item/storage/box/flashbangs{ @@ -3731,20 +3558,6 @@ /obj/item/pool/pool_noodle, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) -"boR" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "32" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/engine) "boV" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 8 @@ -3773,60 +3586,12 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"bpq" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/openspace, -/area/hydroponics) "bpM" = ( /obj/structure/sink/kitchen{ pixel_y = 28 }, /turf/open/floor/plating, /area/maintenance/department/chapel) -"bpT" = ( -/obj/structure/table/reinforced, -/obj/item/clipboard{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/paper/monitorkey{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/folder/yellow, -/obj/item/toy/figure/ce{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/stamp/chief_engineer{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 5 - }, -/obj/machinery/camera/autoname{ - dir = 8; - network = list("ss13","engine") - }, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Chief Engineer's Desk"; - departmentType = 4; - name = "Chief Engineer RC"; - pixel_x = 32; - pixel_y = 31 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/heads/chief) "bqg" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt/dust, @@ -3889,6 +3654,19 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron/white, /area/medical/medbay/central) +"bqq" = ( +/obj/machinery/door/airlock/hatch{ + name = "MiniSat Access"; + req_one_access_txt = "32;19" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "bqy" = ( /obj/item/kirbyplants/random, /obj/structure/extinguisher_cabinet{ @@ -3957,26 +3735,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"btq" = ( -/obj/machinery/light, -/obj/machinery/firealarm/directional/south, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/table, -/obj/item/food/dough{ - pixel_x = 4 - }, -/obj/item/food/dough{ - pixel_y = 2; - pixel_x = 9 - }, -/obj/item/reagent_containers/food/condiment/enzyme{ - pixel_x = -5; - pixel_y = 9 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "btw" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, @@ -4024,23 +3782,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) -"btU" = ( -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -31; - pixel_y = -3 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/science/server) "bum" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -4189,10 +3930,31 @@ /obj/structure/lattice, /turf/open/openspace, /area/maintenance/department/crew_quarters/bar) +"bxD" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/table, +/obj/item/flashlight/flare{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/item/extinguisher/advanced{ + pixel_x = -8; + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/engine/atmos) "bxE" = ( /obj/structure/railing/corner, /turf/open/floor/iron/sepia, /area/quartermaster/storage) +"bxR" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "bxZ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/space_heater, @@ -4359,6 +4121,11 @@ /obj/structure/railing/corner, /turf/open/floor/iron/techmaint/planetary, /area/asteroid/paradise/surface) +"bBQ" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/flora/rock, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "bCq" = ( /obj/machinery/door/window/brigdoor/southright{ dir = 4; @@ -4380,21 +4147,6 @@ /obj/effect/spawner/room/fivexthree, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/maint) -"bCL" = ( -/obj/item/storage/secure/safe{ - pixel_x = 37; - pixel_y = 1 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/camera/autoname, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = 29 - }, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "bCM" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -4484,22 +4236,14 @@ "bEo" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 + icon_state = "4-8" }, -/obj/structure/cable/yellow{ - icon_state = "0-2" +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/open/floor/plating, -/area/maintenance/department/medical/morgue) +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/science/xenobiology) "bEu" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -4544,39 +4288,27 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/engine/engineering) -"bFJ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/closet/emcloset/anchored, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/engine/atmos) "bFY" = ( /obj/machinery/atmospherics/miner/station/n2o, /obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/engine/n2o, /area/engine/atmos) -"bGr" = ( -/obj/structure/table/reinforced, -/obj/structure/desk_bell{ - pixel_x = -8; - pixel_y = 9 +"bGl" = ( +/obj/machinery/power/compressor{ + comp_id = "incineratorturbineLeft"; + dir = 1; + luminosity = 2 }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 1 +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/airalarm/directional/north, -/obj/item/paicard{ - pixel_x = 5; - pixel_y = 1 +/obj/structure/cable, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13, engine") }, -/turf/open/floor/iron/dark, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) "bGD" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, @@ -4746,16 +4478,6 @@ }, /turf/open/floor/engine/n2, /area/engine/atmos) -"bKr" = ( -/obj/structure/reflector/box{ - anchored = 1; - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "bKy" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -4786,21 +4508,6 @@ }, /turf/open/floor/prison, /area/security/prison) -"bLd" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2; - pixel_y = 17 - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/science/research) "bLn" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -4810,6 +4517,20 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"bLZ" = ( +/obj/effect/turf_decal/siding/white{ + alpha = 100 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white, +/area/crew_quarters/fitness/recreation) "bMd" = ( /obj/effect/decal/cleanable/shreds, /turf/open/floor/plating/airless, @@ -4987,11 +4708,6 @@ dir = 4 }, /area/science/research) -"bOu" = ( -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "bPb" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/tile/purple, @@ -5045,6 +4761,31 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) +"bRk" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/power/smes, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/item/radio/intercom{ + pixel_x = 33; + pixel_y = -2 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) +"bSm" = ( +/obj/item/radio/intercom{ + broadcasting = 1; + canhear_range = 6; + dir = 8; + name = "Station Intercom (Court)"; + pixel_x = 33; + pixel_y = -4 + }, +/turf/open/floor/plating, +/area/vacant_room/office) "bSF" = ( /obj/machinery/meter{ target_layer = 4 @@ -5100,22 +4841,6 @@ dir = 1 }, /area/asteroid/paradise/surface/water) -"bTy" = ( -/obj/effect/decal/cleanable/food/flour, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "bTY" = ( /obj/machinery/power/emitter/welded, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -5153,6 +4878,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/wood, /area/crew_quarters/cafeteria) +"bUT" = ( +/obj/structure/sign/directions/supply{ + dir = 8; + pixel_y = 10 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "bVa" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -5160,6 +4894,33 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/bridge) +"bVi" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"bVS" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/effect/spawner/randomarcade{ + dir = 1 + }, +/obj/structure/railing, +/obj/effect/turf_decal/siding/white, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "bVU" = ( /obj/effect/spawner/room/tenxfive, /turf/open/floor/plating, @@ -5262,13 +5023,6 @@ }, /turf/open/floor/plating, /area/hydroponics) -"bYW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/effect/landmark/start/cook, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "bZe" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -5280,11 +5034,12 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/hor) -"bZw" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/paicard, -/turf/open/floor/iron, -/area/maintenance/department/medical/central) +"bZl" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "bZH" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -5358,6 +5113,19 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"cbl" = ( +/obj/machinery/camera/autoname, +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = 23 + }, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/iron, +/area/janitor) "cbm" = ( /turf/closed/mineral/random/air, /area/quartermaster/storage) @@ -5393,11 +5161,6 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/plating, /area/crew_quarters/heads/captain) -"ccq" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "cdq" = ( /obj/structure/window/plasma/reinforced{ dir = 4 @@ -5451,16 +5214,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"cej" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/table, -/obj/machinery/microwave{ - pixel_y = 5 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "cel" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/power/apc/auto_name/west{ @@ -5549,13 +5302,13 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"chk" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) +"cfw" = ( +/obj/structure/stairs, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/pod/dark, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "chG" = ( /turf/open/floor/plating/beach/coastline_b{ dir = 8 @@ -5585,24 +5338,6 @@ /obj/structure/sign/poster/random, /turf/closed/wall, /area/storage/primary) -"ciC" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 5 - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ - alpha = 230; - color = "#edaa0c" - }, -/obj/item/clothing/gloves/color/black, -/obj/effect/decal/cleanable/dirt, -/obj/item/clothing/gloves/color/black{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron, -/area/engine/atmos) "ciD" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/maintenance/two, @@ -5621,12 +5356,6 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"cjE" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "cjG" = ( /obj/structure/chair/fancy/sofa/old/right{ dir = 4 @@ -5947,6 +5676,16 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai_upload) +"crU" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/mob/living/simple_animal/pet/cat{ + desc = "He demands you let him sleep"; + name = "Sir Fluffington McWhiskerface the Third, Esquire, Purveyor of Mischief and Master of Naps" + }, +/turf/open/floor/wood, +/area/asteroid/paradise/surface) "crW" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -6085,20 +5824,6 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"cwj" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/structure/bed/dogbed/runtime, -/mob/living/simple_animal/pet/cat/Runtime{ - pixel_y = 4 - }, -/obj/item/toy/plush/runtime{ - pixel_x = -6; - pixel_y = 1 - }, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/cmo) "cwk" = ( /obj/effect/turf_decal/siding/dark/corner, /obj/effect/turf_decal/trimline/yellow/corner{ @@ -6246,6 +5971,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, /area/crew_quarters/dorms) +"czn" = ( +/obj/machinery/door/firedoor, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/openspace, +/area/maintenance/department/medical/central) "czv" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/dark, @@ -6300,15 +6032,15 @@ }, /turf/open/floor/carpet/red, /area/medical/exam_room) -"cAV" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/airalarm{ - pixel_y = 28 +"cAy" = ( +/obj/structure/rack, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/machinery/light/small{ + dir = 4 }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) +/obj/item/paicard, +/turf/open/floor/plating, +/area/hallway/secondary/service) "cBs" = ( /obj/machinery/holopad, /obj/effect/turf_decal/stripes/line, @@ -6333,11 +6065,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) -"cBT" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "cCz" = ( /obj/structure/sign/departments/minsky/security/security, /turf/closed/wall/r_wall, @@ -6347,6 +6074,15 @@ /obj/effect/turf_decal/bot, /turf/open/floor/wood, /area/crew_quarters/heads/captain) +"cDv" = ( +/obj/structure/table/wood, +/obj/item/screwdriver, +/obj/item/hatchet, +/obj/item/paicard, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "cDx" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -6500,6 +6236,24 @@ /obj/effect/turf_decal/siding/wideplating/dark, /turf/open/floor/carpet/blue, /area/bridge/meeting_room) +"cFN" = ( +/obj/structure/table, +/obj/item/stock_parts/micro_laser, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/manipulator, +/obj/item/stock_parts/capacitor, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high, +/obj/item/paicard{ + pixel_x = 17; + pixel_y = 1 + }, +/turf/open/floor/iron/dark, +/area/engine/atmos) "cFP" = ( /obj/structure/flora/grass/jungle, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -6588,6 +6342,12 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"cJm" = ( +/obj/machinery/camera/autoname{ + network = list("ss13","rd") + }, +/turf/open/openspace, +/area/science/explab) "cJP" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/engineering{ @@ -6612,6 +6372,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"cJR" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "cKi" = ( /obj/structure/table/reinforced, /obj/item/aiModule/supplied/freeform, @@ -6772,6 +6540,20 @@ }, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface) +"cPh" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"cPw" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "cQe" = ( /obj/structure/stairs{ dir = 8 @@ -6824,6 +6606,40 @@ }, /turf/open/floor/iron, /area/security/brig) +"cRw" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "medbay" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/door/airlock/medical/glass{ + emergency = 1; + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_one_access_txt = "5" + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "cSb" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; @@ -7031,66 +6847,28 @@ "cXI" = ( /turf/open/floor/iron, /area/maintenance/department/eva) -"cXQ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/oil/slippery, -/turf/open/floor/plating/airless, -/area/science/mixing) -"cYs" = ( -/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ - alpha = 180 - }, -/obj/effect/turf_decal/loading_area{ - dir = 4; - pixel_y = -1 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "hopqueue"; - name = "Queue Shutter Control"; - pixel_y = -36; - req_access_txt = "57" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +"cXJ" = ( /obj/item/radio/intercom{ dir = 1; - pixel_x = 1; - pixel_y = -27 - }, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) -"cYy" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 + pixel_x = -31; + pixel_y = -3 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/turf/open/floor/plating/beach/sand, +/area/asteroid/paradise/surface/sand) +"cXM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 }, +/obj/structure/table, +/obj/item/pickaxe, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, -/area/quartermaster/sorting) -"cYG" = ( -/obj/machinery/camera/autoname{ - dir = 2; - network = list("ss13","rd") - }, -/turf/open/openspace, -/area/science/explab) +/area/engine/atmos) +"cXQ" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plating/airless, +/area/science/mixing) "cYK" = ( /obj/effect/turf_decal/tile/black/opposingcorners{ dir = 1 @@ -7172,15 +6950,6 @@ "dbm" = ( /turf/open/floor/engine, /area/engine/supermatter) -"dbB" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "63;34" - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/brig) "dbD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -7191,44 +6960,10 @@ /obj/structure/flora/grass/jungle, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) -"dca" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 6 - }, -/obj/structure/dresser, -/obj/item/candle{ - pixel_x = 6; - pixel_y = 12 - }, -/obj/item/radio/intercom{ - pixel_y = -29 - }, -/turf/open/floor/carpet/orange, -/area/quartermaster/qm) -"dci" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/curtain/directional{ - dir = 2 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/quartermaster/qm) "dcZ" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/dock/drydock, /area/quartermaster/storage) -"ddc" = ( -/obj/structure/chair/stool/bar{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 32 - }, -/turf/open/floor/iron/cafeteria_red, -/area/crew_quarters/cafeteria) "ddj" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -7262,6 +6997,21 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"deq" = ( +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ + alpha = 180 + }, +/obj/machinery/fax/bridge, +/obj/item/toy/plush/renault{ + pixel_x = 5; + pixel_y = 3 + }, +/turf/open/floor/iron/dark, +/area/bridge) "dev" = ( /obj/machinery/telecomms/bus/preset_three, /obj/effect/turf_decal/stripes/closeup, @@ -7289,21 +7039,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) -"dfc" = ( -/obj/machinery/camera/autoname{ - dir = 2 - }, -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = 23 - }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/iron, -/area/janitor) "dfi" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -7440,15 +7175,6 @@ }, /turf/open/floor/iron, /area/storage/primary) -"dih" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "8-16" - }, -/turf/open/floor/pod/dark, -/area/maintenance/department/engine) "dii" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -7468,11 +7194,12 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"dji" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/cobweb, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +"diS" = ( +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/paicard, +/turf/open/floor/plating, +/area/maintenance/department/bridge) "djm" = ( /turf/open/openspace, /area/crew_quarters/heads/hor) @@ -7523,6 +7250,17 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, /area/science/lab) +"dkP" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/evac, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "dkR" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted, /obj/structure/reagent_dispensers/water_cooler, @@ -7563,43 +7301,6 @@ }, /turf/open/floor/iron, /area/engine/atmos) -"dmu" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/effect/mapping_helpers/airlock/abandoned, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) -"dmz" = ( -/obj/effect/turf_decal/siding/white{ - alpha = 100 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/fitness/recreation) -"dmI" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, -/turf/open/floor/iron/tech, -/area/science/mixing/chamber) "dmN" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7782,17 +7483,6 @@ "dur" = ( /turf/closed/wall, /area/bridge) -"dux" = ( -/obj/structure/reflector/box{ - anchored = 1; - dir = 1 - }, -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "duC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -8181,6 +7871,12 @@ }, /turf/open/floor/wood, /area/vacant_room/office) +"dEU" = ( +/obj/machinery/nuclearbomb/selfdestruct, +/turf/open/floor/circuit/green{ + luminosity = 2 + }, +/area/security/nuke_storage) "dFk" = ( /obj/structure/chair/office/light, /obj/effect/turf_decal/tile/dark_blue/opposingcorners{ @@ -8268,6 +7964,23 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) +"dHA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Atmos to Loop" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/engine/engineering) "dHB" = ( /obj/item/clothing/glasses/welding{ pixel_x = 5 @@ -8304,11 +8017,6 @@ /obj/structure/railing, /turf/open/floor/iron, /area/science/robotics) -"dHC" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/openspace, -/area/maintenance/department/engine/atmos) "dHS" = ( /obj/effect/turf_decal/bot, /obj/machinery/light/small{ @@ -8349,23 +8057,6 @@ }, /turf/open/openspace, /area/ai_monitored/turret_protected/aisat/maint) -"dIr" = ( -/obj/structure/flora/ausbushes/leafybush{ - max_integrity = 20 - }, -/obj/structure/flora/ausbushes/fullgrass{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/grass/no_border, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "dIK" = ( /turf/open/floor/plating/airless, /area/science/mixing) @@ -8417,11 +8108,6 @@ }, /turf/open/floor/dock/drydock, /area/quartermaster/storage) -"dKE" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/tech, -/area/engine/engineering) "dLt" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/tile/purple{ @@ -8616,20 +8302,6 @@ /obj/effect/decal/cleanable/blood/gibs/down, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface/grass) -"dRo" = ( -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/dark/side{ - dir = 8 - }, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "dRp" = ( /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -8671,6 +8343,21 @@ }, /turf/open/floor/circuit/telecomms/mainframe, /area/tcommsat/server) +"dSc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/porta_turret/ai{ + dir = 4 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "dSe" = ( /obj/structure/reflector/box, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, @@ -8782,14 +8469,6 @@ }, /turf/open/floor/iron/dark, /area/storage/tech) -"dVh" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "dVA" = ( /obj/effect/turf_decal/bot, /obj/structure/closet/secure_closet/freezer/meat{ @@ -8861,6 +8540,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/tech, /area/engine/atmos) +"dXH" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/engine/atmos) "dXI" = ( /turf/closed/wall, /area/engine/supermatter) @@ -8900,22 +8587,6 @@ "ebd" = ( /turf/open/floor/iron, /area/science/misc_lab) -"ebk" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/dark, -/area/engine/engineering) "ebn" = ( /obj/structure/flora/grass/jungle/b, /obj/structure/flora/ausbushes/fullgrass, @@ -8974,16 +8645,6 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"edF" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/machinery/griddle, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "eec" = ( /obj/structure/railing, /turf/open/openspace, @@ -9177,18 +8838,27 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"eiD" = ( -/obj/machinery/power/compressor{ - comp_id = "incineratorturbineRight"; - dir = 1; - luminosity = 2 +"eiN" = ( +/obj/structure/railing/corner{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 }, -/obj/structure/cable, -/turf/open/floor/engine/vacuum, -/area/maintenance/disposal/incinerator) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "eiO" = ( /obj/machinery/gateway{ dir = 1 @@ -9226,21 +8896,6 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) -"ejL" = ( -/obj/structure/table/reinforced, -/obj/item/storage/pill_bottle/dice{ - pixel_x = 4; - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/item/toy/plush/nukeplushie{ - pixel_x = -11; - pixel_y = 9 - }, -/turf/open/floor/prison, -/area/security/prison) "ejN" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -9306,31 +8961,24 @@ }, /turf/open/floor/iron/white, /area/science/research) -"elm" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark/corner{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "elx" = ( /obj/structure/sign/departments/minsky/research/research, /turf/closed/wall/r_wall, /area/science/research) +"elK" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "emp" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -9372,33 +9020,26 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"eol" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -9; - pixel_y = 2 +"eop" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/freezer/kitchen{ + req_access = null; + req_one_access_txt = "28;25;35" }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = -2; - pixel_y = 2 +/obj/item/storage/box/ingredients/fruity{ + pixel_x = 4; + pixel_y = 6 }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) -"eom" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/item/storage/box/ingredients/vegetarian{ + pixel_x = -1; + pixel_y = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 +/obj/item/storage/box/ingredients/wildcard{ + pixel_x = -5; + pixel_y = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) +/turf/open/floor/iron/freezer, +/area/crew_quarters/kitchen/coldroom) "eoQ" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -9713,13 +9354,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"exV" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "eyh" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -9867,24 +9501,21 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"eBa" = ( -/obj/item/clothing/gloves/color/yellow, -/obj/effect/turf_decal/stripes/line, +"eAX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/vending/clothing, /obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname{ - network = list("ss13","engine") +/obj/structure/disposalpipe/segment{ + dir = 2 }, -/obj/structure/closet/secure_closet/atmospherics{ - anchored = 1; - req_access = null; - req_one_access_txt = "11" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/item/radio/intercom{ - pixel_x = -1; - pixel_y = 29 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 }, -/turf/open/floor/iron, -/area/engine/atmos) +/turf/open/floor/plating/asteroid/planetary, +/area/crew_quarters/dorms) "eBh" = ( /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt/dust, @@ -9953,10 +9584,48 @@ }, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) +"eCn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Atmos to Loop" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/engine/engineering) +"eCq" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = 0; + req_one_access_txt = "1;4" + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "eCB" = ( /obj/effect/spawner/room/fivexfour, /turf/open/floor/plating, /area/maintenance/department/medical/central) +"eDg" = ( +/obj/effect/turf_decal/siding/white{ + alpha = 100 + }, +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = 26 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/crew_quarters/dorms) "eDk" = ( /obj/machinery/atmospherics/pipe/multiz/layer4{ dir = 8 @@ -10103,6 +9772,15 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"eGO" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/effect/mapping_helpers/airlock/abandoned, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "eHa" = ( /obj/machinery/telecomms/bus/preset_four, /obj/effect/turf_decal/stripes/closeup{ @@ -10119,6 +9797,13 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"eHe" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "eHB" = ( /obj/effect/turf_decal/bot, /obj/machinery/washing_machine, @@ -10337,23 +10022,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"eNV" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/glass, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/hallway/secondary/service) "eOa" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 @@ -10372,6 +10040,20 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron, /area/engine/engineering) +"eOH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "eOM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -10486,14 +10168,6 @@ /obj/item/clothing/glasses/hud/security/sunglasses, /turf/open/floor/carpet/red, /area/security/detectives_office) -"eQB" = ( -/obj/structure/sink/kitchen{ - pixel_y = 22 - }, -/turf/open/floor/iron/dark, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "eQF" = ( /obj/effect/turf_decal/bot, /obj/structure/table, @@ -10522,17 +10196,16 @@ }, /turf/open/floor/iron/dark, /area/science/robotics) -"eQW" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "1;4" +"eSh" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 +/obj/item/radio/intercom{ + dir = 1; + pixel_y = -35 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +/turf/open/floor/iron, +/area/security/brig) "eSq" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -10572,6 +10245,19 @@ }, /turf/open/floor/wood/broken, /area/crew_quarters/cafeteria) +"eTK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) +"eUf" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/obj/machinery/gibber, +/turf/open/floor/iron/freezer, +/area/crew_quarters/kitchen/coldroom) "eUg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -10598,6 +10284,16 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/captain/private) +"eUC" = ( +/obj/structure/chair/fancy/sofa/old/left{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "eUY" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, @@ -10685,6 +10381,21 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"eWv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/chapel) "eWC" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -10807,29 +10518,6 @@ }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) -"eZo" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Cryogenic Lounge" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) "eZt" = ( /turf/closed/wall/rust, /area/science/xenobiology) @@ -10902,6 +10590,28 @@ }, /turf/open/floor/iron/dark, /area/storage/primary) +"fbs" = ( +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 + }, +/obj/machinery/light, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/sorting/mail{ + dir = 8; + sortType = 14 + }, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/science/lab) "fbA" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/delivery, @@ -10956,6 +10666,19 @@ }, /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) +"fdd" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/iron/tech, +/area/science/mixing/chamber) "fdh" = ( /turf/open/openspace, /area/ai_monitored/turret_protected/aisat/maint) @@ -10994,6 +10717,35 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/science/xenobiology) +"feI" = ( +/obj/structure/rack, +/obj/item/electronics/firelock{ + pixel_x = -4; + pixel_y = -4 + }, +/obj/item/electronics/airalarm, +/obj/item/electronics/apc{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/electronics/firealarm{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/multitool, +/obj/item/clothing/gloves/color/yellow, +/obj/effect/spawner/lootdrop/techstorage/engineering, +/obj/effect/spawner/lootdrop/techstorage/engineering, +/obj/item/radio/intercom{ + pixel_y = 23 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = 23 + }, +/turf/open/floor/iron/dark, +/area/storage/tech) "ffv" = ( /obj/effect/turf_decal/siding/wideplating/terracotta{ dir = 8 @@ -11049,6 +10801,15 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) +"fgF" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating, +/area/maintenance/department/eva) "fgO" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/corner, @@ -11095,6 +10856,17 @@ /obj/item/gun/ballistic/revolver/russian, /turf/open/floor/iron/dark, /area/security/nuke_storage) +"fhR" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/structure/closet/emcloset/anchored, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "fhV" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/bot, @@ -11136,6 +10908,15 @@ }, /turf/open/floor/iron/tech, /area/engine/atmos) +"fib" = ( +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/plating, +/area/maintenance/department/crew_quarters/dorms) +"fic" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/openspace, +/area/maintenance/department/engine/atmos) "fiu" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/maintenance_hatch{ @@ -11147,6 +10928,25 @@ }, /turf/open/floor/iron, /area/maintenance/department/engine) +"fiC" = ( +/obj/structure/table/reinforced, +/obj/item/storage/pill_bottle/dice{ + pixel_x = 4; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/item/toy/plush/nukeplushie{ + pixel_x = -11; + pixel_y = 9 + }, +/turf/open/floor/prison, +/area/security/prison) +"fiF" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "fiN" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -11192,6 +10992,18 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) +"fjt" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/dark, +/area/engine/engineering) "fkk" = ( /obj/item/trash/semki, /turf/open/floor/plating/beach/sand, @@ -11277,21 +11089,6 @@ }, /turf/open/floor/iron/dark, /area/medical/morgue) -"fnA" = ( -/obj/machinery/telecomms/relay/preset/auto, -/obj/machinery/door/window/northleft{ - name = "Engi Desk"; - req_one_access_txt = "32;19" - }, -/obj/structure/window/reinforced/survival_pod, -/obj/structure/cable/yellow, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "fnC" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -11327,21 +11124,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/theatre/backstage) -"fpo" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "fpu" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -11431,6 +11213,19 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"fqC" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "fqM" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/closet/toolcloset, @@ -11515,6 +11310,25 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"fsF" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) +"fsU" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 1; + initialize_directions = 1 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/tech, +/area/engine/engineering) "fta" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 4 @@ -11584,13 +11398,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"fuG" = ( -/obj/structure/stairs{ - dir = 1 - }, -/obj/structure/fans/tiny, -/turf/open/floor/pod/dark, -/area/maintenance/department/engine/atmos) "fuJ" = ( /obj/structure/cable/yellow{ icon_state = "0-2" @@ -11749,14 +11556,6 @@ "fyA" = ( /turf/closed/wall, /area/science/robotics) -"fyH" = ( -/obj/machinery/nuclearbomb/selfdestruct{ - base_icon_state = null - }, -/turf/open/floor/circuit/green{ - luminosity = 2 - }, -/area/security/nuke_storage) "fzp" = ( /obj/structure/table/reinforced, /obj/effect/spawner/lootdrop/maintenance, @@ -11855,6 +11654,18 @@ /obj/machinery/telecomms/server/presets/medical, /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) +"fBU" = ( +/obj/structure/stairs, +/obj/structure/sign/directions/evac{ + dir = 4; + pixel_x = -15; + pixel_y = -31 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/pod/dark, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "fBW" = ( /obj/structure/closet/crate/medical, /obj/effect/spawner/lootdrop/ruinloot/medical, @@ -11950,13 +11761,19 @@ }, /turf/open/floor/engine/co2, /area/engine/atmos) -"fDH" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +"fEe" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) "fEs" = ( /obj/structure/closet/secure_closet/personal, /obj/effect/turf_decal/bot, @@ -11998,22 +11815,17 @@ /obj/machinery/fax/eng, /turf/open/floor/iron, /area/engine/engineering) -"fFT" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp/green{ - pixel_x = -4; - pixel_y = 14 - }, -/obj/item/toy/plush/lisa{ - pixel_x = 5; - pixel_y = 15 - }, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/hop) "fFU" = ( /obj/effect/spawner/room/threexfive, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"fFZ" = ( +/obj/structure/sign/painting/library{ + pixel_x = 1; + pixel_y = 29 + }, +/turf/open/openspace, +/area/crew_quarters/kitchen) "fGn" = ( /obj/machinery/door/airlock/vault{ name = "Vault Door"; @@ -12264,33 +12076,9 @@ /obj/item/crowbar/red, /turf/open/floor/wood, /area/vacant_room/office) -"fMW" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "fMX" = ( /turf/closed/wall, /area/crew_quarters/dorms) -"fNb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 6 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "fNN" = ( /obj/structure/chair/fancy/bench/pew/left{ dir = 1 @@ -12323,19 +12111,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/science/mixing) -"fOE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table/wood, -/obj/effect/turf_decal/siding/wood, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_y = 28 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_y = 23 - }, -/obj/item/paicard, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "fOH" = ( /obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ @@ -12391,23 +12166,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plating, /area/maintenance/department/science/central) -"fPA" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ - dir = 4 - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ - alpha = 230; - color = "#edaa0c" - }, -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/belt/utility, -/obj/item/t_scanner, -/obj/item/radio/intercom{ - pixel_y = 29 - }, -/turf/open/floor/iron, -/area/engine/atmos) "fPV" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -12473,6 +12231,20 @@ /obj/machinery/suit_storage_unit/mining/eva, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"fQH" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "fQP" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -12571,6 +12343,15 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"fSH" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/curtain/directional, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/quartermaster/qm) "fSJ" = ( /obj/machinery/shower{ dir = 8; @@ -12661,16 +12442,6 @@ /obj/machinery/light, /turf/open/floor/iron/dark, /area/engine/atmos) -"fUl" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/machinery/vending/dinnerware, -/obj/machinery/requests_console{ - department = "Kitchen"; - departmentType = 2; - pixel_y = 30 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) "fUG" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -12823,27 +12594,12 @@ /obj/structure/fence, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"fYp" = ( -/obj/structure/noticeboard{ - name = "bounty list"; - pixel_x = 1; - pixel_y = 33 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13","cargo") - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron/sepia, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) +"fXo" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "fYK" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -12885,6 +12641,22 @@ }, /turf/open/floor/plating, /area/maintenance/department/bridge) +"fZl" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/holopad, +/obj/effect/turf_decal/box, +/turf/open/floor/iron, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "fZm" = ( /obj/machinery/computer/bounty{ dir = 4 @@ -12920,14 +12692,22 @@ }, /turf/open/floor/iron, /area/security/brig) -"fZB" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "fZR" = ( /turf/closed/wall, /area/maintenance/department/chapel) +"fZX" = ( +/obj/item/reagent_containers/food/drinks/shaker{ + pixel_x = -8; + pixel_y = 2 + }, +/obj/structure/table/wood, +/obj/machinery/reagentgrinder{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "fZY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -13014,25 +12794,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"gbZ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/northright{ - dir = 2; - icon_state = "right"; - name = "Engi Desk"; - req_one_access_txt = "32;19" - }, -/obj/item/toy/figure/engineer{ - pixel_x = 3; - pixel_y = -1 - }, -/obj/machinery/door/poddoor/preopen{ - id = "Engidesk"; - name = "engineering security door" - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "gcq" = ( /obj/machinery/light_switch{ pixel_x = 25; @@ -13169,16 +12930,6 @@ }, /turf/open/floor/plating, /area/security/brig) -"gez" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) "geB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -13210,6 +12961,24 @@ }, /turf/open/floor/iron/dark, /area/storage/primary) +"gfK" = ( +/obj/structure/urinal{ + dir = 1; + pixel_x = 1; + pixel_y = 33 + }, +/obj/effect/turf_decal/tile/blue/opposingcorners{ + dir = 1 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -31; + pixel_y = -2 + }, +/turf/open/floor/iron/freezer, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "gfQ" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -13243,49 +13012,6 @@ "ggs" = ( /turf/closed/wall/rust, /area/maintenance/department/engine) -"ggt" = ( -/obj/structure/table/reinforced, -/obj/item/storage/fancy/donut_box{ - name = "Emergency donut box"; - pixel_x = -2; - pixel_y = 15 - }, -/obj/item/gun/energy/e_gun/dragnet{ - pixel_x = -2; - pixel_y = 1 - }, -/obj/item/beacon/nettingportal, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ - alpha = 180; - color = "#DE3A3A" - }, -/obj/machinery/camera/motion{ - c_tag = "Armory - Internal"; - dir = 4; - network = list("ss13","security") - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = -11 - }, -/turf/open/floor/iron/dark, -/area/ai_monitored/security/armory) -"ggA" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "ghc" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -13363,6 +13089,20 @@ "giS" = ( /turf/open/floor/plating/asteroid/planetary, /area/engine/atmos) +"giU" = ( +/obj/structure/chair/stool/bar{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = -35 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/cafeteria) "gjn" = ( /obj/machinery/newscaster{ pixel_x = 31; @@ -13521,25 +13261,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/eva) -"glP" = ( -/obj/effect/spawner/structure/window, -/obj/structure/curtain/directional{ - color = "#ACD1E9"; - dir = 2; - icon_state = "bathroom-open"; - icon_type = "bathroom" - }, -/turf/open/floor/plating, -/area/medical/surgery) -"glR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/crew_quarters/bar) "gmf" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table, @@ -13612,27 +13333,6 @@ }, /turf/open/floor/iron, /area/security/execution/education) -"gmv" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/poddoor{ - id = "engstorage"; - name = "Engineering Secure Storage Lockdown" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/engine/engineering) "gmU" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -13745,10 +13445,6 @@ }, /turf/open/floor/iron/tech/grid, /area/ai_monitored/turret_protected/aisat_interior) -"gpm" = ( -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) "gpR" = ( /obj/machinery/telecomms/processor/preset_one, /obj/effect/turf_decal/stripes/line{ @@ -13807,6 +13503,11 @@ }, /turf/open/floor/pod/dark, /area/bridge/meeting_room) +"grQ" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/sparsegrass, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "grS" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -13842,6 +13543,15 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"gth" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/closet/secure_closet/genpop, +/obj/effect/turf_decal/bot, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/security/prison) "gtH" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -13903,28 +13613,6 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/warehouse) -"gvF" = ( -/obj/effect/spawner/lootdrop/aimodule_harmless, -/obj/effect/spawner/lootdrop/aimodule_harmless, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/flasher{ - id = "AI"; - pixel_x = -1; - pixel_y = 32 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/spawner/lootdrop/aimodule_harmless, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/table/reinforced, -/turf/open/floor/circuit, -/area/ai_monitored/turret_protected/ai_upload) "gvQ" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/scrubber/huge, @@ -13933,6 +13621,33 @@ }, /turf/open/floor/iron/dark, /area/science/mixing) +"gwb" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13","security") + }, +/obj/machinery/button/door{ + id = "armory"; + name = "Armory Shutter Toggle"; + pixel_x = -32; + pixel_y = 1; + req_access_txt = "3" + }, +/obj/structure/bed/dogbed/walter, +/mob/living/simple_animal/pet/dog/bullterrier/walter{ + density = 0; + dir = 1 + }, +/obj/item/stack/sheet/bone{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/open/floor/iron/dark, +/area/security/warden) "gwg" = ( /obj/structure/filingcabinet/chestdrawer, /obj/effect/turf_decal/bot, @@ -14003,19 +13718,6 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"gxb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai_upload"; - icon_state = "control_stun"; - name = "AI Upload turret control"; - pixel_x = -33; - pixel_y = 2 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) "gyq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -14150,13 +13852,6 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/aisat/foyer) -"gBe" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) "gBj" = ( /obj/machinery/door/window/brigdoor{ dir = 4; @@ -14171,6 +13866,31 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, /area/science/test_area) +"gBS" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) +"gCg" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/northright{ + dir = 2; + name = "Engi Desk"; + req_one_access_txt = "32;19" + }, +/obj/item/toy/figure/engineer{ + pixel_x = 3; + pixel_y = -1 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Engidesk"; + name = "engineering security door" + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "gCM" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small, @@ -14202,6 +13922,11 @@ /obj/effect/turf_decal/tile/blue/half/contrasted, /turf/open/floor/iron/white, /area/medical/medbay/central) +"gDk" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "gDp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark/side{ @@ -14330,6 +14055,13 @@ }, /turf/open/floor/iron, /area/medical/genetics/cloning) +"gFG" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "gFM" = ( /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -14449,16 +14181,69 @@ }, /turf/open/floor/iron/dark, /area/teleporter) -"gJk" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 +"gJg" = ( +/obj/item/radio/intercom{ + freerange = 1; + name = "Common Channel"; + pixel_x = 29; + pixel_y = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ +/obj/item/radio/intercom{ + freerange = 1; + listening = 0; + name = "Custom Channel"; + pixel_x = 29; + pixel_y = 35 + }, +/obj/item/radio/intercom{ + freerange = 1; + frequency = 1447; + name = "Private Channel"; + pixel_x = 29; + pixel_y = 20 + }, +/obj/effect/landmark/start/ai, +/obj/machinery/button/door{ + id = "AI Chamber entrance shutters"; + name = "AI Chamber Lockdown"; + pixel_x = -25; + pixel_y = 8; + req_access_txt = "16" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/button/door{ + id = "AIwindows"; + name = "AI View Blast doors"; + pixel_x = -38; + pixel_y = 8; + req_access_txt = "19" + }, +/obj/machinery/button/door{ + id = "AI Core shutters"; + name = "AI Core Shutters Toggle"; + pixel_x = -38; + pixel_y = -3; + req_access_txt = "16" + }, +/turf/open/floor/circuit/red, +/area/ai_monitored/turret_protected/ai) +"gJt" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "gJv" = ( /obj/structure/ladder, /turf/open/floor/pod/dark, @@ -14584,6 +14369,13 @@ /obj/item/storage/belt/utility/full/engi, /turf/open/floor/iron, /area/engine/engineering) +"gNq" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "gNr" = ( /obj/effect/turf_decal/evac/evac_big{ dir = 4 @@ -14792,6 +14584,13 @@ slowdown = 0 }, /area/asteroid/paradise/surface) +"gRo" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "gRN" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -14811,6 +14610,11 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/carpet/royalblack, /area/vacant_room/office) +"gSq" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "gSt" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -14914,18 +14718,6 @@ }, /turf/open/floor/plating, /area/security/brig) -"gVY" = ( -/obj/structure/flora/junglebush/b{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/turf/open/floor/grass/no_border, -/area/medical/storage) "gWa" = ( /turf/open/floor/grass/no_border, /area/hallway/primary/aft{ @@ -14964,15 +14756,6 @@ /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, /area/maintenance/department/medical/central) -"gWS" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/sand/plating, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/techmaint/planetary, -/area/asteroid/paradise/surface) "gWU" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; @@ -15030,6 +14813,17 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"gXk" = ( +/obj/structure/disposalpipe/junction{ + dir = 1 + }, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "gXn" = ( /obj/structure/cable{ icon_state = "1-2" @@ -15176,6 +14970,15 @@ }, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface/grass) +"haF" = ( +/obj/structure/chair/stool/bar{ + dir = 8 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 32 + }, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/cafeteria) "haI" = ( /obj/structure/sign/directions/security{ dir = 1; @@ -15413,86 +15216,29 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"hif" = ( +/obj/structure/cable/yellow{ + icon_state = "4-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/medical/central) "hig" = ( /obj/structure/flora/grass/jungle/b, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"hiA" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "hiB" = ( /turf/closed/wall, /area/asteroid/paradise) -"hjO" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/closet/wardrobe/grey, -/obj/effect/turf_decal/bot, -/obj/machinery/light, -/obj/item/paicard, -/turf/open/floor/iron, -/area/crew_quarters/dorms) "hjU" = ( /turf/open/openspace, /area/science/mixing) -"hkO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_y = -33 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "hkP" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/iron, /area/engine/engineering) -"hkT" = ( -/obj/structure/rack, -/obj/item/electronics/firelock{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/item/electronics/airalarm, -/obj/item/electronics/apc{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/electronics/firealarm{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/multitool, -/obj/item/clothing/gloves/color/yellow, -/obj/effect/spawner/lootdrop/techstorage/engineering, -/obj/effect/spawner/lootdrop/techstorage/engineering, -/obj/item/radio/intercom{ - pixel_y = 23 - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = 23 - }, -/turf/open/floor/iron/dark, -/area/storage/tech) "hkV" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners{ dir = 8 @@ -15541,12 +15287,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/airless, /area/science/test_area) -"hnA" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "hnY" = ( /obj/structure/sign/departments/minsky/research/research, /turf/closed/wall/r_wall, @@ -15768,6 +15508,11 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/science/central) +"hts" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "htB" = ( /obj/machinery/door/airlock/medical/glass{ name = "Chemistry Lab"; @@ -15786,6 +15531,27 @@ }, /turf/open/floor/iron/white, /area/medical/apothecary) +"htC" = ( +/obj/machinery/requests_console{ + department = "Cargo Bay"; + departmentType = 2; + pixel_x = 31; + pixel_y = -2 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "htV" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/maintenance_hatch{ @@ -15795,14 +15561,6 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"huA" = ( -/obj/structure/sign/directions/engineering{ - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "huR" = ( /obj/structure/lattice, /obj/structure/railing{ @@ -15817,6 +15575,28 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/bridge) +"hvh" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/light{ + light_color = "#7AC3FF" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "hvu" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -16053,35 +15833,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/engine/engineering) -"hAr" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/flora/rock, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) -"hAw" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/light/small, -/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ - alpha = 180; - color = "#DE3A3A" - }, -/obj/machinery/flasher{ - id = "brigentryaux"; - pixel_y = -38; - range = 3 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 1; - pixel_y = -28 - }, -/turf/open/floor/iron, -/area/security/brig) "hAB" = ( /obj/structure/altar_of_gods, /obj/item/flashlight/lantern{ @@ -16099,6 +15850,19 @@ /obj/structure/barricade/wooden, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) +"hAU" = ( +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/dark/side{ + dir = 8 + }, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "hAV" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 4 @@ -16190,6 +15954,11 @@ }, /turf/open/floor/iron, /area/maintenance/department/engine) +"hCx" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "hCL" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -16266,6 +16035,15 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) +"hGc" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/sand/plating, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/techmaint/planetary, +/area/asteroid/paradise/surface) "hGe" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -16282,6 +16060,15 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"hGq" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/spawner/lootdrop/glowstick/lit, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "2-16" + }, +/turf/open/floor/pod/dark, +/area/maintenance/department/eva) "hGN" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -16326,17 +16113,6 @@ }, /turf/open/indestructible/sound/pool, /area/crew_quarters/fitness/recreation) -"hIZ" = ( -/obj/structure/railing{ - dir = 9 - }, -/obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "hJA" = ( /obj/structure/window/reinforced, /turf/open/floor/engine, @@ -16408,13 +16184,12 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/dark, /area/security/detectives_office) -"hKZ" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ - dir = 4; - piping_layer = 4 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +"hLc" = ( +/obj/structure/table, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/paicard, +/turf/open/floor/plating, +/area/maintenance/department/chapel) "hLr" = ( /obj/structure/table/wood, /obj/item/folder/yellow{ @@ -16596,6 +16371,23 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/storage) +"hRD" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/chair/fancy/bench{ + layer = 2.5 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 1; + pixel_y = 32 + }, +/turf/open/floor/iron, +/area/security/prison) "hRI" = ( /obj/structure/ladder, /obj/structure/railing{ @@ -16687,6 +16479,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"hTd" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "hTi" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -16703,11 +16502,36 @@ }, /turf/open/floor/iron, /area/maintenance/department/chapel) +"hTq" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 32; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "hTE" = ( /obj/machinery/telecomms/message_server/preset, /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) +"hTM" = ( +/obj/structure/closet/cardboard, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/item/melee/flyswatter, +/obj/item/paicard, +/turf/open/floor/iron, +/area/maintenance/department/science/central) "hTN" = ( /obj/effect/turf_decal/siding/dark{ dir = 8 @@ -16735,6 +16559,36 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) +"hUe" = ( +/obj/effect/spawner/structure/window, +/obj/structure/curtain/directional{ + color = "#ACD1E9"; + icon_state = "bathroom-open"; + icon_type = "bathroom" + }, +/turf/open/floor/plating, +/area/medical/surgery) +"hUj" = ( +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "hUk" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -16748,21 +16602,6 @@ /obj/structure/grille/broken, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) -"hUJ" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ - alpha = 180 - }, -/obj/machinery/fax/bridge, -/obj/item/toy/plush/renault{ - pixel_x = 5; - pixel_y = 3 - }, -/turf/open/floor/iron/dark, -/area/bridge) "hUO" = ( /obj/effect/turf_decal/siding/wood{ dir = 9 @@ -16801,22 +16640,6 @@ }, /turf/open/floor/plating/airless, /area/science/mixing) -"hXU" = ( -/obj/machinery/nanite_program_hub, -/obj/effect/turf_decal/stripes/line, -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science RC"; - pixel_y = 30; - receive_ore_updates = 1 - }, -/obj/machinery/camera/autoname{ - dir = 2; - network = list("ss13","rd") - }, -/turf/open/floor/iron, -/area/science/research) "hYe" = ( /obj/effect/turf_decal/siding/yellow, /obj/effect/turf_decal/trimline/yellow/warning, @@ -16996,6 +16819,18 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/rust, /area/science/mixing) +"icQ" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "idf" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -17025,6 +16860,14 @@ }, /turf/open/floor/iron, /area/medical/medbay/central) +"idv" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron, +/area/maintenance/department/engine) "idO" = ( /obj/machinery/portable_atmospherics/pump, /obj/effect/turf_decal/bot, @@ -17045,15 +16888,23 @@ }, /turf/open/floor/iron/dark, /area/medical/medbay/central) -"ifk" = ( +"ifm" = ( /obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/obj/machinery/shieldgen, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/iron, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/door/poddoor{ + id = "engstorage"; + name = "Engineering Secure Storage Lockdown" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, /area/engine/engineering) "ifA" = ( /turf/open/openspace, @@ -17123,35 +16974,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"igk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "8-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "8-32" - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/bridge) -"igs" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Chefwindow"; - name = "Chef window" - }, -/obj/item/toy/figure/chef{ - pixel_y = -1; - pixel_x = -4 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/kitchen) "igz" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/modular_computer/console/preset/curator, @@ -17185,24 +17007,6 @@ "ihL" = ( /turf/closed/wall/r_wall/rust, /area/maintenance/disposal/incinerator) -"ihN" = ( -/obj/structure/urinal{ - dir = 1; - pixel_x = 1; - pixel_y = 33 - }, -/obj/effect/turf_decal/tile/blue/opposingcorners{ - dir = 1 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -31; - pixel_y = -2 - }, -/turf/open/floor/iron/freezer, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "iil" = ( /obj/effect/turf_decal/tile/yellow/opposingcorners{ dir = 8 @@ -17292,10 +17096,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/cafeteria) -"ijW" = ( -/obj/machinery/camera/autoname, -/turf/open/openspace, -/area/crew_quarters/kitchen) "ikr" = ( /obj/structure/railing{ dir = 1 @@ -17399,6 +17199,20 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/white, /area/crew_quarters/heads/hor) +"inI" = ( +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-32" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/security/brig) "inZ" = ( /obj/effect/turf_decal/siding/wood{ dir = 6 @@ -17412,13 +17226,17 @@ }, /turf/open/floor/carpet/royalblue, /area/crew_quarters/heads/captain) -"ion" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 +"iox" = ( +/obj/structure/closet/emcloset/anchored, +/obj/structure/railing{ + dir = 10 }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "ioR" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -17455,24 +17273,6 @@ }, /turf/open/openspace, /area/security/brig) -"ipG" = ( -/obj/structure/sign/directions/science{ - dir = 4; - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) -"irk" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - initialize_directions = 1 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/tech, -/area/engine/engineering) "irp" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -17600,43 +17400,15 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"ivf" = ( -/obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, -/mob/living/simple_animal/hostile/retaliate/frog{ - attacked_sound = 'sound/effects/huuu.ogg'; - dir = 8; - name = "Larry"; - pixel_y = 12; - stepped_sound = null - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/iron, -/area/hydroponics) -"ivO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "8-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/science/central) "iwb" = ( /turf/closed/wall/r_wall, /area/maintenance/department/engine/atmos) -"iwg" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12"; - security_level = 6 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +"iwl" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "iwn" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -17688,6 +17460,25 @@ }, /turf/open/floor/iron, /area/bridge/meeting_room) +"ixf" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/plating, +/area/quartermaster/sorting) "ixz" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -17695,25 +17486,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/dock/drydock, /area/quartermaster/storage) -"ixD" = ( -/obj/structure/chair, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 32; - pixel_y = 3 - }, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +"iya" = ( +/obj/effect/turf_decal/sand/plating, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "iyb" = ( /obj/effect/turf_decal/tile/black/opposingcorners{ dir = 1 @@ -17732,15 +17508,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) -"iyq" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "iyS" = ( /turf/closed/wall, /area/medical/exam_room) +"izd" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "izj" = ( /turf/closed/wall, /area/science/misc_lab) @@ -17753,15 +17528,13 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"iAk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/spawner/lootdrop/glowstick/lit, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "2-16" +"izt" = ( +/obj/structure/railing{ + dir = 5 }, -/turf/open/floor/pod/dark, -/area/maintenance/department/eva) +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "iAI" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -17781,6 +17554,19 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"iAM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/chair/fancy/bench{ + layer = 2.5 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron, +/area/security/prison) "iAN" = ( /obj/structure/chair/office{ dir = 1 @@ -17797,6 +17583,13 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) +"iBP" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/crew_quarters/dorms) "iBU" = ( /obj/item/kirbyplants/random, /obj/structure/disposalpipe/segment{ @@ -17812,16 +17605,24 @@ /obj/structure/frame/machine, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"iDj" = ( -/obj/structure/flora/rock/pile, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) "iDI" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plating/asteroid/basalt/planetary, /area/science/misc_lab) +"iEa" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/trimline/dark_blue/filled/line, +/obj/structure/railing/corner, +/obj/item/storage/secure/safe/caps_spare{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/iron/dark, +/area/bridge/meeting_room) "iEh" = ( /obj/machinery/firealarm/directional/east, /obj/structure/fireplace, @@ -17878,6 +17679,20 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/crew_quarters/heads/hor) +"iFx" = ( +/obj/machinery/computer/cloning, +/obj/effect/turf_decal/bot, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/iron, +/area/medical/genetics/cloning) "iGq" = ( /turf/closed/wall/rust, /area/quartermaster/warehouse) @@ -17989,18 +17804,36 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) -"iJz" = ( -/obj/effect/mapping_helpers/airlock/unres{ +"iJe" = ( +/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 32; + pixel_y = 29 + }, +/turf/open/floor/iron/dark/corner{ dir = 8 }, -/obj/machinery/door/airlock/medical/glass{ - name = "kitchen"; - req_one_access_txt = "28;25;35" +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"iJL" = ( +/obj/machinery/light_switch{ + pixel_x = 25; + pixel_y = -25 }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) +/obj/machinery/light, +/obj/item/kirbyplants/random, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) "iKu" = ( /obj/machinery/door/airlock/public/glass{ name = "Cryogenic Lounge" @@ -18120,19 +17953,17 @@ /obj/item/bluespace_capsule, /turf/open/floor/plating, /area/vacant_room/office) -"iMF" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 +"iMI" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 5 }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 +/obj/machinery/suit_storage_unit/mining/eva, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = -9 }, -/turf/open/floor/iron, -/area/maintenance/department/science/xenobiology) +/turf/open/floor/carpet/orange, +/area/quartermaster/qm) "iNk" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/airless, @@ -18174,21 +18005,6 @@ }, /turf/open/floor/iron, /area/janitor) -"iNP" = ( -/obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = -25 - }, -/obj/machinery/light, -/obj/item/kirbyplants/random, -/obj/machinery/camera/autoname{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) "iOA" = ( /obj/machinery/conveyor{ id = "QMLoad2" @@ -18201,6 +18017,16 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"iOV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/science/central) "iPs" = ( /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/siding/dark{ @@ -18221,16 +18047,20 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/hop) -"iPM" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/flora/ausbushes/sparsegrass, +"iPK" = ( +/obj/structure/flora/ausbushes/ywflowers, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) +"iPP" = ( +/obj/structure/sign/directions/engineering{ + pixel_y = 10 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "iQa" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 1 @@ -18249,6 +18079,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/chapel) +"iQo" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "iQq" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/evac, @@ -18256,15 +18093,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"iQS" = ( -/obj/item/radio/intercom{ - pixel_x = -31; - pixel_y = -2 - }, -/turf/open/openspace, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "iRc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -18362,12 +18190,6 @@ /obj/effect/turf_decal/tile/neutral/anticorner/contrasted, /turf/open/floor/iron, /area/security/brig) -"iTH" = ( -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/plating, -/area/maintenance/department/crew_quarters/dorms) "iTL" = ( /obj/item/radio/intercom{ pixel_y = 30 @@ -18601,24 +18423,6 @@ /obj/machinery/atmospherics/components/unary/thermomachine/heater/on, /turf/open/floor/iron, /area/engine/atmos) -"iZm" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ - dir = 8; - node1_concentration = 0.79; - node2_concentration = 0.21; - piping_layer = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/window/plasma/reinforced{ - dir = 1 - }, -/turf/open/floor/iron, -/area/engine/atmos) "iZu" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -18637,6 +18441,14 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"iZO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/wardrobe/pink, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/sand/plating, +/obj/item/paicard, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "iZV" = ( /turf/closed/wall, /area/ai_monitored/turret_protected/aisat/foyer) @@ -18675,6 +18487,20 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"jaF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/power/rad_collector, +/turf/open/floor/iron/dark, +/area/engine/engineering) "jaK" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -18699,6 +18525,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/crew_quarters/cafeteria) +"jcz" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 29; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "jdh" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -18710,14 +18552,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"jdF" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/engine/atmos) "jdU" = ( /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /obj/structure/cable/yellow{ @@ -18755,27 +18589,6 @@ dir = 8 }, /area/science/lab) -"jfL" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "jfU" = ( /obj/machinery/door/airlock/medical{ name = "Psychologist"; @@ -18842,15 +18655,6 @@ /obj/structure/girder, /turf/open/floor/plating, /area/maintenance/department/chapel) -"jji" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet, -/obj/machinery/light/small, -/obj/effect/spawner/lootdrop/maintenance/four, -/obj/item/paicard, -/turf/open/floor/iron, -/area/maintenance/department/medical/morgue) "jjj" = ( /obj/structure/noticeboard{ desc = "A board for remembering the fallen of the station."; @@ -18887,27 +18691,6 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) -"jkr" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) -"jks" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "jkx" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -18985,6 +18768,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) +"jmP" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "jmY" = ( /turf/open/floor/plating/beach/coastline_b, /area/asteroid/paradise/surface/water) @@ -19075,6 +18864,10 @@ }, /turf/open/openspace, /area/maintenance/department/security/brig) +"joL" = ( +/obj/structure/flora/rock/pile, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "jpU" = ( /obj/structure/railing/corner{ dir = 4 @@ -19101,18 +18894,6 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"jqF" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/effect/turf_decal/trimline/dark_blue/filled/line, -/obj/structure/railing/corner, -/obj/item/storage/secure/safe/caps_spare{ - pixel_x = 5; - pixel_y = -32 - }, -/turf/open/floor/iron/dark, -/area/bridge/meeting_room) "jqN" = ( /obj/item/bikehorn{ pixel_x = -3; @@ -19249,31 +19030,6 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"jsK" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "jsW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -19345,21 +19101,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) -"juB" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/structure/table, -/obj/item/flashlight/flare{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/extinguisher/advanced{ - pixel_x = -8; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/engine/atmos) "jwj" = ( /obj/machinery/light{ dir = 8 @@ -19636,16 +19377,6 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/plating/rust, /area/science/test_area) -"jCI" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/computer/camera_advanced/xenobio, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 32; - pixel_y = -3 - }, -/turf/open/floor/iron/grid/steel, -/area/science/xenobiology) "jDq" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -19955,19 +19686,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"jIP" = ( -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/crew_quarters/dorms) "jJH" = ( /obj/structure/chair/stool{ dir = 4 @@ -19978,20 +19696,6 @@ dir = 9 }, /area/asteroid/paradise/surface) -"jJJ" = ( -/obj/structure/flora/ausbushes/ywflowers{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/grass/no_border, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "jJL" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ alpha = 180 @@ -20047,21 +19751,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"jKJ" = ( -/obj/effect/turf_decal/tile/purple/anticorner/contrasted{ - dir = 4 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 32; - pixel_y = 29 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "jKK" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 @@ -20151,19 +19840,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/maint) -"jLT" = ( -/obj/structure/chair/fancy/sofa/old/left{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/obj/machinery/vending/wallmed{ - pixel_y = 31; - products = list(/obj/item/stack/medical/gauze = 4, /obj/item/reagent_containers/hypospray/medipen = 6, /obj/item/reagent_containers/hypospray/medipen/dexalin = 3, /obj/item/reagent_containers/glass/bottle/epinephrine = 2, /obj/item/reagent_containers/glass/bottle/charcoal = 2) - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "jLX" = ( /obj/effect/spawner/structure/window, /obj/machinery/door/poddoor/shutters/preopen{ @@ -20263,6 +19939,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/security/execution/education) +"jOz" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/tech, +/area/engine/engineering) "jOC" = ( /obj/item/radio/intercom{ pixel_x = 33; @@ -20281,19 +19962,6 @@ }, /turf/open/floor/iron/dark, /area/bridge/meeting_room) -"jOM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/maintenance/department/cargo) "jOP" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -20385,14 +20053,10 @@ }, /turf/open/floor/iron/dark, /area/bridge) -"jRM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/wardrobe/pink, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/sand/plating, -/obj/item/paicard, -/turf/open/floor/iron, -/area/crew_quarters/dorms) +"jRN" = ( +/obj/structure/spider/stickyweb, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "jSm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -20460,6 +20124,17 @@ }, /turf/open/floor/iron/grid/steel, /area/science/mixing) +"jUk" = ( +/obj/effect/landmark/start/assistant, +/obj/structure/cable/yellow{ + icon_state = "2-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "jUp" = ( /obj/machinery/portable_atmospherics/pump, /obj/effect/turf_decal/bot{ @@ -20545,6 +20220,34 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"jWf" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) +"jWk" = ( +/obj/structure/cable/yellow{ + icon_state = "2-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/effect/spawner/lootdrop/grille_or_trash, +/turf/open/floor/pod/dark, +/area/maintenance/department/crew_quarters/dorms) +"jWl" = ( +/obj/machinery/portable_atmospherics/scrubber, +/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = 32; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "jWU" = ( /obj/effect/turf_decal/tile/blue/half{ dir = 1 @@ -20635,6 +20338,18 @@ }, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) +"jYE" = ( +/obj/machinery/power/compressor{ + comp_id = "incineratorturbineRight"; + dir = 1; + luminosity = 2 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable, +/turf/open/floor/engine/vacuum, +/area/maintenance/disposal/incinerator) "jYR" = ( /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/siding/dark{ @@ -20710,20 +20425,6 @@ }, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) -"kam" = ( -/obj/structure/table, -/obj/item/geiger_counter{ - pixel_x = 6; - pixel_y = 3 - }, -/obj/item/toy/plush/plushvar{ - pixel_x = -2; - pixel_y = 9 - }, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "kao" = ( /obj/structure/chair/office/light{ dir = 1 @@ -20737,6 +20438,24 @@ /obj/effect/decal/cleanable/oil, /turf/open/floor/iron/dark, /area/engine/engineering) +"kax" = ( +/obj/structure/chair/fancy/sofa/old/left{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, +/obj/effect/turf_decal/siding/white, +/obj/structure/railing{ + layer = 3 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 29; + pixel_y = -3 + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "kbq" = ( /obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall/r_wall, @@ -20777,11 +20496,26 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/warehouse) -"kcU" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/north, -/turf/open/openspace, -/area/maintenance/department/security/brig) +"kcD" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/machinery/computer/security/telescreen/entertainment{ + network = list("thunder","court","public"); + pixel_x = -1; + pixel_y = 31 + }, +/obj/machinery/light{ + dir = 1; + light_color = "#7AC3FF" + }, +/obj/item/storage/crayons{ + pixel_x = 3; + pixel_y = 4 + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "kcX" = ( /obj/machinery/computer/security/mining{ dir = 4 @@ -20831,14 +20565,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"keI" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "8-16" - }, -/turf/open/floor/pod/dark, -/area/maintenance/department/science/xenobiology) "keO" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -20857,15 +20583,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/asteroid/basalt/planetary, /area/quartermaster/storage) -"kfb" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "kfl" = ( /turf/closed/wall/r_wall, /area/bridge/meeting_room) @@ -20883,6 +20600,15 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"kgq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/numbers/two_nine{ + pixel_y = 16 + }, +/turf/open/floor/iron/dark/side, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "kgt" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/fence/cut{ @@ -20921,21 +20647,6 @@ "khs" = ( /turf/closed/wall/rust, /area/science/lab) -"kie" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 8 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "kiz" = ( /obj/effect/decal/cleanable/greenglow, /turf/open/floor/plating/dirt/jungle/wasteland, @@ -20971,6 +20682,24 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/ai_monitored/security/armory) +"klc" = ( +/obj/item/clothing/gloves/color/yellow, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname{ + network = list("ss13","engine") + }, +/obj/structure/closet/secure_closet/atmospherics{ + anchored = 1; + req_access = null; + req_one_access_txt = "11" + }, +/obj/item/radio/intercom{ + pixel_x = -1; + pixel_y = 29 + }, +/turf/open/floor/iron, +/area/engine/atmos) "klh" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/effect/decal/cleanable/dirt, @@ -21020,17 +20749,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"klO" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 - }, -/turf/open/floor/iron, -/area/engine/atmos) "kmg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -21050,6 +20768,16 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) +"kmz" = ( +/obj/structure/lattice/catwalk/over, +/obj/structure/railing{ + dir = 8 + }, +/obj/structure/closet/firecloset/full, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "kmN" = ( /obj/effect/landmark/event_spawn, /obj/effect/turf_decal/siding/wood{ @@ -21064,6 +20792,11 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/carpet/purple, /area/crew_quarters/cafeteria) +"kmO" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "kmS" = ( /obj/effect/turf_decal/tile/purple/half/contrasted, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -21078,23 +20811,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"kmY" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = -23 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre/backstage) "knd" = ( /obj/structure/table/reinforced, /obj/item/aiModule/reset, @@ -21169,26 +20885,6 @@ /obj/machinery/light/small, /turf/open/floor/iron, /area/maintenance/department/chapel) -"koq" = ( -/obj/machinery/computer/security/telescreen/minisat{ - dir = 4; - pixel_x = -32 - }, -/obj/structure/table/wood, -/obj/machinery/light{ - dir = 8 - }, -/obj/item/storage/secure/briefcase{ - layer = 3; - pixel_x = 15; - pixel_y = 8 - }, -/obj/item/storage/lockbox/medal{ - pixel_x = -1; - pixel_y = 1 - }, -/turf/open/floor/carpet/royalblue, -/area/crew_quarters/heads/captain) "koJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -21391,6 +21087,24 @@ }, /turf/open/floor/iron/dark, /area/security/execution/education) +"ktf" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark/corner{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "kti" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/status_display/evac{ @@ -21448,28 +21162,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/quartermaster/sorting) -"kuF" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "kuW" = ( /turf/closed/wall/r_wall/rust, /area/science/xenobiology) @@ -21574,6 +21266,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/security/brig) +"kyr" = ( +/obj/machinery/door/window/brigdoor/northright{ + id = "Cell 1"; + name = "Cell 1"; + req_access_txt = "1" + }, +/obj/effect/turf_decal/delivery, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/prison/dark, +/area/security/prison) "kyv" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/stripes/line{ @@ -21687,6 +21389,15 @@ }, /turf/open/floor/iron/white, /area/science/research) +"kAQ" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/camera/autoname, +/obj/machinery/vending/games{ + pixel_y = -1 + }, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "kAS" = ( /obj/machinery/atmospherics/components/unary/cryo_cell{ piping_layer = 2 @@ -21798,42 +21509,6 @@ /obj/structure/fence/cut/large, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface/grass) -"kCw" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) -"kCL" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "4;1" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/closeup{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/brig) "kCM" = ( /turf/open/floor/plating, /area/quartermaster/warehouse) @@ -21866,21 +21541,6 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) -"kEs" = ( -/obj/machinery/computer/turbine_computer{ - dir = 1; - id = "incineratorturbineLeft"; - name = "gas turbine left control computer" - }, -/obj/structure/sign/warning/nosmoking{ - pixel_x = 1; - pixel_y = -32 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/iron/dark, -/area/maintenance/disposal/incinerator) "kEO" = ( /obj/structure/sign/warning/securearea{ pixel_y = 32 @@ -21906,12 +21566,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/bridge) -"kFt" = ( -/obj/structure/flora/rock, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "kFx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -21956,14 +21610,6 @@ }, /turf/open/floor/plating, /area/science/robotics) -"kGQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/medical/central) "kHm" = ( /obj/effect/turf_decal/tile/blue/opposingcorners{ dir = 1 @@ -21990,31 +21636,6 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) -"kHE" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 8 - }, -/obj/machinery/door/airlock/medical/glass{ - emergency = 1; - id_tag = "MedbayFoyer"; - name = "Medbay"; - req_one_access_txt = "5" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "medbay" - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "kHF" = ( /obj/machinery/portable_atmospherics/canister/plasma, /obj/effect/turf_decal/delivery, @@ -22062,26 +21683,6 @@ }, /turf/open/floor/noslip/standard, /area/quartermaster/storage) -"kIp" = ( -/obj/item/toy/plush/moth/firewatch, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) -"kIR" = ( -/obj/machinery/power/compressor{ - comp_id = "incineratorturbineLeft"; - dir = 1; - luminosity = 2 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/structure/cable, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13, engine") - }, -/turf/open/floor/engine/vacuum, -/area/maintenance/disposal/incinerator) "kJA" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -22096,6 +21697,23 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"kJL" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = -23 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre/backstage) "kJM" = ( /obj/structure/ladder, /obj/structure/railing{ @@ -22103,11 +21721,6 @@ }, /turf/open/floor/pod/dark, /area/maintenance/department/science/xenobiology) -"kJR" = ( -/obj/structure/flora/grass/jungle/b, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "kJV" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -22175,17 +21788,6 @@ "kLU" = ( /turf/open/floor/iron, /area/engine/atmos) -"kMe" = ( -/obj/effect/landmark/start/assistant, -/obj/structure/cable/yellow{ - icon_state = "2-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "kMG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -22222,6 +21824,22 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/science/lab) +"kNq" = ( +/obj/effect/decal/cleanable/food/flour, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "kND" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -22264,6 +21882,21 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"kPn" = ( +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 8 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "kPr" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -22289,25 +21922,6 @@ }, /turf/open/floor/iron/dark, /area/storage/tech) -"kPY" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/landmark/start/quartermaster, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "kQc" = ( /obj/structure/table/reinforced, /obj/machinery/firealarm/directional/east, @@ -22389,19 +22003,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/security/brig) -"kTy" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/railing/corner, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/lattice/catwalk/over, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "4-32" - }, -/turf/open/openspace, -/area/asteroid/paradise/surface) "kTG" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, @@ -22616,6 +22217,15 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"laf" = ( +/obj/machinery/chem_dispenser/drinks/beer, +/obj/structure/table, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/airalarm{ + pixel_y = 28 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "lai" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/bot{ @@ -22651,6 +22261,15 @@ /obj/structure/lattice/catwalk/over, /turf/open/floor/plating, /area/science/mixing) +"laO" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "8-16" + }, +/turf/open/floor/pod/dark, +/area/maintenance/department/engine) "lbc" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bucket, @@ -22666,24 +22285,6 @@ /obj/item/kitchen/rollingpin, /turf/open/floor/iron, /area/hallway/secondary/service) -"lbu" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "lbA" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -22701,20 +22302,18 @@ /obj/structure/cable, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/foyer) -"lcl" = ( -/obj/machinery/portable_atmospherics/scrubber, -/obj/effect/turf_decal/bot, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer4{ - dir = 8 +"lcs" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/item/radio/intercom{ - pixel_x = 32; - pixel_y = -2 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/turf/open/floor/iron/dark, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "lcQ" = ( /obj/effect/landmark/start/cyborg, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -22769,12 +22368,6 @@ /obj/machinery/chem_master, /turf/open/floor/iron, /area/medical/apothecary) -"lep" = ( -/obj/structure/closet, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/item/paicard, -/turf/open/floor/plating, -/area/maintenance/department/bridge) "leF" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -22877,20 +22470,6 @@ }, /turf/open/floor/engine, /area/ai_monitored/turret_protected/ai) -"lgR" = ( -/obj/effect/turf_decal/sand/plating, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) -"lhb" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2; - pixel_y = 16 - }, -/turf/open/floor/iron/dark/side, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "lhc" = ( /obj/structure/railing{ dir = 8 @@ -22912,17 +22491,6 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"lhf" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "lhn" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/landmark/start/security_officer, @@ -23095,6 +22663,9 @@ /obj/item/stack/rods/five, /turf/open/floor/iron, /area/engine/atmos) +"llQ" = ( +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "llS" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 1 @@ -23253,6 +22824,23 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) +"lpc" = ( +/obj/structure/railing{ + dir = 5 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 5 + }, +/obj/structure/closet/firecloset/full, +/obj/effect/turf_decal/bot, +/obj/item/extinguisher/advanced{ + pixel_x = -1; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "lpZ" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating/asteroid/planetary, @@ -23291,20 +22879,6 @@ }, /turf/open/floor/iron, /area/janitor) -"lrB" = ( -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-32" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/security/brig) "lrR" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "cmoshutter"; @@ -23313,21 +22887,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) -"lsb" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) -"lsf" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/table, -/obj/item/kitchen/rollingpin{ - pixel_x = -6; - pixel_y = -1 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "lsj" = ( /obj/structure/lattice/catwalk/over, /turf/open/openspace, @@ -23354,22 +22913,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/engine) -"lsM" = ( -/obj/machinery/computer/cloning{ - dir = 2 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/iron, -/area/medical/genetics/cloning) "ltd" = ( /obj/structure/lattice/catwalk/over, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -23451,16 +22994,6 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/iron, /area/maintenance/department/medical/morgue) -"luz" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/mob/living/simple_animal/pet/cat{ - desc = "He demands you let him sleep"; - name = "Sir Fluffington McWhiskerface the Third, Esquire, Purveyor of Mischief and Master of Naps" - }, -/turf/open/floor/wood, -/area/asteroid/paradise/surface) "luF" = ( /turf/open/floor/iron, /area/maintenance/department/medical/morgue) @@ -23468,23 +23001,6 @@ /obj/structure/bookcase/random/adult, /turf/open/floor/plating, /area/vacant_room/office) -"lvm" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/docking_port/stationary{ - dir = 4; - dwidth = 9; - height = 14; - id = "emergency_home"; - name = "EchoStation emergency evac bay"; - width = 21 - }, -/turf/open/floor/sepia/planetary{ - slowdown = 0 - }, -/area/asteroid/paradise/surface) "lvL" = ( /obj/structure/window/reinforced{ dir = 1; @@ -23500,6 +23016,18 @@ }, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) +"lvV" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "lwh" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -23522,6 +23050,21 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/hydroponics) +"lxl" = ( +/obj/machinery/nanite_program_hub, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science RC"; + pixel_y = 30; + receive_ore_updates = 1 + }, +/obj/machinery/camera/autoname{ + network = list("ss13","rd") + }, +/turf/open/floor/iron, +/area/science/research) "lxo" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance/two, @@ -23582,6 +23125,13 @@ /obj/item/plunger, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"lyE" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "lyG" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/effect/turf_decal/stripes/line, @@ -23612,26 +23162,40 @@ /obj/machinery/space_heater, /turf/open/floor/iron, /area/maintenance/department/engine) -"lzs" = ( -/obj/structure/disposalpipe/junction{ - dir = 1 +"lzD" = ( +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/flasher{ + id = "AI"; + pixel_x = -1; + pixel_y = 32 }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 +/obj/structure/cable{ + icon_state = "2-8" }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) -"lzV" = ( -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +/obj/effect/spawner/lootdrop/aimodule_harmless, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/table/reinforced, +/turf/open/floor/circuit, +/area/ai_monitored/turret_protected/ai_upload) "lAn" = ( /obj/effect/turf_decal/sand/plating, /obj/structure/girder, /turf/open/floor/plating, /area/engine/atmos) +"lAq" = ( +/obj/item/radio/intercom{ + pixel_x = -31; + pixel_y = -2 + }, +/turf/open/openspace, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "lAt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable/yellow{ @@ -23653,14 +23217,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"lAM" = ( -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/cable/yellow{ - icon_state = "2-32" - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/science/central) "lAN" = ( /turf/closed/wall/mineral/wood, /area/asteroid/paradise/surface) @@ -23683,6 +23239,12 @@ /obj/effect/spawner/lootdrop/glowstick/lit, /turf/open/floor/iron, /area/maintenance/department/bridge) +"lBT" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "lBZ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -23845,22 +23407,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/quartermaster/sorting) -"lFn" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "lFC" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/stripes/line{ @@ -23880,6 +23426,13 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"lFQ" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ + dir = 4; + piping_layer = 4 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "lGc" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/space_heater, @@ -23992,20 +23545,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/bridge) -"lJv" = ( -/obj/structure/flora/ausbushes/sunnybush{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/open/floor/grass/no_border, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "lJE" = ( /obj/structure/table/wood, /obj/item/wrench, @@ -24145,6 +23684,22 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/medical/surgery) +"lPe" = ( +/obj/machinery/light_switch{ + pixel_x = 25; + pixel_y = 26 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "lPu" = ( /obj/structure/railing{ dir = 4 @@ -24187,17 +23742,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/cafeteria) -"lQf" = ( -/obj/machinery/seed_extractor, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/machinery/firealarm/directional/east, -/obj/structure/sign/poster/official/moth1{ - pixel_y = -32 - }, -/turf/open/floor/iron/grid/steel, -/area/hydroponics) "lQi" = ( /turf/open/floor/carpet/purple, /area/crew_quarters/dorms) @@ -24325,14 +23869,6 @@ }, /turf/open/floor/carpet/purple, /area/vacant_room/office) -"lTJ" = ( -/obj/effect/dummy/lighting_obj{ - light_color = "#e6762c"; - light_power = 2; - light_range = 9 - }, -/turf/open/lava/smooth, -/area/asteroid/paradise) "lTW" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -24358,23 +23894,6 @@ }, /turf/open/floor/prison, /area/security/prison) -"lUg" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/chair/office/light{ - dir = 1; - pixel_y = 3 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/effect/landmark/start/scientist, -/turf/open/floor/iron/grid/steel, -/area/science/xenobiology) "lUh" = ( /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, @@ -24408,16 +23927,6 @@ }, /turf/open/floor/iron/dark, /area/storage/primary) -"lUX" = ( -/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ - alpha = 180; - color = "#DE3A3A" - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -32 - }, -/turf/open/floor/iron/dark, -/area/security/brig) "lVq" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -24578,27 +24087,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) -"lZZ" = ( -/mob/living/simple_animal/kalo{ - desc = "The Perma brig's cute grass snake."; - icon = 'icons/mob/animal.dmi'; - icon_dead = "snake_dead"; - icon_living = "snake"; - icon_state = "snake"; - name = "Hugel" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/prison, -/area/security/prison) -"mam" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "man" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -24783,15 +24271,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/maintenance/department/bridge) -"mgw" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12"; - security_level = 6 +"mgp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/structure/lattice/catwalk/over, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/numbers/two_nine{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "mgK" = ( /obj/structure/railing, /turf/open/openspace, @@ -24818,6 +24313,38 @@ /obj/structure/cable/yellow, /turf/open/floor/iron/showroomfloor, /area/crew_quarters/cryopods) +"mgY" = ( +/obj/effect/turf_decal/siding/white{ + alpha = 100; + dir = 5 + }, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/flora/ausbushes/ppflowers, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/crew_quarters/dorms) +"mhe" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet, +/obj/machinery/light/small, +/obj/effect/spawner/lootdrop/maintenance/four, +/obj/item/paicard, +/turf/open/floor/iron, +/area/maintenance/department/medical/morgue) +"mht" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/cargo) "mhI" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -24853,24 +24380,11 @@ }, /turf/open/floor/iron/grid/steel, /area/bridge) -"miM" = ( -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 8 - }, -/obj/item/radio/intercom{ - pixel_x = 32; - pixel_y = -2 - }, +"mit" = ( +/obj/structure/table, +/obj/item/paicard, /turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) +/area/maintenance/department/crew_quarters/dorms) "mjt" = ( /obj/machinery/portable_atmospherics/canister, /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -24878,6 +24392,11 @@ }, /turf/open/floor/iron/tech, /area/science/mixing) +"mjw" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "mjZ" = ( /obj/machinery/flasher{ id = "AI"; @@ -24956,19 +24475,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall/r_wall, /area/security/brig) -"mlP" = ( -/obj/structure/flora/ausbushes/ywflowers{ - max_integrity = 20 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced, -/turf/open/floor/grass/no_border, -/area/medical/storage) "mma" = ( /obj/item/toy/beach_ball/holoball, /obj/effect/turf_decal/bot, @@ -24999,13 +24505,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"mne" = ( -/obj/structure/stairs, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/pod/dark, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +"mmJ" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "mni" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -25268,6 +24774,29 @@ /obj/effect/spawner/lootdrop/costume, /turf/open/floor/iron/dark, /area/maintenance/department/crew_quarters/dorms) +"mwP" = ( +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai"; + icon_state = "control_stun"; + name = "AI Chamber turret control"; + pixel_x = -1; + pixel_y = 33 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/camera/autoname{ + dir = 6; + network = list("aiupload") + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "mxd" = ( /obj/structure/sign/departments/minsky/research/robotics, /turf/closed/wall, @@ -25282,6 +24811,16 @@ /obj/structure/flora/grass/jungle/b, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) +"mxy" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/vending/dinnerware, +/obj/machinery/requests_console{ + department = "Kitchen"; + departmentType = 2; + pixel_y = 30 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "mxG" = ( /obj/structure/barricade/wooden, /turf/open/floor/plating, @@ -25376,6 +24915,28 @@ }, /turf/open/floor/circuit, /area/gateway) +"mAj" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "mAk" = ( /obj/structure/flora/ausbushes/ppflowers, /obj/structure/window/reinforced{ @@ -25432,15 +24993,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/chapel) -"mBY" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_one_access_txt = "12;5"; - security_level = 6 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) "mCk" = ( /obj/machinery/air_sensor/atmos/nitrous_tank, /obj/machinery/atmospherics/pipe/layer_manifold/visible, @@ -25475,10 +25027,6 @@ }, /turf/open/floor/wood, /area/vacant_room/office) -"mDP" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "mDY" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/turf_decal/bot, @@ -25515,16 +25063,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/engine/atmos) -"mFc" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Office"; - req_access_txt = 0; - req_one_access_txt = "1;4" - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "mFq" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 @@ -25607,6 +25145,18 @@ }, /turf/open/floor/iron/dark, /area/bridge/meeting_room) +"mFT" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "mGI" = ( /obj/structure/cable{ icon_state = "1-2" @@ -25633,6 +25183,13 @@ }, /turf/open/floor/iron, /area/maintenance/department/bridge) +"mGS" = ( +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "mHK" = ( /obj/machinery/keycard_auth{ pixel_x = 33; @@ -25691,16 +25248,17 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) -"mIy" = ( -/obj/structure/lattice/catwalk/over, -/obj/structure/railing{ - dir = 4 +"mIF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 }, -/obj/structure/closet/emcloset, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "mIN" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -25795,13 +25353,6 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) -"mLM" = ( -/obj/effect/turf_decal/siding/white{ - dir = 8 - }, -/obj/machinery/processor, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "mLQ" = ( /obj/machinery/atmospherics/pipe/layer_manifold/visible, /obj/effect/decal/cleanable/dirt, @@ -25842,6 +25393,16 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) +"mMw" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_y = -33 + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "mMZ" = ( /obj/machinery/atmospherics/components/binary/valve, /obj/machinery/button/ignition/incinerator/toxmix{ @@ -26000,6 +25561,43 @@ }, /turf/open/floor/plating, /area/medical/morgue) +"mRe" = ( +/obj/machinery/button/flasher{ + id = "brigentryaux"; + pixel_x = 5; + pixel_y = -37 + }, +/obj/machinery/button/door{ + desc = "A remote control switch for the medbay foyer."; + id = "outerbrig"; + name = "Brig Exterior Doors Control"; + normaldoorcontrol = 1; + pixel_x = -6; + pixel_y = -25; + req_access_txt = "63" + }, +/obj/machinery/button/door{ + id = "brigentrance"; + name = "Brig Lockdown Control"; + pixel_x = 6; + pixel_y = -25; + req_access_txt = "63" + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + alpha = 180; + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -32; + pixel_y = -28 + }, +/obj/machinery/computer/crew{ + dir = 4; + req_one_access = list(5,4,3) + }, +/turf/open/floor/iron/dark, +/area/security/warden) "mRH" = ( /obj/structure/bookcase/random/adult, /obj/machinery/newscaster{ @@ -26096,6 +25694,10 @@ /obj/machinery/computer/pandemic, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"mUB" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "mVd" = ( /obj/structure/railing{ dir = 1 @@ -26228,43 +25830,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/iron, /area/maintenance/department/science/central) -"mYn" = ( -/obj/structure/chair/fancy/sofa/old/left{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/siding/white, -/obj/structure/railing{ - layer = 3 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 29; - pixel_y = -3 - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) -"mYq" = ( -/obj/machinery/holopad{ - pixel_x = 16; - pixel_y = 16 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "mYL" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance/two, @@ -26379,21 +25944,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/department/science/central) -"ncz" = ( -/obj/effect/turf_decal/trimline/dark/warning{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 4 - }, -/obj/effect/turf_decal/siding/dark{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/iron/dark, -/area/engineering/hallway{ - name = "Engineering Viewing Platform" - }) "ncA" = ( /obj/effect/turf_decal/caution/stand_clear, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -26412,6 +25962,34 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"ncK" = ( +/obj/machinery/holopad{ + pixel_x = 16; + pixel_y = 16 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) +"ncM" = ( +/obj/structure/reagent_dispensers/beerkeg{ + pixel_x = 6; + pixel_y = -6 + }, +/turf/open/floor/plating/beach/coastline_t{ + dir = 9 + }, +/area/asteroid/paradise/surface) "ncT" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -26481,6 +26059,13 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"neA" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "neD" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -26573,30 +26158,6 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/quartermaster/storage) -"nip" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/rack, -/obj/effect/spawner/lootdrop/techstorage/command, -/obj/effect/turf_decal/delivery, -/obj/item/radio/intercom{ - pixel_y = 29 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/camera/motion{ - c_tag = "Technical Storage"; - dir = 8; - name = "motion-sensitive Technical Storage"; - network = list("ss13","engine") - }, -/turf/open/floor/iron/techmaint/planetary, -/area/storage/tech) "niw" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -26646,21 +26207,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) -"nlf" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron, -/area/science/research) "nlo" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -26700,6 +26246,18 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/wood, /area/vacant_room/office) +"nmp" = ( +/obj/structure/railing/corner, +/obj/effect/turf_decal/siding/dark/corner, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/corner, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "nmz" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -26799,27 +26357,6 @@ dir = 1 }, /area/science/research) -"non" = ( -/obj/machinery/requests_console{ - department = "Cargo Bay"; - departmentType = 2; - pixel_x = 31; - pixel_y = -2 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "noU" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -26933,18 +26470,6 @@ }, /turf/open/floor/iron/dark, /area/security/warden) -"nrD" = ( -/obj/structure/stairs, -/obj/structure/sign/directions/evac{ - dir = 4; - pixel_x = -15; - pixel_y = -31 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/pod/dark, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "nrQ" = ( /turf/closed/wall/mineral/titanium/survival/nodiagonal, /area/hallway/primary/fore{ @@ -27089,22 +26614,6 @@ /obj/item/airlock_painter/decal, /turf/open/floor/iron, /area/maintenance/department/chapel) -"nxu" = ( -/obj/item/beacon{ - pixel_y = 3 - }, -/obj/effect/turf_decal/numbers, -/obj/structure/railing{ - dir = 6 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron/techmaint/planetary, -/area/asteroid/paradise/surface) "nxK" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/under/suit/burgundy, @@ -27121,6 +26630,46 @@ }, /turf/open/floor/iron, /area/hydroponics) +"nyu" = ( +/obj/structure/table/reinforced, +/obj/item/clipboard{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/paper/monitorkey{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/folder/yellow, +/obj/item/toy/figure/ce{ + pixel_x = 8; + pixel_y = 4 + }, +/obj/item/stamp/chief_engineer{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 5 + }, +/obj/machinery/camera/autoname{ + dir = 8; + network = list("ss13","engine") + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Engineer's Desk"; + departmentType = 4; + name = "Chief Engineer RC"; + pixel_x = 32; + pixel_y = 31 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/heads/chief) "nyB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -27206,6 +26755,24 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) +"nzU" = ( +/obj/effect/turf_decal/tile/black/opposingcorners{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/rd, +/obj/effect/turf_decal/bot, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/item/toy/plush/slimeplushie{ + pixel_x = -1; + pixel_y = 7 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/heads/hor) "nzZ" = ( /obj/effect/turf_decal/trimline/dark_blue/filled/line, /obj/structure/railing, @@ -27240,6 +26807,20 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/disposal/incinerator) +"nAF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/turf_decal/sand/plating, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -31; + pixel_y = -3 + }, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "nBs" = ( /obj/structure/flora/rock/pile, /turf/open/floor/iron/techmaint/planetary, @@ -27276,23 +26857,32 @@ "nEl" = ( /turf/open/floor/iron, /area/maintenance/department/chapel) -"nEB" = ( +"nEN" = ( +/obj/structure/stairs{ + dir = 1 + }, +/obj/structure/fans/tiny, +/turf/open/floor/pod/dark, +/area/maintenance/department/engine/atmos) +"nEW" = ( +/obj/machinery/computer/security/telescreen/minisat{ + dir = 4; + pixel_x = -32 + }, /obj/structure/table/wood, -/obj/item/screwdriver, -/obj/item/hatchet, -/obj/item/paicard, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) -"nED" = ( -/obj/machinery/holopad, -/obj/effect/turf_decal/box, -/obj/structure/cable/yellow{ - icon_state = "1-2" +/obj/machinery/light{ + dir = 8 }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +/obj/item/storage/secure/briefcase{ + pixel_x = 15; + pixel_y = 8 + }, +/obj/item/storage/lockbox/medal{ + pixel_x = -1; + pixel_y = 1 + }, +/turf/open/floor/carpet/royalblue, +/area/crew_quarters/heads/captain) "nEX" = ( /obj/structure/bed, /obj/item/bedsheet/dorms, @@ -27311,13 +26901,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"nFA" = ( -/obj/machinery/door/firedoor, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/openspace, -/area/maintenance/department/medical/central) "nFM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -27368,26 +26951,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron/white, /area/science/xenobiology) -"nGR" = ( -/obj/structure/sign/poster/random{ - pixel_x = 31 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/table/wood, -/obj/item/storage/crayons{ - pixel_x = 3; - pixel_y = 7 - }, -/obj/item/camera{ - pixel_y = -9 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 2; - pixel_y = 29 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "nHd" = ( /obj/structure/closet/emcloset/anchored, /turf/open/floor/plating, @@ -27440,6 +27003,20 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) +"nHV" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "32" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/engine) "nId" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/decal/cleanable/dirt/dust, @@ -27530,28 +27107,31 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"nJD" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 +"nJX" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 }, -/turf/open/floor/iron, -/area/maintenance/department/engine) -"nJM" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/small{ - dir = 1 +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/turf/open/floor/iron, -/area/maintenance/department/engine) -"nKa" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 8 + }, +/obj/machinery/door/airlock/medical/glass{ + emergency = 1; + id_tag = "MedbayFoyer"; + name = "Medbay"; + req_one_access_txt = "5" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ + cycle_id = "medbay" + }, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "nKc" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -27607,24 +27187,14 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"nMa" = ( -/obj/machinery/airalarm/directional/north{ - dir = 1; - pixel_y = -23 - }, -/mob/living/simple_animal/bot/mulebot{ - home_destination = "QM #3"; - suffix = "#3" - }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #3" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/quartermaster/warehouse) +"nLv" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "nMm" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -27662,6 +27232,26 @@ /obj/machinery/computer/prisoner/management, /turf/open/floor/iron, /area/bridge) +"nOu" = ( +/obj/machinery/light, +/obj/machinery/firealarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/table, +/obj/item/food/dough{ + pixel_x = 4 + }, +/obj/item/food/dough{ + pixel_y = 2; + pixel_x = 9 + }, +/obj/item/reagent_containers/food/condiment/enzyme{ + pixel_x = -5; + pixel_y = 9 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "nOx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -27679,12 +27269,6 @@ /obj/structure/flora/rock/pile, /turf/open/floor/iron/techmaint/planetary, /area/asteroid/paradise/surface) -"nPp" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "nPz" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/space_heater, @@ -27768,11 +27352,6 @@ }, /turf/open/floor/iron/dark, /area/security/warden) -"nSz" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) "nSF" = ( /obj/machinery/vending/wallmed{ pixel_x = -6; @@ -27829,12 +27408,6 @@ /obj/effect/spawner/lootdrop/maintenance/three, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/bar) -"nTN" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) "nTR" = ( /obj/effect/spawner/room/threexthree, /turf/open/floor/plating, @@ -27856,6 +27429,13 @@ /obj/structure/barricade/wooden, /turf/open/floor/iron, /area/maintenance/department/chapel) +"nVd" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/cardboard, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/item/paicard, +/turf/open/floor/iron, +/area/ai_monitored/turret_protected/aisat/maint) "nVe" = ( /obj/structure/window/plasma/reinforced{ dir = 8 @@ -27919,18 +27499,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/engine/engineering) -"nWN" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/siding/dark/corner, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/corner, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "nXa" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -27980,26 +27548,11 @@ }, /turf/open/floor/plating, /area/maintenance/department/chapel) -"nYI" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/lattice, -/turf/open/openspace, -/area/maintenance/department/security/brig) "nYL" = ( /turf/open/openspace, /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"nYY" = ( -/obj/machinery/computer/security/hos, -/obj/item/toy/plush/carpplushie{ - pixel_x = 5; - pixel_y = 17 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/heads/hos) "nZB" = ( /obj/structure/stairs, /turf/open/floor/pod/dark, @@ -28010,26 +27563,6 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/department/medical/central) -"nZP" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/secure_closet/freezer/kitchen{ - req_access = null; - req_one_access_txt = "28;25;35" - }, -/obj/item/storage/box/ingredients/fruity{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/storage/box/ingredients/vegetarian{ - pixel_x = -1; - pixel_y = 4 - }, -/obj/item/storage/box/ingredients/wildcard{ - pixel_x = -5; - pixel_y = 8 - }, -/turf/open/floor/iron/freezer, -/area/crew_quarters/kitchen/coldroom) "oam" = ( /turf/closed/wall/r_wall, /area/teleporter) @@ -28095,6 +27628,23 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plating, /area/engine/engineering) +"obC" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = 32 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white, +/area/medical/medbay/central) "ocx" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 10 @@ -28112,18 +27662,18 @@ /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"ocM" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow, +"ocS" = ( /obj/structure/cable/yellow{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plating, -/area/maintenance/department/science/central) +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "odM" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/small{ @@ -28184,6 +27734,26 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) +"oga" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/iron, +/area/engine/atmos) +"ogp" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "63;34" + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/brig) "ogJ" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/corner, @@ -28235,20 +27805,29 @@ dir = 1 }, /area/science/lab) +"oiK" = ( +/obj/machinery/airalarm/directional/north{ + dir = 1; + pixel_y = -23 + }, +/mob/living/simple_animal/bot/mulebot{ + home_destination = "QM #3"; + suffix = "#3" + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #3" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/quartermaster/warehouse) "oiS" = ( /obj/structure/closet/crate/freezer/surplus_limbs, /obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/medical/morgue) -"oiV" = ( -/obj/structure/sign/directions/supply{ - dir = 8; - pixel_y = 10 - }, -/turf/closed/wall, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "ojw" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -28274,6 +27853,22 @@ /obj/effect/decal/cleanable/blood/splatter, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"okn" = ( +/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ + dir = 8; + piping_layer = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/window/plasma/reinforced{ + dir = 1 + }, +/turf/open/floor/iron, +/area/engine/atmos) "okx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -28346,18 +27941,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"omt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "omN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -28407,6 +27990,17 @@ }, /turf/open/floor/iron/dark, /area/bridge) +"onC" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "8-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/bridge) "ool" = ( /obj/docking_port/stationary{ dheight = 1; @@ -28573,6 +28167,14 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"oqF" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "8-16" + }, +/turf/open/floor/pod/dark, +/area/maintenance/department/science/xenobiology) "oqZ" = ( /obj/machinery/atmospherics/components/unary/heat_exchanger{ dir = 1 @@ -28625,6 +28227,16 @@ /obj/structure/table/wood/fancy, /turf/open/floor/wood, /area/chapel/office) +"orB" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Security Office"; + req_access_txt = 0; + req_one_access_txt = "1;4" + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/security/brig) "orD" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -28669,30 +28281,6 @@ }, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) -"osM" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "packageSort2" - }, -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/window/northleft{ - dir = 2; - req_access_txt = "50" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/sorting) "osP" = ( /obj/structure/rack, /obj/effect/turf_decal/bot, @@ -28706,10 +28294,30 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) +"ote" = ( +/obj/machinery/telecomms/relay/preset/auto, +/obj/machinery/door/window/northleft{ + name = "Engi Desk"; + req_one_access_txt = "32;19" + }, +/obj/structure/window/reinforced/survival_pod, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "oth" = ( /obj/structure/sign/warning/explosives, /turf/closed/wall, /area/science/mixing) +"otq" = ( +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/east, +/turf/open/openspace, +/area/maintenance/department/security/brig) "otr" = ( /obj/machinery/computer/med_data/laptop{ dir = 1; @@ -28729,18 +28337,6 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/heads/hos) -"otv" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/vending/donksofttoyvendor, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "otW" = ( /obj/effect/turf_decal/box, /obj/machinery/holopad, @@ -28855,6 +28451,25 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"ovX" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/sand/plating, +/obj/machinery/light, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = -35 + }, +/turf/open/floor/plating, +/area/quartermaster/storage) +"owG" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12"; + security_level = 6 + }, +/obj/structure/lattice/catwalk/over, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "owJ" = ( /obj/structure/disposalpipe/segment, /obj/structure/reagent_dispensers/water_cooler, @@ -28889,6 +28504,12 @@ /obj/machinery/light, /turf/open/floor/iron/dark, /area/engine/atmos) +"oxs" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/turf/open/openspace, +/area/hydroponics) "oxy" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 @@ -28920,25 +28541,25 @@ /obj/machinery/portable_atmospherics/canister, /turf/open/floor/iron/tech, /area/engine/atmos) -"oyl" = ( -/obj/effect/turf_decal/siding/white{ - alpha = 100; - dir = 5 - }, -/obj/structure/flora/ausbushes/fullgrass, -/obj/structure/flora/ausbushes/ppflowers, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/crew_quarters/dorms) "oyV" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, /turf/open/floor/plating, /area/maintenance/department/medical/central) +"ozb" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/chapel/main) "ozj" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, @@ -28974,6 +28595,14 @@ /obj/structure/ladder, /turf/open/floor/pod/dark, /area/ai_monitored/turret_protected/aisat/maint) +"ozM" = ( +/obj/effect/turf_decal/bot, +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/kitchenspike, +/turf/open/floor/iron/freezer, +/area/crew_quarters/kitchen/coldroom) "ozO" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -29079,6 +28708,17 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) +"oCj" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 8 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "oCE" = ( /turf/open/openspace, /area/engine/atmos) @@ -29103,6 +28743,21 @@ "oEl" = ( /turf/closed/wall/r_wall, /area/security/detectives_office) +"oEv" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/glass, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/hallway/secondary/service) "oEx" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /obj/machinery/light, @@ -29127,13 +28782,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"oEM" = ( -/obj/effect/landmark/start/cook, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "oEZ" = ( /obj/structure/sign/departments/medbay/alt2, /turf/closed/wall, @@ -29480,37 +29128,6 @@ }, /turf/open/floor/iron, /area/science/misc_lab) -"oMi" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/button/door/incinerator_vent_atmos_aux{ - pixel_x = 24; - pixel_y = 8; - req_one_access = null; - req_one_access_txt = "11" - }, -/obj/machinery/button/door/incinerator_vent_atmos_main{ - pixel_x = 24; - pixel_y = -8; - req_one_access = null; - req_one_access_txt = "11" - }, -/obj/machinery/button/ignition/incinerator/atmos{ - pixel_x = 38; - pixel_y = -7 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/computer/turbine_computer{ - dir = 1; - id = "incineratorturbineRight"; - name = "gas turbine right control computer" - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "oMm" = ( /obj/machinery/power/emitter/welded{ dir = 8 @@ -29542,10 +29159,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/pod/dark, /area/maintenance/department/medical/morgue) -"oMP" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) "oMQ" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -29563,16 +29176,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/dark, /area/security/brig) -"oMU" = ( -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "oNe" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -29591,6 +29194,10 @@ slowdown = 0 }, /area/asteroid/paradise/surface) +"oNh" = ( +/obj/structure/bonfire, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "oNp" = ( /obj/effect/turf_decal/siding/white{ alpha = 100; @@ -29602,6 +29209,25 @@ /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) +"oNr" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/start/quartermaster, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "oNs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 1 @@ -29643,31 +29269,24 @@ /obj/effect/spawner/room/threexthree, /turf/open/floor/plating, /area/maintenance/department/security/brig) -"oNJ" = ( -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = 7; - pixel_y = 6 - }, -/turf/open/floor/iron, -/area/security/brig) -"oNZ" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "oOr" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/crew_quarters/dorms) +"oOA" = ( +/obj/effect/turf_decal/tile/dark_green/fourcorners/contrasted, +/mob/living/simple_animal/hostile/retaliate/frog{ + attacked_sound = 'sound/effects/huuu.ogg'; + dir = 8; + name = "Larry"; + pixel_y = 12; + stepped_sound = null + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/iron, +/area/hydroponics) "oOM" = ( /obj/structure/cable, /obj/machinery/blackbox_recorder, @@ -29739,25 +29358,6 @@ }, /turf/open/floor/plating, /area/maintenance/disposal/incinerator) -"oQf" = ( -/obj/effect/turf_decal/stripes/line, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = 29 - }, -/obj/machinery/computer/med_data/laptop{ - pixel_x = 4; - pixel_y = 2; - req_one_access = null; - req_one_access_txt = "1;4" - }, -/obj/structure/table, -/obj/item/paicard{ - pixel_x = -14; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/security/brig) "oQk" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/grille/broken, @@ -29863,26 +29463,6 @@ }, /turf/open/floor/iron/white, /area/science/research) -"oUu" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - alpha = 180; - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/corner{ - dir = 1 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "oUH" = ( /obj/structure/table/optable{ name = "Forensics Operating Table" @@ -29968,11 +29548,6 @@ }, /turf/open/floor/engine, /area/engine/supermatter) -"oWJ" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) "oXd" = ( /obj/structure/railing{ dir = 9 @@ -29989,15 +29564,6 @@ "oXe" = ( /turf/closed/wall, /area/maintenance/department/medical/central) -"oXB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/closet/secure_closet/genpop, -/obj/effect/turf_decal/bot, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark, -/area/security/prison) "oXZ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -30015,6 +29581,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/tech, /area/engine/engineering) +"oYO" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + alpha = 180; + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/corner{ + dir = 1 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "oYP" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 @@ -30211,13 +29797,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/iron, /area/hydroponics) -"pbz" = ( -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "pcu" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 8 @@ -30290,6 +29869,13 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) +"pdw" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "pdR" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -30308,32 +29894,6 @@ }, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"pee" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/holopad, -/obj/effect/turf_decal/box, -/turf/open/floor/iron, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) -"peI" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "External Gas to Loop" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/iron/dark, -/area/engine/engineering) "pfb" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/turf_decal/evac, @@ -30341,32 +29901,19 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) -"pfd" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/machinery/computer/security/telescreen/entertainment{ - network = list("thunder","court","public"); - pixel_x = -1; - pixel_y = 31 - }, -/obj/machinery/light{ - dir = 1; - light_color = "#7AC3FF" - }, -/obj/item/storage/crayons{ - pixel_x = 3; - pixel_y = 4 - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "pfN" = ( /obj/structure/window/reinforced{ dir = 1 }, /turf/open/floor/engine, /area/science/xenobiology) +"pgy" = ( +/obj/structure/flora/ausbushes/sparsegrass, +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "pgO" = ( /obj/structure/railing/corner{ dir = 4 @@ -30452,33 +29999,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/dark, /area/medical/morgue) -"pjQ" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 2; - initialize_directions = 2; - piping_layer = 4 - }, -/obj/machinery/camera/autoname{ - dir = 6; - network = list("ss13","medbay") - }, -/obj/machinery/power/apc/auto_name/north{ - pixel_y = 24 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/machinery/vending/wallmed{ - pixel_x = -32 - }, -/turf/open/floor/iron/grid/steel, -/area/medical/medbay/central) "pjU" = ( /obj/item/kirbyplants/random{ pixel_x = -6; @@ -30504,15 +30024,6 @@ }, /turf/open/floor/iron/dark, /area/ai_monitored/security/armory) -"pkm" = ( -/obj/structure/railing/corner, -/obj/effect/turf_decal/siding/wood, -/obj/machinery/camera/autoname, -/obj/machinery/vending/games{ - pixel_y = -1 - }, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) "pkH" = ( /obj/machinery/chem_master/condimaster, /obj/structure/railing{ @@ -30601,32 +30112,6 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) -"poF" = ( -/obj/machinery/door/window{ - base_state = "leftsecure"; - dir = 8; - icon_state = "leftsecure"; - name = "Primary AI Core Access"; - obj_integrity = 300; - req_access_txt = "16" - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "AI Core shutters"; - name = "AI Core Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/turretid{ - control_area = "/area/ai_monitored/turret_protected/ai"; - icon_state = "control_stun"; - name = "AI Chamber turret control"; - pixel_x = -1; - pixel_y = 29 - }, -/turf/open/floor/engine, -/area/ai_monitored/turret_protected/ai) "poV" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted, /obj/structure/table_frame, @@ -30874,26 +30359,18 @@ }, /turf/open/floor/engine/o2, /area/engine/atmos) +"pvC" = ( +/obj/effect/turf_decal/numbers/two_nine, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "pvV" = ( /obj/machinery/iv_drip, /turf/open/floor/iron/grid/steel, /area/medical/patients_rooms) -"pwr" = ( -/obj/machinery/light_switch{ - pixel_x = 25; - pixel_y = 26 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "pwy" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/closet/crate/miningcar{ @@ -30946,20 +30423,6 @@ "pxs" = ( /turf/closed/mineral/bscrystal, /area/quartermaster/storage) -"pxD" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/power/smes, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/item/radio/intercom{ - pixel_x = 33; - pixel_y = -2 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "pxO" = ( /obj/structure/table, /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, @@ -31018,11 +30481,6 @@ /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) -"pzR" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/openspace, -/area/maintenance/department/security/brig) "pAb" = ( /obj/structure/railing, /turf/open/floor/plating/asteroid/planetary, @@ -31135,13 +30593,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"pBY" = ( -/obj/item/paicard{ - pixel_x = 5; - pixel_y = 1 - }, -/turf/open/floor/plating, -/area/quartermaster/warehouse) "pCa" = ( /obj/machinery/door/airlock/engineering/glass/critical{ heat_proof = 1; @@ -31158,51 +30609,6 @@ /obj/item/kirbyplants/random, /turf/open/floor/wood, /area/chapel/main) -"pCI" = ( -/obj/machinery/airalarm/all_access{ - dir = 8; - pixel_x = 24 - }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 5; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 5; - pixel_y = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/camera/autoname{ - dir = 8; - network = list("ss13","engine") - }, -/obj/effect/loot_jobscale/medical/burn_kit{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/storage/toolbox/emergency{ - pixel_x = 3; - pixel_y = -1 - }, -/obj/item/extinguisher/advanced{ - pixel_x = -8; - pixel_y = 2 - }, -/turf/open/floor/iron, -/area/maintenance/disposal/incinerator) "pCT" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -31236,6 +30642,25 @@ dir = 4 }, /area/medical/genetics/cloning) +"pDD" = ( +/obj/effect/turf_decal/stripes/line, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 29 + }, +/obj/machinery/computer/med_data/laptop{ + pixel_x = 4; + pixel_y = 2; + req_one_access = null; + req_one_access_txt = "1;4" + }, +/obj/structure/table, +/obj/item/paicard{ + pixel_x = -14; + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/security/brig) "pEf" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -31299,6 +30724,48 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"pFZ" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/table, +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -2; + pixel_y = 9 + }, +/obj/item/storage/box/papersack{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/storage/box/papersack{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/food/grown/apple{ + pixel_x = 11; + pixel_y = -6 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "pGn" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/disposalpipe/segment{ @@ -31306,29 +30773,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/bridge) -"pGp" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = -31 - }, -/mob/living/simple_animal/bot/mulebot{ - beacon_freq = 1400; - home_destination = "QM #1"; - suffix = "#1" - }, -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "QM #1" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/quartermaster/warehouse) "pGA" = ( /obj/effect/decal/cleanable/blood/old, /obj/item/hatchet, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface) +"pGB" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "pHe" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/door/airlock/maintenance_hatch{ @@ -31429,40 +30883,6 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"pII" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) -"pIN" = ( -/obj/structure/stairs{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 2; - pixel_y = 29 - }, -/turf/open/floor/pod/dark, -/area/crew_quarters/cafeteria) -"pJt" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "pKj" = ( /obj/structure/flora/rock/pile, /obj/effect/turf_decal/sand/plating, @@ -31530,28 +30950,6 @@ }, /turf/open/floor/iron/dark, /area/storage/tech) -"pLg" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) -"pLi" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - dir = 1; - initialize_directions = 1 - }, -/obj/effect/turf_decal/bot, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -30 - }, -/turf/open/floor/iron/tech, -/area/engine/engineering) "pLv" = ( /obj/effect/turf_decal/siding/white{ alpha = 100; @@ -31581,6 +30979,30 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) +"pLT" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ + alpha = 180; + color = "#DE3A3A" + }, +/obj/machinery/flasher{ + id = "brigentryaux"; + pixel_y = -38; + range = 3 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = -28 + }, +/turf/open/floor/iron, +/area/security/brig) "pMc" = ( /obj/structure/lattice/catwalk/over, /obj/structure/railing{ @@ -31590,21 +31012,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"pMh" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white/corner{ - dir = 1 - }, -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "pMt" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -31664,15 +31071,6 @@ "pMW" = ( /turf/closed/wall/r_wall/rust, /area/maintenance/department/engine) -"pMX" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/maintenance/department/crew_quarters/dorms) "pMY" = ( /obj/structure/chair, /obj/effect/turf_decal/tile/neutral/half/contrasted{ @@ -31772,19 +31170,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"pQt" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/sink/kitchen{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "old sink"; - pixel_y = 28 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) -"pQG" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/openspace, -/area/asteroid/paradise) "pRW" = ( /obj/structure/chair/office{ dir = 4 @@ -31836,24 +31221,6 @@ "pSY" = ( /turf/open/floor/plating, /area/maintenance/department/chapel) -"pTi" = ( -/obj/structure/table, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/item/stock_parts/subspace/treatment, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/item/book/manual/wiki/tcomms{ - pixel_x = 17; - pixel_y = 4 - }, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/turf/open/floor/iron/dark, -/area/engine/atmos) "pTv" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, @@ -31909,6 +31276,17 @@ /obj/structure/filingcabinet, /turf/open/floor/wood, /area/medical/exam_room) +"pUm" = ( +/obj/machinery/conveyor{ + id = "QMLoad2" + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "pUo" = ( /obj/machinery/atmospherics/pipe/multiz/layer4{ dir = 1 @@ -31951,14 +31329,37 @@ }, /turf/open/floor/iron, /area/crew_quarters/kitchen/coldroom) -"pVH" = ( -/obj/item/radio/intercom{ +"pUZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/button/door/incinerator_vent_atmos_aux{ + pixel_x = 24; + pixel_y = 8; + req_one_access = null; + req_one_access_txt = "11" + }, +/obj/machinery/button/door/incinerator_vent_atmos_main{ + pixel_x = 24; + pixel_y = -8; + req_one_access = null; + req_one_access_txt = "11" + }, +/obj/machinery/button/ignition/incinerator/atmos{ + pixel_x = 38; + pixel_y = -7 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/computer/turbine_computer{ dir = 1; - pixel_x = -31; - pixel_y = -3 + id = "incineratorturbineRight"; + name = "gas turbine right control computer" }, -/turf/open/floor/plating/beach/sand, -/area/asteroid/paradise/surface/sand) +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "pVO" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 9 @@ -31978,18 +31379,15 @@ }, /turf/open/floor/plating, /area/ai_monitored/turret_protected/aisat/maint) -"pWH" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/obj/effect/spawner/randomarcade{ - dir = 1 +"pWG" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12"; + security_level = 6 }, -/obj/structure/railing, -/obj/effect/turf_decal/siding/white, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/carpet/green, -/area/crew_quarters/cafeteria) +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "pWN" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/glowstick/lit, @@ -32092,10 +31490,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/maintenance/department/engine) -"pXZ" = ( -/obj/effect/decal/cleanable/food/egg_smudge, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "pYd" = ( /turf/open/floor/wood/broken, /area/hallway/secondary/service) @@ -32135,11 +31529,34 @@ name = "mainframe floor" }, /area/tcommsat/server) +"pYO" = ( +/obj/machinery/computer/security/mining, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/bridge) "pZC" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance/two, /turf/open/floor/plating, /area/maintenance/department/science/central) +"pZI" = ( +/obj/structure/flora/ausbushes/sunnybush, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/grass/no_border, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "qah" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -32347,6 +31764,12 @@ /obj/structure/barricade/wooden/crude, /turf/open/floor/plating, /area/maintenance/department/science/xenobiology) +"qeO" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "qfj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -32396,17 +31819,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"qgq" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "qgB" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -32419,6 +31831,15 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"qgW" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/crew_quarters/bar) "qgY" = ( /turf/closed/wall/r_wall, /area/maintenance/department/eva) @@ -32472,6 +31893,21 @@ "qhT" = ( /turf/closed/wall/r_wall, /area/maintenance/department/security/brig) +"qiO" = ( +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/table, +/obj/machinery/reagentgrinder{ + pixel_x = -8; + pixel_y = 15 + }, +/obj/item/reagent_containers/glass/beaker{ + pixel_x = 6; + pixel_y = 3 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "qjd" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/fancy/comfy{ @@ -32490,6 +31926,11 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"qjq" = ( +/obj/structure/flora/grass/jungle/b, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "qjF" = ( /obj/structure/railing{ dir = 8 @@ -32575,17 +32016,6 @@ /obj/structure/fans/tiny, /turf/open/floor/iron/techmaint/planetary, /area/science/mixing) -"qlK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/pod/dark, -/area/maintenance/department/medical/morgue) "qmd" = ( /obj/structure/railing{ dir = 4 @@ -32611,6 +32041,14 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/eva) +"qnE" = ( +/obj/structure/flora/junglebush/c, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "qnK" = ( /obj/machinery/power/apc/auto_name/south{ pixel_y = -24 @@ -32689,17 +32127,6 @@ "qpS" = ( /turf/closed/mineral/random/air, /area/maintenance/disposal) -"qqn" = ( -/obj/structure/railing{ - dir = 5 - }, -/obj/structure/closet/emcloset/anchored, -/turf/open/floor/iron/dark/side{ - dir = 5 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "qrb" = ( /obj/machinery/requests_console{ department = "Science"; @@ -32733,27 +32160,6 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) -"qsi" = ( -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/light{ - light_color = "#7AC3FF" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "qsx" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/power/apc/auto_name/north{ @@ -32931,6 +32337,10 @@ /obj/structure/chair/office, /turf/open/floor/iron/dark, /area/engine/atmos) +"qwk" = ( +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/medical/central) "qwA" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -33033,6 +32443,12 @@ }, /turf/open/floor/wood, /area/crew_quarters/theatre/backstage) +"qza" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "qzd" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/line{ @@ -33121,6 +32537,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/engine/engineering) +"qBR" = ( +/obj/structure/lattice, +/turf/open/openspace, +/area/maintenance/department/security/brig) "qCg" = ( /turf/open/floor/plating/beach/deep_water, /area/asteroid/paradise/surface/water) @@ -33179,39 +32599,9 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"qFt" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/camera/autoname{ - dir = 8 - }, -/obj/machinery/gibber, -/turf/open/floor/iron/freezer, -/area/crew_quarters/kitchen/coldroom) "qFF" = ( /turf/open/floor/wood, /area/crew_quarters/heads/captain) -"qFN" = ( -/obj/effect/turf_decal/tile/purple/half/contrasted{ - dir = 4 - }, -/obj/machinery/light, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail{ - dir = 8; - sortType = 14 - }, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -31 - }, -/turf/open/floor/iron/white/side{ - dir = 1 - }, -/area/science/lab) "qGg" = ( /turf/closed/wall, /area/maintenance/department/engine/atmos) @@ -33280,6 +32670,17 @@ /obj/structure/table/wood, /turf/open/floor/wood/broken, /area/vacant_room/office) +"qId" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "8-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance/two, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/science/central) "qIX" = ( /obj/docking_port/stationary{ dwidth = 3; @@ -33362,6 +32763,21 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"qKE" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/chair/office/light{ + dir = 1; + pixel_y = 3 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/effect/landmark/start/scientist, +/turf/open/floor/iron/grid/steel, +/area/science/xenobiology) "qKI" = ( /obj/machinery/portable_atmospherics/scrubber, /obj/effect/turf_decal/bot{ @@ -33481,6 +32897,15 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/engine/engineering) +"qOn" = ( +/obj/structure/table/wood, +/obj/item/soap/nanotrasen, +/obj/item/paicard{ + pixel_x = -6; + pixel_y = 2 + }, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "qOu" = ( /obj/item/target, /obj/effect/turf_decal/stripes/line, @@ -33511,6 +32936,21 @@ dir = 8 }, /turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) +"qQk" = ( +/obj/item/storage/secure/safe{ + pixel_x = 37; + pixel_y = 1 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/camera/autoname, +/obj/item/radio/intercom{ + dir = 1; + pixel_y = 29 + }, +/turf/open/floor/iron, /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) @@ -33706,10 +33146,6 @@ /obj/structure/railing, /turf/open/floor/iron, /area/bridge) -"qUk" = ( -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/maintenance/department/medical/central) "qUr" = ( /obj/effect/turf_decal/stripes/line, /obj/item/kirbyplants/random, @@ -33934,6 +33370,13 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/cmo) +"qYC" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/security/brig) "qYU" = ( /obj/machinery/computer/bounty{ dir = 1 @@ -34083,13 +33526,6 @@ }, /turf/open/floor/iron, /area/security/brig) -"rcs" = ( -/obj/structure/flora/ausbushes/ywflowers, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "rcE" = ( /obj/structure/lattice/catwalk/over, /obj/machinery/modular_computer/console/preset/engineering{ @@ -34146,10 +33582,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, /area/medical/morgue) -"reu" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "reS" = ( /obj/structure/railing/corner, /obj/effect/decal/cleanable/dirt/dust, @@ -34312,13 +33744,32 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) -"riO" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +"riT" = ( +/obj/machinery/button/door{ + id = "meetingshutter"; + name = "Privacy Shutter Control"; + pixel_x = 26; + pixel_y = 2 + }, +/obj/structure/filingcabinet{ + pixel_x = 8 + }, +/obj/structure/filingcabinet{ + pixel_x = -8 + }, +/obj/effect/turf_decal/trimline/dark_blue/filled/line{ + dir = 5 + }, +/obj/machinery/light_switch{ + pixel_x = 35; + pixel_y = 2 + }, +/obj/structure/sign/painting/library{ + pixel_x = 1; + pixel_y = 29 + }, +/turf/open/floor/iron/dark, +/area/bridge/meeting_room) "rjh" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -34330,6 +33781,21 @@ }, /turf/open/floor/iron, /area/engine/engineering) +"rjj" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "rjD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -34351,6 +33817,14 @@ /area/hallway/primary/aft{ name = "-3 Primary Hallway" }) +"rjX" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/box, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "rkg" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -34397,22 +33871,6 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/airless, /area/science/mixing) -"rku" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 29; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "rkz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 @@ -34561,16 +34019,35 @@ /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /turf/open/floor/iron/dark, /area/science/mixing) -"rnW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 +"rnO" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/railing/corner{ + dir = 8 }, /obj/structure/cable/yellow{ - icon_state = "0-8" + icon_state = "2-4" }, -/turf/open/floor/iron, -/area/maintenance/department/engine) +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/effect/landmark/start/station_engineer, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/dark/visible{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/engine/atmos) "roc" = ( /obj/structure/table/reinforced, /obj/item/paper_bin{ @@ -34617,6 +34094,10 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"roL" = ( +/obj/item/toy/plush/moth/firewatch, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "roN" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, @@ -34774,25 +34255,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"rsj" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "quarantineshutters"; - name = "isolation shutters" - }, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Medbay Maintenance"; - req_access_txt = "5" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/maintenance/department/medical/central) "rsH" = ( /obj/effect/turf_decal/numbers{ dir = 1 @@ -34900,19 +34362,20 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"ruK" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/disposalpipe/segment{ - dir = 4 +"ruO" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/dresser, +/obj/item/candle{ + pixel_x = 6; + pixel_y = 12 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 +/obj/item/radio/intercom{ + pixel_y = -29 }, -/turf/open/floor/iron/showroomfloor, -/area/crew_quarters/cryopods) +/turf/open/floor/carpet/orange, +/area/quartermaster/qm) "ruX" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -34959,6 +34422,19 @@ /obj/item/chair, /turf/open/floor/plating/airless, /area/science/test_area) +"rwG" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/railing/corner, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/lattice/catwalk/over, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "4-32" + }, +/turf/open/openspace, +/area/asteroid/paradise/surface) "rxd" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, @@ -34992,12 +34468,10 @@ /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) "ryh" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +/obj/structure/lattice/catwalk/over, +/obj/machinery/firealarm/directional/north, +/turf/open/openspace, +/area/maintenance/department/security/brig) "ryA" = ( /obj/machinery/power/apc/auto_name/south{ pixel_y = -24 @@ -35008,6 +34482,20 @@ /obj/structure/cable/yellow, /turf/open/floor/iron, /area/janitor) +"rzg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/numbers/two_nine, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/dark, +/area/engine/engineering) "rzI" = ( /obj/structure/lattice/catwalk/over, /obj/structure/railing/corner{ @@ -35027,6 +34515,27 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"rzP" = ( +/obj/item/kirbyplants/random, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/side{ + dir = 10 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) +"rzV" = ( +/obj/structure/flora/rock/pile, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "rAh" = ( /obj/structure/table/glass, /obj/item/retractor{ @@ -35089,30 +34598,6 @@ luminosity = 2 }, /area/ai_monitored/turret_protected/ai) -"rBu" = ( -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Access"; - req_one_access_txt = "32;19" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) -"rBL" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/evac, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "rBM" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, @@ -35133,14 +34618,6 @@ }, /turf/open/floor/plating/asteroid/basalt/planetary, /area/quartermaster/storage) -"rCQ" = ( -/obj/effect/turf_decal/bot, -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/kitchenspike, -/turf/open/floor/iron/freezer, -/area/crew_quarters/kitchen/coldroom) "rDl" = ( /obj/structure/chair/office/light{ dir = 4 @@ -35158,6 +34635,22 @@ }, /turf/open/floor/iron, /area/bridge) +"rDI" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/science/research) "rDX" = ( /obj/effect/turf_decal/tile/purple/fourcorners/contrasted, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -35168,6 +34661,13 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"rEg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/numbers, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "rEh" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -35189,18 +34689,14 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"rEo" = ( -/obj/item/radio/intercom{ - broadcasting = 1; - canhear_range = 6; - dir = 8; - listening = 1; - name = "Station Intercom (Court)"; - pixel_x = 33; - pixel_y = -4 +"rEz" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small{ + dir = 1 }, -/turf/open/floor/plating, -/area/vacant_room/office) +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/engine) "rEC" = ( /obj/structure/window/reinforced{ dir = 1 @@ -35221,16 +34717,6 @@ /obj/structure/flora/ausbushes/ywflowers, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) -"rEU" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "rEV" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -35349,53 +34835,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"rGO" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) -"rGX" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/structure/table, -/obj/effect/turf_decal/siding/white{ - dir = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -2; - pixel_y = 9 - }, -/obj/item/storage/box/papersack{ - pixel_x = -4; - pixel_y = 5 - }, -/obj/item/storage/box/papersack{ - pixel_x = -4; - pixel_y = 2 - }, -/obj/item/food/grown/apple{ - pixel_x = 11; - pixel_y = -6 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "rHi" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -26 @@ -35563,6 +35002,16 @@ }, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) +"rKV" = ( +/obj/docking_port/stationary{ + dwidth = 12; + height = 69; + id = "whiteship_home"; + name = "Auxiliary Dock"; + width = 25 + }, +/turf/open/floor/plating/dirt/planetary, +/area/asteroid/paradise/surface/grass) "rLa" = ( /obj/structure/stairs, /obj/structure/extinguisher_cabinet{ @@ -35588,14 +35037,6 @@ }, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/cmo) -"rLD" = ( -/obj/structure/flora/junglebush/c, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "rLL" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -35707,18 +35148,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"rOE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/iron, -/area/maintenance/department/cargo) "rOI" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/fence/post{ @@ -35728,13 +35157,6 @@ dir = 1 }, /area/asteroid/paradise/surface) -"rPg" = ( -/obj/structure/sign/painting/library{ - pixel_x = 1; - pixel_y = 29 - }, -/turf/open/openspace, -/area/crew_quarters/kitchen) "rPj" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -35798,12 +35220,6 @@ slowdown = 0 }, /area/asteroid/paradise/surface) -"rQQ" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "rRc" = ( /obj/structure/table, /obj/effect/turf_decal/siding/wood{ @@ -35934,42 +35350,29 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/tcommsat/computer) -"rVG" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +"rWj" = ( +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -33; + pixel_y = -36 + }, +/obj/structure/disposalpipe/trunk/multiz/down{ + dir = 4 + }, +/obj/structure/rack, +/obj/item/stack/package_wrap, +/obj/item/hand_labeler, +/obj/item/book/manual/wiki/cooking_to_serve_man, +/obj/item/book/manual/wiki/barman_recipes{ + pixel_x = 4; + pixel_y = -4 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "rWp" = ( /obj/effect/spawner/room/fivexfour, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"rWq" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/solarpanel_small, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) -"rWs" = ( -/obj/effect/turf_decal/tile/black/opposingcorners{ - dir = 1 - }, -/obj/machinery/suit_storage_unit/rd, -/obj/effect/turf_decal/bot, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/item/toy/plush/slimeplushie{ - pixel_x = -1; - pixel_y = 7 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/heads/hor) "rWV" = ( /obj/structure/ladder, /obj/effect/turf_decal/stripes/line{ @@ -36023,6 +35426,26 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/hydroponics) +"rYe" = ( +/obj/structure/sign/poster/random{ + pixel_x = 31 + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/table/wood, +/obj/item/storage/crayons{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/item/camera{ + pixel_y = -9 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 2; + pixel_y = 29 + }, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "rYh" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -36313,6 +35736,21 @@ }, /turf/open/floor/plating, /area/maintenance/department/bridge) +"sew" = ( +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) "sff" = ( /obj/structure/rack, /obj/item/crowbar/red, @@ -36416,48 +35854,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/chapel) -"sid" = ( -/obj/structure/chair/fancy/comfy{ - color = "#596479" - }, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 1 - }, -/obj/effect/landmark/start/captain, -/obj/machinery/light{ - dir = 1 - }, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = 27 - }, -/turf/open/floor/carpet/blue, -/area/bridge/meeting_room) -"sif" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/item/book/manual/wiki/security_space_law{ - pixel_x = -6; - pixel_y = 5 - }, -/obj/machinery/recharger{ - pixel_x = 7; - pixel_y = 3 - }, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -2; - pixel_y = 10 - }, -/turf/open/floor/iron/dark, -/area/security/warden) "sip" = ( /obj/machinery/camera/autoname{ dir = 4; @@ -36490,6 +35886,30 @@ }, /turf/open/floor/iron, /area/engine/atmos) +"siH" = ( +/obj/machinery/conveyor{ + dir = 4; + id = "packageSort2" + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/window/northleft{ + dir = 2; + req_access_txt = "50" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/quartermaster/sorting) "siO" = ( /obj/machinery/door/airlock/public/glass{ name = "Chapel" @@ -36528,14 +35948,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"sjd" = ( -/obj/structure/railing, -/obj/structure/lattice, -/obj/machinery/firealarm/directional/west, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "sjC" = ( /obj/item/book/granter/spell/smoke/lesser{ pixel_x = -4; @@ -36594,19 +36006,6 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) -"sky" = ( -/obj/item/kirbyplants/random, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "skF" = ( /obj/machinery/newscaster{ pixel_y = -31 @@ -36709,31 +36108,9 @@ }, /turf/open/floor/iron/dark, /area/chapel/office) -"smX" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = -1; - pixel_y = 30 - }, -/turf/open/floor/iron, -/area/engine/atmos) "snu" = ( /turf/closed/wall, /area/crew_quarters/cryopods) -"snM" = ( -/obj/structure/flora/junglebush/c, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "snW" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -36778,11 +36155,6 @@ /obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"soQ" = ( -/obj/structure/flora/ausbushes/sparsegrass, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "spj" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -36834,20 +36206,6 @@ "srJ" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/hop) -"srK" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/sand/plating, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -31; - pixel_y = -3 - }, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "ssi" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -36859,6 +36217,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/maintenance/department/bridge) +"ssr" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/item/paicard, +/turf/open/floor/iron, +/area/maintenance/department/medical/central) "ssw" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/iron/tech, @@ -36902,15 +36265,6 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"suj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "suk" = ( /obj/structure/chair/office/light{ dir = 4 @@ -36930,44 +36284,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"svk" = ( -/obj/effect/mapping_helpers/airlock/unres{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper_multi{ - cycle_id = "medbay" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/airlock/medical/glass{ - emergency = 1; - id_tag = "MedbayFoyer"; - name = "Medbay"; - req_one_access_txt = "5" +"svv" = ( +/obj/effect/dummy/lighting_obj{ + light_color = "#e6762c"; + light_power = 2; + light_range = 9 }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) -"svB" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, +/turf/open/lava/smooth, /area/asteroid/paradise) "svO" = ( /obj/structure/chair{ @@ -37189,6 +36512,12 @@ "sDa" = ( /turf/closed/wall, /area/maintenance/disposal) +"sDH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "sEk" = ( /obj/effect/turf_decal/siding/white{ alpha = 100; @@ -37228,36 +36557,6 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) -"sEO" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = 29; - pixel_y = -3 - }, -/turf/open/floor/iron/white, -/area/crew_quarters/fitness/recreation) -"sEP" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "1-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/chapel) "sFa" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 @@ -37328,6 +36627,16 @@ }, /turf/open/floor/iron, /area/maintenance/department/bridge) +"sGK" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/flora/ausbushes/sparsegrass, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "sGX" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/sepia, @@ -37459,6 +36768,15 @@ /obj/machinery/space_heater, /turf/open/floor/iron, /area/maintenance/department/bridge) +"sKV" = ( +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/sink/kitchen{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "old sink"; + pixel_y = 28 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "sLb" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/sepia/planetary{ @@ -37577,6 +36895,16 @@ "sNi" = ( /turf/open/floor/plating/beach/water, /area/asteroid/paradise/surface/water) +"sNp" = ( +/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ + alpha = 180; + color = "#DE3A3A" + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = -32 + }, +/turf/open/floor/iron/dark, +/area/security/brig) "sNq" = ( /obj/machinery/airalarm/directional/west, /obj/structure/cable/yellow{ @@ -37667,21 +36995,6 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) -"sPN" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "sQG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -37827,13 +37140,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hos) -"sUv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/item/paicard, -/turf/open/floor/iron, -/area/ai_monitored/turret_protected/aisat/maint) "sUS" = ( /obj/machinery/firealarm/directional/north, /obj/machinery/camera/autoname{ @@ -37846,20 +37152,18 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"sUZ" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/sand/plating, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +"sVh" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/machinery/door/airlock/medical/glass{ + name = "kitchen"; + req_one_access_txt = "28;25;35" }, -/turf/open/floor/iron, -/area/crew_quarters/dorms) +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "sVn" = ( /obj/effect/turf_decal/trimline/yellow, /obj/structure/cable/yellow{ @@ -37916,25 +37220,6 @@ "sWe" = ( /turf/open/floor/iron, /area/maintenance/department/science/xenobiology) -"sWk" = ( -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -33; - pixel_y = -36 - }, -/obj/structure/disposalpipe/trunk/multiz/down{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/item/book/manual/wiki/cooking_to_serve_man, -/obj/item/book/manual/wiki/barman_recipes{ - pixel_x = 4; - pixel_y = -4 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "sWl" = ( /obj/structure/filingcabinet/chestdrawer, /mob/living/simple_animal/parrot/Poly, @@ -37954,6 +37239,27 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plating, /area/security/brig) +"sWy" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + id = "engstorage"; + name = "Engineering Secure Storage Lockdown" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/engine/engineering) "sWD" = ( /obj/machinery/gateway{ dir = 6 @@ -38011,6 +37317,25 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) +"sXY" = ( +/obj/structure/noticeboard{ + name = "bounty list"; + pixel_x = 1; + pixel_y = 33 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13","cargo") + }, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron/sepia, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "sYf" = ( /obj/machinery/computer/cryopod{ pixel_y = -27 @@ -38082,6 +37407,24 @@ }, /turf/open/floor/prison, /area/security/prison) +"sZb" = ( +/obj/structure/extinguisher_cabinet{ + pixel_y = -31 + }, +/mob/living/simple_animal/bot/mulebot{ + beacon_freq = 1400; + home_destination = "QM #1"; + suffix = "#1" + }, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "QM #1" + }, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron, +/area/quartermaster/warehouse) "tae" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -38120,46 +37463,11 @@ }, /turf/open/floor/iron/dark, /area/engine/engineering) -"taE" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "taR" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/engine/atmos) -"taW" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/effect/landmark/start/station_engineer, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/dark/visible{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/engine/atmos) "taZ" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -38328,6 +37636,23 @@ }, /turf/open/floor/prison, /area/security/prison) +"tfh" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/docking_port/stationary{ + dir = 4; + dwidth = 9; + height = 14; + id = "emergency_home"; + name = "EchoStation emergency evac bay"; + width = 21 + }, +/turf/open/floor/sepia/planetary{ + slowdown = 0 + }, +/area/asteroid/paradise/surface) "tfl" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -38367,27 +37692,6 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/tech, /area/engine/engineering) -"tfJ" = ( -/obj/machinery/power/smes{ - charge = 5e+006; - name = "ai power storage unit" - }, -/obj/machinery/flasher{ - id = "AI"; - name = "Meatbag Pacifier"; - pixel_x = 23; - pixel_y = 22 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/item/toy/plush/lizardplushie{ - layer = 5; - pixel_x = 1; - pixel_y = 14 - }, -/turf/open/floor/circuit/red, -/area/ai_monitored/turret_protected/ai) "tfQ" = ( /obj/machinery/atmospherics/components/binary/pump/layer4{ dir = 4; @@ -38509,6 +37813,19 @@ }, /turf/open/floor/iron/grid/steel, /area/hydroponics) +"tih" = ( +/mob/living/simple_animal/kalo{ + desc = "The Perma brig's cute grass snake."; + icon_dead = "snake_dead"; + icon_living = "snake"; + icon_state = "snake"; + name = "Hugel" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/prison, +/area/security/prison) "tio" = ( /obj/structure/railing{ dir = 8 @@ -38568,6 +37885,11 @@ /mob/living/simple_animal/slime, /turf/open/floor/engine, /area/science/xenobiology) +"tjf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "tju" = ( /obj/structure/railing/corner{ dir = 1 @@ -38636,6 +37958,31 @@ }, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) +"tkD" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/item/book/manual/wiki/security_space_law{ + pixel_x = -6; + pixel_y = 5 + }, +/obj/machinery/recharger{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = 10 + }, +/turf/open/floor/iron/dark, +/area/security/warden) "tkJ" = ( /turf/open/floor/iron/dark/side{ dir = 6 @@ -38690,6 +38037,33 @@ /obj/structure/stairs, /turf/open/floor/pod/dark, /area/science/mixing) +"tlH" = ( +/obj/machinery/computer/cargo/request{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Engineering"; + departmentType = 3; + name = "Engineering RC"; + pixel_x = -32; + pixel_y = -1 + }, +/obj/machinery/camera/autoname{ + dir = 4; + network = list("ss13","engine") + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -30 + }, +/turf/open/floor/iron, +/area/engine/engineering) "tlK" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -38764,6 +38138,34 @@ "tmO" = ( /turf/closed/wall/r_wall, /area/chapel/office) +"tnA" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/turf/open/floor/grass/no_border, +/area/medical/storage) +"tnI" = ( +/obj/structure/chair/fancy/comfy{ + color = "#596479" + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/effect/landmark/start/captain, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = 27 + }, +/turf/open/floor/carpet/blue, +/area/bridge/meeting_room) "tnQ" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/purple/visible, @@ -38797,15 +38199,6 @@ }, /turf/open/floor/grass/no_border, /area/medical/storage) -"tok" = ( -/obj/structure/reagent_dispensers/beerkeg{ - pixel_x = 6; - pixel_y = -6 - }, -/turf/open/floor/plating/beach/coastline_t{ - dir = 9 - }, -/area/asteroid/paradise/surface) "top" = ( /obj/structure/stairs{ dir = 4 @@ -38822,14 +38215,6 @@ /obj/effect/spawner/room/threexfive, /turf/open/floor/plating, /area/maintenance/department/science/central) -"toN" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/iron/dark/side{ - dir = 4 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "tpg" = ( /obj/structure/sign/painting/library{ pixel_y = 32 @@ -38878,16 +38263,6 @@ }, /turf/open/floor/engine, /area/security/nuke_storage) -"tpF" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Security Office"; - req_access_txt = 0; - req_one_access_txt = "1;4" - }, -/obj/effect/turf_decal/stripes/closeup, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/dark, -/area/security/brig) "tpH" = ( /obj/structure/grille/broken, /turf/open/floor/plating, @@ -38956,6 +38331,15 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"trB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "trC" = ( /obj/structure/table, /obj/item/clipboard, @@ -39026,6 +38410,14 @@ }, /turf/open/floor/plating, /area/security/prison) +"tss" = ( +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "2-32" + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/science/central) "tst" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -39085,6 +38477,14 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"ttC" = ( +/obj/structure/railing, +/obj/structure/lattice, +/obj/machinery/firealarm/directional/west, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "ttD" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -39162,6 +38562,22 @@ /obj/machinery/atmospherics/pipe/simple/green/hidden, /turf/open/floor/engine/plasma, /area/engine/atmos) +"tvm" = ( +/obj/item/beacon{ + pixel_y = 3 + }, +/obj/effect/turf_decal/numbers, +/obj/structure/railing{ + dir = 6 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron/techmaint/planetary, +/area/asteroid/paradise/surface) "twd" = ( /obj/structure/flora/rock/pile, /turf/open/floor/plating/asteroid/basalt/planetary, @@ -39236,19 +38652,6 @@ }, /turf/open/floor/carpet/green, /area/vacant_room/office) -"txL" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/iron, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) "txR" = ( /obj/structure/closet/secure_closet/personal, /turf/open/floor/iron, @@ -39304,17 +38707,6 @@ "tzP" = ( /turf/closed/wall/r_wall/rust, /area/science/research) -"tzS" = ( -/obj/structure/closet/emcloset/anchored, -/obj/structure/railing{ - dir = 10 - }, -/turf/open/floor/iron/dark/side{ - dir = 10 - }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" - }) "tzT" = ( /obj/item/trash/syndi_cakes, /turf/open/floor/plating/beach/sand, @@ -39328,6 +38720,31 @@ }, /turf/open/floor/iron/dark, /area/medical/morgue) +"tAz" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "tAG" = ( /obj/machinery/door/airlock/hatch{ name = "MiniSat Teleporter"; @@ -39409,6 +38826,24 @@ /obj/effect/spawner/lootdrop/glowstick/lit, /turf/open/floor/iron, /area/maintenance/department/medical/central) +"tBT" = ( +/obj/structure/table/reinforced, +/obj/structure/desk_bell{ + pixel_x = -8; + pixel_y = 9 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/item/paicard{ + pixel_x = 5; + pixel_y = 1 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "tCf" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -39457,21 +38892,6 @@ }, /turf/open/floor/iron/white/side, /area/science/research) -"tCZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/porta_turret/ai{ - dir = 4 - }, -/turf/open/floor/iron/tech/grid, -/area/ai_monitored/turret_protected/aisat_interior) "tDp" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -39502,6 +38922,17 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/maintenance/department/bridge) +"tDT" = ( +/obj/machinery/seed_extractor, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/machinery/firealarm/directional/east, +/obj/structure/sign/poster/official/moth1{ + pixel_y = -32 + }, +/turf/open/floor/iron/grid/steel, +/area/hydroponics) "tEl" = ( /obj/machinery/door/airlock/science{ name = "Toxins Lab"; @@ -39549,6 +38980,19 @@ /obj/structure/sign/departments/minsky/research/dorms, /turf/closed/wall, /area/crew_quarters/dorms) +"tFM" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + network = list("ss13","security") + }, +/obj/item/kirbyplants/random, +/obj/structure/sink/kitchen{ + pixel_y = 22 + }, +/turf/open/floor/iron, +/area/security/brig) "tFV" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -39682,6 +39126,21 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) +"tIw" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + network = list("aiupload") + }, +/obj/machinery/firealarm/directional/north, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "tII" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/bot, @@ -39694,8 +39153,10 @@ /obj/effect/spawner/lootdrop/maintenance/four, /turf/open/floor/plating, /area/maintenance/department/engine/atmos) -"tIN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +"tIP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 6 + }, /turf/open/floor/plating/asteroid/planetary, /area/asteroid/paradise) "tJa" = ( @@ -39740,6 +39201,24 @@ /obj/effect/turf_decal/trimline/yellow, /turf/open/floor/iron/white, /area/science/lab) +"tJv" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -30; + pixel_y = -2 + }, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "tJw" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/condiment/saltshaker{ @@ -40206,6 +39685,16 @@ }, /turf/open/floor/iron/dark, /area/security/brig) +"tST" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "tSZ" = ( /obj/item/reagent_containers/food/condiment/peppermill{ pixel_y = 25 @@ -40258,6 +39747,15 @@ }, /turf/open/floor/iron/dark, /area/security/warden) +"tTn" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ + alpha = 180 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "tTt" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -40280,23 +39778,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/chapel) -"tTT" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/chair/fancy/bench{ - layer = 2.5 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 1; - pixel_y = 32 - }, -/turf/open/floor/iron, -/area/security/prison) "tUh" = ( /obj/structure/cable{ icon_state = "2-8" @@ -40315,6 +39796,18 @@ /area/engineering/hallway{ name = "Engineering Viewing Platform" }) +"tUs" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm/directional/north, +/obj/machinery/vending/donksofttoyvendor, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "tUu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 @@ -40408,22 +39901,13 @@ }, /turf/open/floor/wood, /area/vacant_room/office) -"tVM" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ +"tVK" = ( +/obj/effect/turf_decal/siding/white{ dir = 1 }, -/obj/effect/turf_decal/tile/dark_blue/half/contrasted{ - alpha = 180; - dir = 2 - }, -/turf/open/floor/iron/dark/corner{ - dir = 8 - }, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" - }) +/obj/machinery/deepfryer, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "tVY" = ( /turf/open/floor/iron/sepia, /area/quartermaster/storage) @@ -40444,6 +39928,23 @@ }, /turf/open/floor/iron, /area/medical/surgery) +"tWu" = ( +/obj/machinery/atmospherics/pipe/multiz/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/multiz/layer2{ + dir = 1 + }, +/obj/machinery/light/small, +/obj/machinery/status_display/evac{ + pixel_y = -32 + }, +/obj/structure/cable/yellow{ + icon_state = "1-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/turf/open/floor/pod/dark, +/area/maintenance/department/science/central) "tWx" = ( /obj/structure/lattice/catwalk/over, /obj/structure/railing{ @@ -40509,33 +40010,6 @@ "tYd" = ( /turf/closed/wall, /area/janitor) -"tYp" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 - }, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13","security") - }, -/obj/machinery/button/door{ - id = "armory"; - name = "Armory Shutter Toggle"; - pixel_x = -32; - pixel_y = 1; - req_access_txt = "3" - }, -/obj/structure/bed/dogbed/walter, -/mob/living/simple_animal/pet/dog/bullterrier/walter{ - density = 0; - dir = 1 - }, -/obj/item/stack/sheet/bone{ - pixel_x = 6; - pixel_y = -6 - }, -/turf/open/floor/iron/dark, -/area/security/warden) "tYu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -40545,23 +40019,21 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) -"tYC" = ( -/obj/machinery/door/window/brigdoor/northright{ - id = "Cell 1"; - name = "Cell 1"; - req_access_txt = "1" +"tYX" = ( +/obj/machinery/light{ + dir = 1 }, -/obj/effect/turf_decal/delivery, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/floor/prison/dark, -/area/security/prison) -"tZd" = ( -/obj/structure/flora/rock/pile, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/item/radio/intercom{ + pixel_x = -1; + pixel_y = 30 + }, +/turf/open/floor/iron, +/area/engine/atmos) "tZz" = ( /obj/structure/railing{ dir = 1 @@ -40624,6 +40096,16 @@ }, /turf/open/floor/carpet/red, /area/crew_quarters/theatre/backstage) +"udq" = ( +/obj/structure/flora/junglebush/b, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/grass/no_border, +/area/medical/storage) "udr" = ( /obj/structure/railing/corner{ dir = 1 @@ -40796,33 +40278,6 @@ /obj/structure/cable, /turf/open/floor/plating, /area/tcommsat/computer) -"uiv" = ( -/obj/machinery/computer/cargo/request{ - dir = 4 - }, -/obj/machinery/requests_console{ - department = "Engineering"; - departmentType = 3; - name = "Engineering RC"; - pixel_x = -32; - pixel_y = -1 - }, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("ss13","engine") - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/item/radio/intercom{ - pixel_x = 1; - pixel_y = -30 - }, -/turf/open/floor/iron, -/area/engine/engineering) "uiA" = ( /obj/effect/turf_decal/tile/purple{ dir = 4 @@ -40886,6 +40341,32 @@ }, /turf/open/floor/iron, /area/medical/storage) +"ujM" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/conveyor_switch/oneway{ + dir = 1; + id = "packageSort2" + }, +/obj/effect/turf_decal/loading_area{ + dir = 1 + }, +/obj/effect/landmark/start/cargo_technician, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) "ujX" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -40905,6 +40386,23 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/chief) +"ukz" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = 4; + pixel_y = 9 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Chefwindow"; + name = "Chef window" + }, +/obj/item/toy/figure/chef{ + pixel_y = -1; + pixel_x = -4 + }, +/turf/open/floor/iron/white, +/area/crew_quarters/kitchen) "ukS" = ( /obj/effect/turf_decal/siding/dark{ dir = 6 @@ -40964,13 +40462,12 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"umL" = ( -/obj/effect/landmark/start/cook, -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable/yellow{ - icon_state = "4-8" +"umB" = ( +/obj/effect/decal/cleanable/generic, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/iron/dark, +/turf/open/floor/iron/cafeteria, /area/crew_quarters/kitchen) "unj" = ( /obj/structure/closet/secure_closet/medical3, @@ -41018,6 +40515,25 @@ }, /turf/open/floor/iron, /area/bridge) +"unI" = ( +/obj/structure/sign/directions/science{ + dir = 4; + pixel_y = 10 + }, +/turf/closed/wall, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) +"unO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/machinery/griddle, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "uoe" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -41049,13 +40565,6 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"uoB" = ( -/obj/effect/turf_decal/tile/bar/opposingcorners, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/kitchen) "uoF" = ( /obj/machinery/light/small{ dir = 4 @@ -41302,15 +40811,6 @@ }, /turf/open/floor/iron/white, /area/science/lab) -"utq" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/department/eva) "utK" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating/dirt/planetary, @@ -41344,24 +40844,6 @@ dir = 8 }, /area/bridge) -"uvf" = ( -/obj/docking_port/stationary{ - dir = 1; - dwidth = 12; - height = 69; - id = "whiteship_home"; - name = "Auxiliary Dock"; - width = 25 - }, -/turf/open/floor/plating/dirt/planetary, -/area/asteroid/paradise/surface/grass) -"uvk" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/numbers, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "uvZ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 1 @@ -41375,6 +40857,11 @@ }, /turf/open/floor/iron/dark, /area/bridge/meeting_room) +"uwc" = ( +/obj/structure/cable/yellow, +/obj/effect/turf_decal/box, +/turf/open/floor/plating, +/area/asteroid/paradise/surface) "uwd" = ( /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ alpha = 180 @@ -41406,6 +40893,32 @@ }, /turf/open/floor/plating, /area/maintenance/department/chapel) +"uwJ" = ( +/obj/machinery/door/window{ + base_state = "leftsecure"; + dir = 8; + icon_state = "leftsecure"; + name = "Primary AI Core Access"; + obj_integrity = 300; + req_access_txt = "16" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "AI Core shutters"; + name = "AI Core Shutter" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai"; + icon_state = "control_stun"; + name = "AI Chamber turret control"; + pixel_x = -1; + pixel_y = 29 + }, +/turf/open/floor/engine, +/area/ai_monitored/turret_protected/ai) "uwN" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -41422,17 +40935,12 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/grid/steel, /area/medical/medbay/central) -"uxA" = ( -/obj/machinery/conveyor{ - id = "QMLoad2" - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -30; - pixel_y = -2 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) +"uxz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "uxB" = ( /obj/effect/spawner/structure/window/reinforced/tinted, /turf/open/floor/plating, @@ -41633,6 +41141,28 @@ }, /turf/open/floor/iron, /area/science/lab) +"uEq" = ( +/obj/machinery/light_switch{ + pixel_x = 24 + }, +/obj/structure/bed/double, +/obj/item/bedsheet/double/captain, +/obj/item/disk/nuclear{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/item/toy/plush/beeplushie{ + pixel_x = -2; + pixel_y = -3 + }, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/captain/private) "uEs" = ( /obj/structure/closet/firecloset/full, /obj/machinery/light/small{ @@ -41777,17 +41307,6 @@ dir = 1 }, /area/science/research) -"uHR" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable/yellow{ - icon_state = "8-32" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/structure/lattice/catwalk/over, -/turf/open/openspace, -/area/maintenance/department/bridge) "uIx" = ( /obj/effect/turf_decal/tile/dark_green{ dir = 1 @@ -41801,16 +41320,16 @@ /obj/item/reagent_containers/food/drinks/shaker, /turf/open/floor/iron, /area/hallway/secondary/service) -"uIH" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light{ - dir = 8 +"uIW" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/camera_advanced/xenobio, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 32; + pixel_y = -3 }, -/obj/machinery/power/port_gen/pacman, -/turf/open/floor/iron, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) +/turf/open/floor/iron/grid/steel, +/area/science/xenobiology) "uJm" = ( /obj/structure/table/wood/fancy/blue, /obj/item/radio/intercom{ @@ -41858,21 +41377,13 @@ luminosity = 2 }, /area/security/nuke_storage) -"uKn" = ( -/obj/effect/turf_decal/siding/white{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/reagentgrinder{ - pixel_x = -8; - pixel_y = 15 - }, -/obj/item/reagent_containers/glass/beaker{ - pixel_x = 6; - pixel_y = 3 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +"uKf" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "uKq" = ( /obj/effect/turf_decal/bot, /obj/item/robot_suit, @@ -41890,13 +41401,6 @@ /obj/item/stock_parts/subspace/crystal, /turf/open/floor/iron/dark, /area/engine/atmos) -"uKV" = ( -/obj/effect/turf_decal/sand/plating, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "uLf" = ( /obj/effect/turf_decal/sand/plating, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -41951,6 +41455,18 @@ /obj/structure/closet/firecloset/full, /turf/open/floor/iron, /area/maintenance/department/cargo) +"uMm" = ( +/obj/structure/cable/yellow{ + icon_state = "1-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow, +/turf/open/floor/pod/dark, +/area/maintenance/department/medical/morgue) "uMJ" = ( /obj/machinery/computer/xenoartifact_console, /obj/effect/turf_decal/bot, @@ -42012,6 +41528,47 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"uNL" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) +"uNV" = ( +/obj/structure/lattice/catwalk/over, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/closet/emcloset, +/turf/open/openspace, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) +"uOs" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible/layer4{ + dir = 4 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ + alpha = 230; + color = "#edaa0c" + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/belt/utility, +/obj/item/t_scanner, +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/turf/open/floor/iron, +/area/engine/atmos) "uOJ" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, @@ -42124,6 +41681,17 @@ }, /turf/open/floor/iron, /area/security/execution/education) +"uRE" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "1;4" + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "uRN" = ( /obj/item/clothing/gloves/color/yellow, /obj/effect/turf_decal/stripes/line{ @@ -42327,6 +41895,25 @@ }, /turf/open/indestructible/sound/pool, /area/crew_quarters/fitness/recreation) +"uUH" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/maintenance/department/medical/morgue) "uUK" = ( /obj/effect/turf_decal/stripes/end{ dir = 1 @@ -42383,6 +41970,16 @@ }, /turf/open/floor/pod/dark, /area/science/lab) +"uWl" = ( +/obj/effect/turf_decal/tile/red/half/contrasted{ + alpha = 180; + dir = 1 + }, +/obj/structure/closet/firecloset/full, +/turf/open/floor/iron/dark/corner, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "uWx" = ( /obj/structure/chair/office{ dir = 4 @@ -42450,6 +42047,26 @@ }, /turf/open/floor/wood, /area/chapel/office) +"uXI" = ( +/obj/effect/turf_decal/sand/plating, +/obj/structure/closet/wardrobe/grey, +/obj/effect/turf_decal/bot, +/obj/machinery/light, +/obj/item/paicard, +/turf/open/floor/iron, +/area/crew_quarters/dorms) +"uYb" = ( +/obj/structure/flora/ausbushes/ywflowers, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/grass/no_border, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "uYr" = ( /turf/open/floor/plating/beach/coastline_t{ dir = 6 @@ -42575,6 +42192,24 @@ /obj/structure/sign/warning/explosives/alt, /turf/open/floor/plating/dirt/planetary, /area/asteroid/paradise/surface) +"vcM" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "vcX" = ( /obj/structure/railing/corner{ dir = 8 @@ -42628,6 +42263,19 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) +"vdC" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "vet" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -42686,6 +42334,13 @@ }, /turf/open/floor/plating, /area/quartermaster/warehouse) +"vgi" = ( +/obj/structure/stairs{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/pod/dark, +/area/engine/engineering) "vgv" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate, @@ -42771,6 +42426,13 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/storage) +"viX" = ( +/obj/effect/turf_decal/sand/plating, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "vjc" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -42780,6 +42442,10 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"vjo" = ( +/obj/machinery/camera/autoname, +/turf/open/openspace, +/area/crew_quarters/kitchen) "vjB" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -43072,20 +42738,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/maintenance/department/medical/morgue) -"vrF" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "vst" = ( /obj/effect/turf_decal/trimline/white/corner{ dir = 4 @@ -43155,11 +42807,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) -"vtO" = ( -/obj/structure/cable/yellow, -/obj/effect/turf_decal/box, -/turf/open/floor/plating, -/area/asteroid/paradise/surface) "vuh" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box, @@ -43175,6 +42822,49 @@ /obj/effect/mapping_helpers/airlock/abandoned, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) +"vuo" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/closet/crate/solarpanel_small, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) +"vuE" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 + }, +/obj/structure/table, +/obj/effect/turf_decal/tile/yellow/fourcorners/contrasted{ + alpha = 230; + color = "#edaa0c" + }, +/obj/item/clothing/gloves/color/black, +/obj/effect/decal/cleanable/dirt, +/obj/item/clothing/gloves/color/black{ + pixel_x = 3; + pixel_y = 7 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron, +/area/engine/atmos) +"vvo" = ( +/obj/structure/table, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/item/stock_parts/subspace/treatment, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/item/book/manual/wiki/tcomms{ + pixel_x = 17; + pixel_y = 4 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/turf/open/floor/iron/dark, +/area/engine/atmos) "vvr" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, @@ -43229,6 +42919,18 @@ /obj/structure/fans/tiny, /turf/open/floor/iron/dark, /area/security/prison) +"vwq" = ( +/obj/structure/dresser, +/obj/item/flashlight/lamp/green{ + pixel_x = -4; + pixel_y = 14 + }, +/obj/item/toy/plush/lisa{ + pixel_x = 5; + pixel_y = 15 + }, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/hop) "vwV" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -43420,6 +43122,11 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/heads/hor) +"vFg" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/effect/turf_decal/numbers/two_nine, +/turf/open/floor/iron, +/area/maintenance/department/engine) "vFx" = ( /obj/structure/closet/secure_closet/chemical, /obj/item/storage/box/pillbottles, @@ -43464,18 +43171,6 @@ }, /turf/open/floor/iron/sepia, /area/quartermaster/storage) -"vGO" = ( -/obj/item/reagent_containers/food/drinks/shaker{ - pixel_x = -8; - pixel_y = 2 - }, -/obj/structure/table/wood, -/obj/machinery/reagentgrinder{ - pixel_x = 6; - pixel_y = 6 - }, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "vHe" = ( /obj/effect/turf_decal/loading_area{ dir = 1; @@ -43592,6 +43287,10 @@ }, /turf/closed/wall, /area/vacant_room/office) +"vLy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/openspace, +/area/asteroid/paradise) "vLP" = ( /turf/closed/wall/r_wall, /area/storage/tech) @@ -43633,13 +43332,6 @@ /obj/structure/railing/corner, /turf/open/floor/iron/sepia, /area/quartermaster/storage) -"vMy" = ( -/obj/structure/lattice/catwalk/over, -/obj/machinery/firealarm/directional/east, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "vMK" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -43674,6 +43366,36 @@ /obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/science/explab) +"vPr" = ( +/obj/structure/table/reinforced, +/obj/item/storage/fancy/donut_box{ + name = "Emergency donut box"; + pixel_x = -2; + pixel_y = 15 + }, +/obj/item/gun/energy/e_gun/dragnet{ + pixel_x = -2; + pixel_y = 1 + }, +/obj/item/beacon/nettingportal, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ + alpha = 180; + color = "#DE3A3A" + }, +/obj/machinery/camera/motion{ + c_tag = "Armory - Internal"; + dir = 4; + network = list("ss13","security") + }, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -2; + pixel_y = -11 + }, +/turf/open/floor/iron/dark, +/area/ai_monitored/security/armory) "vPx" = ( /obj/structure/railing, /obj/structure/lattice, @@ -43712,15 +43434,16 @@ "vQN" = ( /turf/open/openspace, /area/medical/medbay/central) -"vRc" = ( -/obj/effect/turf_decal/tile/red/half/contrasted{ - alpha = 180; - dir = 1 +"vQZ" = ( +/obj/structure/railing{ + dir = 9 }, /obj/structure/closet/firecloset/full, -/turf/open/floor/iron/dark/corner, -/area/hallway/primary/central{ - name = "-2 Primary Hallway" +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" }) "vRv" = ( /obj/structure/table/reinforced, @@ -43822,19 +43545,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark, /area/medical/morgue) -"vTn" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - network = list("ss13","security") - }, -/obj/item/kirbyplants/random, -/obj/structure/sink/kitchen{ - pixel_y = 22 - }, -/turf/open/floor/iron, -/area/security/brig) "vTw" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/cable/yellow{ @@ -43890,32 +43600,6 @@ }, /turf/open/floor/iron, /area/security/prison) -"vUr" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/conveyor_switch/oneway{ - dir = 1; - id = "packageSort2" - }, -/obj/effect/turf_decal/loading_area{ - dir = 1 - }, -/obj/effect/landmark/start/cargo_technician, -/obj/structure/disposalpipe/junction{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/iron, -/area/quartermaster/sorting) "vVo" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -43938,10 +43622,6 @@ }, /turf/open/floor/iron, /area/engine/engineering) -"vVC" = ( -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "vVE" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt/dust, @@ -44018,6 +43698,12 @@ }, /turf/open/floor/iron, /area/janitor) +"vWm" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/flora/rock/pile, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/techmaint/planetary, +/area/asteroid/paradise/surface) "vWB" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -44029,25 +43715,6 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) -"vWY" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/quartermaster/sorting) "vXg" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -44073,6 +43740,32 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"vYe" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) +"vYl" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/obj/structure/bed/dogbed/runtime, +/mob/living/simple_animal/pet/cat/Runtime{ + pixel_y = 4 + }, +/obj/item/toy/plush/runtime{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/carpet/blue, +/area/crew_quarters/heads/cmo) "vYB" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/item/kirbyplants/random, @@ -44087,11 +43780,6 @@ }, /turf/open/floor/iron, /area/bridge) -"vZa" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/structure/spider/stickyweb, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "vZe" = ( /obj/effect/turf_decal/stripes/line, /obj/structure/fence/post{ @@ -44099,15 +43787,51 @@ }, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"vZG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 9 +"vZI" = ( +/obj/machinery/airalarm/all_access{ + dir = 8; + pixel_x = 24 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 5; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/camera/autoname{ + dir = 8; + network = list("ss13","engine") + }, +/obj/effect/loot_jobscale/medical/burn_kit{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/storage/toolbox/emergency{ + pixel_x = 3; + pixel_y = -1 + }, +/obj/item/extinguisher/advanced{ + pixel_x = -8; + pixel_y = 2 + }, +/turf/open/floor/iron, +/area/maintenance/disposal/incinerator) "waf" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 4 @@ -44182,13 +43906,19 @@ }, /turf/open/floor/plating/asteroid/planetary, /area/crew_quarters/dorms) -"wbY" = ( -/obj/effect/decal/cleanable/generic, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +"wbv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) +/obj/machinery/turretid{ + control_area = "/area/ai_monitored/turret_protected/ai_upload"; + icon_state = "control_stun"; + name = "AI Upload turret control"; + pixel_x = -33; + pixel_y = 2 + }, +/turf/open/floor/iron/tech/grid, +/area/ai_monitored/turret_protected/aisat_interior) "wbZ" = ( /obj/structure/musician/piano{ icon_state = "piano" @@ -44280,20 +44010,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/bar) -"wdM" = ( -/obj/structure/filingcabinet, -/obj/item/folder/documents, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/turf/open/floor/iron/dark, -/area/security/nuke_storage) "wdQ" = ( /obj/structure/fireplace, /obj/structure/bed/dogbed, @@ -44407,6 +44123,35 @@ /obj/effect/landmark/start/warden, /turf/open/floor/iron/dark, /area/security/warden) +"wgt" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "8-16" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/cable/yellow{ + icon_state = "8-32" + }, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/bridge) +"wgL" = ( +/obj/item/radio/intercom{ + dir = 1; + pixel_x = -31; + pixel_y = -3 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/server) "wgZ" = ( /obj/item/storage/pill_bottle/dice, /obj/effect/turf_decal/siding/wood{ @@ -44520,6 +44265,21 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/storage) +"wiQ" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_x = -9; + pixel_y = 2 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_x = -2; + pixel_y = 2 + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "wjm" = ( /obj/structure/railing{ dir = 4 @@ -44607,18 +44367,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hop) -"wkU" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 9 - }, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) "wli" = ( /obj/machinery/door/airlock/engineering/glass{ name = "Engineering Foyer"; @@ -44682,10 +44430,24 @@ /obj/item/storage/backpack/satchel/flat/treasure, /turf/open/floor/plating/beach/sand, /area/asteroid/paradise/surface/sand) -"wmU" = ( -/obj/structure/bonfire, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) +"wnk" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron, +/area/hallway/primary/central{ + name = "-2 Primary Hallway" + }) "wnT" = ( /turf/open/floor/dock/drydock, /area/quartermaster/storage) @@ -44777,13 +44539,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"wqL" = ( -/obj/structure/flora/rock/pile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "wrb" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ alpha = 180; @@ -44830,11 +44585,6 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/sorting) -"wsd" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/flora/rock/pile, -/turf/open/floor/iron/techmaint/planetary, -/area/asteroid/paradise/surface) "wsA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -44968,6 +44718,17 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) +"wxC" = ( +/obj/structure/closet/firecloset/full, +/obj/structure/railing{ + dir = 6 + }, +/turf/open/floor/iron/dark/side{ + dir = 6 + }, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "wyg" = ( /obj/effect/turf_decal/tile/purple/half/contrasted, /obj/structure/disposalpipe/junction{ @@ -45099,20 +44860,6 @@ }, /turf/open/floor/iron, /area/hydroponics) -"wAQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 2; - name = "Atmos to Loop" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/engine/engineering) "wAY" = ( /obj/effect/turf_decal/sand/plating, /obj/effect/turf_decal/sand/plating, @@ -45120,6 +44867,10 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/techmaint/planetary, /area/asteroid/paradise/surface) +"wBy" = ( +/obj/effect/decal/cleanable/dirt, +/turf/closed/mineral/random/air, +/area/asteroid/paradise) "wBT" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance/two, @@ -45144,15 +44895,6 @@ }, /turf/open/floor/iron, /area/security/prison) -"wDa" = ( -/obj/structure/table/wood, -/obj/item/soap/nanotrasen, -/obj/item/paicard{ - pixel_x = -6; - pixel_y = 2 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "wDb" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -45225,6 +44967,13 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"wEe" = ( +/obj/effect/turf_decal/sand/plating, +/obj/effect/turf_decal/sand/plating, +/obj/structure/flora/rock/pile, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "wEs" = ( /obj/item/radio/intercom{ dir = 1; @@ -45296,6 +45045,13 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"wFM" = ( +/obj/structure/flora/junglebush/c, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "wGp" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/decal/cleanable/dirt/dust, @@ -45353,6 +45109,18 @@ }, /turf/open/floor/pod/dark, /area/crew_quarters/heads/hor) +"wHD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/structure/disposalpipe/trunk{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "wHO" = ( /obj/structure/window/reinforced{ dir = 1 @@ -45382,6 +45150,19 @@ /obj/structure/cable/yellow, /turf/open/floor/plating, /area/storage/tech) +"wIQ" = ( +/obj/structure/flora/ausbushes/leafybush, +/obj/structure/flora/ausbushes/fullgrass, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/grass/no_border, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "wIV" = ( /obj/structure/chair{ dir = 1 @@ -45444,6 +45225,26 @@ }, /turf/open/floor/wood, /area/crew_quarters/cafeteria) +"wMn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light_switch{ + pixel_x = 23; + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/crew_quarters/cafeteria) "wMw" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -45566,16 +45367,6 @@ /obj/machinery/photocopier, /turf/open/floor/iron/dark, /area/bridge/meeting_room) -"wOw" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = -35 - }, -/turf/open/floor/iron, -/area/security/brig) "wOF" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -45851,6 +45642,19 @@ }, /turf/open/floor/plating, /area/maintenance/department/science/central) +"wVz" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/wood, +/obj/effect/turf_decal/siding/wood, +/obj/item/reagent_containers/food/condiment/peppermill{ + pixel_y = 28 + }, +/obj/item/reagent_containers/food/condiment/saltshaker{ + pixel_y = 23 + }, +/obj/item/paicard, +/turf/open/floor/carpet/green, +/area/crew_quarters/cafeteria) "wVI" = ( /obj/effect/turf_decal/delivery, /obj/machinery/portable_atmospherics/canister/oxygen, @@ -45898,6 +45702,19 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/department/science/central) +"wXo" = ( +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "2" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/closeup, +/obj/machinery/door/firedoor, +/turf/open/floor/prison/dark, +/area/security/prison) "wXA" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, @@ -46019,27 +45836,46 @@ /turf/open/floor/iron, /area/science/mixing) "xbA" = ( -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 5 +/obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted{ + alpha = 180 }, -/obj/machinery/suit_storage_unit/mining/eva, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = -9 +/obj/effect/turf_decal/loading_area{ + dir = 4; + pixel_y = -1 }, -/turf/open/floor/carpet/orange, -/area/quartermaster/qm) +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/button/door{ + id = "hopqueue"; + name = "Queue Shutter Control"; + pixel_y = -36; + req_access_txt = "57" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 1; + pixel_y = -27 + }, +/turf/open/floor/iron, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "xbL" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow, /turf/open/floor/plating, /area/security/warden) -"xce" = ( -/obj/effect/turf_decal/sand/plating, -/obj/effect/turf_decal/sand/plating, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) "xck" = ( /obj/structure/closet/secure_closet/detective, /obj/item/storage/box/evidence{ @@ -46116,6 +45952,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron/dark, /area/maintenance/disposal/incinerator) +"xdb" = ( +/obj/effect/landmark/start/cook, +/obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/kitchen) "xdp" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -46137,6 +45981,21 @@ }, /turf/open/floor/iron/grid/steel, /area/bridge) +"xdH" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "xdL" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, @@ -46148,23 +46007,6 @@ /obj/structure/signpost, /turf/open/floor/plating/grass, /area/asteroid/paradise/surface) -"xeI" = ( -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 5; - pixel_y = 32 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/medical/medbay/central) "xfd" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -46253,6 +46095,16 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) +"xhE" = ( +/obj/structure/reflector/box{ + anchored = 1; + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "xiu" = ( /obj/effect/turf_decal/trimline/white/line{ dir = 1 @@ -46266,6 +46118,25 @@ }, /turf/open/floor/prison/dark, /area/security/prison) +"xiv" = ( +/obj/structure/chair, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 32; + pixel_y = 3 + }, +/turf/open/floor/iron/dark/side{ + dir = 5 + }, +/area/hallway/primary/fore{ + name = "-1 Primary Hallway" + }) "xiB" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, @@ -46329,28 +46200,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/science/robotics) -"xja" = ( -/obj/machinery/light_switch{ - pixel_x = 24 - }, -/obj/structure/bed/double, -/obj/item/bedsheet/double/captain, -/obj/item/disk/nuclear{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/item/toy/plush/beeplushie{ - pixel_x = -2; - pixel_y = -3 - }, -/turf/open/floor/carpet/blue, -/area/crew_quarters/heads/captain/private) "xjg" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/stripes/line, @@ -46499,6 +46348,16 @@ }, /turf/open/floor/iron/tech/grid, /area/ai_monitored/turret_protected/ai_upload) +"xne" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "External Gas to Loop" + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron/dark, +/area/engine/engineering) "xnh" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/spawner/lootdrop/grille_or_trash, @@ -46594,6 +46453,21 @@ }, /turf/open/floor/iron/dark, /area/engine/atmos) +"xpn" = ( +/obj/machinery/computer/turbine_computer{ + dir = 1; + id = "incineratorturbineLeft"; + name = "gas turbine left control computer" + }, +/obj/structure/sign/warning/nosmoking{ + pixel_x = 1; + pixel_y = -32 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/iron/dark, +/area/maintenance/disposal/incinerator) "xpp" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -46624,36 +46498,6 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) -"xpE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/turf_decal/sand/plating, -/obj/machinery/light, -/obj/item/radio/intercom{ - dir = 1; - pixel_y = -35 - }, -/turf/open/floor/plating, -/area/quartermaster/storage) -"xpF" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/light_switch{ - pixel_x = 23; - pixel_y = 23 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "xpI" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 @@ -46785,23 +46629,6 @@ /obj/effect/landmark/start/captain, /turf/open/floor/carpet/royalblue, /area/crew_quarters/heads/captain) -"xsl" = ( -/obj/machinery/atmospherics/pipe/multiz/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/multiz/layer2{ - dir = 1 - }, -/obj/machinery/light/small, -/obj/machinery/status_display/evac{ - pixel_y = -32 - }, -/obj/structure/cable/yellow{ - icon_state = "1-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/turf/open/floor/pod/dark, -/area/maintenance/department/science/central) "xsH" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -46816,6 +46643,16 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/closed/wall, /area/maintenance/department/medical/morgue) +"xtb" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/cable/yellow{ + icon_state = "1-32" + }, +/obj/effect/turf_decal/trimline/yellow, +/obj/structure/closet/emcloset/anchored, +/obj/structure/lattice/catwalk/over, +/turf/open/openspace, +/area/maintenance/department/engine/atmos) "xty" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Maintenance Hatch"; @@ -46919,6 +46756,35 @@ }, /turf/open/floor/iron/dark, /area/quartermaster/qm) +"xvQ" = ( +/obj/effect/turf_decal/trimline/dark/warning{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 4 + }, +/obj/effect/turf_decal/siding/dark{ + dir = 8 + }, +/obj/item/radio/intercom{ + pixel_x = -32; + pixel_y = -3 + }, +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" + }) +"xwe" = ( +/obj/structure/flora/ausbushes/lavendergrass, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ + dir = 6 + }, +/turf/open/floor/plating/asteroid/planetary, +/area/asteroid/paradise) "xwm" = ( /obj/machinery/teleport/station, /obj/effect/turf_decal/stripes/line{ @@ -47091,6 +46957,26 @@ /area/hallway/primary/fore{ name = "-1 Primary Hallway" }) +"xBc" = ( +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_one_access_txt = "4;1" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/closeup{ + dir = 1 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/brig) "xBP" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -47104,17 +46990,18 @@ }, /turf/open/floor/iron/white, /area/crew_quarters/fitness/recreation) -"xBS" = ( -/obj/structure/closet/cardboard, -/obj/effect/spawner/lootdrop/maintenance/four, -/obj/item/melee/flyswatter, -/obj/item/paicard, -/turf/open/floor/iron, -/area/maintenance/department/science/central) "xBU" = ( /obj/structure/closet/firecloset/full, /turf/open/floor/iron, /area/ai_monitored/turret_protected/aisat/maint) +"xCw" = ( +/obj/machinery/computer/security/hos, +/obj/item/toy/plush/carpplushie{ + pixel_x = 5; + pixel_y = 17 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/heads/hos) "xCy" = ( /obj/effect/turf_decal/tile/dark_red/fourcorners/contrasted{ alpha = 180; @@ -47177,21 +47064,6 @@ /obj/machinery/atmospherics/pipe/layer_manifold/visible, /turf/open/floor/engine/airless, /area/engine/atmos) -"xDK" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/camera/autoname{ - network = list("aiupload") - }, -/obj/machinery/firealarm/directional/north, -/turf/open/openspace, -/area/hallway/primary/fore{ - name = "-1 Primary Hallway" - }) "xDX" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47208,14 +47080,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/medical/morgue) -"xEn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/numbers/two_nine{ - dir = 2 - }, -/turf/open/floor/wood, -/area/crew_quarters/cafeteria) "xEo" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, @@ -47241,6 +47105,28 @@ /obj/structure/closet/emcloset/anchored, /turf/open/floor/iron, /area/maintenance/department/bridge) +"xFT" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/rack, +/obj/effect/spawner/lootdrop/techstorage/command, +/obj/effect/turf_decal/delivery, +/obj/item/radio/intercom{ + pixel_y = 29 + }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/camera/motion{ + c_tag = "Technical Storage"; + dir = 8; + name = "motion-sensitive Technical Storage"; + network = list("ss13","engine") + }, +/turf/open/floor/iron/techmaint/planetary, +/area/storage/tech) "xGl" = ( /obj/effect/turf_decal/siding/white{ alpha = 100 @@ -47357,15 +47243,6 @@ }, /turf/open/floor/iron, /area/medical/apothecary) -"xIw" = ( -/obj/structure/rack, -/obj/effect/spawner/lootdrop/maintenance/two, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/paicard, -/turf/open/floor/plating, -/area/hallway/secondary/service) "xIO" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -47415,16 +47292,19 @@ /obj/effect/spawner/room/threexthree, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"xJF" = ( -/obj/structure/closet/firecloset/full, -/obj/structure/railing{ - dir = 6 +"xJE" = ( +/obj/structure/table, +/obj/item/geiger_counter{ + pixel_x = 6; + pixel_y = 3 }, -/turf/open/floor/iron/dark/side{ - dir = 6 +/obj/item/toy/plush/plushvar{ + pixel_x = -2; + pixel_y = 9 }, -/area/hallway/primary/aft{ - name = "-3 Primary Hallway" +/turf/open/floor/iron/dark, +/area/engineering/hallway{ + name = "Engineering Viewing Platform" }) "xJJ" = ( /obj/item/radio/intercom{ @@ -47473,28 +47353,45 @@ /obj/structure/ore_box, /turf/open/floor/plating/asteroid/planetary, /area/quartermaster/storage) -"xKs" = ( -/obj/structure/flora/ausbushes/lavendergrass, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 +"xKF" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4{ - dir = 6 +/obj/effect/turf_decal/tile/purple/half/contrasted{ + dir = 4 }, -/turf/open/floor/plating/asteroid/planetary, -/area/asteroid/paradise) -"xKB" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 +/obj/effect/turf_decal/numbers/two_nine{ + pixel_y = 17 }, -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/structure/disposalpipe/trunk{ +/turf/open/floor/iron/white/side{ + dir = 1 + }, +/area/science/research) +"xKQ" = ( +/obj/machinery/airalarm/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/iron, +/area/quartermaster/sorting) +"xKZ" = ( +/obj/structure/filingcabinet, +/obj/item/folder/documents, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 1 }, +/obj/machinery/power/apc/auto_name/east, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, /turf/open/floor/iron/dark, -/area/quartermaster/storage) +/area/security/nuke_storage) "xLc" = ( /obj/item/paper/guides/jobs/medical/morgue, /obj/effect/turf_decal/bot, @@ -47528,6 +47425,13 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/engine/atmos) +"xMQ" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/processor, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "xMR" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/stripes/line{ @@ -47606,18 +47510,6 @@ /obj/effect/spawner/randomvend/cola, /turf/open/floor/carpet/green, /area/crew_quarters/cafeteria) -"xQn" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "xQu" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -47636,6 +47528,12 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) +"xQV" = ( +/obj/structure/flora/rock, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating/asteroid/basalt/planetary, +/area/asteroid/paradise) "xRe" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -47687,6 +47585,25 @@ }, /turf/open/floor/iron/white, /area/science/lab) +"xRD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "quarantineshutters"; + name = "isolation shutters" + }, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Medbay Maintenance"; + req_access_txt = "5" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/maintenance/department/medical/central) "xRJ" = ( /obj/machinery/door/poddoor/shutters/radiation/preopen{ id = "engsm"; @@ -47820,22 +47737,6 @@ }, /turf/open/floor/engine/o2, /area/engine/atmos) -"xUV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/rnd/production/techfab/department/cargo, -/obj/machinery/power/apc/auto_name/east{ - pixel_x = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) "xVa" = ( /obj/machinery/gateway{ dir = 9 @@ -47913,47 +47814,6 @@ }, /turf/open/floor/wood/broken, /area/crew_quarters/cafeteria) -"xWB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/mineral/random/air, -/area/asteroid/paradise) -"xWK" = ( -/obj/machinery/button/flasher{ - id = "brigentryaux"; - pixel_x = 5; - pixel_y = -37 - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "outerbrig"; - name = "Brig Exterior Doors Control"; - normaldoorcontrol = 1; - pixel_x = -6; - pixel_y = -25; - req_access_txt = "63" - }, -/obj/machinery/button/door{ - id = "brigentrance"; - name = "Brig Lockdown Control"; - pixel_x = 6; - pixel_y = -25; - req_access_txt = "63" - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - alpha = 180; - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 1; - pixel_x = -32; - pixel_y = -28 - }, -/obj/machinery/computer/crew{ - dir = 4; - req_one_access = list(5,4,3) - }, -/turf/open/floor/iron/dark, -/area/security/warden) "xXi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -48033,6 +47893,22 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) +"xZX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/engine/engineering) "yaq" = ( /turf/closed/wall/rust, /area/science/server) @@ -48137,6 +48013,29 @@ }, /turf/open/floor/plating/asteroid/basalt/planetary, /area/quartermaster/storage) +"ycF" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryogenic Lounge" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/iron/showroomfloor, +/area/crew_quarters/cryopods) "ydE" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/turf_decal/sand/plating, @@ -48158,15 +48057,6 @@ }, /turf/open/floor/iron, /area/maintenance/department/crew_quarters/dorms) -"yeh" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/obj/structure/table, -/obj/item/pickaxe, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron, -/area/engine/atmos) "yet" = ( /turf/open/floor/plating/beach/coastline_b{ dir = 1 @@ -48196,12 +48086,56 @@ slowdown = 0 }, /area/asteroid/paradise/surface) +"yeS" = ( +/obj/structure/stairs{ + dir = 8 + }, +/obj/item/radio/intercom{ + dir = 1; + pixel_x = 2; + pixel_y = 29 + }, +/turf/open/floor/pod/dark, +/area/crew_quarters/cafeteria) "yeZ" = ( /obj/effect/turf_decal/numbers{ dir = 1 }, /turf/open/floor/iron, /area/maintenance/department/security/brig) +"yfd" = ( +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + piping_layer = 4 + }, +/obj/machinery/camera/autoname{ + dir = 6; + network = list("ss13","medbay") + }, +/obj/machinery/power/apc/auto_name/north{ + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/machinery/vending/wallmed{ + pixel_x = -32 + }, +/turf/open/floor/iron/grid/steel, +/area/medical/medbay/central) +"yfP" = ( +/obj/structure/sink/kitchen{ + pixel_y = 22 + }, +/turf/open/floor/iron/dark, +/area/hallway/primary/aft{ + name = "-3 Primary Hallway" + }) "yfW" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/decal/cleanable/dirt/dust, @@ -48216,6 +48150,16 @@ /area/hallway/primary/central{ name = "-2 Primary Hallway" }) +"ygN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/bot, +/obj/machinery/shieldgen, +/obj/item/radio/intercom{ + pixel_x = 1; + pixel_y = -31 + }, +/turf/open/floor/iron, +/area/engine/engineering) "ygZ" = ( /obj/item/clothing/suit/ianshirt, /obj/item/bedsheet/ian, @@ -48229,14 +48173,6 @@ /obj/item/clothing/suit/hooded/ian_costume, /turf/open/floor/carpet/blue, /area/crew_quarters/heads/hop) -"yhp" = ( -/obj/structure/cable/yellow{ - icon_state = "2-16" - }, -/obj/effect/turf_decal/trimline/yellow, -/obj/effect/spawner/lootdrop/grille_or_trash, -/turf/open/floor/pod/dark, -/area/maintenance/department/crew_quarters/dorms) "yib" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -48261,11 +48197,36 @@ /obj/structure/table_frame, /turf/open/floor/iron, /area/engine/atmos) +"yjb" = ( +/obj/effect/decal/cleanable/food/egg_smudge, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "yjX" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plating, /area/engine/supermatter) +"ykt" = ( +/obj/machinery/power/smes{ + charge = 5e+006; + name = "ai power storage unit" + }, +/obj/machinery/flasher{ + id = "AI"; + name = "Meatbag Pacifier"; + pixel_x = 23; + pixel_y = 22 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/item/toy/plush/lizardplushie{ + layer = 5; + pixel_x = 1; + pixel_y = 14 + }, +/turf/open/floor/circuit/red, +/area/ai_monitored/turret_protected/ai) "ykL" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -48306,15 +48267,6 @@ }, /turf/open/floor/plating, /area/ai_monitored/security/armory) -"yma" = ( -/obj/structure/flora/ausbushes/fullgrass, -/obj/machinery/camera/autoname{ - dir = 8; - network = list("ss13","engine") - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer4, -/turf/open/floor/plating/asteroid/basalt/planetary, -/area/asteroid/paradise) (1,1,1) = {" rGh @@ -56202,21 +56154,21 @@ cKs wuy hig wuy -xpE +ovX iGq wCc kYy -pBY +afy rXp faZ uli uli -fPA +uOs aUf hpP fCo gaj -ciC +vuE uli uli uli @@ -56464,7 +56416,7 @@ gDX xpJ kcv oTt -pGp +sZb faZ xUB dtx @@ -56978,7 +56930,7 @@ oHX gvg fBW mcO -nMa +oiK hZi fAb drz @@ -57459,7 +57411,7 @@ rPT rPT rBM rPT -iTH +fib alK pDi vhU @@ -57470,7 +57422,7 @@ iaR vhU iaR iaR -jOM +aJD vnY wzb cbm @@ -57496,7 +57448,7 @@ hbl uli mgL bKc -iZm +okn cnW qdc tIa @@ -58003,7 +57955,7 @@ wnT dcZ maU lEu -rOE +mht ehf wzb jOo @@ -58529,7 +58481,7 @@ gOe sKx grS dao -klO +oga tHO uli tHO @@ -58742,7 +58694,7 @@ xyS kOc gXA hFP -eNV +oEv jtr vhT dzD @@ -58756,8 +58708,8 @@ oMA xBP iKu jZh -amn -iNP +uNL +iJL wKG uLU cmd @@ -58792,7 +58744,7 @@ blO cFP jiG oqZ -lTJ +svv bXA vqI vqI @@ -58997,7 +58949,7 @@ rPT uVy eZJ oRp -xIw +cAy wDf wys wys @@ -59010,10 +58962,10 @@ cmy itk pLv aiR -sEO +bgu vhU ejN -ruK +fEe tKq sWT sWT @@ -59270,7 +59222,7 @@ iaR vhU vhU ppS -eZo +ycF ppS sWT wrA @@ -59288,19 +59240,19 @@ kjC wSM jAN iOA -uxA +pUm rmX lEu jOo jOo jOo vgG -yeh +cXM lly fia ycz hAX -juB +bxD vgG nXA ozj @@ -59514,7 +59466,7 @@ wys mOA bWw eHY -nZP +eop weD pkH wys @@ -59527,8 +59479,8 @@ noh nKV wbp qka -jIP -oyl +fqC +mgY pNv fvh vpE @@ -59784,12 +59736,12 @@ pld dbb aew jJR -sUZ -azx -vWY -osM -vUr -omt +eOH +eAX +ixf +siH +ujM +icQ sWT mIY qZA @@ -59821,7 +59773,7 @@ oPT urT uCw hGZ -kIR +bGl ibg mTL gNG @@ -59839,7 +59791,7 @@ rNv vDt sLz sLz -hKZ +lFQ blO jsp jsp @@ -60026,8 +59978,8 @@ tqL jES wys vht -rCQ -qFt +ozM +eUf mbl lvL wys @@ -60042,11 +59994,11 @@ oNp sjW plL orO -jRM +iZO bKy qQv -cYy -pJt +lcs +ocS kuj duC eog @@ -60083,20 +60035,20 @@ ihL ihL cFP xqU -xKs -fDH -cjE -oNZ -cjE -cjE -mam -dVh -dVh -jks -nKa -tZd -nKa -vZG +xwe +uKf +fXo +bxR +fXo +fXo +gRo +nLv +nLv +uxz +eTK +neA +eTK +aST xqU jsp jsp @@ -60290,7 +60242,7 @@ eqi wys ePw lSv -dmz +bLZ omN qSK tII @@ -60299,11 +60251,11 @@ bMN ltJ gOP gYZ -hjO +uXI pNv kGw -ggA -non +xKQ +htC guS pHJ gdE @@ -60320,12 +60272,12 @@ eVD wqg fGn vnd -fyH +dEU cBs hBl eJz -eBa -taW +klc +rnO hGe teA hwr @@ -60335,12 +60287,12 @@ ufL eZf lmF tUh -eiD +jYE ibg tRR mFt cEu -suj +trB dwq taZ wsA @@ -60353,7 +60305,7 @@ vqI qnY sLz blO -iyq +jmP sLz sLz jsp @@ -60552,7 +60504,7 @@ fMX fMX qbW vhU -bja +eDg hPk gOP oPC @@ -60587,7 +60539,7 @@ dms nAD xxk csL -kEs +xpn dzW ihL ihL @@ -60597,7 +60549,7 @@ kEO fhM xgK rNv -gJk +fsF cEk ozj sLz @@ -60824,8 +60776,8 @@ dlh rru viT bdN -xKB -xUV +wHD +bhy cfv xoc gWp @@ -60833,7 +60785,7 @@ jPg qrl pjs uly -wdM +xKZ pIl ptb roc @@ -60842,9 +60794,9 @@ gHW aAY gHW pyW -pxD -pCI -oMi +bRk +vZI +pUZ ihL xgK nXA @@ -60854,7 +60806,7 @@ cEk mVg sLz xTD -pII +mIF sXg cEk vqI @@ -61106,12 +61058,12 @@ dzW sXB lRK nXA -fNb -yma -rVG -kJR -bOu -wkU +tIP +avs +wEe +qjq +hCx +mFT sLz vqI vqI @@ -61333,12 +61285,12 @@ fMX fMX fMX fMX -fYp +sXY exx ncA oxy mkQ -dci +fSH qzd moy cVl @@ -61368,7 +61320,7 @@ lCS lCS mVg cEk -pbz +mGS blO vqI vqI @@ -61564,7 +61516,7 @@ vqI vqI eXB cjH -yhp +jWk sBt nHi eiO @@ -61608,7 +61560,7 @@ wML amy pWS iNo -ebk +rzg cTC upw oNv @@ -61625,7 +61577,7 @@ apY biV sXB blO -ion +viX xqU hJN vqI @@ -61853,19 +61805,19 @@ qaK lxu rjG ueV -xbA +iMI wEx caC -dca +ruO mev -hkT +feI tNX cii vLP -nip +xFT oeh vLP -top +vgi mVd uGZ udt @@ -61882,7 +61834,7 @@ gPs idO lCS hJN -snM +wFM ozj cEk vqI @@ -62079,7 +62031,7 @@ vqI vqI eXB nAc -pMX +iBP nHi nHi nHi @@ -62125,7 +62077,7 @@ vLP top lts tpi -wAQ +eCn aIx fMC bFF @@ -62136,10 +62088,10 @@ qzg nad hsv tVm -dKE +jOz lCS ndX -ion +viX xqU fPc vqI @@ -62359,7 +62311,7 @@ xQN qMM dqm ndg -sky +rzP rQd aQK slF @@ -62367,7 +62319,7 @@ hCL quH aji gSL -lbu +tJv qKB gMn sNq @@ -62377,7 +62329,7 @@ rZv qvz sCr wVR -uiv +tlH pVY pVY vVo @@ -62396,7 +62348,7 @@ wzE gPs lCS eGc -rcs +mmJ ycy xqU vqI @@ -62602,7 +62554,7 @@ eXB xsH hhu hhu -pIN +yeS eYg hyZ tov @@ -62640,7 +62592,7 @@ rZf oFu gEa wWC -hkO +mMw dXI dXI ifQ @@ -62653,7 +62605,7 @@ uTP uGP sXB cFP -afd +rzV wyw sLz vqI @@ -62858,7 +62810,7 @@ rWp eXB kef hhu -otv +tUs dGA djy kNX @@ -62875,16 +62827,16 @@ lCP niw cvt dNV -xJF +wxC gWa gWa vdf -qqn +fhR dvw pfb pqi pqi -oiV +bUT fqg qdV vTN @@ -62907,10 +62859,10 @@ hBg baq tfH jhN -irk +fsU sXB cEk -ryh +gNq ccl vqI vqI @@ -63116,7 +63068,7 @@ eXB gLd weN kOu -xEn +sDH bUA jaK jst @@ -63138,13 +63090,13 @@ rFo gWa eWh ggo -lhb +kgq pqi pqi -huA -eQB +iPP +yfP ept -pee +fZl tlK qbd mEl @@ -63167,7 +63119,7 @@ rbv gPs mAp sLz -dux +aQs cEk vqI vqI @@ -63372,7 +63324,7 @@ rPT tqL sUW hhu -pkm +kAQ qti qti wLS @@ -63389,16 +63341,16 @@ dqm niw mcX ezq -tzS +iox gWa gWa gWa -hIZ +vQZ uqn pfb pqi pqi -ipG +unI gkG vQL xVj @@ -63421,10 +63373,10 @@ vmu baq fzZ jhN -pLi +aof lCS vqI -wqL +hTd vqI vqI vqI @@ -63660,7 +63612,7 @@ rLR gRN jSm gzS -gbZ +gCg uWx kaw gNi @@ -63668,7 +63620,7 @@ fFu pHp gEa wWC -peI +xne dXI dXI ocx @@ -63681,7 +63633,7 @@ uTP uGP sXB vqI -rLD +qnE rNv vqI vqI @@ -63915,7 +63867,7 @@ oIi oIi qRc pMV -lcl +jWl dPx sCr wNN @@ -63938,7 +63890,7 @@ nAy sfW sXB xqU -uKV +eHe vph vqI vqI @@ -64181,11 +64133,11 @@ pVY dta kXQ fZY -bhN +dHA gYA gYA wpu -kCw +xZX aje taA ePy @@ -64195,7 +64147,7 @@ oYA gPs mAp rET -iPM +sGK cEk vqI vqI @@ -64451,8 +64403,8 @@ xGG bTY dSe oby -tIN -bKr +aiU +xhE vqI vqI vqI @@ -64702,7 +64654,7 @@ bfI bfI bfI oLo -oMU +pvC eGr cnk gPs @@ -64912,7 +64864,7 @@ aVf iCD oxK aVV -aJb +mit eXB okk bwI @@ -65207,8 +65159,8 @@ sXB sXB pVY pVY -agu -gmv +ifm +sWy pVY pVY iUP @@ -65464,8 +65416,8 @@ nKW sXB hqu ihA -lhf -aIQ +fjt +jaF dHS vpm sXB @@ -65709,8 +65661,8 @@ iti eZt mNH hJA -jCI -lUg +uIW +qKE fSJ mZk mNH @@ -65723,7 +65675,7 @@ qtl dWg gGH gla -ifk +ygN sXB jsp jsp @@ -65956,7 +65908,7 @@ gkU cVj lfq heR -hXU +lxl uWI fKa wyg @@ -66222,7 +66174,7 @@ xql uHM hNR vnh -btU +wgL gkj thD thD @@ -66471,12 +66423,12 @@ loD pCT tzP tzP -nlf +rDI rRE eYE jKL moU -bLd +xKF jkp hyN qmz @@ -66720,7 +66672,7 @@ lUm pzQ loD tOz -rEo +bSm txF iLL eIe @@ -66749,7 +66701,7 @@ euN tdh xHX eIc -boR +nHV eIc xHX eIc @@ -67239,7 +67191,7 @@ saM nCa saM kJM -iMF +bEo vet kyK saM @@ -67261,8 +67213,8 @@ lsH hCs hzQ btw -nJM -rnW +rEz +idv oRo woV lyU @@ -67507,7 +67459,7 @@ fjp xmA orX rll -nJD +vFg woV wwk euN @@ -67515,7 +67467,7 @@ wBT woV hzQ woV -dih +laO axa ggs kRL @@ -67553,7 +67505,7 @@ vqI vqI vqI vqI -vZa +gDk mVg klh vqI @@ -67750,7 +67702,7 @@ lUm lUm lUm iUZ -keI +oqF saM saM iUZ @@ -67811,7 +67763,7 @@ vqI vqI vqI mKz -aXZ +iPK sLz qnY vqI @@ -68068,8 +68020,8 @@ vqI vqI vqI blO -oWJ -xWB +tjf +wBy lZV sLz vqI @@ -68322,11 +68274,11 @@ vqI vqI vqI vqI -vZa +gDk vqI mVg -hAr -xWB +bBQ +wBy qnY ycy sLz @@ -68836,7 +68788,7 @@ vqI vqI vqI vqI -reu +mUB klh wsA vqI @@ -69091,12 +69043,12 @@ vqI vqI vqI vqI -mDP -mDP +bfz +bfz vqI cEk qnY -oMP +fiF sLz xqU sLz @@ -69349,13 +69301,13 @@ vqI vqI fPc klh -svB +pGB sLz mKz lZV rNv sLz -kIp +roL bXA vqI vqI @@ -69602,7 +69554,7 @@ vqI vqI vqI vqI -mDP +bfz blO pdu xSk @@ -69613,7 +69565,7 @@ sLz ycy sLz bXA -lTJ +svv vqI vqI cEk @@ -70120,10 +70072,10 @@ vqI vqI vqI vqI -nPp +qza ycy xSk -fZB +hts sLz rNv sLz @@ -70379,7 +70331,7 @@ vqI vqI vqI vqI -vVC +jRN cEk rNv nve @@ -70639,7 +70591,7 @@ vqI vqI vqI vqI -vVC +jRN sLz sLz rNv @@ -70901,7 +70853,7 @@ vqI vqI rNv rNv -vVC +jRN vqI vqI vqI @@ -122490,7 +122442,7 @@ xsQ sHr xsQ kQw -bEo +uUH cDx vry mQR @@ -122499,7 +122451,7 @@ vTg vDJ ble hqw -fuG +nEN sNT eZI eZI @@ -122510,7 +122462,7 @@ eZI eZI eZI eZI -jdF +dXH aAW iwI eOP @@ -122748,7 +122700,7 @@ eWL tGT tGT kND -qlK +uMm vcY hqw pjN @@ -122762,7 +122714,7 @@ pTV eZI nqP eZI -dHC +fic eZI nqP eZI @@ -122779,9 +122731,9 @@ iwI iwI iwI tHO -pTi +vvo cno -awV +cFN tHO aPC lai @@ -123253,7 +123205,7 @@ kQw oAv fgj wak -jji +mhe kQw bxt bsw @@ -123533,9 +123485,9 @@ mIW vlt lUe lGG -tYC +kyr baQ -aKB +wXo rUJ wCp rKN @@ -123793,7 +123745,7 @@ sYf sRD sRD sRD -aea +iAM xwF rSK nst @@ -124050,7 +124002,7 @@ kdn ghV xiu sRD -tTT +hRD eEe lob sRD @@ -124301,7 +124253,7 @@ epj xYT bGO aBO -ejL +fiC tfg vjc rHl @@ -124547,9 +124499,9 @@ bDD eXn xgH xgH -gVY +udq tob -mlP +tnA aaz uld oyg @@ -124814,7 +124766,7 @@ ozT tFb xYT bEe -lZZ +tih aNk rjD rtK @@ -124834,7 +124786,7 @@ nfX hoN pnn vgG -smX +tYX kLU eHd cny @@ -125081,7 +125033,7 @@ sRD xab tml vPP -oXB +gth qHP gJG gmt @@ -125309,7 +125261,7 @@ kct kct kct kct -bpq +oxs rpH rGq wMY @@ -125317,7 +125269,7 @@ rSE bDD gyO ttY -pjQ +yfd qJT jLG xPe @@ -125561,11 +125513,11 @@ kKq wqd suO afw -rPg -rGX -eol -mLM -cej +fFZ +pFZ +wiQ +xMQ +aDi bDD bDD tNz @@ -125578,7 +125530,7 @@ kAS hyo iIO pcu -qsi +hvh jME jME dqV @@ -125818,11 +125770,11 @@ dGh liG eyu clO -ijW -edF -pXZ -oEM -sWk +vjo +unO +yjb +aeN +rWj jrU hUk ofU @@ -125861,7 +125813,7 @@ hdJ vqE tIJ mEU -bFJ +xtb vpJ eeB fje @@ -126074,12 +126026,12 @@ eyu ksj oBi afw -pQt -gez -pMh -nED -xQn -bTy +sKV +tST +xdH +rjX +lvV +kNq lwX jXQ lWU @@ -126092,7 +126044,7 @@ mBp uxt qxQ mIN -jfL +hUj htB ptj hns @@ -126331,12 +126283,12 @@ eyu dGh lxo afw -fUl -umL -uKn -lzV -wbY -btq +mxy +xdb +qiO +llQ +umB +nOu bDD ejD tuz @@ -126348,8 +126300,8 @@ ttY jLp ntA ttY -kHE -svk +nJX +cRw jME apg wUl @@ -126363,9 +126315,9 @@ vsW xvB wxq vqE -vTn +tFM bMW -wOw +eSh oEl bvY cnX @@ -126589,11 +126541,11 @@ bvO esW afw epO -uoB -aFW -lzV -bYW -lsf +pdw +tVK +llQ +aWb +acj thc nRX oBX @@ -126606,7 +126558,7 @@ iTe dFk bqp tSb -mYq +ncK bMe mtO rDl @@ -126845,17 +126797,17 @@ eyu uXi ssT afw -cAV +laf gcq swh -igs +ukz vsM cEM bDD tks nye -ivf -lQf +oOA +tDT bDD vVE ttY @@ -126863,7 +126815,7 @@ byq tND kQc jxa -jkr +aUc ueO leg tOU @@ -126891,11 +126843,11 @@ oEl gZh pQk uNe -ncz +sew eMV eMV afq -aKI +xvQ eMV xiW skf @@ -127100,14 +127052,14 @@ vqI vqI eyu hvu -glR +qgW afw afw -iJz +sVh afw -ddc +haF kAa -bcT +giU bDD lRO oHV @@ -127119,8 +127071,8 @@ ttY jLp jLp ttY -xeI -vrF +obC +elK oEZ nkb nkb @@ -127134,7 +127086,7 @@ bPo vHu ueV vqE -oNJ +aVM qao iTA oEl @@ -127377,7 +127329,7 @@ xpy xpy oCL xWj -hiA +wnk wxm gDp oRV @@ -127401,7 +127353,7 @@ xlw oEl fVb wlW -iQS +lAq tle mAS ifA @@ -127616,7 +127568,7 @@ kTG sxD fCF hhu -jLT +eUC sMK eEc uoe @@ -127634,23 +127586,23 @@ sfL rFm rFm dme -jsK -fMW -aFA -rBL -rEU -sPN -lFn -txL -nWN -bns -kPY -elm -eom -qgq -fpo -kuF -vRc +tAz +vcM +ktf +dkP +cPh +rjj +mgp +vdC +nmp +aWp +oNr +eiN +vYe +oCj +bVi +mAj +uWl cCz oEl jlR @@ -127873,8 +127825,8 @@ kAk vdv gMh hhu -pfd -fOE +kcD +wVz fsb jeo oLK @@ -127893,10 +127845,10 @@ rId rId rId rId -ait +lpc rql cHd -aAb +fQH qYc oqs eWf @@ -127911,7 +127863,7 @@ anK wSm waG hxh -oUu +oYO wli wTQ uyo @@ -128908,7 +128860,7 @@ jeo oLK xIO olO -mYn +kax gyy gyy gyy @@ -128942,7 +128894,7 @@ ddQ ddQ tPD hsN -bpT +nyu vJG aoH oru @@ -129211,7 +129163,7 @@ cwk gwZ gwZ iHy -kam +xJE kBd voA ifA @@ -129422,7 +129374,7 @@ bkx pKl xIO tov -pWH +bVS gyy gyy pqE @@ -129666,7 +129618,7 @@ vqI vqI vqI tYd -dfc +cbl fvg xko ukZ @@ -129704,9 +129656,9 @@ qjF dOv cZZ fgO -pLg -lzs -tVM +tTn +gXk +gJt lOf ajB ajB @@ -129945,7 +129897,7 @@ ald neX tTb tTb -toN +cJR tTb tTb tTb @@ -129956,9 +129908,9 @@ jKp xXi ygB aIl -rku +jcz xrZ -kfb +atE iBU bnn eyQ @@ -129967,7 +129919,7 @@ itO ajB eFt aqw -koq +nEW thd ajB mLo @@ -130204,7 +130156,7 @@ pNI pNI sSJ cea -jKJ +iJe iSf iSf hKp @@ -130222,7 +130174,7 @@ cDz oLi cDz ajB -vGO +fZX xsj wJA inZ @@ -130479,7 +130431,7 @@ gEk vDP iwM ajB -pwr +lPe btR mZW bAc @@ -130489,9 +130441,9 @@ tRH vJn xHy uNe -kie +kPn utb -miM +hTq hTN utb utb @@ -130701,9 +130653,9 @@ gEP ijF uwN sIv -kmY +kJL foz -xpF +wMn bZH fPV kmN @@ -130765,7 +130717,7 @@ vqI vqI vqI vqI -rGO +aSF mVg xSk cEk @@ -130960,12 +130912,12 @@ fbS qVb xoR gEP -nGR +rYe gik sru kwK tov -wDa +qOn sSJ pCc nXm @@ -131022,11 +130974,11 @@ vqI mVg qnY wsA -aXZ +iPK klh lZV -svB -xce +pGB +lBT xqU vqI vqI @@ -131227,7 +131179,7 @@ sSJ sSJ jDU sSJ -auJ +ozb nje baE baE @@ -131250,7 +131202,7 @@ piY qzt jTj iEP -jqF +iEa ajB ajB ajB @@ -131541,7 +131493,7 @@ ycy xqU sLz vqI -lgR +iya sLz ycy vqI @@ -131752,7 +131704,7 @@ ffQ ouZ xRu nlo -qFN +fbs gMG tiS tiS @@ -131760,7 +131712,7 @@ gMG gMG pcP kfl -sid +tnI alW hLr cFp @@ -132014,7 +131966,7 @@ uiA aKG aKG ylg -xBS +hTM nwu kfl aWy @@ -132057,7 +132009,7 @@ vqI vqI vqI vqI -hnA +jWf rNv vqI vqI @@ -132244,12 +132196,12 @@ hrC dGK fZR evs -adV +hLc nxt fZR xVu rHO -sEP +eWv eKX czE sjC @@ -132274,7 +132226,7 @@ kNj tpM evR kfl -acD +riT wOh jOC jZG @@ -132282,7 +132234,7 @@ xtQ hyc mSE aKC -xja +uEq oqn mSE mSE @@ -132575,7 +132527,7 @@ fPc rNv cEk sLz -iDj +joL vqI vqI vqI @@ -132804,7 +132756,7 @@ jGk qSC fqb fqb -lep +diS aCm vqI vqI @@ -132830,7 +132782,7 @@ vqI vqI adG ycy -exV +gBS vDt sLz sLz @@ -133051,7 +133003,7 @@ liR xSM hdM aCm -igk +wgt tDF xCQ dnZ @@ -133076,7 +133028,7 @@ vqI vqI vqI vqI -reu +mUB wsA sLz sLz @@ -133286,7 +133238,7 @@ olN olN olN wQI -lAM +tss uWZ rZM aAV @@ -133856,7 +133808,7 @@ vqI vqI vqI vqI -dji +gSq sLz bvw vqI @@ -134112,7 +134064,7 @@ vqI vqI vqI vqI -lgR +iya ycy vqI bvw @@ -134880,7 +134832,7 @@ vqI vqI fPc sLz -svB +pGB ycy ycy bvw @@ -135095,7 +135047,7 @@ aRY aTx mMZ aJe -dmI +fdd mjt aqu gXz @@ -187773,7 +187725,7 @@ oXe oXe oXe oXe -dmu +eGO oXe oXe oXe @@ -188029,13 +187981,13 @@ btO xMl mXm xMl -mBY +axc xdL tOf btO pdR kWE -nFA +czn lPu lPu lPu @@ -188284,7 +188236,7 @@ xMl tfd oXe ouX -kGQ +hif fmH oXe btO @@ -188292,16 +188244,16 @@ pdR xdL mXm xMl -qUk -mgw +qwk +owG aiK kVV -pzR +otq aiK aiK aiK aiK -iwg +pWG tAg rKg lRg @@ -188545,7 +188497,7 @@ gmU lwh oXe btO -lsb +cPw lUh tBy btO @@ -188554,7 +188506,7 @@ gEN mxG gEN qhT -eQW +uRE qhT qhT vqE @@ -188801,7 +188753,7 @@ tst pMt uhc uhc -rsj +xRD uhc uhc uhc @@ -188812,14 +188764,14 @@ tAg tAg qhT aiK -gBe -gpm +iQo +qBR aoM jij jij jij vqE -lrB +inI nXa fUT pPE @@ -189069,8 +189021,8 @@ rbV tAg qhT aiK -nYI -chk +izt +lyE aoM jij jij @@ -189303,7 +189255,7 @@ rFF oXe oXe nPz -bZw +ssr tOf tOf tOf @@ -189316,7 +189268,7 @@ iej uhc sUS jUT -glP +hUe xpI xjt rAh @@ -189325,7 +189277,7 @@ qhT qhT qhT qhT -kcU +ryh aiK aiK vqE @@ -189592,7 +189544,7 @@ jij fLS hKm bnW -ggt +vPr xNi nHO fLS @@ -189830,7 +189782,7 @@ svO uhc lVB dxG -glP +hUe kyT btC uSY @@ -189854,7 +189806,7 @@ pio fwf fLS vqE -kCL +xBc vqE vqE vqE @@ -190356,7 +190308,7 @@ pub vsU joF vqE -oQf +pDD bdh ndU tth @@ -190862,14 +190814,14 @@ usq vQN jHd aiK -mFc +eCq shD shD shD shD shD shD -tpF +orB aQg aTZ ozO @@ -191124,13 +191076,13 @@ jor xNh jor shD -nSz +mjw shD vqE qvD xMB jxX -lUX +sNp fLS ylY pKk @@ -191361,7 +191313,7 @@ gVA gVA gVA kxf -lsM +iFx iEq erZ mcZ @@ -191397,7 +191349,7 @@ ipx bkW pNf nyO -bHH +qYC vqE vqE vqE @@ -192400,11 +192352,11 @@ qwF aPh stJ liZ -cwj +vYl tdN bqm oFa -nYY +xCw mWc llS cty @@ -192418,10 +192370,10 @@ dkt oKL wQG qxp -tYp +gwb sIH fUW -xWK +mRe wQG ias jGg @@ -192683,7 +192635,7 @@ nrw ufV kmU rck -dbB +ogp eFI qns nmR @@ -192932,14 +192884,14 @@ eXG lDt wQG lnK -sif +tkD jzn tTh hED jFz gos hsz -hAw +pLT vqE akG xnh @@ -193180,7 +193132,7 @@ nYL nYL nYL nYL -sjd +ttC frz frz uEN @@ -193421,7 +193373,7 @@ jNd rHi soL gim -gvF +lzD lOG cKi ajZ @@ -193449,13 +193401,13 @@ nYL nYL wSx wwE -bGr +tBT jLf bMB opx csB rLa -mne +cfw fgP cXI aWJ @@ -193684,7 +193636,7 @@ gim xnb gim gim -xDK +tIw sJH nYL nYL @@ -193930,14 +193882,14 @@ fdh hbs aEi aEi -poF +uwJ aEi ceR gMP aya aEi -biX -gxb +mwP +wbv rvJ awE vyq @@ -194186,17 +194138,17 @@ rcQ fdh fdh dpV -aEU +gJg hpO aXM -tfJ +ykt lYF nhs sfC rsU -tCZ +dSc gjO -rBu +bqq roj eOr frz @@ -194223,13 +194175,13 @@ hAh koS sgc uGu -lJv -jJJ -dIr +pZI +uYb +wIQ xUk nbj -iAk -utq +hGq +fgF qgY qgY qgY @@ -194451,7 +194403,7 @@ fHo aZm aEi mik -nTN +bZl gpl awE pDe @@ -194733,7 +194685,7 @@ nYL nYL nYL gUx -ixD +xiv bbd mpj nSK @@ -194994,10 +194946,10 @@ wwE tsf jdU bYh -dRo +hAU ceg nZB -nrD +fBU oam oam rNg @@ -195242,7 +195194,7 @@ frz pEG frz frz -vMy +gFG xWg eMh gyq @@ -195252,7 +195204,7 @@ cRd iKY amM qgj -cYs +xbA oam oam oam @@ -195488,7 +195440,7 @@ ohi ohi gMG lXL -rWs +nzU wlj vqp vES @@ -196014,7 +195966,7 @@ xWg alf jRL bgn -hUJ +deq oPm dry wFx @@ -196525,7 +196477,7 @@ fah aSX gXD xWg -afQ +pYO jRL geB fJc @@ -196821,7 +196773,7 @@ sLz ycy sLz bvw -pQG +vLy sLz sLz vqI @@ -197009,7 +196961,7 @@ gVA gVA bEB xjy -sUv +nVd rFF rZM rZM @@ -197075,10 +197027,10 @@ bvw bvw bvw ycy -fZB +hts sLz rNv -pQG +vLy bvw sLz blO @@ -197597,11 +197549,11 @@ bvw bvw sLz blO -rQQ +iwl rNv cEk sLz -soQ +grQ xUr sLz vqI @@ -197785,7 +197737,7 @@ rFF rFF rca sld -ivO +qId olN olN qLe @@ -197822,7 +197774,7 @@ oNu uhU lVQ srJ -fFT +vwq ade uJm srJ @@ -198103,7 +198055,7 @@ bvw bvw vqI vqI -wmU +oNh pdu lZV sLz @@ -198312,7 +198264,7 @@ sld wSN tte aPc -cYG +cJm fJp fJp aPc @@ -198566,8 +198518,8 @@ olN pZC tUu vtn -ocM -xsl +iOV +tWu aPc fJp fJp @@ -198587,7 +198539,7 @@ opN tDF kFj sKD -uHR +onC tDF xCQ fMh @@ -199133,7 +199085,7 @@ pdu rNv qnY sLz -xWB +wBy sLz sLz bvw @@ -199387,9 +199339,9 @@ vqI vqI blO rNv -svB +pGB lZV -ccq +izd rNv sLz bvw @@ -199632,8 +199584,8 @@ vqI vqI vqI blO -ccq -taE +izd +qeO sLz xSk pdu @@ -199645,7 +199597,7 @@ vqI qnY sLz nve -kFt +xQV blO sLz sLz @@ -200409,7 +200361,7 @@ blO ccl mVg sLz -fZB +hts cEk cEk cEk @@ -200657,13 +200609,13 @@ vqI vqI vqI vqI -xWB +wBy pdu xTD xSk -cBT +kmO sLz -cBT +kmO ozj blO sLz @@ -201462,7 +201414,7 @@ bvw bvw bvw xqU -svB +pGB vqI vqI vqI @@ -201719,7 +201671,7 @@ bvw bvw sLz sLz -svB +pGB vqI vqI vqI @@ -202480,11 +202432,11 @@ vqI sLz blO klh -riO -cBT +pgy +kmO mVg blO -oMP +fiF sLz qnY sLz @@ -253033,7 +252985,7 @@ lAN lAN lAN lAN -luz +crU xxa wVV yli @@ -255906,7 +255858,7 @@ kxS kxS kxS kxS -uvf +rKV kxS kxS kxS @@ -258992,7 +258944,7 @@ nYL nYL sip qPX -srK +nAF pbk tDr aqa @@ -259502,7 +259454,7 @@ nrQ eKj eMx mpI -ahC +kmz ehT ehT exJ @@ -259755,7 +259707,7 @@ dvc dvc dvc nrQ -ihN +gfK wbl hib gHf @@ -259763,11 +259715,11 @@ frz frz frz esO -uvk -kMe -fnA -gWS -vtO +rEg +jUk +ote +hGc +uwc lDZ kqB lea @@ -260016,7 +259968,7 @@ sTM rtT dfi nrQ -mIy +uNV pMc pMc hpx @@ -261046,8 +260998,8 @@ dvc dvc nrQ aGW -rWq -uIH +vuo +aXp hsh txR trd @@ -261306,7 +261258,7 @@ lJE csX rGM csX -nEB +cDv nrQ kqB bIK @@ -261560,7 +261512,7 @@ dvc dvc nrQ nrQ -bCL +qQk pbk pbk fxY @@ -261822,7 +261774,7 @@ uVJ uVJ nrQ trd -wsd +vWm hfK ggb bIK @@ -262073,7 +262025,7 @@ sNi pBm csW cIX -pVH +cXJ apP xNL xNL @@ -264103,7 +264055,7 @@ uXr uXr uSL crW -kTy +rwG uDA erN bMS @@ -264360,7 +264312,7 @@ uXr uXr uXr bBH -nxu +tvm uDA erN jmY @@ -266698,7 +266650,7 @@ sNi sNi yet kiZ -tok +ncM lyK tzT apP @@ -267728,7 +267680,7 @@ yli yli kyv loj -lvm +tfh xVE ojC lFC diff --git a/_maps/map_files/FlandStation/FlandStation.dmm b/_maps/map_files/FlandStation/FlandStation.dmm index 8dbf4af27ce4d..e6be8750e2e96 100644 --- a/_maps/map_files/FlandStation/FlandStation.dmm +++ b/_maps/map_files/FlandStation/FlandStation.dmm @@ -9023,6 +9023,19 @@ "cnM" = ( /turf/closed/wall/r_wall, /area/teleporter) +"cnU" = ( +/obj/machinery/disposal/bin, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/trunk, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/hallway/primary/port) "cnW" = ( /obj/structure/table/wood, /obj/item/clothing/mask/cigarette/cigar/cohiba{ @@ -11653,6 +11666,20 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/iron/grid/steel, /area/medical/virology) +"cVO" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/spawner/randomarcade, +/obj/effect/turf_decal{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/red/line, +/turf/open/floor/prison, +/area/security/prison) "cVS" = ( /turf/open/floor/iron/dark/side{ dir = 5 @@ -15360,6 +15387,11 @@ }, /turf/open/floor/iron/sepia, /area/engine/break_room) +"dVz" = ( +/obj/effect/turf_decal/siding/wood, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/crew_quarters/dorms) "dVE" = ( /obj/structure/table/reinforced, /obj/item/stack/package_wrap, @@ -17538,17 +17570,6 @@ }, /turf/open/floor/engine, /area/engine/engine_room) -"eCc" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/delivery, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/bridge) "eCd" = ( /obj/structure/table/wood, /obj/effect/landmark/event_spawn, @@ -22202,6 +22223,21 @@ }, /turf/open/floor/iron/dark, /area/hallway/primary/fore) +"fFK" = ( +/obj/effect/turf_decal/siding/wood/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 22 + }, +/obj/item/kirbyplants/random, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/crew_quarters/bar/atrium) "fFR" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/open/floor/grass, @@ -31539,6 +31575,10 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/maintenance/port/aft) +"hZv" = ( +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/carpet/grimy, +/area/chapel/main) "hZG" = ( /obj/structure/sign/map/left{ desc = "A framed outdated, yet detailed picture of the station. there's even the permanent prison wing in the bottom left!"; @@ -41228,13 +41268,6 @@ }, /turf/open/floor/plating, /area/quartermaster/sorting) -"kuV" = ( -/obj/effect/turf_decal/guideline/guideline_in_arrow_con/red{ - dir = 5 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/iron, -/area/hallway/primary/fore) "kvb" = ( /obj/machinery/door/airlock{ id_tag = "sec Toilet 2"; @@ -55668,15 +55701,6 @@ dir = 5 }, /area/crew_quarters/fitness/recreation) -"ogW" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/iron, -/area/hallway/secondary/entry) "ohn" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -56915,21 +56939,6 @@ }, /turf/open/floor/iron/dark, /area/bridge/showroom/corporate) -"oAU" = ( -/obj/effect/turf_decal/trimline/red/filled/warning{ - dir = 5 - }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 1 - }, -/turf/open/floor/iron, -/area/security/main) "oAX" = ( /obj/effect/turf_decal/tile/purple/opposingcorners, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -62805,13 +62814,6 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/freezer, /area/crew_quarters/kitchen/coldroom) -"qdE" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/iron, -/area/hallway/secondary/exit/departure_lounge) "qdH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -63461,6 +63463,20 @@ }, /turf/open/floor/iron, /area/janitor) +"qlP" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/obj/machinery/newscaster{ + pixel_x = -28; + pixel_y = 1 + }, +/turf/open/floor/iron/techmaint, +/area/crew_quarters/locker) "qmc" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -65746,6 +65762,17 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark, /area/medical/cryo) +"qPt" = ( +/obj/effect/turf_decal/trimline/purple/filled/line, +/obj/effect/turf_decal/trimline/purple/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/grid/steel, +/area/science/research) "qPA" = ( /obj/effect/decal/cleanable/glass, /obj/structure/cable/yellow{ @@ -66545,20 +66572,6 @@ }, /turf/open/floor/carpet/grimy, /area/crew_quarters/locker) -"rbb" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/effect/spawner/randomarcade, -/obj/effect/turf_decal{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/red/line, -/turf/open/floor/prison, -/area/security/prison) "rbg" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -67296,6 +67309,10 @@ dir = 8 }, /area/hallway/primary/central) +"rlr" = ( +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "rlu" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -68974,18 +68991,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/science) -"rGm" = ( -/obj/machinery/disposal/bin, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/effect/turf_decal/delivery, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/iron/dark, -/area/hallway/primary/port) "rGy" = ( /turf/closed/wall, /area/medical/virology) @@ -70155,6 +70160,15 @@ }, /turf/open/floor/iron/techmaint, /area/medical/morgue) +"rSM" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/iron, +/area/hallway/secondary/entry) "rSR" = ( /obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 @@ -71835,6 +71849,16 @@ /obj/effect/turf_decal/tile/dark_blue/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/ai_upload) +"spk" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/machinery/status_display/ai{ + pixel_x = -32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/techmaint, +/area/crew_quarters/locker) "spl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 8 @@ -72210,16 +72234,6 @@ /obj/structure/sign/departments/minsky/medical/medical2, /turf/closed/wall/r_wall, /area/crew_quarters/heads/cmo) -"suV" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/machinery/status_display/ai{ - pixel_x = -32 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/techmaint, -/area/crew_quarters/locker) "sve" = ( /obj/structure/cable{ icon_state = "1-2" @@ -72674,20 +72688,6 @@ }, /turf/open/floor/iron/sepia, /area/maintenance/department/engine) -"sAF" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 22 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/wood, -/area/crew_quarters/bar/atrium) "sAO" = ( /obj/effect/turf_decal/guideline/guideline_out_arrow_con/blue{ dir = 9 @@ -75170,20 +75170,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/sepia, /area/engine/engineering) -"thX" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/newscaster{ - pixel_x = -28; - pixel_y = 1 - }, -/turf/open/floor/iron/techmaint, -/area/crew_quarters/locker) "thZ" = ( /obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 @@ -76825,15 +76811,6 @@ /obj/effect/turf_decal/tile/yellow/opposingcorners, /turf/open/floor/iron/sepia, /area/engine/engineering) -"tEr" = ( -/obj/machinery/computer/cargo/request{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/office) "tEB" = ( /obj/machinery/door/airlock/engineering{ name = "Auxiliary Construction Storage"; @@ -77171,6 +77148,18 @@ }, /turf/open/floor/engine, /area/engine/supermatter) +"tKq" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/radio/intercom{ + pixel_x = -28 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/sepia, +/area/engine/break_room) "tKt" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -77645,13 +77634,6 @@ }, /turf/open/floor/iron/dark, /area/security/brig) -"tPH" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/iron/techmaint, -/area/crew_quarters/locker) "tPJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -78784,6 +78766,14 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/port) +"ueP" = ( +/obj/effect/turf_decal/guideline/guideline_in_arrow_con/red{ + dir = 5 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/hallway/primary/fore) "ueW" = ( /obj/effect/turf_decal/siding/dark, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -83286,17 +83276,6 @@ "vhU" = ( /turf/closed/wall, /area/medical/apothecary) -"vib" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/radio/intercom{ - pixel_x = -28 - }, -/turf/open/floor/iron/sepia, -/area/engine/break_room) "vie" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 @@ -89373,6 +89352,16 @@ }, /turf/open/floor/vault, /area/engine/engine_room) +"wzY" = ( +/obj/machinery/computer/cargo/request{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/quartermaster/office) "wAi" = ( /obj/effect/turf_decal/siding/wood/corner{ dir = 4 @@ -92104,6 +92093,14 @@ }, /turf/open/floor/iron/techmaint, /area/science/research) +"xeo" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit/departure_lounge) "xew" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -92672,6 +92669,22 @@ /obj/effect/turf_decal/stripes/closeup, /turf/open/floor/iron/techmaint, /area/engine/atmos) +"xjq" = ( +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/red/corner{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/security/main) "xju" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 26 @@ -94063,6 +94076,13 @@ /obj/machinery/advanced_airlock_controller/directional/north, /turf/open/floor/iron/dark, /area/quartermaster/miningdock) +"xzK" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/iron/techmaint, +/area/crew_quarters/locker) "xzN" = ( /obj/machinery/light/small, /turf/open/floor/plating, @@ -94451,6 +94471,18 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"xDl" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/dark, +/area/bridge) "xDn" = ( /obj/structure/closet/bombcloset/security, /obj/effect/turf_decal/bot, @@ -113065,7 +113097,7 @@ xTE tkJ taV tLB -ogW +rSM okR gjq bOE @@ -113284,7 +113316,7 @@ hII jhy bSV vdu -qdE +xeo nMw nMw rVV @@ -119416,7 +119448,7 @@ uDP uDP oSV woq -hQe +hZv hQe oWH edq @@ -119717,7 +119749,7 @@ mib mib wOF vqH -sAF +fFK iVu iVu iVu @@ -122307,7 +122339,7 @@ ceL ulN hmI xTG -rGm +cnU uOq avq xTR @@ -123351,7 +123383,7 @@ paE vLj rLO tCK -tEr +wzY vxm qkS iix @@ -126123,7 +126155,7 @@ xop tNk xyb iLD -ppz +rlr lkI ppz lkI @@ -130506,7 +130538,7 @@ tul lhU xDg fDx -oAU +xjq rgq ugD nFX @@ -132555,7 +132587,7 @@ kdR jjj tbg iOh -kuV +ueP gwQ wrM kpl @@ -133868,7 +133900,7 @@ nWr nWr nWr nWr -rbb +cVO cLL qer wSA @@ -133902,7 +133934,7 @@ wtm mjN tyI odo -bmp +qPt kQd rAR wyr @@ -140826,7 +140858,7 @@ euM usS xkQ qNK -vib +tKq sVS ykQ hop @@ -141527,7 +141559,7 @@ dAq eaP yeb yeb -eCc +xDl sJB eTP teE @@ -142853,7 +142885,7 @@ wtw usA tIH wtw -eOX +dVz oqC qDo oxb @@ -145419,9 +145451,9 @@ wDO toK uir xSF -suV -thX -tPH +spk +qlP +xzK wDO uVi fmY diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 6d9777691fd90..42b84155b02b5 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -5277,10 +5277,6 @@ "awV" = ( /turf/closed/wall/r_wall/rust, /area/crew_quarters/heads/chief) -"awW" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall, -/area/engine/break_room) "awX" = ( /turf/closed/wall/r_wall, /area/crew_quarters/heads/chief) @@ -15052,6 +15048,12 @@ }, /turf/open/floor/iron, /area/bridge) +"bCi" = ( +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/components/unary/cryo_cell, +/turf/open/floor/iron/dark, +/area/medical/cryo) "bCm" = ( /obj/machinery/light/small{ dir = 1 @@ -18668,10 +18670,6 @@ }, /turf/open/floor/iron/dark, /area/hallway/secondary/exit/departure_lounge) -"bWM" = ( -/obj/structure/sign/departments/cargo, -/turf/closed/wall, -/area/hallway/secondary/exit/departure_lounge) "bWO" = ( /obj/machinery/status_display/ai, /turf/closed/wall, @@ -23417,6 +23415,18 @@ broken = 1 }, /area/maintenance/aft) +"cuO" = ( +/obj/effect/spawner/randomarcade, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood{ + dir = 1; + layer = 1 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/prison) "cuP" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt/dust, @@ -28690,6 +28700,22 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/janitor) +"cRQ" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/main) "cRX" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/blood/old, @@ -28819,18 +28845,6 @@ }, /turf/open/floor/iron/dark, /area/hallway/primary/aft) -"cUA" = ( -/obj/item/kirbyplants{ - icon_state = "plant-05" - }, -/obj/machinery/light, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/brown/half/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/turf/open/floor/iron, -/area/hallway/secondary/exit/departure_lounge) "cUK" = ( /obj/machinery/modular_computer/console/preset/research{ dir = 8 @@ -29651,6 +29665,19 @@ }, /turf/open/floor/iron/freezer, /area/medical/virology) +"dkj" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/conveyor{ + dir = 4; + id = "QMLoad2"; + name = "on ramp" + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/quartermaster/storage) "dkl" = ( /obj/structure/chair/fancy/comfy{ color = "#354562" @@ -30104,21 +30131,6 @@ /obj/effect/spawner/mail/maintloot, /turf/open/floor/plating, /area/maintenance/port/aft) -"drj" = ( -/obj/effect/turf_decal/bot, -/obj/structure/closet/secure_closet/personal, -/obj/item/storage/backpack, -/obj/item/storage/backpack/satchel, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/shoes/winterboots, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/locker) "drH" = ( /obj/structure/table/wood, /obj/effect/turf_decal/stripes/corner, @@ -33328,13 +33340,6 @@ }, /turf/closed/wall, /area/quartermaster/warehouse) -"ewl" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/machinery/atmospherics/components/unary/cryo_cell, -/obj/effect/turf_decal/delivery, -/turf/open/floor/iron/dark, -/area/medical/cryo) "ewC" = ( /obj/effect/turf_decal/bot, /obj/machinery/washing_machine, @@ -37566,22 +37571,6 @@ }, /turf/open/floor/iron/showroomfloor, /area/science/mixing) -"fRR" = ( -/obj/machinery/light, -/obj/structure/chair/fancy/sofa/corp/right{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue/half/contrasted{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/iron/showroomfloor, -/area/medical/medbay/lobby) "fRS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/red/opposingcorners, @@ -37637,26 +37626,6 @@ }, /turf/open/floor/iron/dark, /area/bridge) -"fSX" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 25 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/security/warden) "fTc" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -38036,21 +38005,6 @@ burnt = 1 }, /area/maintenance/solars/starboard/fore) -"fZy" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron, -/area/security/main) "fZK" = ( /obj/machinery/camera{ c_tag = "Starboard Hallway Planters"; @@ -40191,6 +40145,21 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/engine/gravity_generator) +"gPB" = ( +/obj/machinery/light, +/obj/structure/extinguisher_cabinet{ + pixel_x = 24 + }, +/obj/structure/chair/fancy/sofa/old/right{ + color = "#742925"; + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/crew_quarters/bar/atrium) "gPD" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 1 @@ -44574,6 +44543,18 @@ broken = 1 }, /area/quartermaster/warehouse) +"ily" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "ceprivate"; + name = "Chief Engineer's Privacy Shutters" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/caution/stand_clear, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/iron/dark, +/area/engine/break_room) "ilA" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -47525,6 +47506,17 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/hallway/primary/central) +"jjN" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/obj/effect/turf_decal/box, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/opposingcorners, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/engine/break_room) "jjT" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -51061,6 +51053,14 @@ }, /turf/open/floor/iron, /area/hallway/primary/fore) +"knS" = ( +/obj/effect/spawner/randomarcade, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/turf/open/floor/wood, +/area/security/prison) "koq" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -51706,18 +51706,6 @@ }, /turf/open/floor/iron/dark, /area/security/main) -"kAD" = ( -/obj/effect/spawner/randomarcade, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/wood{ - dir = 1; - layer = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/security/prison) "kBa" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 @@ -53324,12 +53312,6 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/hallway/secondary/exit/departure_lounge) -"lgL" = ( -/obj/effect/turf_decal/tile/dark/opposingcorners, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/components/unary/cryo_cell, -/turf/open/floor/iron/dark, -/area/medical/cryo) "lgN" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -54384,20 +54366,6 @@ }, /turf/open/floor/iron/dark, /area/science/mixing) -"lxn" = ( -/obj/structure/table, -/obj/item/folder, -/obj/item/nanite_scanner{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/nanite_remote, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted, -/turf/open/floor/iron/dark, -/area/science/research) "lxx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -55052,6 +55020,22 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/kitchen) +"lHZ" = ( +/obj/machinery/digital_clock/directional/north, +/obj/machinery/camera{ + c_tag = "Medbay Lobby"; + name = "medical camera"; + network = list("ss13","medical"); + dir = 6 + }, +/obj/item/kirbyplants{ + icon_state = "plant-08" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/iron/dark, +/area/medical/medbay/lobby) "lIC" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -58299,20 +58283,6 @@ }, /turf/open/floor/iron/dark, /area/science/explab) -"mNG" = ( -/obj/machinery/light, -/obj/structure/extinguisher_cabinet{ - pixel_x = 24 - }, -/obj/structure/chair/fancy/sofa/old/right{ - color = "#742925"; - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 8 - }, -/turf/open/floor/iron/dark, -/area/crew_quarters/bar/atrium) "mOe" = ( /obj/structure/chair/wood{ dir = 4 @@ -62276,21 +62246,6 @@ burnt = 1 }, /area/maintenance/port) -"oiB" = ( -/obj/effect/turf_decal/bot, -/obj/machinery/conveyor{ - dir = 4; - id = "QMLoad2"; - name = "on ramp" - }, -/obj/structure/sign/poster/contraband/red_rum{ - pixel_y = -32 - }, -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/quartermaster/storage) "oiC" = ( /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 8 @@ -62470,21 +62425,6 @@ /obj/effect/turf_decal/tile/purple/half/contrasted, /turf/open/floor/iron/showroomfloor, /area/maintenance/department/science) -"okT" = ( -/obj/machinery/camera{ - c_tag = "Medbay Lobby"; - name = "medical camera"; - network = list("ss13","medical"); - dir = 6 - }, -/obj/item/kirbyplants{ - icon_state = "plant-08" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/turf/open/floor/iron/dark, -/area/medical/medbay/lobby) "olb" = ( /obj/structure/closet/radiation, /obj/structure/grille/broken, @@ -67677,6 +67617,13 @@ }, /turf/open/floor/iron/dark, /area/vacant_room/commissary) +"pUD" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/dark/opposingcorners, +/obj/machinery/atmospherics/components/unary/cryo_cell, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/medical/cryo) "pUV" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -69552,16 +69499,6 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/showroomfloor, /area/engine/atmos) -"qDM" = ( -/obj/structure/closet/secure_closet/engineering_electrical, -/obj/effect/turf_decal/box, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/opposingcorners, -/turf/open/floor/iron, -/area/engine/break_room) "qDN" = ( /obj/machinery/sleeper{ dir = 8 @@ -70250,6 +70187,19 @@ }, /turf/open/floor/iron/dark, /area/lawoffice) +"qON" = ( +/obj/item/kirbyplants{ + icon_state = "plant-05" + }, +/obj/machinery/light, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/brown/half/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron, +/area/hallway/secondary/exit/departure_lounge) "qOW" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -74603,22 +74553,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hos) -"sri" = ( -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/bridge) "srJ" = ( /obj/structure/sign/poster/official/random{ pixel_y = -32 @@ -74732,14 +74666,6 @@ }, /turf/open/floor/iron/dark, /area/crew_quarters/heads/hor) -"stT" = ( -/obj/effect/spawner/randomarcade, -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/security/prison) "stY" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible, /obj/effect/turf_decal/box/corners{ @@ -75893,6 +75819,10 @@ /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron/dark, /area/quartermaster/qm) +"sOt" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall/rust, +/area/hallway/secondary/exit/departure_lounge) "sOC" = ( /obj/effect/turf_decal/bot, /obj/machinery/holopad, @@ -77633,6 +77563,23 @@ }, /turf/open/floor/iron/dark, /area/science/storage) +"tsd" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ + dir = 1 + }, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/security/warden) "tsf" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/stripes/line, @@ -78213,6 +78160,29 @@ burnt = 1 }, /area/maintenance/port) +"tBU" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/secure_closet/personal, +/obj/item/storage/backpack, +/obj/item/storage/backpack/satchel, +/obj/item/clothing/suit/hooded/wintercoat, +/obj/item/clothing/shoes/winterboots, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/north, +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/crew_quarters/locker) "tCc" = ( /obj/effect/turf_decal/stripes/corner, /obj/effect/decal/cleanable/dirt, @@ -79028,6 +78998,23 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron, /area/engine/atmos) +"tTi" = ( +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron, +/area/bridge) "tTH" = ( /obj/structure/closet/secure_closet/CMO, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ @@ -80027,6 +80014,21 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/iron/freezer, /area/medical/virology) +"uoA" = ( +/obj/structure/table, +/obj/item/folder, +/obj/item/nanite_scanner{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/nanite_remote, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/science/research) "uoB" = ( /obj/effect/turf_decal/tile/red/half/contrasted{ dir = 4 @@ -83755,6 +83757,23 @@ /obj/effect/turf_decal/tile/neutral/opposingcorners, /turf/open/floor/iron/dark, /area/crew_quarters/bar) +"vzz" = ( +/obj/machinery/light, +/obj/structure/chair/fancy/sofa/corp/right{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue/half/contrasted{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/showroomfloor, +/area/medical/medbay/lobby) "vzF" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -111413,7 +111432,7 @@ qbn dNk gZF dku -fZy +cRQ uKZ mln qVt @@ -111615,7 +111634,7 @@ gHb imK xEQ aNG -lgL +bCi uPx uxI pHq @@ -111872,7 +111891,7 @@ hVA fWr qhY aNG -ewl +pUD fbp ixg qti @@ -113202,7 +113221,7 @@ lDt lDt lDt lDt -stT +knS wDE gMx uyd @@ -113459,7 +113478,7 @@ pou rLg gUQ lDt -kAD +cuO nZE gMx sgL @@ -113724,7 +113743,7 @@ aat nUh lyL qPH -fSX +tsd fQt gGZ iiL @@ -113938,7 +113957,7 @@ fCB tdo ttH prh -fRR +vzz aQW dpR yak @@ -114726,7 +114745,7 @@ asv fhb nkk afe -drj +tBU sNW sWl xiQ @@ -114961,7 +114980,7 @@ aNn tKV aNn nYU -okT +lHZ gKL ibY fYR @@ -121154,7 +121173,7 @@ jzA sYf hxn vWs -sri +tTi bnP atj avV @@ -127858,11 +127877,11 @@ xkp kBA bOj awL -bKp +ily ckm bKp -awW -qDM +aIg +jjN cox oaH axb @@ -128078,7 +128097,7 @@ sZl ges wCW rtn -mNG +gPB bwi ajt bmA @@ -130377,7 +130396,7 @@ rnc rFl udv aZv -lxn +uoA qwl pHY hYK @@ -132465,7 +132484,7 @@ uJI bkZ hiM xdp -oiB +dkj bjF bEg gKQ @@ -134024,8 +134043,8 @@ xxq bSn vyF xOT -cUA -bWM +qON +bOc bPe bZC bPe @@ -134543,7 +134562,7 @@ cJO jol pxZ iHt -bRF +sOt mjb mjb bTT diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index ee4b234b07be9..3c536a9f247d1 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -7859,6 +7859,25 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) +"aZn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=14.9-CrewQuarters-Central"; + location = "14.8-Dorms-Lockers" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron, +/area/crew_quarters/dorms) "aZo" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -17190,6 +17209,11 @@ }, /turf/open/floor/iron/dark/corner, /area/engine/atmos) +"bZZ" = ( +/obj/structure/chair/stool/bar, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/cafeteria_red, +/area/crew_quarters/bar) "cak" = ( /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 4 @@ -21560,10 +21584,6 @@ }, /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) -"cOs" = ( -/obj/machinery/status_display/ai, -/turf/closed/wall, -/area/hallway/secondary/exit/departure_lounge) "cOF" = ( /obj/structure/table, /obj/item/storage/box/bodybags{ @@ -22363,15 +22383,6 @@ /obj/item/storage/box/lights/mixed, /turf/open/floor/plating, /area/maintenance/starboard) -"cTy" = ( -/obj/structure/chair/fancy/comfy{ - color = "#666666"; - dir = 4 - }, -/turf/open/floor/iron/chapel{ - dir = 1 - }, -/area/chapel/main) "cTF" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -26647,25 +26658,6 @@ }, /turf/open/floor/iron, /area/hallway/secondary/entry) -"edV" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/rack, -/obj/item/rollerbed{ - pixel_x = -2 - }, -/obj/item/rollerbed{ - pixel_x = 1; - pixel_y = 3 - }, -/obj/item/rollerbed{ - pixel_x = 5; - pixel_y = 8 - }, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/white, -/area/medical/medbay/lobby) "eed" = ( /obj/effect/turf_decal/tile/neutral/half/contrasted, /obj/effect/mapping_helpers/airlock/abandoned, @@ -27372,6 +27364,21 @@ }, /turf/open/floor/iron/cafeteria_red, /area/crew_quarters/bar) +"euL" = ( +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron, +/area/hallway/primary/port) "evf" = ( /obj/machinery/camera/motion{ c_tag = "Armory - External"; @@ -29229,6 +29236,12 @@ }, /turf/open/floor/iron, /area/medical/break_room) +"fkj" = ( +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/prison, +/area/security/prison) "fkk" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -33816,6 +33829,10 @@ }, /turf/open/floor/iron, /area/crew_quarters/fitness/recreation) +"gZE" = ( +/obj/machinery/digital_clock/directional, +/turf/closed/wall, +/area/hallway/secondary/exit/departure_lounge) "gZS" = ( /obj/machinery/button/door{ id = "prisonereducation"; @@ -35296,6 +35313,22 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/crew_quarters/kitchen) +"hEE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red/half/contrasted{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "hEL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 @@ -37578,6 +37611,12 @@ }, /turf/open/floor/iron/white, /area/medical/medbay/aft) +"iAj" = ( +/obj/item/radio/intercom{ + pixel_x = 26 + }, +/turf/closed/wall/r_wall, +/area/security/main) "iAm" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -41109,6 +41148,16 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) +"jTa" = ( +/obj/structure/chair/fancy/comfy{ + color = "#666666"; + dir = 4 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/chapel{ + dir = 1 + }, +/area/chapel/main) "jTi" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -41306,6 +41355,26 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/maintenance/port) +"jZh" = ( +/obj/machinery/airalarm/directional/north, +/obj/structure/rack, +/obj/item/rollerbed{ + pixel_x = -2 + }, +/obj/item/rollerbed{ + pixel_x = 1; + pixel_y = 3 + }, +/obj/item/rollerbed{ + pixel_x = 5; + pixel_y = 8 + }, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/white, +/area/medical/medbay/lobby) "jZk" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/structure/disposalpipe/segment, @@ -41414,24 +41483,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/maintenance/starboard) -"kau" = ( -/obj/machinery/firealarm{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red/half/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/security/brig) "kaJ" = ( /obj/structure/table, /obj/item/paicard, @@ -42577,24 +42628,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /turf/open/floor/iron/dark, /area/teleporter) -"kwF" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Central Primary Hallway - Fore - Port Corner"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/hallway/primary/central) "kwI" = ( /obj/item/reagent_containers/spray/plantbgone{ pixel_y = 3 @@ -44195,12 +44228,6 @@ }, /turf/open/floor/iron/white, /area/science/research) -"kZa" = ( -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/prison, -/area/security/prison) "kZi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -44477,20 +44504,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/iron, /area/storage/tools) -"lge" = ( -/obj/effect/spawner/randomarcade, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "lhn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -44818,11 +44831,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"loR" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/blue/anticorner/contrasted, -/turf/open/floor/iron/dark, -/area/bridge) "lpd" = ( /obj/structure/lattice/catwalk/over, /turf/open/floor/plating, @@ -46656,6 +46664,12 @@ /obj/structure/sign/departments/minsky/medical/medical2, /turf/closed/wall, /area/medical/medbay/lobby) +"mdn" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/blue/anticorner/contrasted, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/bridge) "mdo" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -47431,6 +47445,25 @@ }, /turf/open/floor/iron, /area/construction/mining/aux_base) +"muy" = ( +/obj/machinery/power/apc/highcap/five_k{ + areastring = "/area/security/warden"; + dir = 8; + name = "Brig Control APC"; + pixel_x = -1; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/iron/showroomfloor, +/area/security/main) "muG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -52373,6 +52406,21 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/storage/primary) +"ohr" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Central Primary Hallway - Fore - Port Corner"; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/turf/open/floor/iron, +/area/hallway/primary/central) "oid" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 @@ -52397,25 +52445,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/central) -"oiE" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/power/apc/highcap/five_k{ - areastring = "/area/security/warden"; - dir = 8; - name = "Brig Control APC"; - pixel_x = -1; - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/iron/showroomfloor, -/area/security/main) "ojf" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -53354,6 +53383,13 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) +"oym" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/east, +/turf/open/floor/iron/white/corner, +/area/hallway/secondary/entry) "oyE" = ( /obj/effect/turf_decal/tile/neutral/fourcorners/contrasted, /obj/structure/bodycontainer/morgue, @@ -54561,24 +54597,6 @@ /obj/effect/turf_decal/tile/brown/half/contrasted, /turf/open/floor/iron, /area/storage/primary) -"oYe" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=14.9-CrewQuarters-Central"; - location = "14.8-Dorms-Lockers" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/turf/open/floor/iron, -/area/crew_quarters/dorms) "oYx" = ( /obj/structure/table, /obj/item/food/grown/wheat, @@ -60705,20 +60723,6 @@ }, /turf/open/floor/iron, /area/hydroponics) -"rsJ" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron, -/area/hallway/primary/port) "rti" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -65286,6 +65290,13 @@ /obj/machinery/smartfridge/chemistry, /turf/closed/wall/r_wall, /area/medical/chemistry) +"tjf" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, +/turf/open/floor/iron, +/area/hallway/primary/central) "tjn" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -72589,6 +72600,15 @@ }, /turf/open/floor/iron, /area/crew_quarters/fitness/recreation) +"vZR" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/poddoor/preopen{ + id = "Engineering"; + name = "Engineering Security Doors" + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/engine/break_room) "vZX" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -74886,6 +74906,19 @@ }, /turf/open/floor/iron/white, /area/science/xenobiology) +"wPN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/science/research) "wQf" = ( /obj/machinery/door/airlock/maintenance{ name = "Chapel Maintenance"; @@ -75351,6 +75384,16 @@ /obj/item/canvas/twentythree_twentythree, /turf/open/floor/iron, /area/storage/art) +"xao" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/iron, +/area/security/brig) "xaq" = ( /obj/structure/flora/junglebush/b, /obj/structure/window/reinforced, @@ -76180,6 +76223,20 @@ }, /turf/open/floor/iron, /area/hallway/primary/port) +"xnt" = ( +/obj/effect/spawner/randomarcade, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "xnK" = ( /obj/structure/filingcabinet/chestdrawer, /obj/machinery/airalarm{ @@ -93007,7 +93064,7 @@ nFP kwY bqd bsp -bnM +oym bnM ndx bzw @@ -100706,7 +100763,7 @@ pbu aJN lhv dne -rsJ +euL lCe tgo bff @@ -101220,7 +101277,7 @@ mtX aJO piG gmp -kwF +ohr nTn cKI hMh @@ -101452,7 +101509,7 @@ gUG oTw eNL srs -kZa +fkj aax nWv aaa @@ -101552,7 +101609,7 @@ cLa cLa cPJ gPS -cTy +jTa cRn cOS cMI @@ -101735,7 +101792,7 @@ aVR nml rJh bqA -bqA +tjf bqA bqA iAp @@ -103565,7 +103622,7 @@ aZa jfB bSS bSS -edV +jZh iqK tDc vXT @@ -105084,7 +105141,7 @@ kLu bkE bmy bor -loR +mdn bsU bsU bsU @@ -105402,7 +105459,7 @@ cLr cMf cMU cNN -cOs +gZE cOW cMU cPS @@ -107099,7 +107156,7 @@ vRS fDl fsC aqa -oiE +muy sMC vQY tPv @@ -107612,7 +107669,7 @@ aeq jai eRX kFN -aqa +iAj jXZ dkt uqm @@ -107622,7 +107679,7 @@ yen ajD dZc ulX -lQt +xao ahB ahB kGn @@ -108135,7 +108192,7 @@ tlO wnE ajD ajD -kau +hEE awq gCn aiq @@ -109486,7 +109543,7 @@ nnT ckg clH bZn -jKR +wPN ioY sYS fgQ @@ -113575,7 +113632,7 @@ qaI xTu kJK foE -blf +bZZ kmk ujJ duS @@ -114056,7 +114113,7 @@ aGJ mWQ sXR fbN -oYe +aZn qpm rDe jtP @@ -115623,7 +115680,7 @@ alq boY khd bmP -lge +xnt jDS etX cii @@ -120241,7 +120298,7 @@ toh hGd dgz aBI -byK +vZR uUo rUa pcp diff --git a/_maps/map_files/RadStation/RadStation.dmm b/_maps/map_files/RadStation/RadStation.dmm index 2c6cbec8a9542..36d5f89e9307c 100644 --- a/_maps/map_files/RadStation/RadStation.dmm +++ b/_maps/map_files/RadStation/RadStation.dmm @@ -5867,15 +5867,6 @@ lighting_overlay_colour = "#DDE6FF"; power_light = 0 }) -"bVQ" = ( -/obj/structure/sign/directions/medical{ - dir = 8; - pixel_y = -6 - }, -/turf/closed/wall/r_wall, -/area/security/main{ - name = "Security Locker Room" - }) "bWa" = ( /obj/structure/lattice/catwalk/over, /obj/machinery/door/airlock/maintenance_hatch{ @@ -7481,6 +7472,17 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/iron, /area/maintenance/department/security) +"cuH" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/guideline/guideline_edge/purple{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white/side, +/area/science/research) "cuM" = ( /obj/structure/sign/poster/official/random{ pixel_x = -32 @@ -13005,14 +13007,6 @@ }, /turf/open/floor/iron/white, /area/medical/virology) -"edl" = ( -/obj/effect/turf_decal/tile/neutral/half/contrasted{ - dir = 1 - }, -/turf/open/floor/iron/dark/corner{ - dir = 4 - }, -/area/hallway/primary/fore) "edv" = ( /obj/effect/turf_decal/guideline/guideline_out/brown{ dir = 8 @@ -13819,15 +13813,6 @@ }, /turf/open/floor/iron, /area/hallway/primary/aft) -"erj" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/computer/rdconsole/production{ - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/engine/engineering) "ero" = ( /obj/effect/landmark/blobstart, /turf/open/floor/iron, @@ -22895,16 +22880,6 @@ /obj/machinery/smartfridge/chemistry/preloaded, /turf/closed/wall, /area/medical/apothecary) -"gXP" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/siding/wideplating/dark{ - dir = 4 - }, -/obj/machinery/dish_drive{ - pixel_y = 10 - }, -/turf/open/floor/iron/cafeteria, -/area/crew_quarters/kitchen) "gYa" = ( /obj/machinery/photocopier, /obj/effect/turf_decal/bot, @@ -31534,6 +31509,19 @@ }, /turf/open/floor/plating, /area/security/checkpoint/science) +"jPL" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/effect/turf_decal/guideline/guideline_edge/red{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/security/brig) "jPV" = ( /obj/structure/lattice/catwalk, /obj/item/wrench, @@ -31785,6 +31773,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/iron/tech, /area/engine/atmos) +"jTr" = ( +/obj/effect/spawner/randomarcade{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/security/prison) "jTQ" = ( /obj/effect/turf_decal/loading_area{ dir = 1 @@ -32831,16 +32828,6 @@ }, /turf/open/floor/iron, /area/engine/engine_room) -"klr" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/guideline/guideline_edge/purple{ - dir = 1 - }, -/turf/open/floor/iron/white/side, -/area/science/research) "klu" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 @@ -36641,24 +36628,6 @@ }, /turf/open/floor/iron, /area/medical/apothecary) -"lxd" = ( -/obj/machinery/requests_console{ - department = "Science"; - departmentType = 2; - name = "Science RC"; - pixel_y = 30; - receive_ore_updates = 1 - }, -/obj/machinery/camera/autoname{ - dir = 2; - network = list("ss13","rd") - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, -/turf/open/floor/iron/dark, -/area/science/nanite) "lxi" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -39555,6 +39524,18 @@ /obj/structure/sign/warning/nosmoking/circle, /turf/closed/wall/r_wall, /area/engine/storage) +"mtE" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/machinery/camera/autoname{ + dir = 4 + }, +/obj/effect/spawner/randomarcade{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/cafeteria) "mtI" = ( /turf/open/floor/holofloor/plating, /area/holodeck/prison) @@ -42330,6 +42311,16 @@ /area/security/main{ name = "Security Locker Room" }) +"njD" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/computer/rdconsole/production{ + dir = 4 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/engine/engineering) "njS" = ( /obj/machinery/smartfridge/chemistry/virology/preloaded, /obj/machinery/button/door{ @@ -42843,6 +42834,23 @@ /obj/structure/table, /turf/open/floor/iron, /area/engine/break_room) +"nqJ" = ( +/obj/machinery/camera/autoname{ + network = list("ss13","rd") + }, +/obj/machinery/requests_console{ + department = "Science"; + departmentType = 2; + name = "Science RC"; + pixel_y = 30; + receive_ore_updates = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/purple/fourcorners/contrasted, +/turf/open/floor/iron/dark, +/area/science/nanite) "nqQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -44568,15 +44576,6 @@ }, /turf/closed/wall/r_wall, /area/engine/atmos) -"nQr" = ( -/obj/effect/spawner/randomarcade{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/security/prison) "nQt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -64710,6 +64709,15 @@ }, /turf/open/floor/iron/white, /area/medical/genetics) +"ujj" = ( +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/hallway/primary/fore) "ujy" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -68004,18 +68012,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) -"vkF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/machinery/camera/autoname{ - dir = 4 - }, -/obj/effect/spawner/randomarcade{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/cafeteria) "vkS" = ( /obj/effect/turf_decal/tile/dark_blue{ alpha = 180; @@ -69067,6 +69063,20 @@ name = "mainframe floor" }, /area/tcommsat/server) +"vDo" = ( +/obj/machinery/conveyor/inverted{ + dir = 5; + id = "MailConv" + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark, +/area/quartermaster/office) "vDs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -69163,6 +69173,15 @@ }, /turf/open/floor/iron/tech/grid, /area/engine/gravity_generator) +"vDU" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/west, +/turf/open/floor/iron/dark/side{ + dir = 9 + }, +/area/hallway/secondary/exit/departure_lounge) "vDZ" = ( /obj/machinery/firealarm/directional/north, /turf/open/floor/iron/dark, @@ -69546,6 +69565,17 @@ dir = 9 }, /area/science/research) +"vKD" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/obj/machinery/dish_drive{ + pixel_y = 10 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/cafeteria, +/area/crew_quarters/kitchen) "vLA" = ( /obj/structure/disposalpipe/segment{ dir = 2 @@ -71388,6 +71418,11 @@ }, /turf/open/floor/iron, /area/maintenance/department/science) +"wnU" = ( +/obj/effect/turf_decal/tile/blue/fourcorners/contrasted, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/white, +/area/medical/sleeper) "wod" = ( /obj/effect/landmark/start/assistant, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -71986,14 +72021,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/engine/atmos) -"wBJ" = ( -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/iron/dark/side{ - dir = 9 - }, -/area/hallway/secondary/exit/departure_lounge) "wBN" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -75523,19 +75550,6 @@ dir = 1 }, /area/hallway/secondary/exit/departure_lounge) -"xFT" = ( -/obj/machinery/conveyor/inverted{ - dir = 5; - id = "MailConv" - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/iron/dark, -/area/quartermaster/office) "xGh" = ( /obj/structure/table, /obj/item/assembly/signaler{ @@ -98275,7 +98289,7 @@ pOq vxS kgg sNa -xFT +vDo jut bAQ eQu @@ -103397,8 +103411,8 @@ rtX aAF dDS fhl -bVQ -jXu +hBK +jPL wxK rgL sOM @@ -104996,7 +105010,7 @@ qie qie qie qie -klr +cuH eAx pzV uUA @@ -107304,7 +107318,7 @@ pMZ mZq oFg sSc -lxd +nqJ sbe wAA ffm @@ -108280,7 +108294,7 @@ xJA wnJ iUx xtF -nQr +jTr oiw pxh gdY @@ -109129,7 +109143,7 @@ kwh cnX ulz ikR -erj +njD rxR txH mwr @@ -109546,7 +109560,7 @@ vND twm qxi bOq -edl +ujj jUc jUc dCe @@ -113699,7 +113713,7 @@ nXc eLi fdq cnr -vkF +mtE iqV dJr iFN @@ -115020,7 +115034,7 @@ deZ poJ deE cvC -req +wnU iqw bWm qkw @@ -116523,7 +116537,7 @@ nVz bka cYQ eeJ -gXP +vKD diN cCP cNU @@ -118081,7 +118095,7 @@ tpI ouQ qfC xCv -wBJ +vDU vwm cJN oXG diff --git a/beestation.dme b/beestation.dme index d13ccb00ab5c7..1baf4c7af978d 100644 --- a/beestation.dme +++ b/beestation.dme @@ -309,6 +309,7 @@ #include "code\_globalvars\regexes.dm" #include "code\_globalvars\religion.dm" #include "code\_globalvars\soul_glimmer.dm" +#include "code\_globalvars\time_vars.dm" #include "code\_globalvars\traits.dm" #include "code\_globalvars\turf.dm" #include "code\_globalvars\xenoartifact.dm" @@ -487,6 +488,7 @@ #include "code\controllers\subsystem\processing\ai_behaviors.dm" #include "code\controllers\subsystem\processing\ai_controllers.dm" #include "code\controllers\subsystem\processing\clock_component.dm" +#include "code\controllers\subsystem\processing\digital_clock.dm" #include "code\controllers\subsystem\processing\fastprocess.dm" #include "code\controllers\subsystem\processing\fields.dm" #include "code\controllers\subsystem\processing\fluids.dm" @@ -1074,6 +1076,7 @@ #include "code\game\machinery\cryopod.dm" #include "code\game\machinery\dance_machine.dm" #include "code\game\machinery\defibrillator_mount.dm" +#include "code\game\machinery\digital_clock.dm" #include "code\game\machinery\dish_drive.dm" #include "code\game\machinery\dna_scanner.dm" #include "code\game\machinery\doppler_array.dm" diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm index 6db88cc37d951..b4f215fb28b8d 100644 --- a/code/__DEFINES/cooldowns.dm +++ b/code/__DEFINES/cooldowns.dm @@ -28,6 +28,7 @@ //INDEXES #define COOLDOWN_BORG_SELF_REPAIR "borg_self_repair" #define COOLDOWN_LARRYKNIFE "larry_knife" +#define COOLDOWN_CLOCK_WMCHIMES "clock_westminister" //circuit cooldowns diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm index 787e0f705c702..012085514f552 100644 --- a/code/__HELPERS/time.dm +++ b/code/__HELPERS/time.dm @@ -11,7 +11,7 @@ /proc/gameTimestamp(format = "hh:mm:ss", wtime=null) if(!wtime) wtime = world.time - return time2text(wtime, format, 0) + return time2text(wtime - GLOB.timezoneOffset, format) /// Returns the station time in deciseconds /proc/station_time(display_only = FALSE, wtime=world.time) @@ -19,7 +19,7 @@ /// Returns the station time in hh:mm:ss /proc/station_time_timestamp(format = "hh:mm:ss", wtime) - return time2text(station_time(TRUE, wtime), format, 0) + return time2text(station_time(TRUE, wtime), format) /proc/station_time_debug(force_set) if(isnum_safe(force_set)) diff --git a/code/_globalvars/time_vars.dm b/code/_globalvars/time_vars.dm new file mode 100644 index 0000000000000..cc830721145c0 --- /dev/null +++ b/code/_globalvars/time_vars.dm @@ -0,0 +1,6 @@ + +/// The difference betwen midnight (of the host computer) and 0 world.ticks. +GLOBAL_VAR_INIT(timezoneOffset, 0) + +GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) +GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? diff --git a/code/controllers/subsystem/processing/digital_clock.dm b/code/controllers/subsystem/processing/digital_clock.dm new file mode 100644 index 0000000000000..6981e785d1c3c --- /dev/null +++ b/code/controllers/subsystem/processing/digital_clock.dm @@ -0,0 +1,5 @@ +/// The subsystem used to tick digital clocks +PROCESSING_SUBSYSTEM_DEF(digital_clock) + name = "Digital Clocks" + flags = SS_NO_INIT|SS_BACKGROUND|SS_KEEP_TIMING + wait = 1 SECONDS diff --git a/code/game/machinery/digital_clock.dm b/code/game/machinery/digital_clock.dm new file mode 100644 index 0000000000000..8793d113cabd7 --- /dev/null +++ b/code/game/machinery/digital_clock.dm @@ -0,0 +1,181 @@ +/obj/machinery/digital_clock + name = "digital clock" + desc = "A next-gen normal digital clock that tells the local time. Do not mistake it with shift time!" + icon_state = "digital_clock_base" + icon = 'icons/obj/digital_clock.dmi' + verb_say = "beeps" + verb_ask = "bloops" + verb_exclaim = "blares" + max_integrity = 250 + obj_integrity = 250 + density = FALSE + layer = ABOVE_WINDOW_LAYER + var/station_minutes + var/station_hours + +/obj/item/wallframe/digital_clock + name = "digital clock frame" + desc = "Used to build digital clocks, just secure to the wall." + icon_state = "digital_clock" + icon = 'icons/obj/wallframe.dmi' + custom_materials = list(/datum/material/iron = 700, /datum/material/glass = 400) + result_path = /obj/machinery/digital_clock + pixel_shift = -28 + +/obj/machinery/digital_clock/wrench_act(mob/living/user, obj/item/tool) + . = ..() + if(user.a_intent == INTENT_HARM) + return + to_chat(user, "You start unsecuring [name]...") + tool.play_tool_sound(src) + if(tool.use_tool(src, user, 6 SECONDS)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, vary = TRUE) + to_chat(user, "You unsecure [name].") + deconstruct() + return ..() + +/obj/machinery/digital_clock/welder_act(mob/living/user, obj/item/tool) + . = ..() + if(user.a_intent == INTENT_HARM) + return + if(obj_integrity >= max_integrity) + balloon_alert(user, "it doesn't need repairs!") + return TRUE + to_chat(user, "You start to repair [name]...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 0, volume=50)) + return TRUE + to_chat(user, "You finish to repair [name]...") + obj_integrity = max_integrity + set_machine_stat(machine_stat & ~BROKEN) + update_appearance() + return TRUE + +/obj/machinery/digital_clock/multitool_act(mob/living/user, obj/item/tool) + . = ..() + if(user.a_intent == INTENT_HARM) + return + if(!(obj_flags & EMAGGED)) + return + to_chat(user, "You start resetting [name]...") + tool.play_tool_sound(src) + if(tool.use_tool(src, user, 6 SECONDS)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, vary = TRUE) + to_chat(user, "You finish to reset [name]...") + obj_flags &= ~EMAGGED + return TRUE + +/obj/machinery/digital_clock/on_emag(mob/user) + ..() + to_chat(user, "You short the clock's timer!") + playsound(src, "sparks", 100, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + do_sparks(3, cardinal_only = FALSE, source = src) + obj_flags |= EMAGGED + +/obj/machinery/digital_clock/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + if(disassembled) + new /obj/item/wallframe/digital_clock(loc) + else + new /obj/item/stack/sheet/iron(loc, 2) + new /obj/item/shard(loc) + new /obj/item/shard(loc) + qdel(src) + +/obj/machinery/digital_clock/Initialize(mapload) + . = ..() + START_PROCESSING(SSdigital_clock, src) + +/obj/machinery/digital_clock/Destroy() + STOP_PROCESSING(SSdigital_clock, src) + return ..() + +/obj/machinery/digital_clock/process() + if(machine_stat & NOPOWER) + return + update_time() + if((station_hours == 0 || station_hours == 12) && station_minutes == 0) + if(!TIMER_COOLDOWN_CHECK(src, COOLDOWN_CLOCK_WMCHIMES)) + playsound(src.loc, 'sound/machines/westminister_chimes.ogg', 75) + TIMER_COOLDOWN_START(src, COOLDOWN_CLOCK_WMCHIMES, 10 SECONDS) + update_appearance() + +/obj/machinery/digital_clock/update_appearance(updates=ALL) + . = ..() + if(machine_stat & (NOPOWER|BROKEN)) + set_light(0) + return + set_light(l_range = 1.5, l_power = 0.7, l_color = LIGHT_COLOR_BLUE) // blue light + +/obj/machinery/digital_clock/update_overlays() + . = ..() + if(machine_stat & (NOPOWER|BROKEN)) + return + . += update_time() + return . + +/obj/machinery/digital_clock/examine(mob/user) + . = ..() + var/live_time = station_time_timestamp(format = "hh:mm") + + if(obj_flags & EMAGGED) + . += "The time doesn't seem quite right!" + else + . += "The current station time is [live_time]." + +/obj/machinery/digital_clock/proc/update_time() + if(obj_flags & EMAGGED) + station_hours = rand(0, 99) + station_minutes = rand(0, 99) + else + station_hours = text2num(station_time_timestamp(format = "hh")) + station_minutes = text2num(station_time_timestamp(format = "mm")) + + // tenth / the '3' in '31' / 31 -> 3.1 -> 3 + var/station_minute_tenth = station_minutes >= 10 ? round(station_minutes * 0.1) : 0 + // one / the '1' in '31' / 31 -> 31 - (3 * 10) -> 31 - 30 -> 1 + var/station_minute_one = station_minutes - (station_minute_tenth * 10) + + // one / the '1' in '12' / 12 -> 1.2 -> 1 + var/station_hours_tenth = station_hours >= 10 ? round(station_hours * 0.1) : 0 + // tenth / the '2' in '12' / 12 -> 12 - (1 * 10) -> 12 - 10 -> 2 + var/station_hours_one = station_hours - (station_hours_tenth * 10) + + var/return_overlays = list() + + var/mutable_appearance/minute_one_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_minute_one]") + minute_one_overlay.pixel_w = 0 + return_overlays += minute_one_overlay + + var/mutable_appearance/minute_tenth_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_minute_tenth]") + minute_tenth_overlay.pixel_w = -4 + return_overlays += minute_tenth_overlay + + var/mutable_appearance/separator = mutable_appearance('icons/obj/digital_clock.dmi', "+separator") + return_overlays += separator + + var/mutable_appearance/hour_one_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_hours_one]") + hour_one_overlay.pixel_w = -10 + return_overlays += hour_one_overlay + + var/mutable_appearance/hour_tenth_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_hours_tenth]") + hour_tenth_overlay.pixel_w = -14 + return_overlays += hour_tenth_overlay + + return return_overlays + + +/obj/machinery/digital_clock/directional/north + dir = SOUTH + pixel_y = 28 + +/obj/machinery/digital_clock/directional/south + dir = NORTH + pixel_y = -28 + +/obj/machinery/digital_clock/directional/east + dir = WEST + pixel_x = 28 + +/obj/machinery/digital_clock/directional/west + dir = EAST + pixel_x = -28 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index c57158d222afb..d4fd5438d1c41 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1124,9 +1124,6 @@ to_chat(occupant, "[icon2html(src, occupant)] [message]") return -GLOBAL_VAR_INIT(year, time2text(world.realtime,"YYYY")) -GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? - /////////////////////// ///// Power stuff ///// /////////////////////// diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 303dda09e28f8..896eb2235dd57 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -1097,3 +1097,13 @@ materials = list(/datum/material/iron = 100, /datum/material/glass = 50) build_path = /obj/item/assembly/control category = list("initial","Misc") + +/datum/design/digital_clock_frame + name = "Digital Clock Frame" + id = "digital_clock_frame" + build_type = AUTOLATHE | PROTOLATHE + materials = list(/datum/material/iron = 700, /datum/material/glass = 400) + build_path = /obj/item/wallframe/digital_clock + category = list("initial", "Construction") + departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SERVICE + diff --git a/icons/obj/digital_clock.dmi b/icons/obj/digital_clock.dmi new file mode 100644 index 0000000000000000000000000000000000000000..39a9ed16a7ca13e0d00d254c0b065f3518d181e8 GIT binary patch literal 549 zcmV+=0^0qFP)fFDZ*Bkpc$|gN%L>9U5Czb6@)e<73euOag&S#+F6=Lq zv6(i5)kqTb_YD@@$?WcB&RtEaPR+UPRDEgX3!NwXP)Aj*Gb!GrgNdaqq%cU62}|(- z0>+qVnkc~B53?O^{S`bWQfP8M9&;&12X|cZZ?f|E1P8%7o@PABc~bDCSwwI8Jn?+F1w!$>n^?eERz ziV06J)$jztTAyIU6C|mEDTwyRJkOr&#?FO(OAew#*6=PUO+iVXU9{lTB4|O%&m3w& z#yi142@)-EUn0GObD;#k{)IYL+*ty#)GT-cQN>l7ZtK;JxnBgY190~P008JBw%(^G z3U}SweQkBKflGJ3k{r_YzBd}Lq?vvby%Ry|#vK3v004gm?RDQ~v)|Ksz?04XFWi}~ n_f8<*dBK>8Jaxc^00001bW%=J z06^y0W&i*Hu6k5hbVOxyV{&P5bZKvH004NLjnO?0!Y~X4;5j)()b5DCl?4@{4)h8r zq^7Y*6BN6I;}fXFhQjuq^yv+Dt@ejw+o|T%$_GTk;MGoT7fUG;_H2K1*{r3ofP>|^ z5Nn1UD}6VW6g@`DZ6(Du>JjGrHJ6Dw_#%TRqaP+D3$chjBr=-#4~jl36UHJ;+PM*9 z4CPJtJ_RLYV~e)O0a?4Valzbv=~^AS=JSCUD7sH!8 z6h=ux62hg>NQZQ$@ku_h1%%iFEJ63< z>Dk#?)r}6v1Czv7$=JWZ( z++snmCTk<$JNc0*SbX`qcvvi#qvaB=-@Y$Gg4nZ&EucexZ`xSbkRa|fWe-vOQIUze zA3#;daEDCt%V6Ho41H$YSs2r#0yf5UI(z)_IGca&ss8S_%#@Urlzp;pI{RAB9P3+6 zXFt~41D=9ft)_Uun`)~?_zGy%P~)82qbd-rlvSW_j&;v>5Gbo!uy2lZ&*RZ-!UA2_ zeGSPq+dhcVtp5Om9Yw3@tovH3Yq$v%t1(ZWo;n??ckXZ`Y%R#;a$$knb$%iNI0pbci?zR8 z@%)nR{EkQh{LO+jHnfQ@NPNp@LXQ}@*H1}FNyuN6cHz}(HVv=<0000V=-0C=2@(9H_MFc1XbbMh3Sy^DWWFVZ4C*msEO+AO3=$!?90Z?xb|;%x>#<}kH7 zx0kM0&9##ch=jqblR9p;QY0MM=5p9eVF5?WYa!MQIaYc$l@tR;%58rq#Xaf?*8DZM zg*o^lgD0aO7bFX@h&?1Sn)nZjJ}VQZB23!331bZ9P4~Wn60)(sY^~b9`F#2UX$oaS z6SmLU0008LNkl}7v6m-}a64!N{|ND_TmDb6?|A8k*$DXQX~*PB#fLONR>cT zl!8*g$a0b(T>?cEg<`QN6jfE0AVEmV1O;DkRVqOOj^B|kK_Jjd?^Hm*>OlbS#ia%B z%R;$KUTq&jV1W_}K7xWurNUG{MXBxy{ApOLL6a~lxY9lYJwSf~L13!;>Nx2ji{L($pY;=zO{BcDu$sS)j!UZn3}$1jh;LtzDO*>uk5^{`1%RNRYS}kp+0@m$rv{ zKN2MErsN??-YRlQ=K-qf8x}y5UkC9-GxfQ-a4~0T1!TVY0000< KMNUMnLSTZKx}@d+ diff --git a/sound/machines/westminister_chimes.ogg b/sound/machines/westminister_chimes.ogg new file mode 100644 index 0000000000000000000000000000000000000000..071b0086146496b973715c35cc5a9a6f44f0b195 GIT binary patch literal 298815 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

    );I(!E!ho3&l!E!xA3aAsZN{it?Of%cLUt<9NS? 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 LTCwK4Ab19b{a@c}Gm;9z;a7w3( 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

    pUapufROiSQu|$V?u*)d9`NFJFBzD3>r{ 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

    TkXZJ~W_11Tc98u@;XuKGiy$ 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 literal 0 HcmV?d00001 From 16d5a1d71d82900cba1db418e738c2f4939a60b8 Mon Sep 17 00:00:00 2001 From: DrDuckedGoose <40559528+DrDuckedGoose@users.noreply.github.com> Date: Wed, 8 May 2024 18:55:11 +1000 Subject: [PATCH 27/36] Fix player emissives and emissive filter compatibility (#10735) * initial * Revert "initial" This reverts commit fa87a2a1d3938f8bef201b7b22b650e790612c8f. * initial - 13 3 24 * Fix drunk mistake - 13 3 24 Canadian Club goes so fucking hard * Wrong ref - 13 3 24 * Update _glasses.dm * Update _glasses.dm * Update _glasses.dm --- code/datums/mutable_appearance.dm | 3 ++- code/modules/antagonists/cult/cult.dm | 2 +- code/modules/clothing/glasses/_glasses.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/living/carbon/human/species.dm | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/code/datums/mutable_appearance.dm b/code/datums/mutable_appearance.dm index f6e29ab02cf54..b194b34de7e99 100644 --- a/code/datums/mutable_appearance.dm +++ b/code/datums/mutable_appearance.dm @@ -26,11 +26,12 @@ /// Produces a mutable appearance glued to the [EMISSIVE_PLANE] dyed to be the [EMISSIVE_COLOR]. /// Setting the layer is highly important -/proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE) +/proc/emissive_appearance(icon, icon_state = "", layer = FLOAT_LAYER, alpha = 255, appearance_flags = NONE, filters) // We actually increase the layer ever so slightly so that emissives overpower blockers. // We do this because emissives and blockers can be applied to the same item and in that case // we do not want the item to block its own emissive overlay. var/mutable_appearance/appearance = mutable_appearance(icon, icon_state, layer + 0.01, EMISSIVE_PLANE, alpha, appearance_flags | EMISSIVE_APPEARANCE_FLAGS) + appearance.filters = filters var/list/found = GLOB.emissive_color[alpha+1] if (!found) found = GLOB.emissive_color[alpha+1] = list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,alpha/255, 1,1,1,0) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index 59b756e69f887..1153b94a20028 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -293,7 +293,7 @@ new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/effects/32x64.dmi', istate, CALCULATE_MOB_OVERLAY_LAYER(HALO_LAYER)) - new_halo_overlay.overlays.Add(emissive_appearance('icons/effects/32x64.dmi', istate, CALCULATE_MOB_OVERLAY_LAYER(HALO_LAYER), 160)) + new_halo_overlay.overlays.Add(emissive_appearance('icons/effects/32x64.dmi', istate, CALCULATE_MOB_OVERLAY_LAYER(HALO_LAYER), 160, filters = H.filters)) ADD_LUM_SOURCE(H, LUM_SOURCE_HOLY) H.overlays_standing[HALO_LAYER] = new_halo_overlay H.apply_overlay(HALO_LAYER) diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index 799def9787b81..69f7a30104d53 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -43,7 +43,7 @@ . = ..() // If we have an emissive state, add it to the worn icon too if (!isinhands && emissive_state) - . += emissive_appearance(icon_file, emissive_state, item_layer, 100) + . += emissive_appearance(icon_file, emissive_state, item_layer, 100, filters = origin.filters) ADD_LUM_SOURCE(origin, LUM_SOURCE_GLASSES) /obj/item/clothing/glasses/visor_toggling() diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 3a5104e107302..c63f3c4a8752a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -861,7 +861,7 @@ /mob/living/carbon/fakefire(var/fire_icon = "Generic_mob_burning") var/mutable_appearance/new_fire_overlay = mutable_appearance('icons/mob/OnFire.dmi', fire_icon, CALCULATE_MOB_OVERLAY_LAYER(FIRE_LAYER)) new_fire_overlay.appearance_flags = RESET_COLOR - new_fire_overlay.overlays.Add(emissive_appearance('icons/mob/OnFire.dmi', fire_icon, CALCULATE_MOB_OVERLAY_LAYER(FIRE_LAYER))) + new_fire_overlay.overlays.Add(emissive_appearance('icons/mob/OnFire.dmi', fire_icon, CALCULATE_MOB_OVERLAY_LAYER(FIRE_LAYER), filters = src.filters)) overlays_standing[FIRE_LAYER] = new_fire_overlay apply_overlay(FIRE_LAYER) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index acfb89c13b2f7..451a649a722ad 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1015,7 +1015,7 @@ GLOBAL_LIST_EMPTY(features_by_species) // Add on emissives, if they have one if (S.emissive_state) - accessory_overlay.overlays.Add(emissive_appearance(S.icon, S.emissive_state, CALCULATE_MOB_OVERLAY_LAYER(layer), S.emissive_alpha)) + accessory_overlay.overlays.Add(emissive_appearance(S.icon, S.emissive_state, CALCULATE_MOB_OVERLAY_LAYER(layer), S.emissive_alpha, filters = H.filters)) ADD_LUM_SOURCE(H, LUM_SOURCE_MUTANT_BODYPART) //A little rename so we don't have to use tail_lizard or tail_human when naming the sprites. From d2df0611c96eec4c7ae7c5badff6d9b75364d5b7 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 04:04:58 -0500 Subject: [PATCH 28/36] Automatic changelog generation for PR #10735 [ci skip] --- html/changelogs/AutoChangeLog-pr-10735.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10735.yml diff --git a/html/changelogs/AutoChangeLog-pr-10735.yml b/html/changelogs/AutoChangeLog-pr-10735.yml new file mode 100644 index 0000000000000..41416f50382f0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10735.yml @@ -0,0 +1,5 @@ +author: DrDuckedGoose +delete-after: true +changes: + - bugfix: Fix emissives on players + - tweak: Add filter compatibility to emissives From 9b9d43d8a996f611be42723e12cbe4221eae80db Mon Sep 17 00:00:00 2001 From: XeonMations <62395746+XeonMations@users.noreply.github.com> Date: Wed, 8 May 2024 11:56:59 +0300 Subject: [PATCH 29/36] Fix blood cultists being able to place structures on survival pods (#10925) * Update metals.dm * Update code/game/objects/items/stacks/sheets/mineral/metals.dm Co-authored-by: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com> --------- Co-authored-by: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com> --- code/game/objects/items/stacks/sheets/mineral/metals.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/items/stacks/sheets/mineral/metals.dm b/code/game/objects/items/stacks/sheets/mineral/metals.dm index 8da1116efe5a7..fb274d1fd2473 100644 --- a/code/game/objects/items/stacks/sheets/mineral/metals.dm +++ b/code/game/objects/items/stacks/sheets/mineral/metals.dm @@ -94,7 +94,7 @@ Metals Sheets return var/turf/T = get_turf(user) //we may have moved. adjust as needed... var/area/A = get_area(user) - if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !(A.area_flags & BLOBS_ALLOWED))) + if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !(A.area_flags & (BLOBS_ALLOWED | VALID_TERRITORY)))) to_chat(user, "The veil is not weak enough here.") return FALSE return ..() From fe81deaeb684d6fa87af45983eb4d1f48449376a Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 04:11:38 -0500 Subject: [PATCH 30/36] Automatic changelog generation for PR #10925 [ci skip] --- html/changelogs/AutoChangeLog-pr-10925.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10925.yml diff --git a/html/changelogs/AutoChangeLog-pr-10925.yml b/html/changelogs/AutoChangeLog-pr-10925.yml new file mode 100644 index 0000000000000..57ef0f48dd47e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10925.yml @@ -0,0 +1,4 @@ +author: XeonMations +delete-after: true +changes: + - bugfix: Fixed blood cultists being able to place structures on survival pods From 8c00d1949c0a19ae07347757600840aedd5d8b17 Mon Sep 17 00:00:00 2001 From: PowerfulBacon <26465327+PowerfulBacon@users.noreply.github.com> Date: Wed, 8 May 2024 10:40:35 +0100 Subject: [PATCH 31/36] Update species.dm (#10944) --- code/modules/mob/living/carbon/human/species.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 451a649a722ad..5a107d674b4b1 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -2057,7 +2057,7 @@ GLOBAL_LIST_EMPTY(features_by_species) // Apply some burn damage to the body if(humi.coretemperature < bodytemp_cold_damage_limit && !HAS_TRAIT(humi, TRAIT_RESISTCOLD)) switch(humi.coretemperature) - if(201 to bodytemp_cold_damage_limit) + if(201 to INFINITY) humi.apply_damage(COLD_DAMAGE_LEVEL_1 * coldmod * humi.physiology.cold_mod, BURN) if(120 to 200) humi.apply_damage(COLD_DAMAGE_LEVEL_2 * coldmod * humi.physiology.cold_mod, BURN) From 1bc1b60bde61b88b8f6604954a160e5ded56260b Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 04:40:59 -0500 Subject: [PATCH 32/36] Automatic changelog generation for PR #10944 [ci skip] --- html/changelogs/AutoChangeLog-pr-10944.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10944.yml diff --git a/html/changelogs/AutoChangeLog-pr-10944.yml b/html/changelogs/AutoChangeLog-pr-10944.yml new file mode 100644 index 0000000000000..12938a9003675 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10944.yml @@ -0,0 +1,4 @@ +author: PowerfulBacon +delete-after: true +changes: + - bugfix: Fixes 515 compilation issue regarding species cold temperature From 3721f4547dac71ddad923569c83069c070b64f6d Mon Sep 17 00:00:00 2001 From: EvilDragonfiend <87972842+EvilDragonfiend@users.noreply.github.com> Date: Wed, 8 May 2024 18:39:39 +0900 Subject: [PATCH 33/36] Fixes weather rendering very correctly (#10904) * Fixes weather code * Make var private * Better code * More comment and private_var * for loop optimisation * Verbose comment --- code/datums/weather/weather.dm | 114 ++++++++++++++---- code/game/area/areas.dm | 17 --- .../heretic/knowledge/void_lore.dm | 3 +- 3 files changed, 90 insertions(+), 44 deletions(-) diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 22c378658fa22..6c4397e7af0d2 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -24,7 +24,9 @@ var/area_type = /area/space //Types of area to affect var/protect_indoors = FALSE // set to TRUE to protect indoor areas - var/list/impacted_areas = list() //Areas to be affected by the weather, calculated when the weather begins + /// Areas to be affected by the weather, calculated when the weather begins. + /// * If you need to update this list outside of this datum, you might be doing wrong. use update_areas(new_list) + VAR_PRIVATE/list/impacted_areas = list() var/list/protected_areas = list()//Areas that are protected and excluded from the affected areas. var/impacted_z_levels // The list of z-levels that this weather is actively affecting @@ -33,7 +35,10 @@ var/aesthetic = FALSE //If the weather has no purpose other than looks var/immunity_type = "storm" //Used by mobs to prevent them from being affected by the weather - var/stage = END_STAGE //The stage of the weather, from 1-4 + /// The stage of the weather, from 1-4 + var/stage = END_STAGE + /// takes the same value as stage by update_areas(). Used to prevent overlay error. + VAR_PRIVATE/overlay_stage // These are read by the weather subsystem and used to determine when and where to run the weather. var/probability = 0 // Weight amongst other eligible weather. If zero, will never happen randomly. @@ -48,6 +53,7 @@ var/mutable_appearance/cached_weather_sprite_start var/mutable_appearance/cached_weather_sprite_process var/mutable_appearance/cached_weather_sprite_end + var/mutable_appearance/cached_current_overlay // a quick access variable /datum/weather/New(z_levels) ..() @@ -148,41 +154,99 @@ /datum/weather/proc/weather_act(mob/living/L) //What effect does this weather have on the hapless mob? return -/datum/weather/proc/update_areas() - var/previous_overlay - var/new_overlay +/// * [Func A] If list/newly_given_areas = null, It will update area overlays to new weather stage overlay. Typically called by this datum itself. +/// * [Func B] If list/newly_given_areas is given + overlay is not changed, it will apply overlays to new areas, and remove old areas. +/// * [Func C] If list/newly_given_areas is given + overlay stage is changed, it will remove old overlay from old areas, and apply new overlay to new areas. +/datum/weather/proc/update_areas(list/newly_given_areas = null) + if(overlay_stage == stage && isnull(newly_given_areas)) + CRASH("update_areas() is called again while weather overlay is already set (and list/newly_given_areas doesn't exist). stage:[stage] / overlay_stage:[overlay_stage]") + overlay_stage = stage + + var/new_overlay = null switch(stage) if(STARTUP_STAGE) if(cached_weather_sprite_start) new_overlay = cached_weather_sprite_start - previous_overlay = TRUE // temporary value. see below. if(MAIN_STAGE) - if(cached_weather_sprite_start) - previous_overlay = cached_weather_sprite_start if(cached_weather_sprite_process) new_overlay = cached_weather_sprite_process if(WIND_DOWN_STAGE) - if(cached_weather_sprite_process) - previous_overlay = cached_weather_sprite_process if(cached_weather_sprite_end) new_overlay = cached_weather_sprite_end - if(END_STAGE) - if(cached_weather_sprite_end) - previous_overlay = cached_weather_sprite_end - new_overlay = TRUE // temporary value. see below. + var/is_overlay_same = (cached_current_overlay == new_overlay) + if(is_overlay_same && isnull(newly_given_areas) && isnull(cached_current_overlay) && isnull(new_overlay)) // changing null? meaningless + return - // we won't iterate all areas unnecesarily - if(!previous_overlay && !new_overlay) + //! [Func A] Standard update_areas. This will typically do the weather overlay change. + if(isnull(newly_given_areas)) + if(is_overlay_same) // we don't have to iterate + return + + // ugly if conditions, but optimisation. We don't want to do if() checks in for loop + if(cached_current_overlay && new_overlay) + for(var/area/each_area as anything in impacted_areas) + each_area.cut_overlay(cached_current_overlay) + each_area.add_overlay(new_overlay) + else if(cached_current_overlay) + for(var/area/each_area as anything in impacted_areas) + each_area.cut_overlay(cached_current_overlay) + else if(new_overlay) + for(var/area/each_area as anything in impacted_areas) + each_area.add_overlay(new_overlay) + + cached_current_overlay = new_overlay // remembers previous one return - // removing TRUE value because we don't want typecheck every iteration from for loop - if(previous_overlay == TRUE) - previous_overlay = null - if(new_overlay == TRUE) - new_overlay = null + if(!islist(newly_given_areas)) + CRASH("lsit/newly_given_areas has been given, but it's not a list()") + + + // From after this line, It means list/newly_given_areas has a list to update + // This will remove old areas, and overlay from list/impacted_areas + // and add a new overlay to new areas + // And list/impacted_areas will be updated with the new list + + if(is_overlay_same) + //! [Func B] overlays are the same, but we have new areas. + // * Calculate list + // * Early return if there's no list to iterate + // * If old_areas_to_remove exists, cut_overlay() for those + // * If new_areas_to_add exists, add_overlay() for those + var/list/old_areas_to_remove + var/list/new_areas_to_add + if(length(newly_given_areas)) + old_areas_to_remove = impacted_areas - newly_given_areas + new_areas_to_add = newly_given_areas - impacted_areas + /* + impacted_areas = list(A, B, C, D) + newly_given_areas = list(C, D, E, F) + + old_areas_to_remove = list(A, B) // we want to remove already existing overlay from this + new_areas_to_add = list(E, F) // and add the existing overlay to this + */ + + if(!length(new_areas_to_add) && !length(old_areas_to_remove)) // nope + return + + if(cached_current_overlay) // do the change only overlay exists. If there's no overlay, we'll just save list/newly_given_areas + for(var/area/each_old_area as anything in old_areas_to_remove) + each_old_area.cut_overlay(cached_current_overlay) + for(var/area/each_new_area as anything in new_areas_to_add) + each_new_area.add_overlay(cached_current_overlay) + impacted_areas = newly_given_areas.Copy() // this is now our new team + // Note: "new_areas_to_add" is not correct to copy. We just needed to apply cached overlay to new areas. + return - for(var/area/each_area as anything in impacted_areas) - if(previous_overlay) - each_area.cut_overlay(previous_overlay) + else + //! [Func C] different overlays, but also we have new areas + // * Removing old overlays from impacted_areas + // * Adding new overlays to new areas + if(cached_current_overlay) + for(var/area/each_old_area as anything in impacted_areas) + each_old_area.cut_overlay(cached_current_overlay) if(new_overlay) - each_area.add_overlay(new_overlay) + for(var/area/each_new_area as anything in newly_given_areas) + each_new_area.add_overlay(new_overlay) + cached_current_overlay = new_overlay + impacted_areas = newly_given_areas.Copy() // this is now our new team + return diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index f0b60282d5b1f..4eca7edafc33b 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -475,29 +475,12 @@ GLOBAL_LIST_EMPTY(teleportlocs) for(var/obj/machinery/light/L in src) L.update(TRUE, TRUE, TRUE) -/** - * Update the icon state of the area - * - * Im not sure what the heck this does, somethign to do with weather being able to set icon - * states on areas?? where the heck would that even display? - */ -/area/update_icon_state() - var/weather_icon - for(var/V in SSweather.processing) - var/datum/weather/W = V - if(W.stage != END_STAGE && (src in W.impacted_areas)) - W.update_areas() - weather_icon = TRUE - if(!weather_icon) - icon_state = null - return ..() /** * Update the icon of the area (overridden to always be null for space */ /area/space/update_icon_state() SHOULD_CALL_PARENT(FALSE) icon_state = null - return ..() /** * Returns int 1 or 0 if the area has power for the given channel diff --git a/code/modules/antagonists/heretic/knowledge/void_lore.dm b/code/modules/antagonists/heretic/knowledge/void_lore.dm index 06c0852573795..e3ae1b7644442 100644 --- a/code/modules/antagonists/heretic/knowledge/void_lore.dm +++ b/code/modules/antagonists/heretic/knowledge/void_lore.dm @@ -297,8 +297,7 @@ storm.telegraph() storm.area_type = source_area.type - storm.impacted_areas = list(source_area) - storm.update_areas() + storm.update_areas(list(source_area)) /** * Signal proc for [COMSIG_MOB_DEATH]. From 561c55696e39549e148ae14d5574170b284fbb06 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 04:47:39 -0500 Subject: [PATCH 34/36] Automatic changelog generation for PR #10904 [ci skip] --- html/changelogs/AutoChangeLog-pr-10904.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10904.yml diff --git a/html/changelogs/AutoChangeLog-pr-10904.yml b/html/changelogs/AutoChangeLog-pr-10904.yml new file mode 100644 index 0000000000000..b5475c0584e16 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10904.yml @@ -0,0 +1,5 @@ +author: EvilDragonfiend +delete-after: true +changes: + - code_imp: Refactored weather code and fixed weather bad rendering issue. + - bugfix: Void Heretic no longer shows void weather where they don't stand on. From f9a13057b513ea3fa779118f02ef3a0f6c5dff21 Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Wed, 8 May 2024 10:03:29 +0000 Subject: [PATCH 35/36] Automatic changelog compile [ci skip] --- html/changelog.html | 32 ++++++++++++++++++++++ html/changelogs/.all_changelog.yml | 23 ++++++++++++++++ html/changelogs/AutoChangeLog-pr-10317.yml | 9 ------ html/changelogs/AutoChangeLog-pr-10637.yml | 4 --- html/changelogs/AutoChangeLog-pr-10689.yml | 4 --- html/changelogs/AutoChangeLog-pr-10694.yml | 5 ---- html/changelogs/AutoChangeLog-pr-10735.yml | 5 ---- html/changelogs/AutoChangeLog-pr-10904.yml | 5 ---- html/changelogs/AutoChangeLog-pr-10925.yml | 4 --- html/changelogs/AutoChangeLog-pr-10944.yml | 4 --- 10 files changed, 55 insertions(+), 40 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-10317.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-10637.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-10689.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-10694.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-10735.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-10904.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-10925.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-10944.yml diff --git a/html/changelog.html b/html/changelog.html index 88500175e6611..255cf88d7021a 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,38 @@ -->

    +

    08 May 2024

    +

    DrDuckedGoose updated:

    +
      +
    • Fix emissives on players
    • +
    • Add filter compatibility to emissives
    • +
    +

    EvilDragonfiend updated:

    +
      +
    • Improved textification of the language icon rendering in TGUI.
    • +
    • cleaned up religion code into multiple dm files
    • +
    • Refactored weather code and fixed weather bad rendering issue.
    • +
    • Void Heretic no longer shows void weather where they don't stand on.
    • +
    +

    PowerfulBacon updated:

    +
      +
    • Fixes 515 compilation issue regarding species cold temperature
    • +
    +

    XeonMations updated:

    +
      +
    • Fixed blood cultists being able to place structures on survival pods
    • +
    +

    rkz, coiax updated:

    +
      +
    • Refactors step_action to save us from a few thousand useless proccalls per shift
    • +
    +

    rkz, nightred, lemoninthedark updated:

    +
      +
    • refactored temperature stabilization in humans. Split human temperature into core temperature, which is affected by fevers & shivering symptoms and represents the overall temperature range, and Body Temperature which is what is directly affected by environmental factors and projectiles.
    • +
    • All species will now receive temperature HUD alerts before receiving damage.
    • +
    • recalculates burn damage based on overall temperature
    • +
    +

    07 May 2024

    EvilDragonfiend updated:

      diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 411a40df18990..50dd9923c5659 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -43124,3 +43124,26 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - balance: minor buff to telekinesis to use most interact() code. Unlikely to cause major change, just reducing duplicate code where TK would have its own proc for essentially doing the exact same thing +2024-05-08: + DrDuckedGoose: + - bugfix: Fix emissives on players + - tweak: Add filter compatibility to emissives + EvilDragonfiend: + - code_imp: Improved textification of the language icon rendering in TGUI. + - code_imp: cleaned up religion code into multiple dm files + - code_imp: Refactored weather code and fixed weather bad rendering issue. + - bugfix: Void Heretic no longer shows void weather where they don't stand on. + PowerfulBacon: + - bugfix: Fixes 515 compilation issue regarding species cold temperature + XeonMations: + - bugfix: Fixed blood cultists being able to place structures on survival pods + rkz, coiax: + - refactor: Refactors step_action to save us from a few thousand useless proccalls + per shift + rkz, nightred, lemoninthedark: + - refactor: refactored temperature stabilization in humans. Split human temperature + into core temperature, which is affected by fevers & shivering symptoms and + represents the overall temperature range, and Body Temperature which is what + is directly affected by environmental factors and projectiles. + - rscadd: All species will now receive temperature HUD alerts before receiving damage. + - balance: recalculates burn damage based on overall temperature diff --git a/html/changelogs/AutoChangeLog-pr-10317.yml b/html/changelogs/AutoChangeLog-pr-10317.yml deleted file mode 100644 index 254ffc80d828b..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10317.yml +++ /dev/null @@ -1,9 +0,0 @@ -author: rkz, nightred, lemoninthedark -delete-after: true -changes: - - refactor: refactored temperature stabilization in humans. Split human temperature - into core temperature, which is affected by fevers & shivering symptoms and - represents the overall temperature range, and Body Temperature which is what - is directly affected by environmental factors and projectiles. - - rscadd: All species will now receive temperature HUD alerts before receiving damage. - - balance: recalculates burn damage based on overall temperature diff --git a/html/changelogs/AutoChangeLog-pr-10637.yml b/html/changelogs/AutoChangeLog-pr-10637.yml deleted file mode 100644 index 476214924d857..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10637.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: EvilDragonfiend -delete-after: true -changes: - - code_imp: Improved textification of the language icon rendering in TGUI. diff --git a/html/changelogs/AutoChangeLog-pr-10689.yml b/html/changelogs/AutoChangeLog-pr-10689.yml deleted file mode 100644 index eb68063294b22..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10689.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: EvilDragonfiend -delete-after: true -changes: - - code_imp: cleaned up religion code into multiple dm files diff --git a/html/changelogs/AutoChangeLog-pr-10694.yml b/html/changelogs/AutoChangeLog-pr-10694.yml deleted file mode 100644 index 3d904a14e0ef9..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10694.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: rkz, coiax -delete-after: true -changes: - - refactor: Refactors step_action to save us from a few thousand useless proccalls - per shift diff --git a/html/changelogs/AutoChangeLog-pr-10735.yml b/html/changelogs/AutoChangeLog-pr-10735.yml deleted file mode 100644 index 41416f50382f0..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10735.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: DrDuckedGoose -delete-after: true -changes: - - bugfix: Fix emissives on players - - tweak: Add filter compatibility to emissives diff --git a/html/changelogs/AutoChangeLog-pr-10904.yml b/html/changelogs/AutoChangeLog-pr-10904.yml deleted file mode 100644 index b5475c0584e16..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10904.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: EvilDragonfiend -delete-after: true -changes: - - code_imp: Refactored weather code and fixed weather bad rendering issue. - - bugfix: Void Heretic no longer shows void weather where they don't stand on. diff --git a/html/changelogs/AutoChangeLog-pr-10925.yml b/html/changelogs/AutoChangeLog-pr-10925.yml deleted file mode 100644 index 57ef0f48dd47e..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10925.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: XeonMations -delete-after: true -changes: - - bugfix: Fixed blood cultists being able to place structures on survival pods diff --git a/html/changelogs/AutoChangeLog-pr-10944.yml b/html/changelogs/AutoChangeLog-pr-10944.yml deleted file mode 100644 index 12938a9003675..0000000000000 --- a/html/changelogs/AutoChangeLog-pr-10944.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: PowerfulBacon -delete-after: true -changes: - - bugfix: Fixes 515 compilation issue regarding species cold temperature From c486130f249532b71a195c31794e74b6b8678d0c Mon Sep 17 00:00:00 2001 From: ss13-beebot <56381746+ss13-beebot@users.noreply.github.com> Date: Thu, 9 May 2024 00:10:59 +0000 Subject: [PATCH 36/36] Automatic changelog compile [ci skip] --- html/changelog.html | 22 ---------------------- 1 file changed, 22 deletions(-) diff --git a/html/changelog.html b/html/changelog.html index 255cf88d7021a..cce76aba099ee 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -622,28 +622,6 @@

      contributors updated:

      • removes a lightswitch on fland
      - -

      07 March 2024

      -

      @BriggsIDP @DrDuckedGoose @HowToLoLu updated:

      -
        -
      • added a new subtype of the holodeck, a smaller 7x7 holodeck
      • -
      • 4 new shuttles: cargo_tiny, mining_tiny, arrival_tiny and evac_tiny
      • -
      • Edited bimo gen for surface fauna gen
      • -
      • lighting fixes for dynamic lighting thanks to dakae!
      • -
      • fixed some zlevel rendering issues
      • -
      • tweaked the mapGenerator files biome gen; pixel shifting placed objs
      • -
      • various turfs for planetary use
      • -
      • pool water code to beach/water, you have to climb in it!
      • -
      • made tesla quieter
      • -
      -

      MarkusLarsson421 updated:

      -
        -
      • Added a map sign for Echo Station able to display any of the four floors for mappers to guide players.
      • -
      -

      MatiAvanti updated:

      -
        -
      • Replace "Red Dead Redemption Two" and "Yanye Kest" with "Bonkers" and "John Nanotrasen"
      • -
    GoonStation 13 Development Team