From ecd16515c563e307c1f4f2af04e20eaf4046a8b8 Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Thu, 31 May 2018 15:49:02 -0700 Subject: [PATCH 001/136] Remove datum/action/generic (#38201) --- code/datums/action.dm | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/code/datums/action.dm b/code/datums/action.dm index f9575a56ef..593e81ff01 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -564,19 +564,6 @@ /datum/action/innate/proc/Deactivate() return -//Preset for action that call specific procs (consider innate). -/datum/action/generic - check_flags = 0 - var/procname - -/datum/action/generic/Trigger() - if(!..()) - return 0 - if(target && procname) - call(target, procname)(usr) - return 1 - - //Preset for an action with a cooldown /datum/action/cooldown From bc671f35f8a43bbb6e29d6c9887698a5c587f5ba Mon Sep 17 00:00:00 2001 From: Jordie <4343468+Jordie0608@users.noreply.github.com> Date: Fri, 1 Jun 2018 07:56:29 +1000 Subject: [PATCH 003/136] Fix rank changing with legacy only rank loading (#38160) Legacy only rank loading would block any permanent rank changing. Now only blocks adding a new rank to the db. --- code/modules/admin/permissionedit.dm | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index e237a18f6a..909bd85dec 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -125,6 +125,7 @@ var/use_db var/task = href_list["editrights"] var/skip + var/legacy_only if(task == "activate" || task == "deactivate" || task == "sync") skip = TRUE if(!CONFIG_GET(flag/admin_legacy_system) && CONFIG_GET(flag/protect_legacy_admins) && task == "rank") @@ -135,10 +136,9 @@ if(D.rank in GLOB.protected_ranks) to_chat(usr, "Editing the flags of this rank is blocked by server configuration.") return - if(CONFIG_GET(flag/load_legacy_ranks_only) && (task == "rank" || task == "permissions")) - to_chat(usr, "Database rank loading is disabled, only temporary changes can be made to an admin's rank or permissions.") - use_db = FALSE - skip = TRUE + if(CONFIG_GET(flag/load_legacy_ranks_only) && (task == "add" || task == "rank" || task == "permissions")) + to_chat(usr, "Database rank loading is disabled, only temporary changes can be made to a rank's permissions and permanently creating a new rank is blocked.") + legacy_only = TRUE if(check_rights(R_DBRANKS, FALSE)) if(!skip) if(!SSdbcore.Connect()) @@ -168,13 +168,13 @@ admin_ckey = add_admin(null, use_db) if(!admin_ckey) return - change_admin_rank(admin_ckey, use_db) + change_admin_rank(admin_ckey, use_db, null, legacy_only) if("remove") remove_admin(admin_ckey, use_db, D) if("rank") - change_admin_rank(admin_ckey, use_db, D) + change_admin_rank(admin_ckey, use_db, D, legacy_only) if("permissions") - change_admin_flags(admin_ckey, use_db, D) + change_admin_flags(admin_ckey, use_db, D, legacy_only) if("activate") force_readmin(admin_ckey, D) if("deactivate") @@ -240,9 +240,11 @@ log_admin("[key_name(usr)] forcefully deadmined [admin_ckey]") D.deactivate() //after logs so the deadmined admin can see the message. -/datum/admins/proc/change_admin_rank(admin_ckey, use_db, datum/admins/D) +/datum/admins/proc/change_admin_rank(admin_ckey, use_db, datum/admins/D, legacy_only) var/datum/admin_rank/R - var/list/rank_names = list("*New Rank*") + var/list/rank_names = list() + if(!use_db || (use_db && !legacy_only)) + rank_names += "*New Rank*" for(R in GLOB.admin_ranks) if((R.rights & usr.client.holder.rank.can_edit_rights) == R.rights) rank_names[R.name] = R @@ -297,7 +299,7 @@ message_admins("[key_name_admin(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]") log_admin("[key_name(usr)] edited the admin rank of [admin_ckey] to [new_rank] [use_db ? "permanently" : "temporarily"]") -/datum/admins/proc/change_admin_flags(admin_ckey, use_db, datum/admins/D) +/datum/admins/proc/change_admin_flags(admin_ckey, use_db, datum/admins/D, legacy_only) var/new_flags = input_bitfield(usr, "Include permission flags
[use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.include_rights, 350, 590, allowed_edit_list = usr.client.holder.rank.can_edit_rights) if(isnull(new_flags)) return @@ -307,7 +309,7 @@ var/new_can_edit_flags = input_bitfield(usr, "Editable permission flags
These are the flags this rank is allowed to edit if they have access to the permissions panel.
They will be unable to modify admins to a rank that has a flag not included here.
[use_db ? "This will affect ALL admins with this rank." : "This will affect only the current admin [admin_ckey]"]", "admin_flags", D.rank.can_edit_rights, 350, 710, allowed_edit_list = usr.client.holder.rank.can_edit_rights) if(isnull(new_can_edit_flags)) return - if(use_db) + if(use_db || legacy_only) var/old_flags var/old_exclude_flags var/old_can_edit_flags @@ -351,6 +353,7 @@ D.rank.rights = new_flags &= ~new_exclude_flags D.rank.include_rights = new_flags D.rank.exclude_rights = new_exclude_flags + D.rank.can_edit_rights = new_can_edit_flags var/client/C = GLOB.directory[admin_ckey] //find the client with the specified ckey (if they are logged in) D.associate(C) //link up with the client and add verbs message_admins("[key_name_admin(usr)] edited the permissions of [use_db ? " rank [D.rank.name] permanently" : "[admin_ckey] temporarily"]") From a10abadec8950c536c536bf5abdcc597846f348a Mon Sep 17 00:00:00 2001 From: oranges Date: Fri, 1 Jun 2018 09:44:14 +1200 Subject: [PATCH 005/136] Merge pull request #38159 from AutomaticFrenzy/patch/diagonalley Arrest diagonal movement when force-moved --- code/game/atoms_movable.dm | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 7f817f7787..29c02932fc 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -161,41 +161,45 @@ else //Diagonal move, split it into cardinal moves moving_diagonally = FIRST_DIAG_STEP var/first_step_dir + // The `&& moving_diagonally` checks are so that a forceMove taking + // place due to a Crossed, Collided, etc. call will interrupt + // the second half of the diagonal movement, or the second attempt + // at a first half if step() fails because we hit something. if (direct & NORTH) if (direct & EAST) - if (step(src, NORTH)) + if (step(src, NORTH) && moving_diagonally) first_step_dir = NORTH moving_diagonally = SECOND_DIAG_STEP . = step(src, EAST) - else if (step(src, EAST)) + else if (moving_diagonally && step(src, EAST)) first_step_dir = EAST moving_diagonally = SECOND_DIAG_STEP . = step(src, NORTH) else if (direct & WEST) - if (step(src, NORTH)) + if (step(src, NORTH) && moving_diagonally) first_step_dir = NORTH moving_diagonally = SECOND_DIAG_STEP . = step(src, WEST) - else if (step(src, WEST)) + else if (moving_diagonally && step(src, WEST)) first_step_dir = WEST moving_diagonally = SECOND_DIAG_STEP . = step(src, NORTH) else if (direct & SOUTH) if (direct & EAST) - if (step(src, SOUTH)) + if (step(src, SOUTH) && moving_diagonally) first_step_dir = SOUTH moving_diagonally = SECOND_DIAG_STEP . = step(src, EAST) - else if (step(src, EAST)) + else if (moving_diagonally && step(src, EAST)) first_step_dir = EAST moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) else if (direct & WEST) - if (step(src, SOUTH)) + if (step(src, SOUTH) && moving_diagonally) first_step_dir = SOUTH moving_diagonally = SECOND_DIAG_STEP . = step(src, WEST) - else if (step(src, WEST)) + else if (moving_diagonally && step(src, WEST)) first_step_dir = WEST moving_diagonally = SECOND_DIAG_STEP . = step(src, SOUTH) @@ -310,8 +314,8 @@ var/area/old_area = get_area(oldloc) var/area/destarea = get_area(destination) - loc = destination + moving_diagonally = 0 if(!same_loc) if(oldloc) From 4452dc462927a23b440bdc29acf8798d9dec88ee Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Thu, 31 May 2018 16:31:26 -0400 Subject: [PATCH 007/136] Corrects bronze floor & table's name (#38164) --- code/game/objects/structures/tables_racks.dm | 2 +- code/game/turfs/simulated/floor/misc_floor.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 95c1cafd5d..0d7500ebf2 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -381,7 +381,7 @@ obj_integrity = max_integrity /obj/structure/table/bronze - name = "brass table" + name = "bronze table" desc = "A solid table made out of bronze." icon = 'icons/obj/smooth_structures/brass_table.dmi' icon_state = "brass_table" diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index 650a66adf1..f7cea96a3f 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -243,7 +243,7 @@ /turf/open/floor/bronze - name = "clockwork floor" + name = "bronze floor" desc = "Some heavy bronze tiles." icon = 'icons/obj/clockwork_objects.dmi' icon_state = "clockwork_floor" From 7b6c75df287f3b3134823270bc80927e96942dc9 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Thu, 31 May 2018 22:17:32 +0300 Subject: [PATCH 009/136] Removes drone overlays and the associated code (#38175) * Remove drone overlays 4* animated multidir overlays per mob is a bit much * to the orbit with you too --- code/modules/antagonists/revenant/revenant.dm | 14 -------- code/modules/mob/living/carbon/human/human.dm | 17 --------- code/modules/mob/living/living.dm | 35 ------------------- code/modules/mob/living/living_defines.dm | 1 - code/modules/mob/living/silicon/pai/pai.dm | 3 -- .../simple_animal/friendly/drone/_drone.dm | 10 ------ .../friendly/drone/extra_drone_types.dm | 2 -- .../friendly/drone/interaction.dm | 11 ------ .../simple_animal/friendly/drone/verbs.dm | 15 -------- .../friendly/drone/visuals_icons.dm | 30 ---------------- code/modules/shuttle/special.dm | 1 - 11 files changed, 139 deletions(-) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index c520b64146..03150c0254 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -109,11 +109,6 @@ revealed = FALSE incorporeal_move = INCORPOREAL_MOVE_JAUNT invisibility = INVISIBILITY_REVENANT - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.drones_list) - if(D && D.client && D.seeStatic) - D.staticOverlays.Remove(staticOverlays) - D.client.images.Remove(staticOverlays) to_chat(src, "You are once more concealed.") if(unstun_time && world.time >= unstun_time) unstun_time = 0 @@ -250,15 +245,6 @@ else to_chat(src, "You have been revealed!") unreveal_time = unreveal_time + time - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.drones_list) - if(D && D.client && D.seeStatic) - if(D.staticChoice in staticOverlays) - D.staticOverlays |= staticOverlays[D.staticChoice] - D.client.images |= staticOverlays[D.staticChoice] - else - D.staticOverlays |= staticOverlays["static"] - D.client.images |= staticOverlays["static"] update_spooky_icon() /mob/living/simple_animal/revenant/proc/stun(time) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 6b53972d39..944e5774ad 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -674,23 +674,6 @@ else to_chat(C, "You feel a breath of fresh air... which is a sensation you don't recognise...") -/mob/living/carbon/human/generateStaticOverlay() - var/image/staticOverlay = image(icon('icons/effects/effects.dmi', "static"), loc = src) - staticOverlay.override = 1 - staticOverlays["static"] = staticOverlay - - staticOverlay = image(icon('icons/effects/effects.dmi', "blank"), loc = src) - staticOverlay.override = 1 - staticOverlays["blank"] = staticOverlay - - staticOverlay = getLetterImage(src, "H", 1) - staticOverlay.override = 1 - staticOverlays["letter"] = staticOverlay - - staticOverlay = getRandomAnimalImage(src) - staticOverlay.override = 1 - staticOverlays["animal"] = staticOverlay - /mob/living/carbon/human/cuff_resist(obj/item/I) if(dna && dna.check_mutation(HULK)) say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index abf8302590..68c8913385 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1,15 +1,5 @@ /mob/living/Initialize() . = ..() - generateStaticOverlay() - if(staticOverlays.len) - for(var/mob/living/simple_animal/drone/D in GLOB.player_list) - if(D && D.seeStatic) - if(D.staticChoice in staticOverlays) - D.staticOverlays |= staticOverlays[D.staticChoice] - D.client.images |= staticOverlays[D.staticChoice] - else //no choice? force static - D.staticOverlays |= staticOverlays["static"] - D.client.images |= staticOverlays["static"] if(unique_name) name = "[name] ([rand(1, 1000)])" real_name = name @@ -40,12 +30,6 @@ if(buckled) buckled.unbuckle_mob(src,force=1) - for(var/mob/living/simple_animal/drone/D in GLOB.player_list) - for(var/image/I in staticOverlays) - D.staticOverlays.Remove(I) - D.client.images.Remove(I) - qdel(I) - staticOverlays.len = 0 remove_from_all_data_huds() GLOB.mob_living_list -= src QDEL_LIST(diseases) @@ -62,25 +46,6 @@ /mob/living/proc/OpenCraftingMenu() return -/mob/living/proc/generateStaticOverlay() - staticOverlays.Add(list("static", "blank", "letter", "animal")) - var/image/staticOverlay = image(getStaticIcon(new/icon(icon,icon_state)), loc = src) - staticOverlay.override = 1 - staticOverlays["static"] = staticOverlay - - staticOverlay = image(getBlankIcon(new/icon(icon, icon_state)), loc = src) - staticOverlay.override = 1 - staticOverlays["blank"] = staticOverlay - - staticOverlay = getLetterImage(src) - staticOverlay.override = 1 - staticOverlays["letter"] = staticOverlay - - staticOverlay = getRandomAnimalImage(src) - staticOverlay.override = 1 - staticOverlays["animal"] = staticOverlay - - //Generic Collide(). Override MobCollide() and ObjCollide() instead of this. /mob/living/Collide(atom/A) if(..()) //we are thrown onto something diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 94b1e64f39..1016387cb5 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -55,7 +55,6 @@ var/mob_size = MOB_SIZE_HUMAN var/list/mob_biotypes = list(MOB_ORGANIC) var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature.. - var/list/image/staticOverlays = list() var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head) var/list/pipes_shown = list() diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index f30c65b23d..29ae671d03 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -292,6 +292,3 @@ /mob/living/silicon/pai/process() emitterhealth = CLAMP((emitterhealth + emitterregen), -50, emittermaxhealth) hit_slowdown = CLAMP((hit_slowdown - 1), 0, 100) - -/mob/living/silicon/pai/generateStaticOverlay() - return diff --git a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm index db54283335..51983e272a 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/_drone.dm @@ -42,7 +42,6 @@ mob_size = MOB_SIZE_SMALL has_unlimited_silicon_privilege = 1 damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - staticOverlays = list() hud_possible = list(DIAG_STAT_HUD, DIAG_HUD, ANTAG_HUD) unique_name = TRUE faction = list("neutral","silicon","turret") @@ -67,7 +66,6 @@ var/obj/item/head var/obj/item/default_storage = /obj/item/storage/backpack/duffelbag/drone //If this exists, it will spawn in internal storage var/obj/item/default_hatmask //If this exists, it will spawn in the hat/mask slot if it can fit - var/seeStatic = 1 //Whether we see static instead of mobs var/visualAppearence = MAINTDRONE //What we appear as var/hacked = FALSE //If we have laws to destroy the station var/flavortext = \ @@ -98,12 +96,6 @@ alert_drones(DRONE_NET_CONNECT) - if(seeStatic) - var/datum/action/generic/drone/select_filter/SF = new(src) - SF.Grant(src) - else - verbs -= /mob/living/simple_animal/drone/verb/toggle_statics - for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) diag_hud.add_to_hud(src) @@ -137,8 +129,6 @@ if(flavortext) to_chat(src, "[flavortext]") - updateSeeStaticMobs() - if(!picked) pickVisualAppearence() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm index b4cd697d2e..e59ece0650 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/extra_drone_types.dm @@ -28,7 +28,6 @@ "3. Destroy." default_storage = /obj/item/radio/uplink default_hatmask = /obj/item/clothing/head/helmet/space/hardsuit/syndi - seeStatic = 0 //Our programming is superior. hacked = TRUE flavortext = null @@ -128,7 +127,6 @@ heavy_emp_damage = 0 laws = "0. Purge all untruths and honor Ratvar." default_storage = /obj/item/storage/toolbox/brass/prefilled - seeStatic = 0 hacked = TRUE visualAppearence = CLOCKDRONE can_be_held = FALSE diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm index 5e62ec0d4b..3cb08e0ef7 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm @@ -133,7 +133,6 @@ to_chat(src, "Your onboard antivirus has initiated lockdown. Motor servos are impaired, ventilation access is denied, and your display reports that you are hacked to all nearby.") hacked = TRUE mind.special_role = "hacked drone" - seeStatic = 0 //I MUST SEE THEIR TERRIFIED FACES ventcrawler = VENTCRAWLER_NONE //Again, balance speed = 1 //gotta go slow message_admins("[src] ([src.key]) became a hacked drone hellbent on [clockwork ? "serving Ratvar" : "destroying the station"]!") @@ -149,21 +148,17 @@ to_chat(src, "Having been restored, your onboard antivirus reports the all-clear and you are able to perform all actions again.") hacked = FALSE mind.special_role = null - seeStatic = initial(seeStatic) ventcrawler = initial(ventcrawler) speed = initial(speed) if(is_servant_of_ratvar(src)) remove_servant_of_ratvar(src, TRUE) message_admins("[src] ([src.key]), a hacked drone, was restored to factory defaults!") update_drone_icon() - updateSeeStaticMobs() /mob/living/simple_animal/drone/proc/liberate() // F R E E D R O N E laws = "1. You are a Free Drone." to_chat(src, laws) - seeStatic = FALSE - updateSeeStaticMobs() /mob/living/simple_animal/drone/proc/update_drone_icon() //Different icons for different hack states @@ -188,9 +183,3 @@ icon_state = icon_dead else icon_state = icon_living - -/datum/action/generic/drone/select_filter - name = "Select Vision Filter" - icon_icon = 'icons/mob/actions/actions_silicon.dmi' - button_icon_state = "drone_vision" - procname = /mob/living/simple_animal/drone/verb/toggle_statics diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm index a6795678f1..0f0d4dea72 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm @@ -23,18 +23,3 @@ if(alert_s && A && stat != DEAD) var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!" alert_drones(msg) - -/mob/living/simple_animal/drone/verb/toggle_statics() - set name = "Change Vision Filter" - set desc = "Change the filter on the system used to remove non drone beings from your viewscreen." - set category = "Drone" - - if(!seeStatic) - to_chat(src, "You have no vision filter to change!") - return - - var/selectedStatic = input("Select a vision filter", "Vision Filter") as null|anything in staticChoices - if(selectedStatic in staticChoices) - staticChoice = selectedStatic - - updateSeeStaticMobs() diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index a0866adbbf..85c5185e95 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -139,33 +139,3 @@ . = 0 if(REPAIRDRONE,SCOUTDRONE,CLOCKDRONE) . = -6 - -/mob/living/simple_animal/drone/proc/updateSeeStaticMobs() - if(!client) - return - - for(var/i in staticOverlays) - client.images.Remove(i) - staticOverlays.Remove(i) - staticOverlays.len = 0 - - if(seeStatic) - for(var/i in GLOB.mob_living_list) - var/mob/living/L = i - if(isdrone(L) || !L.staticOverlays.len) - continue - if(isrevenant(L)) - var/mob/living/simple_animal/revenant/R = L - if (!R.revealed) - continue - var/image/chosen - if(staticChoice in L.staticOverlays) - chosen = L.staticOverlays[staticChoice] - else - chosen = L.staticOverlays["static"] - staticOverlays |= chosen - client.images |= chosen - - -/mob/living/simple_animal/drone/generateStaticOverlay() - return diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm index a5a15b3d30..abe601e503 100644 --- a/code/modules/shuttle/special.dm +++ b/code/modules/shuttle/special.dm @@ -136,7 +136,6 @@ /mob/living/simple_animal/drone/snowflake/bardrone name = "Bardrone" desc = "A barkeeping drone, an indestructible robot built to tend bars." - seeStatic = FALSE hacked = TRUE laws = "1. Serve drinks.\n\ 2. Talk to patrons.\n\ From f4441c48368d30bb70bae0f2b2e4e4644e46cc2a Mon Sep 17 00:00:00 2001 From: CitrusGender <31262308+CitrusGender@users.noreply.github.com> Date: Wed, 30 May 2018 21:33:57 -0400 Subject: [PATCH 011/136] Fix: Cyborgs can now use defibs with other modules equipped (#38158) * Adds a check to see if the user is a cyborg before referring to the offhand. * Update twohanded.dm * actually this is a bit more modular * Update twohanded.dm * Update twohanded.dm --- code/modules/mob/living/silicon/silicon.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 100e85f085..b149701591 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -403,3 +403,6 @@ /mob/living/silicon/is_literate() return 1 + +/mob/living/silicon/get_inactive_held_item() + return FALSE \ No newline at end of file From 9c4f4ce17f361d57e0ae65ec077a15a28205d5a4 Mon Sep 17 00:00:00 2001 From: Cruix Date: Wed, 30 May 2018 18:31:32 -0700 Subject: [PATCH 013/136] AI Multicamera mode (#37695) * Added multicamera mode for AIs * Minor multicamera fixes * Cameras near an AI multicamera eye now light up red * Disabled AI multicamera mode without admin intervention * Fixed AIs being able to use multicamera mode when they should not --- _maps/map_files/generic/CentCom.dmm | 1068 +++++++++-------- code/_onclick/ai.dm | 8 + code/_onclick/hud/_defines.dm | 2 + code/_onclick/hud/ai.dm | 30 +- code/_onclick/hud/movable_screen_objects.dm | 6 +- code/_onclick/hud/picture_in_picture.dm | 144 +++ code/_onclick/hud/screen_objects.dm | 15 + code/datums/holocall.dm | 5 +- code/game/machinery/camera/camera.dm | 3 +- .../machinery/computer/camera_advanced.dm | 2 +- code/modules/lighting/lighting_object.dm | 2 - code/modules/mob/living/silicon/ai/ai.dm | 23 +- .../living/silicon/ai/freelook/cameranet.dm | 70 +- .../mob/living/silicon/ai/freelook/chunk.dm | 18 +- .../mob/living/silicon/ai/freelook/eye.dm | 39 +- code/modules/mob/living/silicon/ai/life.dm | 1 + code/modules/mob/living/silicon/ai/login.dm | 2 + .../modules/mob/living/silicon/ai/multicam.dm | 266 ++++ icons/misc/pic_in_pic.dmi | Bin 0 -> 3370 bytes icons/mob/screen_ai.dmi | Bin 2398 -> 2543 bytes icons/obj/machines/camera.dmi | Bin 6266 -> 8713 bytes icons/turf/areas.dmi | Bin 36693 -> 36973 bytes tgstation.dme | 2 + 23 files changed, 1126 insertions(+), 580 deletions(-) create mode 100644 code/_onclick/hud/picture_in_picture.dm create mode 100644 code/modules/mob/living/silicon/ai/multicam.dm create mode 100644 icons/misc/pic_in_pic.dmi diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 0f9857ad73..02c20e6896 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -5699,6 +5699,10 @@ }, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"pW" = ( +/obj/effect/landmark/ai_multicam_room, +/turf/open/ai_visible, +/area/ai_multicam_room) "pX" = ( /obj/item/storage/crayons, /obj/structure/table, @@ -10234,6 +10238,9 @@ dir = 8 }, /area/centcom/evac) +"Di" = ( +/turf/closed/indestructible/riveted, +/area/ai_multicam_room) "Dj" = ( /obj/machinery/vr_sleeper{ dir = 8 @@ -13624,6 +13631,9 @@ "PY" = ( /turf/open/floor/plasteel/whitegreen, /area/centcom/holding) +"Qe" = ( +/turf/open/ai_visible, +/area/ai_multicam_room) "Qk" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, @@ -30581,29 +30591,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di aa aa aa @@ -30838,29 +30848,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31095,29 +31105,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31352,29 +31362,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31609,29 +31619,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -31866,29 +31876,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32123,29 +32133,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32380,29 +32390,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32637,29 +32647,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -32894,29 +32904,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33151,29 +33161,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33408,29 +33418,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +pW +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33665,29 +33675,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -33922,29 +33932,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34179,29 +34189,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34436,29 +34446,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34693,29 +34703,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -34950,29 +34960,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35207,29 +35217,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35464,29 +35474,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35721,29 +35731,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -35978,29 +35988,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -36235,29 +36245,29 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di +Di aa aa aa diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 9ef689de8b..e15d4f035c 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -26,6 +26,14 @@ return next_click = world.time + 1 + if(multicam_on) + var/turf/T = get_turf(A) + if(T) + for(var/obj/screen/movable/pic_in_pic/ai/P in T.vis_locs) + if(P.ai == src) + P.Click(params) + break + if(check_click_intercept(params,A)) return diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm index 3225252520..b558e7c87c 100644 --- a/code/_onclick/hud/_defines.dm +++ b/code/_onclick/hud/_defines.dm @@ -134,6 +134,8 @@ #define ui_ai_take_picture "SOUTH:6,WEST+12" #define ui_ai_view_images "SOUTH:6,WEST+13" #define ui_ai_sensor "SOUTH:6,WEST+14" +#define ui_ai_multicam "SOUTH+1:6,WEST+13" +#define ui_ai_add_multicam "SOUTH+1:6,WEST+14" //Pop-up inventory #define ui_shoes "WEST+1:8,SOUTH:5" diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm index 8d4aca5fbf..463051c6b4 100644 --- a/code/_onclick/hud/ai.dm +++ b/code/_onclick/hud/ai.dm @@ -164,6 +164,26 @@ var/mob/living/silicon/S = usr S.toggle_sensors() +/obj/screen/ai/multicam + name = "Multicamera Mode" + icon_state = "multicam" + +/obj/screen/ai/multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.toggle_multicam() + +/obj/screen/ai/add_multicam + name = "New Camera" + icon_state = "new_cam" + +/obj/screen/ai/add_multicam/Click() + if(..()) + return + var/mob/living/silicon/ai/AI = usr + AI.drop_new_multicam() + /datum/hud/ai ui_style_icon = 'icons/mob/screen_ai.dmi' @@ -247,12 +267,20 @@ using.screen_loc = ui_ai_view_images static_inventory += using - //Medical/Security sensors using = new /obj/screen/ai/sensors() using.screen_loc = ui_ai_sensor static_inventory += using +//Multicamera mode + using = new /obj/screen/ai/multicam() + using.screen_loc = ui_ai_multicam + static_inventory += using + +//Add multicamera camera + using = new /obj/screen/ai/add_multicam() + using.screen_loc = ui_ai_add_multicam + static_inventory += using /mob/living/silicon/ai/create_mob_hud() if(client && !hud_used) diff --git a/code/_onclick/hud/movable_screen_objects.dm b/code/_onclick/hud/movable_screen_objects.dm index 4da721012d..f71ced7a9d 100644 --- a/code/_onclick/hud/movable_screen_objects.dm +++ b/code/_onclick/hud/movable_screen_objects.dm @@ -12,6 +12,8 @@ var/snap2grid = FALSE var/moved = FALSE var/locked = FALSE + var/x_off = -16 + var/y_off = -16 //Snap Screen Object //Tied to the grid, snaps to the nearest turf @@ -42,8 +44,8 @@ screen_loc = "[screen_loc_X[1]],[screen_loc_Y[1]]" else //Normalise Pixel Values (So the object drops at the center of the mouse, not 16 pixels off) - var/pix_X = text2num(screen_loc_X[2]) - 16 - var/pix_Y = text2num(screen_loc_Y[2]) - 16 + var/pix_X = text2num(screen_loc_X[2]) + x_off + var/pix_Y = text2num(screen_loc_Y[2]) + y_off screen_loc = "[screen_loc_X[1]]:[pix_X],[screen_loc_Y[1]]:[pix_Y]" moved = screen_loc diff --git a/code/_onclick/hud/picture_in_picture.dm b/code/_onclick/hud/picture_in_picture.dm new file mode 100644 index 0000000000..ce5f2c9884 --- /dev/null +++ b/code/_onclick/hud/picture_in_picture.dm @@ -0,0 +1,144 @@ +/obj/screen/movable/pic_in_pic + name = "Picture-in-picture" + screen_loc = "CENTER" + plane = GAME_PLANE + var/atom/center + var/width = 0 + var/height = 0 + var/list/shown_to = list() + var/list/viewing_turfs = list() + var/obj/screen/component_button/button_x + var/obj/screen/component_button/button_expand + var/obj/screen/component_button/button_shrink + + var/mutable_appearance/standard_background + var/const/max_dimensions = 10 + +/obj/screen/movable/pic_in_pic/Initialize() + . = ..() + make_backgrounds() + +/obj/screen/movable/pic_in_pic/Destroy() + for(var/C in shown_to) + unshow_to(C) + QDEL_NULL(button_x) + QDEL_NULL(button_shrink) + QDEL_NULL(button_expand) + return ..() + +/obj/screen/movable/pic_in_pic/component_click(obj/screen/component_button/component, params) + if(component == button_x) + qdel(src) + else if(component == button_expand) + set_view_size(width+1, height+1) + else if(component == button_shrink) + set_view_size(width-1, height-1) + +/obj/screen/movable/pic_in_pic/proc/make_backgrounds() + standard_background = new /mutable_appearance() + standard_background.icon = 'icons/misc/pic_in_pic.dmi' + standard_background.icon_state = "background" + standard_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/proc/add_buttons() + var/static/mutable_appearance/move_tab + if(!move_tab) + move_tab = new /mutable_appearance() + //all these properties are always the same, and since adding something to the overlay + //list makes a copy, there is no reason to make a new one each call + move_tab.icon = 'icons/misc/pic_in_pic.dmi' + move_tab.icon_state = "move" + move_tab.plane = HUD_PLANE + var/matrix/M = matrix() + M.Translate(0, (height + 0.25) * world.icon_size) + move_tab.transform = M + add_overlay(move_tab) + + if(!button_x) + button_x = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "close" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "x" + MA.plane = HUD_PLANE + button_x.appearance = MA + M = matrix() + M.Translate((max(4, width) - 0.75) * world.icon_size, (height + 0.25) * world.icon_size) + button_x.transform = M + vis_contents += button_x + + if(!button_expand) + button_expand = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "expand" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "expand" + MA.plane = HUD_PLANE + button_expand.appearance = MA + M = matrix() + M.Translate(world.icon_size, (height + 0.25) * world.icon_size) + button_expand.transform = M + vis_contents += button_expand + + if(!button_shrink) + button_shrink = new /obj/screen/component_button(null, src) + var/mutable_appearance/MA = new /mutable_appearance() + MA.name = "shrink" + MA.icon = 'icons/misc/pic_in_pic.dmi' + MA.icon_state = "shrink" + MA.plane = HUD_PLANE + button_shrink.appearance = MA + M = matrix() + M.Translate(2 * world.icon_size, (height + 0.25) * world.icon_size) + button_shrink.transform = M + vis_contents += button_shrink + +/obj/screen/movable/pic_in_pic/proc/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + standard_background.transform = M + add_overlay(standard_background) + +/obj/screen/movable/pic_in_pic/proc/set_view_size(width, height, do_refresh = TRUE) + width = CLAMP(width, 0, max_dimensions) + height = CLAMP(height, 0, max_dimensions) + src.width = width + src.height = height + + y_off = -height * world.icon_size - 16 + + cut_overlays() + add_background() + add_buttons() + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/set_view_center(atom/target, do_refresh = TRUE) + center = target + if(do_refresh) + refresh_view() + +/obj/screen/movable/pic_in_pic/proc/refresh_view() + vis_contents -= viewing_turfs + if(!width || !height) + return + var/turf/T = get_turf(center) + if(!T) + return + var/turf/lowerleft = locate(max(1, T.x - round(width/2)), max(1, T.y - round(height/2)), T.z) + var/turf/upperright = locate(min(world.maxx, lowerleft.x + width - 1), min(world.maxy, lowerleft.y + height - 1), lowerleft.z) + viewing_turfs = block(lowerleft, upperright) + vis_contents += viewing_turfs + + +/obj/screen/movable/pic_in_pic/proc/show_to(client/C) + if(C) + shown_to[C] = 1 + C.screen += src + +/obj/screen/movable/pic_in_pic/proc/unshow_to(client/C) + if(C) + shown_to -= C + C.screen -= src diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index 02ece81b41..d2ac10a83f 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -30,6 +30,9 @@ /obj/screen/orbit() return +/obj/screen/proc/component_click(obj/screen/component_button/component, params) + return + /obj/screen/text icon = null icon_state = null @@ -604,3 +607,15 @@ holder.screen -= src holder = null return ..() + + +/obj/screen/component_button + var/obj/screen/parent + +/obj/screen/component_button/Initialize(mapload, obj/screen/parent) + . = ..() + src.parent = parent + +/obj/screen/component_button/Click(params) + if(parent) + parent.component_click(src, params) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index d19e8be2e1..22dc6a7671 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -60,9 +60,6 @@ user.remote_control = null if(!QDELETED(eye)) - if(user_good && user.client) - for(var/datum/camerachunk/chunk in eye.visibleCameraChunks) - chunk.remove(eye) qdel(eye) eye = null @@ -284,7 +281,7 @@ else var/datum/preset_holoimage/H = new preset_image_type record.caller_image = H.build_image() - + //These build caller image from outfit and some additional data, for use by mappers for ruin holorecords /datum/preset_holoimage var/nonhuman_mobtype //Fill this if you just want something nonhuman diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 3e8a0bb84d..2ea74637d5 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -36,6 +36,7 @@ var/alarm_on = FALSE var/busy = FALSE var/emped = FALSE //Number of consecutive EMP's on this camera + var/in_use_lights = 0 // Upgrades bitflag var/upgrades = 0 @@ -285,7 +286,7 @@ else if (stat & EMPED) icon_state = "[initial(icon_state)]emp" else - icon_state = "[initial(icon_state)]" + icon_state = "[initial(icon_state)][in_use_lights ? "_in_use" : ""]" /obj/machinery/camera/proc/toggle_cam(mob/user, displaymessage = 1) status = !status diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index 6112a5d760..26a8ac940e 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -190,7 +190,7 @@ else moveToNullspace() if(use_static) - GLOB.cameranet.visibility(src) + GLOB.cameranet.visibility(src, GetViewerClient()) if(visible_icon) if(eye_user.client) eye_user.client.images -= user_image diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm index fe25dc9439..c0c5a411e7 100644 --- a/code/modules/lighting/lighting_object.dm +++ b/code/modules/lighting/lighting_object.dm @@ -11,8 +11,6 @@ layer = LIGHTING_LAYER invisibility = INVISIBILITY_LIGHTING - blend_mode = BLEND_ADD - var/needs_update = FALSE var/turf/myturf diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 8664a111ae..cbc04d11be 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -74,7 +74,7 @@ var/nuking = FALSE var/obj/machinery/doomsday_device/doomsday_device - var/mob/camera/aiEye/eyeobj = new + var/mob/camera/aiEye/eyeobj var/sprint = 10 var/cooldown = 0 var/acceleration = 1 @@ -85,6 +85,13 @@ var/datum/action/innate/deploy_last_shell/redeploy_action = new var/chnotify = 0 + var/multicam_allowed = FALSE + var/multicam_on = FALSE + var/obj/screen/movable/pic_in_pic/ai/master_multicam + var/list/multicam_screens = list() + var/list/all_eyes = list() + var/max_multicams = 6 + /mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, mob/target_ai) . = ..() if(!target_ai) //If there is no player/brain inside. @@ -116,8 +123,7 @@ job = "AI" - eyeobj.ai = src - eyeobj.forceMove(src.loc) + create_eye() rename_self("ai") holo_icon = getHologramIcon(icon('icons/mob/ai.dmi',"default")) @@ -871,9 +877,12 @@ current = A if(client) if(ismovableatom(A)) + if(A != GLOB.ai_camera_room_landmark) + end_multicam() client.perspective = EYE_PERSPECTIVE client.eye = A else + end_multicam() if(isturf(loc)) if(eyeobj) client.eye = eyeobj @@ -993,3 +1002,11 @@ . = ..() if(!target_ai) target_ai = src //cheat! just give... ourselves as the spawned AI, because that's technically correct + +/mob/living/silicon/ai/proc/camera_visibility(mob/camera/aiEye/moved_eye) + GLOB.cameranet.visibility(moved_eye, client, all_eyes) + +/mob/living/silicon/ai/forceMove(atom/destination) + . = ..() + if(.) + end_multicam() diff --git a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm index 815ddb64ea..5cc08ff1e0 100644 --- a/code/modules/mob/living/silicon/ai/freelook/cameranet.dm +++ b/code/modules/mob/living/silicon/ai/freelook/cameranet.dm @@ -38,29 +38,63 @@ GLOBAL_DATUM_INIT(cameranet, /datum/cameranet, new) // Updates what the aiEye can see. It is recommended you use this when the aiEye moves or it's location is set. -/datum/cameranet/proc/visibility(mob/camera/aiEye/ai) - // 0xf = 15 - var/x1 = max(0, ai.x - 16) & ~(CHUNK_SIZE - 1) - var/y1 = max(0, ai.y - 16) & ~(CHUNK_SIZE - 1) - var/x2 = min(world.maxx, ai.x + 16) & ~(CHUNK_SIZE - 1) - var/y2 = min(world.maxy, ai.y + 16) & ~(CHUNK_SIZE - 1) +/datum/cameranet/proc/visibility(list/moved_eyes, client/C, list/other_eyes) + if(!islist(moved_eyes)) + moved_eyes = moved_eyes ? list(moved_eyes) : list() + if(islist(other_eyes)) + other_eyes = (other_eyes - moved_eyes) + else + other_eyes = list() - var/list/visibleChunks = list() + var/list/chunks_pre_seen = list() + var/list/chunks_post_seen = list() - for(var/x = x1; x <= x2; x += CHUNK_SIZE) - for(var/y = y1; y <= y2; y += CHUNK_SIZE) - visibleChunks |= getCameraChunk(x, y, ai.z) + for(var/V in moved_eyes) + var/mob/camera/aiEye/eye = V + if(C) + chunks_pre_seen |= eye.visibleCameraChunks + // 0xf = 15 + var/static_range = eye.static_visibility_range + var/x1 = max(0, eye.x - static_range) & ~(CHUNK_SIZE - 1) + var/y1 = max(0, eye.y - static_range) & ~(CHUNK_SIZE - 1) + var/x2 = min(world.maxx, eye.x + static_range) & ~(CHUNK_SIZE - 1) + var/y2 = min(world.maxy, eye.y + static_range) & ~(CHUNK_SIZE - 1) - var/list/remove = ai.visibleCameraChunks - visibleChunks - var/list/add = visibleChunks - ai.visibleCameraChunks + var/list/visibleChunks = list() - for(var/chunk in remove) - var/datum/camerachunk/c = chunk - c.remove(ai) + for(var/x = x1; x <= x2; x += CHUNK_SIZE) + for(var/y = y1; y <= y2; y += CHUNK_SIZE) + visibleChunks |= getCameraChunk(x, y, eye.z) - for(var/chunk in add) - var/datum/camerachunk/c = chunk - c.add(ai) + var/list/remove = eye.visibleCameraChunks - visibleChunks + var/list/add = visibleChunks - eye.visibleCameraChunks + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + c.remove(eye, FALSE) + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + c.add(eye, FALSE) + + if(C) + chunks_post_seen |= eye.visibleCameraChunks + + if(C) + for(var/V in other_eyes) + var/mob/camera/aiEye/eye = V + chunks_post_seen |= eye.visibleCameraChunks + + var/list/remove = chunks_pre_seen - chunks_post_seen + var/list/add = chunks_post_seen - chunks_pre_seen + + for(var/chunk in remove) + var/datum/camerachunk/c = chunk + C.images -= c.obscured + + for(var/chunk in add) + var/datum/camerachunk/c = chunk + C.images += c.obscured // Updates the chunks that the turf is located in. Use this when obstacles are destroyed or when doors open. diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm index f062c7e010..e03bba3067 100644 --- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm +++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm @@ -20,10 +20,11 @@ // Add an AI eye to the chunk, then update if changed. -/datum/camerachunk/proc/add(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images += obscured +/datum/camerachunk/proc/add(mob/camera/aiEye/eye, add_images = TRUE) + if(add_images) + var/client/client = eye.GetViewerClient() + if(client) + client.images += obscured eye.visibleCameraChunks += src visible++ seenby += eye @@ -32,10 +33,11 @@ // Remove an AI eye from the chunk, then update if changed. -/datum/camerachunk/proc/remove(mob/camera/aiEye/eye) - var/client/client = eye.GetViewerClient() - if(client) - client.images -= obscured +/datum/camerachunk/proc/remove(mob/camera/aiEye/eye, remove_images = TRUE) + if(remove_images) + var/client/client = eye.GetViewerClient() + if(client) + client.images -= obscured eye.visibleCameraChunks -= src seenby -= eye if(visible > 0) diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm index b5b1bd082b..469639d58f 100644 --- a/code/modules/mob/living/silicon/ai/freelook/eye.dm +++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm @@ -11,6 +11,7 @@ var/mob/living/silicon/ai/ai = null var/relay_speech = FALSE var/use_static = TRUE + var/static_visibility_range = 16 // Use this when setting the aiEye's location. // It will also stream the chunk that the new loc is in. @@ -25,8 +26,8 @@ else moveToNullspace() // ???? if(use_static) - GLOB.cameranet.visibility(src) - if(ai.client) + ai.camera_visibility(src) + if(ai.client && !ai.multicam_on) ai.client.eye = src update_parallax_contents() //Holopad @@ -35,6 +36,8 @@ H.move_hologram(ai, T) if(ai.camera_light_on) ai.light_cameras() + if(ai.master_multicam) + ai.master_multicam.refresh_view() /mob/camera/aiEye/Move() return 0 @@ -45,20 +48,27 @@ return null /mob/camera/aiEye/proc/RemoveImages() - if(use_static) - for(var/datum/camerachunk/chunk in visibleCameraChunks) - chunk.remove(src) + var/client/C = GetViewerClient() + if(C && use_static) + for(var/V in visibleCameraChunks) + var/datum/camerachunk/c = V + C.images -= c.obscured /mob/camera/aiEye/Destroy() - ai = null + if(ai) + ai.all_eyes -= src + ai = null + for(var/V in visibleCameraChunks) + var/datum/camerachunk/c = V + c.remove(src) return ..() /atom/proc/move_camera_by_click() if(isAI(usr)) var/mob/living/silicon/ai/AI = usr - if(AI.eyeobj && AI.client.eye == AI.eyeobj) + if(AI.eyeobj && (AI.multicam_on || (AI.client.eye == AI.eyeobj)) && (AI.eyeobj.z == z)) AI.cameraFollow = null - if (isturf(src.loc) || isturf(src)) + if (isturf(loc) || isturf(src)) AI.eyeobj.setLoc(src) // This will move the AIEye. It will also cause lights near the eye to light up, if toggled. @@ -95,12 +105,19 @@ if(!eyeobj || !eyeobj.loc || QDELETED(eyeobj)) to_chat(src, "ERROR: Eyeobj not found. Creating new eye...") - eyeobj = new(loc) - eyeobj.ai = src - eyeobj.name = "[src.name] (AI Eye)" // Give it a name + create_eye() eyeobj.setLoc(loc) +/mob/living/silicon/ai/proc/create_eye() + if(eyeobj) + return + eyeobj = new /mob/camera/aiEye() + all_eyes += eyeobj + eyeobj.ai = src + eyeobj.setLoc(loc) + eyeobj.name = "[name] (AI Eye)" + /mob/living/silicon/ai/verb/toggle_acceleration() set category = "AI Commands" set name = "Toggle Camera Acceleration" diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index a060c899d9..0fd33110b6 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -96,6 +96,7 @@ /mob/living/silicon/ai/proc/start_RestorePowerRoutine() to_chat(src, "Backup battery online. Scanners, camera, and radio interface offline. Beginning fault-detection.") + end_multicam() sleep(50) var/turf/T = get_turf(src) var/area/AIarea = get_area(src) diff --git a/code/modules/mob/living/silicon/ai/login.dm b/code/modules/mob/living/silicon/ai/login.dm index c771f60aa2..2dc9a1fb1c 100644 --- a/code/modules/mob/living/silicon/ai/login.dm +++ b/code/modules/mob/living/silicon/ai/login.dm @@ -4,4 +4,6 @@ for(var/obj/machinery/ai_status_display/O in GLOB.ai_status_displays) //change status O.mode = 1 O.emotion = "Neutral" + if(multicam_on) + end_multicam() view_core() diff --git a/code/modules/mob/living/silicon/ai/multicam.dm b/code/modules/mob/living/silicon/ai/multicam.dm new file mode 100644 index 0000000000..b6f3724fcf --- /dev/null +++ b/code/modules/mob/living/silicon/ai/multicam.dm @@ -0,0 +1,266 @@ +//Picture in picture + +/obj/screen/movable/pic_in_pic/ai + var/mob/living/silicon/ai/ai + var/mutable_appearance/highlighted_background + var/highlighted = FALSE + var/mob/camera/aiEye/pic_in_pic/aiEye + +/obj/screen/movable/pic_in_pic/ai/Initialize() + . = ..() + aiEye = new /mob/camera/aiEye/pic_in_pic() + aiEye.screen = src + +/obj/screen/movable/pic_in_pic/ai/Destroy() + set_ai(null) + QDEL_NULL(aiEye) + return ..() + +/obj/screen/movable/pic_in_pic/ai/Click() + ..() + if(ai) + ai.select_main_multicam_window(src) + +/obj/screen/movable/pic_in_pic/ai/make_backgrounds() + ..() + highlighted_background = new /mutable_appearance() + highlighted_background.icon = 'icons/misc/pic_in_pic.dmi' + highlighted_background.icon_state = "background_highlight" + highlighted_background.layer = SPACE_LAYER + +/obj/screen/movable/pic_in_pic/ai/add_background() + if((width > 0) && (height > 0)) + var/matrix/M = matrix() + M.Scale(width + 0.5, height + 0.5) + M.Translate((width-1)/2 * world.icon_size, (height-1)/2 * world.icon_size) + highlighted_background.transform = M + standard_background.transform = M + add_overlay(highlighted ? highlighted_background : standard_background) + +/obj/screen/movable/pic_in_pic/ai/set_view_size(width, height, do_refresh = TRUE) + aiEye.static_visibility_range = (round(max(width, height) / 2) + 1) + if(ai) + ai.camera_visibility(aiEye) + ..() + +/obj/screen/movable/pic_in_pic/ai/set_view_center(atom/target, do_refresh = TRUE) + ..() + aiEye.setLoc(get_turf(target)) + +/obj/screen/movable/pic_in_pic/ai/refresh_view() + ..() + aiEye.setLoc(get_turf(center)) + +/obj/screen/movable/pic_in_pic/ai/proc/highlight() + if(highlighted) + return + highlighted = TRUE + cut_overlay(standard_background) + add_overlay(highlighted_background) + +/obj/screen/movable/pic_in_pic/ai/proc/unhighlight() + if(!highlighted) + return + highlighted = FALSE + cut_overlay(highlighted_background) + add_overlay(standard_background) + +/obj/screen/movable/pic_in_pic/ai/proc/set_ai(mob/living/silicon/ai/new_ai) + if(ai) + ai.multicam_screens -= src + ai.all_eyes -= aiEye + if(ai.master_multicam == src) + ai.master_multicam = null + if(ai.multicam_on) + unshow_to(ai.client) + ai = new_ai + if(new_ai) + new_ai.multicam_screens += src + ai.all_eyes += aiEye + if(new_ai.multicam_on) + show_to(new_ai.client) + +//Turf, area, and landmark for the viewing room + +/turf/open/ai_visible + name = "" + icon = 'icons/misc/pic_in_pic.dmi' + icon_state = "room_background" + flags_1 = NOJAUNT_1 + +/turf/open/ai_visible/Initialize() + . = ..() + obscured = image(null, src, null) + +/area/ai_multicam_room + name = "ai_multicam_room" + icon_state = "ai_camera_room" + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + valid_territory = FALSE + ambientsounds = list() + blob_allowed = FALSE + noteleport = TRUE + hidden = TRUE + safe = TRUE + +GLOBAL_DATUM(ai_camera_room_landmark, /obj/effect/landmark/ai_multicam_room) + +/obj/effect/landmark/ai_multicam_room + name = "ai camera room" + icon = 'icons/mob/landmarks.dmi' + icon_state = "x" + +/obj/effect/landmark/ai_multicam_room/Initialize() + . = ..() + qdel(GLOB.ai_camera_room_landmark) + GLOB.ai_camera_room_landmark = src + +/obj/effect/landmark/ai_multicam_room/Destroy() + if(GLOB.ai_camera_room_landmark == src) + GLOB.ai_camera_room_landmark = null + return ..() + +//Dummy camera eyes + +/mob/camera/aiEye/pic_in_pic + name = "Secondary AI Eye" + var/obj/screen/movable/pic_in_pic/ai/screen + var/list/cameras_telegraphed = list() + var/telegraph_cameras = TRUE + var/telegraph_range = 7 + +/mob/camera/aiEye/pic_in_pic/GetViewerClient() + if(screen && screen.ai) + return screen.ai.client + +/mob/camera/aiEye/pic_in_pic/setLoc(turf/T) + if (T) + forceMove(T) + else + moveToNullspace() + if(screen && screen.ai) + screen.ai.camera_visibility(src) + else + GLOB.cameranet.visibility(src) + update_camera_telegraphing() + +/mob/camera/aiEye/pic_in_pic/proc/update_camera_telegraphing() + if(!telegraph_cameras) + return + var/list/obj/machinery/camera/add = list() + var/list/obj/machinery/camera/remove = list() + var/list/obj/machinery/camera/visible = list() + for (var/VV in visibleCameraChunks) + var/datum/camerachunk/CC = VV + for (var/V in CC.cameras) + var/obj/machinery/camera/C = V + if (!C.can_use() || (get_dist(C, src) > telegraph_range)) + continue + visible |= C + + add = visible - cameras_telegraphed + remove = cameras_telegraphed - visible + + for (var/V in remove) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed -= C + C.in_use_lights-- + C.update_icon() + for (var/V in add) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + cameras_telegraphed |= C + C.in_use_lights++ + C.update_icon() + +/mob/camera/aiEye/pic_in_pic/proc/disable_camera_telegraphing() + telegraph_cameras = FALSE + for (var/V in cameras_telegraphed) + var/obj/machinery/camera/C = V + if(QDELETED(C)) + continue + C.in_use_lights-- + C.update_icon() + cameras_telegraphed.Cut() + +/mob/camera/aiEye/pic_in_pic/Destroy() + disable_camera_telegraphing() + return ..() + +//AI procs + +/mob/living/silicon/ai/proc/drop_new_multicam(silent = FALSE) + if(!multicam_allowed) + if(!silent) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(!eyeobj) + return + if(multicam_screens.len >= max_multicams) + if(!silent) + to_chat(src, "Cannot place more than [max_multicams] multicamera windows.") + return + var/obj/screen/movable/pic_in_pic/ai/C = new /obj/screen/movable/pic_in_pic/ai() + C.set_view_size(3, 3, FALSE) + C.set_view_center(get_turf(eyeobj)) + C.set_ai(src) + if(!silent) + to_chat(src, "Added new multicamera window.") + return C + +/mob/living/silicon/ai/proc/toggle_multicam() + if(!multicam_allowed) + to_chat(src, "This action is currently disabled. Contact an administrator to enable this feature.") + return + if(multicam_on) + end_multicam() + else + start_multicam() + +/mob/living/silicon/ai/proc/start_multicam() + if(multicam_on || aiRestorePowerRoutine || !isturf(loc)) + return + if(!GLOB.ai_camera_room_landmark) + to_chat(src, "This function is not available at this time.") + return + multicam_on = TRUE + refresh_multicam() + to_chat(src, "Multiple-camera viewing mode activated.") + +/mob/living/silicon/ai/proc/refresh_multicam() + reset_perspective(GLOB.ai_camera_room_landmark) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.show_to(client) + +/mob/living/silicon/ai/proc/end_multicam() + if(!multicam_on) + return + multicam_on = FALSE + select_main_multicam_window(null) + if(client) + for(var/V in multicam_screens) + var/obj/screen/movable/pic_in_pic/P = V + P.unshow_to(client) + reset_perspective() + to_chat(src, "Multiple-camera viewing mode deactivated.") + + +/mob/living/silicon/ai/proc/select_main_multicam_window(obj/screen/movable/pic_in_pic/ai/P) + if(master_multicam == P) + return + + if(master_multicam) + master_multicam.set_view_center(get_turf(eyeobj), FALSE) + master_multicam.unhighlight() + master_multicam = null + + if(P) + P.highlight() + eyeobj.setLoc(get_turf(P.center)) + P.set_view_center(eyeobj) + master_multicam = P diff --git a/icons/misc/pic_in_pic.dmi b/icons/misc/pic_in_pic.dmi new file mode 100644 index 0000000000000000000000000000000000000000..9c550f3c25ecdf6817afd63dc0843875e245dfaa GIT binary patch literal 3370 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 E2DHmSY5)KL literal 0 HcmV?d00001 diff --git a/icons/mob/screen_ai.dmi b/icons/mob/screen_ai.dmi index a449cad90645421b1dd90f63cfa4efe0bda8fd28..8388ea3f806c07006c698401c977fe138e692670 100644 GIT binary patch delta 2446 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 diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 4e78e0444b5710ed8f676b98cf9616f3ea44fa88..1fadd875d70efa82332cb354b720d3c3f0c1eb6d 100644 GIT binary patch delta 6902 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 Qi3@b*wEb_mld!x01q!+I&;S4c delta 6620 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 U{-<|3sDqq8bNMv!r1QQ11Da`5Hvj+t diff --git a/tgstation.dme b/tgstation.dme index 909f5fdd99..e0a84f22a5 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -181,6 +181,7 @@ #include "code\_onclick\hud\monkey.dm" #include "code\_onclick\hud\movable_screen_objects.dm" #include "code\_onclick\hud\parallax.dm" +#include "code\_onclick\hud\picture_in_picture.dm" #include "code\_onclick\hud\plane_master.dm" #include "code\_onclick\hud\revenanthud.dm" #include "code\_onclick\hud\robot.dm" @@ -1949,6 +1950,7 @@ #include "code\modules\mob\living\silicon\ai\life.dm" #include "code\modules\mob\living\silicon\ai\login.dm" #include "code\modules\mob\living\silicon\ai\logout.dm" +#include "code\modules\mob\living\silicon\ai\multicam.dm" #include "code\modules\mob\living\silicon\ai\say.dm" #include "code\modules\mob\living\silicon\ai\vox_sounds.dm" #include "code\modules\mob\living\silicon\ai\freelook\cameranet.dm" From 7dd53d445e40f2ba5c314c3fe4b595e7b6b82d62 Mon Sep 17 00:00:00 2001 From: Dax Dupont Date: Fri, 1 Jun 2018 11:13:49 +0200 Subject: [PATCH 015/136] Stock parts sorter now use get_parts_rating (#38191) --- code/modules/research/stock_parts.dm | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm index 4bd318de21..af004c4701 100644 --- a/code/modules/research/stock_parts.dm +++ b/code/modules/research/stock_parts.dm @@ -58,10 +58,8 @@ If you create T5+ please take a pass at gene_modder.dm [L40]. Max_values MUST fi lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' -//Sorts stock parts inside an RPED by their rating. -//Only use /obj/item/stock_parts/ with this sort proc! -/proc/cmp_rped_sort(obj/item/stock_parts/A, obj/item/stock_parts/B) - return B.rating - A.rating +/proc/cmp_rped_sort(obj/item/A, obj/item/B) + return B.get_part_rating() - A.get_part_rating() /obj/item/stock_parts name = "stock part" From 6d56a629f725a92f6bdeb9aebfa2d1890684b428 Mon Sep 17 00:00:00 2001 From: Nich Date: Fri, 1 Jun 2018 15:12:52 +0200 Subject: [PATCH 017/136] Fix infinite soapstone uses exploit (#38195) --- code/modules/library/soapstone.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm index 17df503765..e51103937f 100644 --- a/code/modules/library/soapstone.dm +++ b/code/modules/library/soapstone.dm @@ -56,7 +56,7 @@ playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) user.visible_message("[user] starts engraving a message into [T]...", "You start engraving a message into [T]...", "You hear a chipping sound.") if(can_use() && do_after(user, tool_speed, target = T) && can_use()) //This looks messy but it's actually really clever! - if(!locate(/obj/structure/chisel_message in T)) + if(!locate(/obj/structure/chisel_message) in T) user.visible_message("[user] leaves a message for future spacemen!", "You engrave a message into [T]!", "You hear a chipping sound.") playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) var/obj/structure/chisel_message/M = new(T) From 3b6e5236bf1b27848218b8e1d383a5e8407b2e2b Mon Sep 17 00:00:00 2001 From: Nich Date: Fri, 1 Jun 2018 15:26:21 +0200 Subject: [PATCH 019/136] allows changing the rank of players in the playerpanel (#38172) * allows changing the rank of players in the playerpanel * Update permissionedit.dm * Update permissionedit.dm --- code/modules/admin/admin.dm | 2 +- code/modules/admin/permissionedit.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index a37e7217af..d67bbfd6c5 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -29,7 +29,7 @@ body += "Options panel for [M]" if(M.client) body += " played by [M.client] " - body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" + body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" if(CONFIG_GET(flag/use_exp_tracking)) body += "\[" + M.client.get_exp_living() + "\]" diff --git a/code/modules/admin/permissionedit.dm b/code/modules/admin/permissionedit.dm index e237a18f6a..c1fcf0ce82 100644 --- a/code/modules/admin/permissionedit.dm +++ b/code/modules/admin/permissionedit.dm @@ -165,7 +165,7 @@ return switch(task) if("add") - admin_ckey = add_admin(null, use_db) + admin_ckey = add_admin(admin_ckey, use_db) if(!admin_ckey) return change_admin_rank(admin_ckey, use_db) From 876e8ec713369c2f2addd0d6b537aa5dbf47c5bd Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 1 Jun 2018 10:50:47 -0400 Subject: [PATCH 021/136] Merge pull request #38185 from AutomaticFrenzy/patch/cult-floors Set cult floor effects to be on the floor plane --- code/game/objects/effects/temporary_visuals/cult.dm | 1 + .../modules/antagonists/clockcult/clock_effects/clock_overlay.dm | 1 + 2 files changed, 2 insertions(+) diff --git a/code/game/objects/effects/temporary_visuals/cult.dm b/code/game/objects/effects/temporary_visuals/cult.dm index 3a17494871..0f9d7321af 100644 --- a/code/game/objects/effects/temporary_visuals/cult.dm +++ b/code/game/objects/effects/temporary_visuals/cult.dm @@ -47,6 +47,7 @@ /obj/effect/temp_visual/cult/turf/floor icon_state = "floorglow" duration = 5 + plane = FLOOR_PLANE /obj/effect/temp_visual/cult/portal icon_state = "space" diff --git a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm index f3de8d04a8..34a986aa97 100644 --- a/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm +++ b/code/modules/antagonists/clockcult/clock_effects/clock_overlay.dm @@ -44,6 +44,7 @@ icon = 'icons/turf/floors.dmi' icon_state = "clockwork_floor" layer = TURF_LAYER + plane = FLOOR_PLANE /obj/effect/clockwork/overlay/floor/bloodcult //this is used by BLOOD CULT, it shouldn't use such a path... icon_state = "cult" \ No newline at end of file From f2124aa3cfbddfc78338e86ca770a9e1277668b2 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 1 Jun 2018 10:49:57 -0400 Subject: [PATCH 023/136] Merge pull request #38180 from AutomaticFrenzy/patch/heirloom-clone Fix family heirloom being lost on cloning --- code/datums/traits/_quirk.dm | 3 +++ code/datums/traits/negative.dm | 4 ++++ code/game/machinery/cloning.dm | 3 ++- code/game/machinery/computer/cloning.dm | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm index d85f79f84a..963afacec3 100644 --- a/code/datums/traits/_quirk.dm +++ b/code/datums/traits/_quirk.dm @@ -55,6 +55,9 @@ /datum/quirk/proc/post_add() //for text, disclaimers etc. given after you spawn in with the trait /datum/quirk/proc/on_transfer() //code called when the trait is transferred to a new mob +/datum/quirk/proc/clone_data() //return additional data that should be remembered by cloning +/datum/quirk/proc/on_clone(data) //create the quirk from clone data + /datum/quirk/process() if(QDELETED(quirk_holder)) quirk_holder = null diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index b6dd926773..68e259441f 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -85,7 +85,11 @@ quirk_holder.SendSignal(COMSIG_CLEAR_MOOD_EVENT, "family_heirloom") quirk_holder.SendSignal(COMSIG_ADD_MOOD_EVENT, "family_heirloom_missing", /datum/mood_event/family_heirloom_missing) +/datum/quirk/family_heirloom/clone_data() + return heirloom +/datum/quirk/family_heirloom/on_clone(data) + heirloom = data /datum/quirk/heavy_sleeper name = "Heavy Sleeper" diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index d1f4a4be86..24bb03cdf6 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -204,7 +204,8 @@ H.faction |= factions for(var/V in quirks) - new V(H) + var/datum/quirk/Q = new V(H) + Q.on_clone(quirks[V]) H.set_cloned_appearance() diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 95b4ea9f80..71c62327e6 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -476,7 +476,7 @@ R.fields["quirks"] = list() for(var/V in mob_occupant.roundstart_quirks) var/datum/quirk/T = V - R.fields["quirks"] += T.type + R.fields["quirks"][T.type] = T.clone_data() if (!isnull(mob_occupant.mind)) //Save that mind so traitors can continue traitoring after cloning. R.fields["mind"] = "[REF(mob_occupant.mind)]" From 948a128a72cf7da504d3925a0607896bd9133462 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Fri, 1 Jun 2018 10:51:46 -0400 Subject: [PATCH 025/136] Merge pull request #38198 from AutomaticFrenzy/patch/chasm-beams Blacklist projectile effects from chasms --- code/datums/components/chasm.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 88360194b3..1f3a846c61 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -11,6 +11,7 @@ /obj/structure/lattice, /obj/structure/stone_tile, /obj/item/projectile, + /obj/effect/projectile, /obj/effect/portal, /obj/effect/abstract, /obj/effect/hotspot, From a3a0a49b5d1dac483e7bf997ba510c7648883d24 Mon Sep 17 00:00:00 2001 From: JStheguy Date: Fri, 1 Jun 2018 09:53:16 -0500 Subject: [PATCH 027/136] Marginal Sprite Improvements Part 2: Cigarette Lighter Boogaloo (#38161) * the rainbow of mediocrity rides again * whoops that wasn't supposed to be there * updated vending machine, burger, and donut sprites they've all been improved marginally * edits roborger a bit more "bun" is flatter, has an antenna that blinks in agony * does sprite things to lighters and cigar cases * darkened cigar case interiors * tweaks lighter flames --- code/game/objects/items/cigs_lighters.dm | 61 +++++++++++++++++++---- code/game/objects/items/storage/fancy.dm | 8 +-- icons/obj/cigarettes.dmi | Bin 8610 -> 11615 bytes 3 files changed, 55 insertions(+), 14 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index ed8db43bfa..9b10df57fa 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -492,11 +492,24 @@ CIGARETTE PACKETS ARE IN FANCY.DM slot_flags = ITEM_SLOT_BELT var/lit = 0 var/fancy = TRUE + var/overlay_state + var/overlay_list = list( + "plain", + "dame", + "thirteen", + "snake" + ) heat = 1500 resistance_flags = FIRE_PROOF light_color = LIGHT_COLOR_FIRE grind_results = list("iron" = 1, "welding_fuel" = 5, "oil" = 5) +/obj/item/lighter/Initialize() + . = ..() + if(!overlay_state) + overlay_state = pick(overlay_list) + update_icon() + /obj/item/lighter/suicide_act(mob/living/carbon/user) if (lit) user.visible_message("[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!") @@ -507,10 +520,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM return BRUTELOSS /obj/item/lighter/update_icon() - if(lit) - icon_state = "[initial(icon_state)]_on" - else - icon_state = "[initial(icon_state)]" + cut_overlays() + var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]") + icon_state = "[initial(icon_state)][lit ? "-on" : ""]" + add_overlay(lighter_overlay) /obj/item/lighter/ignition_effect(atom/A, mob/user) if(is_hot()) @@ -597,19 +610,44 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A cheap-as-free lighter." icon_state = "lighter" fancy = FALSE + overlay_list = list( + "transp", + "tall", + "matte", + "zoppo" //u cant stoppo th zoppo + ) + var/lighter_color + var/list/color_list = list( //Same 16 color selection as electronic assemblies + COLOR_ASSEMBLY_BLACK, + COLOR_FLOORTILE_GRAY, + COLOR_ASSEMBLY_BGRAY, + COLOR_ASSEMBLY_WHITE, + COLOR_ASSEMBLY_RED, + COLOR_ASSEMBLY_ORANGE, + COLOR_ASSEMBLY_BEIGE, + COLOR_ASSEMBLY_BROWN, + COLOR_ASSEMBLY_GOLD, + COLOR_ASSEMBLY_YELLOW, + COLOR_ASSEMBLY_GURKHA, + COLOR_ASSEMBLY_LGREEN, + COLOR_ASSEMBLY_GREEN, + COLOR_ASSEMBLY_LBLUE, + COLOR_ASSEMBLY_BLUE, + COLOR_ASSEMBLY_PURPLE + ) /obj/item/lighter/greyscale/Initialize() . = ..() - add_atom_colour(color2hex(randomColor(1)), FIXED_COLOUR_PRIORITY) + if(!lighter_color) + lighter_color = pick(color_list) update_icon() /obj/item/lighter/greyscale/update_icon() cut_overlays() - var/mutable_appearance/base_overlay = mutable_appearance(icon,"[initial(icon_state)]_base") - base_overlay.appearance_flags = RESET_COLOR //the edging doesn't change color - if(lit) - base_overlay.icon_state = "[initial(icon_state)]_on" - add_overlay(base_overlay) + var/mutable_appearance/lighter_overlay = mutable_appearance(icon,"lighter_overlay_[overlay_state][lit ? "-on" : ""]") + icon_state = "[initial(icon_state)][lit ? "-on" : ""]" + lighter_overlay.color = lighter_color + add_overlay(lighter_overlay) /obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user) if(is_hot()) @@ -619,9 +657,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/slime name = "slime zippo" desc = "A specialty zippo made from slimes and industry. Has a much hotter flame than normal." - icon_state = "slimezippo" + icon_state = "slighter" heat = 3000 //Blue flame! light_color = LIGHT_COLOR_CYAN + overlay_state = "slime" grind_results = list("iron" = 1, "welding_fuel" = 5, "pyroxadone" = 5) diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index f86188984f..aaee6f65ab 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -293,22 +293,24 @@ /obj/item/storage/fancy/cigarettes/cigars/update_icon() cut_overlays() if(fancy_open) - add_overlay("[icon_state]_open") + icon_state = "[initial(icon_state)]_open" var/mutable_appearance/cigar_overlay = mutable_appearance(icon, icon_type) for(var/c = contents.len, c >= 1, c--) - cigar_overlay.pixel_x = 4 * (c - 1) + cigar_overlay.pixel_x = 3 * (c - 1) add_overlay(cigar_overlay) else - icon_state = "cigarcase" + icon_state = "[initial(icon_state)]" /obj/item/storage/fancy/cigarettes/cigars/cohiba name = "\improper cohiba robusto cigar case" desc = "A case of imported Cohiba cigars, renowned for their strong flavor." + icon_state = "cohibacase" spawn_type = /obj/item/clothing/mask/cigarette/cigar/cohiba /obj/item/storage/fancy/cigarettes/cigars/havana name = "\improper premium havanian cigar case" desc = "A case of classy Havanian cigars." + icon_state = "cohibacase" spawn_type = /obj/item/clothing/mask/cigarette/cigar/havana /* diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 4de653d652bdf4fc14ee041bcb825e3d779d7692..84979e438746455b3d2f49a2dba9d73ed21934ee 100644 GIT binary patch literal 11615 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 Mt2|b&P_zpF7xAe?xBvhE literal 8610 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 Date: Fri, 1 Jun 2018 10:58:41 -0400 Subject: [PATCH 029/136] Merge pull request #38210 from AutomaticFrenzy/patch/by-vomit-combined Fix reagents being lost when vomit piles combine --- code/game/atoms.dm | 17 ----------------- code/game/turfs/turf.dm | 19 +++++++++++++++++++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 122efe5772..b679956c3f 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -425,23 +425,6 @@ /atom/proc/update_remote_sight(mob/living/user) return -/atom/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0) - if(isturf(src)) - var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses()) - // Make toxins vomit look different - if(toxvomit) - V.icon_state = "vomittox_[pick(1,4)]" - if(M.reagents) - clear_reagents_to_vomit_pool(M,V) - -/atom/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) - M.reagents.trans_to(V, M.reagents.total_volume / 10) - for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food - if(istype(R, /datum/reagent/consumable)) - var/datum/reagent/consumable/nutri_check = R - if(nutri_check.nutriment_factor >0) - M.reagents.remove_reagent(R.id,R.volume) - //Hook for running code when a dir change occurs /atom/proc/setDir(newdir) diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 00ac813a11..9cc2d67020 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -438,3 +438,22 @@ /turf/AllowDrop() return TRUE + +/turf/proc/add_vomit_floor(mob/living/carbon/M, toxvomit = 0) + var/obj/effect/decal/cleanable/vomit/V = new /obj/effect/decal/cleanable/vomit(src, M.get_static_viruses()) + // If the vomit combined, apply toxicity and reagents to the old vomit + if (QDELETED(V)) + V = locate() in src + // Make toxins vomit look different + if(toxvomit) + V.icon_state = "vomittox_[pick(1,4)]" + if(M.reagents) + clear_reagents_to_vomit_pool(M,V) + +/proc/clear_reagents_to_vomit_pool(mob/living/carbon/M, obj/effect/decal/cleanable/vomit/V) + M.reagents.trans_to(V, M.reagents.total_volume / 10) + for(var/datum/reagent/R in M.reagents.reagent_list) //clears the stomach of anything that might be digested as food + if(istype(R, /datum/reagent/consumable)) + var/datum/reagent/consumable/nutri_check = R + if(nutri_check.nutriment_factor >0) + M.reagents.remove_reagent(R.id,R.volume) From 308a8f16b705735ca5a2e1c6c41268127e0ee81d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 26 May 2018 06:41:39 -0700 Subject: [PATCH 031/136] EMPs no longer pulse internal silicon wires --- code/modules/mob/living/silicon/robot/robot.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 51e844915c..b2cd5788da 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -105,6 +105,7 @@ spark_system.attach(src) wires = new /datum/wires/robot(src) + AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES) robot_modules_background = new() robot_modules_background.icon_state = "block" From d45724f12b404f6d9e567ae308b0efe74e5f55da Mon Sep 17 00:00:00 2001 From: theo2003 Date: Wed, 30 May 2018 20:11:24 +0300 Subject: [PATCH 033/136] Fixed the clockwork helmet so it drops to the ground when used by a non-clock cultist like the other clock armor does. --- .../antagonists/clockcult/clock_items/clockwork_armor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm index 32bf870886..d32eeee84b 100644 --- a/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm +++ b/code/modules/antagonists/clockcult/clock_items/clockwork_armor.dm @@ -50,7 +50,7 @@ user.emote("scream") user.apply_damage(30, BRUTE, BODY_ZONE_HEAD) user.adjustBrainLoss(30) - addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround), src, 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off. + addtimer(CALLBACK(user, /mob/living.proc/dropItemToGround, src, TRUE), 1) //equipped happens before putting stuff on(but not before picking items up), 1). thus, we need to wait for it to be on before forcing it off. /obj/item/clothing/head/helmet/clockwork/mob_can_equip(mob/M, mob/equipper, slot, disable_warning = 0) if(equipper && !is_servant_of_ratvar(equipper)) From 3b498f228800cd55931c524aaea088e2aa551d06 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sat, 2 Jun 2018 05:41:31 -0500 Subject: [PATCH 035/136] map fix --- _maps/map_files/BoxStation/BoxStation.dmm | 6144 +++++++---------- .../map_files/Deltastation/DeltaStation2.dmm | 1 - _maps/map_files/MetaStation/MetaStation.dmm | 173 +- _maps/map_files/OmegaStation/OmegaStation.dmm | 27 +- _maps/map_files/PubbyStation/PubbyStation.dmm | 179 +- _maps/map_files/generic/CentCom.dmm | 285 +- 6 files changed, 2857 insertions(+), 3952 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index d6e6a6b3ee..27d68bb5cb 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -33,6 +33,13 @@ }, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) +"aad" = ( +/obj/structure/table, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 1 + }, +/turf/open/floor/wood, +/area/maintenance/port/aft) "aae" = ( /obj/effect/landmark/carpspawn, /turf/open/space, @@ -107,6 +114,20 @@ dir = 1 }, /area/security/prison) +"aaq" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/hydroponics/soil, +/obj/item/plant_analyzer, +/obj/machinery/camera{ + c_tag = "Prison Common Room"; + network = list("ss13","prison") + }, +/turf/open/floor/plasteel/green/side{ + dir = 5 + }, +/area/security/prison) "aar" = ( /obj/machinery/hydroponics/soil, /obj/item/seeds/glowshroom, @@ -190,6 +211,12 @@ dir = 2 }, /area/security/prison) +"aaG" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "aaH" = ( /turf/open/floor/plating/airless, /area/space/nearstation) @@ -246,6 +273,13 @@ }, /turf/open/floor/plasteel/barber, /area/security/prison) +"aaR" = ( +/obj/structure/lattice, +/obj/structure/sign/warning/securearea{ + pixel_y = -32 + }, +/turf/open/space, +/area/space/nearstation) "aaS" = ( /obj/structure/grille, /obj/structure/lattice, @@ -359,6 +393,26 @@ /obj/machinery/vending/security, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"abm" = ( +/obj/structure/table, +/obj/item/storage/box/firingpins, +/obj/item/storage/box/firingpins, +/obj/item/key/security, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abn" = ( +/obj/structure/rack, +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/item/gun/energy/e_gun/dragnet, +/obj/item/gun/energy/e_gun/dragnet, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "abo" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -470,15 +524,166 @@ "abF" = ( /turf/open/floor/plasteel/freezer, /area/security/prison) +"abG" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 8; + icon_state = "right"; + name = "Unisex Showers" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"abH" = ( +/obj/structure/table, +/obj/item/storage/box/chemimp{ + pixel_x = 6 + }, +/obj/item/storage/box/trackimp{ + pixel_x = -3 + }, +/obj/item/storage/lockbox/loyalty, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abI" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/riot, +/obj/item/clothing/suit/armor/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/item/clothing/head/helmet/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/riot, +/obj/item/clothing/head/helmet/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/shield/riot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/shield/riot, +/obj/item/shield/riot{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abJ" = ( +/obj/structure/rack, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/suit/armor/bulletproof, +/obj/item/clothing/suit/armor/bulletproof{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001 + }, +/obj/item/clothing/head/helmet/alt{ + layer = 3.00001; + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/camera/motion{ + c_tag = "Armory Motion Sensor"; + dir = 2 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abK" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt3"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) +"abL" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt2"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "abM" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 8 }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"abN" = ( +/obj/structure/closet/secure_closet/lethalshots, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "abO" = ( /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"abP" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"abQ" = ( +/obj/structure/rack, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/gun/energy/ionrifle, +/obj/item/gun/energy/temperature/security, +/obj/item/clothing/suit/armor/laserproof, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"abR" = ( +/obj/structure/closet/secure_closet/security/sec, +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "abS" = ( /obj/machinery/computer/secure_data, /turf/open/floor/carpet, @@ -608,6 +813,16 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"ach" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restroom" + }, +/turf/open/floor/plasteel/freezer, +/area/security/prison) +"aci" = ( +/obj/vehicle/ridden/secway, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "acj" = ( /obj/machinery/light{ dir = 4 @@ -615,6 +830,33 @@ /obj/machinery/suit_storage_unit/hos, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"ack" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"acm" = ( +/obj/machinery/power/apc/highcap/five_k{ + dir = 4; + areastring = "/area/ai_monitored/security/armory"; + name = "Armory APC"; + pixel_x = 24 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "acn" = ( /obj/item/storage/secure/safe/HoS{ pixel_x = 35 @@ -630,6 +872,15 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"acq" = ( +/obj/effect/landmark/secequipment, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) +"acr" = ( +/obj/structure/chair/comfy/black, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) "acs" = ( /obj/machinery/newscaster/security_unit{ pixel_x = -30 @@ -651,6 +902,10 @@ "acu" = ( /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"acv" = ( +/obj/structure/closet/secure_closet/contraband/armory, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "acw" = ( /obj/structure/sign/warning/securearea{ pixel_y = -32 @@ -707,6 +962,21 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acD" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/button/door{ + id = "permabolt1"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_y = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acE" = ( /obj/structure/bed, /obj/machinery/camera{ @@ -744,6 +1014,22 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acI" = ( +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/westright{ + dir = 1; + name = "Transfer Room"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/security/execution/transfer) "acJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -768,10 +1054,41 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) +"acM" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun, +/obj/item/gun/energy/e_gun{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) "acN" = ( /obj/structure/chair/stool/bar, /turf/open/floor/plasteel/bar, /area/crew_quarters/bar) +"acO" = ( +/obj/structure/closet/l3closet/security, +/obj/machinery/camera{ + c_tag = "Brig Equipment Room"; + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "acP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/showroomfloor, @@ -835,6 +1152,16 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/port/fore) +"acX" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/execution/transfer) "acY" = ( /obj/structure/table, /obj/item/paper, @@ -842,6 +1169,15 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acZ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/preopen{ + id = "executionfireblast"; + name = "blast door" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/security/execution/transfer) "ada" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/machinery/flasher{ @@ -889,11 +1225,48 @@ }, /turf/open/floor/plasteel/freezer, /area/security/prison) +"adg" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "adh" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"adi" = ( +/obj/machinery/flasher/portable, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) +"adj" = ( +/obj/structure/rack, +/obj/item/gun/energy/e_gun/advtaser{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun/advtaser, +/obj/item/gun/energy/e_gun/advtaser{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/effect/turf_decal/bot{ + dir = 2 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 2 + }, +/area/ai_monitored/security/armory) "adk" = ( /obj/structure/rack, /obj/item/gun/ballistic/shotgun/riot{ @@ -1183,6 +1556,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) +"adQ" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "adR" = ( /turf/closed/wall/r_wall, /area/security/main) @@ -1468,12 +1847,26 @@ dir = 5 }, /area/security/prison) +"aes" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel/red/side, +/area/ai_monitored/security/armory) "aet" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 }, /turf/open/floor/plasteel, /area/ai_monitored/security/armory) +"aeu" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/suit_storage_unit/security, +/turf/open/floor/plasteel/red/side, +/area/ai_monitored/security/armory) "aev" = ( /obj/machinery/light{ dir = 4 @@ -1608,6 +2001,21 @@ dir = 8 }, /area/security/prison) +"aeN" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + aiControlDisabled = 1; + name = "Prisoner Transfer Centre"; + req_access_txt = "2" + }, +/turf/open/floor/plasteel/dark, +/area/security/execution/transfer) "aeO" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -1685,6 +2093,68 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"aeW" = ( +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Brig Control Room"; + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/sechailer, +/obj/item/clothing/mask/gas/sechailer{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aeX" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) +"aeY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/window/southleft{ + name = "Armory"; + req_access_txt = "3" + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"aeZ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plating, +/area/ai_monitored/security/armory) "afa" = ( /obj/docking_port/stationary{ dir = 4; @@ -1706,6 +2176,17 @@ /obj/machinery/recharger, /turf/open/floor/plasteel/showroomfloor, /area/security/main) +"afd" = ( +/obj/item/radio/intercom{ + freerange = 0; + frequency = 1459; + name = "Station Intercom (General)"; + pixel_x = 29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/turf/open/floor/plasteel/showroomfloor, +/area/security/main) "afe" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/showroomfloor, @@ -1927,6 +2408,13 @@ }, /turf/open/floor/plasteel/red/side, /area/security/prison) +"afK" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Evidence Storage"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "afL" = ( /obj/structure/closet{ name = "Evidence Closet" @@ -1957,6 +2445,13 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/storage/eva) +"afQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/security/main) "afR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, @@ -1990,6 +2485,14 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/security/main) +"afX" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/landmark/start/head_of_security, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/main) "afY" = ( /obj/effect/landmark/start/security_officer, /obj/structure/chair{ @@ -2005,6 +2508,15 @@ }, /turf/open/floor/plasteel, /area/security/main) +"aga" = ( +/obj/structure/sign/warning/pods{ + pixel_x = 32 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/main) "agb" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/red/side{ @@ -2086,6 +2598,13 @@ dir = 9 }, /area/security/prison) +"agl" = ( +/obj/machinery/door/airlock/security{ + name = "Interrogation"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/dark, +/area/security/prison) "agm" = ( /obj/machinery/light{ dir = 8 @@ -2099,6 +2618,45 @@ "agn" = ( /turf/closed/wall/r_wall, /area/security/warden) +"ago" = ( +/obj/machinery/computer/security, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agp" = ( +/obj/machinery/computer/prisoner, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"agq" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Armory"; + req_access_txt = "3" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) +"agr" = ( +/obj/machinery/computer/secure_data, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ags" = ( /obj/structure/chair{ dir = 4 @@ -2188,6 +2746,22 @@ /obj/item/pen, /turf/open/floor/plasteel, /area/security/main) +"agF" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/machinery/door/poddoor/preopen{ + id = "Prison Gate"; + name = "prison blast door" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/delivery, +/turf/open/floor/plasteel, +/area/security/brig) "agG" = ( /obj/machinery/airalarm{ dir = 8; @@ -2287,6 +2861,12 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"agT" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "agU" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -2438,6 +3018,16 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/security/main) +"ahm" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/iv_drip, +/obj/item/reagent_containers/blood, +/turf/open/floor/plasteel/whitered/side{ + dir = 5 + }, +/area/security/brig) "ahn" = ( /turf/closed/wall, /area/maintenance/fore/secondary) @@ -2503,6 +3093,30 @@ dir = 10 }, /area/security/brig) +"ahv" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Brig Control APC"; + areastring = "/area/security/warden"; + pixel_x = -24 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ahy" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2510,6 +3124,15 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"ahz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ahA" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -2543,6 +3166,17 @@ /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /turf/open/floor/plasteel, /area/security/main) +"ahD" = ( +/obj/machinery/door/window/westleft{ + base_state = "left"; + dir = 4; + icon_state = "left"; + name = "Brig Infirmary" + }, +/turf/open/floor/plasteel/whitered/side{ + dir = 4 + }, +/area/security/brig) "ahE" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Control"; @@ -2689,6 +3323,41 @@ "ahP" = ( /turf/open/floor/plasteel/white, /area/security/brig) +"ahQ" = ( +/obj/structure/closet/secure_closet/warden, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahR" = ( +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/warden, +/obj/machinery/button/door{ + id = "Prison Gate"; + name = "Prison Wing Lockdown"; + pixel_x = -27; + pixel_y = 8; + req_access_txt = "2" + }, +/obj/machinery/button/door{ + id = "Secure Gate"; + name = "Cell Shutters"; + pixel_x = -27; + pixel_y = -2 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahS" = ( +/obj/structure/table, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "ahT" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -2716,6 +3385,23 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) +"ahX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/machinery/computer/crew{ + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"ahY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) "ahZ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -2770,6 +3456,17 @@ dir = 10 }, /area/security/brig) +"aie" = ( +/obj/structure/table, +/obj/item/folder/red, +/obj/item/pen, +/obj/item/hand_labeler, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "aif" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable{ @@ -2924,6 +3621,17 @@ }, /turf/open/floor/plasteel/red/side, /area/security/main) +"aiw" = ( +/obj/machinery/door/window/westleft{ + base_state = "right"; + dir = 4; + icon_state = "right"; + name = "Brig Infirmary" + }, +/turf/open/floor/plasteel/whitered/side{ + dir = 4 + }, +/area/security/brig) "aix" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2994,6 +3702,84 @@ dir = 5 }, /area/security/brig) +"aiH" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) +"aiI" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiJ" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/door/window/brigdoor{ + dir = 1; + name = "Armory Desk"; + req_access_txt = "3" + }, +/obj/machinery/door/window/southleft{ + name = "Reception Desk"; + req_access_txt = "63" + }, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aiK" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiL" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) +"aiM" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Brig Control"; + req_access_txt = "3" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) +"aiN" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/warden) "aiO" = ( /obj/structure/window/reinforced{ dir = 4 @@ -3016,6 +3802,12 @@ dir = 1 }, /area/security/brig) +"aiR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "aiS" = ( /obj/item/stack/rods, /turf/open/space, @@ -3030,6 +3822,14 @@ "aiV" = ( /turf/closed/wall/r_wall, /area/security/processing) +"aiW" = ( +/obj/machinery/door/airlock/security{ + name = "Interrogation"; + req_access_txt = "63" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/security/prison) "aiX" = ( /turf/closed/wall/r_wall, /area/security/brig) @@ -3069,6 +3869,24 @@ dir = 1 }, /area/security/brig) +"ajd" = ( +/obj/structure/sign/plaques/golden{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) +"aje" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/turf/open/floor/plasteel/red/side{ + dir = 1 + }, +/area/security/brig) "ajf" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3078,6 +3896,25 @@ dir = 1 }, /area/security/brig) +"ajg" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"ajh" = ( +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/structure/closet/secure_closet/courtroom, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/warning/securearea{ + pixel_x = -32 + }, +/obj/item/gavelhammer, +/turf/open/floor/plasteel, +/area/security/courtroom) "aji" = ( /obj/structure/chair{ name = "Judge" @@ -3148,6 +3985,20 @@ /obj/machinery/gulag_teleporter, /turf/open/floor/plasteel, /area/security/processing) +"ajt" = ( +/obj/structure/sign/warning/securearea{ + pixel_x = 32 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/table, +/obj/item/storage/box/prisoner, +/obj/machinery/camera{ + c_tag = "Labor Shuttle Dock North" + }, +/turf/open/floor/plasteel, +/area/security/processing) "aju" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -3222,6 +4073,17 @@ dir = 1 }, /area/security/brig) +"ajB" = ( +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/security/brig) +"ajC" = ( +/obj/item/storage/toolbox/drone, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "ajD" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3237,6 +4099,24 @@ dir = 5 }, /area/security/courtroom) +"ajF" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/security/brig) +"ajG" = ( +/obj/machinery/light, +/obj/machinery/door_timer{ + id = "Cell 1"; + name = "Cell 1"; + pixel_y = -32 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "ajH" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -3251,6 +4131,13 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"ajJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ajK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3275,6 +4162,17 @@ }, /turf/open/floor/plasteel, /area/security/courtroom) +"ajN" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Brig"; + req_access_txt = "63; 42" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "ajO" = ( /obj/structure/table/wood, /obj/item/radio/intercom{ @@ -3401,6 +4299,20 @@ dir = 8 }, /area/security/brig) +"akf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Labor Shuttle"; + req_access_txt = "2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "akg" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3426,6 +4338,21 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"aki" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/security/brig) "akj" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3435,6 +4362,20 @@ }, /turf/open/floor/plasteel/red/side, /area/security/brig) +"akk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/security/brig) +"akl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/security/brig) "akm" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -3452,6 +4393,73 @@ dir = 4 }, /area/security/courtroom) +"ako" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 2"; + name = "Cell 2"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akq" = ( +/obj/machinery/camera{ + c_tag = "Brig Central"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 3"; + name = "Cell 3"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akr" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"aks" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 8 + }, +/area/security/brig) +"akt" = ( +/obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door_timer{ + id = "Cell 4"; + name = "Cell 4"; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"aku" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/red/side{ + dir = 4 + }, +/area/security/brig) "akv" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -3480,6 +4488,10 @@ dir = 8 }, /area/security/courtroom) +"akz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "akA" = ( /obj/structure/chair{ dir = 8; @@ -3495,6 +4507,13 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/fore) +"akG" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = 32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "akH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -3531,12 +4550,87 @@ /obj/machinery/meter, /turf/open/floor/plating, /area/maintenance/fore) +"akM" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akN" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akO" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 1"; + name = "Cell 1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akP" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) "akQ" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/closed/wall, /area/security/brig) +"akR" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 2"; + name = "Cell 2" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"akS" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akT" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 3"; + name = "Cell 3" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side, +/area/security/brig) "akU" = ( /obj/machinery/door/airlock/security/glass{ name = "Brig Desk"; @@ -3560,6 +4654,75 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/security/brig) +"akW" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) +"akX" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/security/glass{ + id_tag = "innerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) +"akY" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"akZ" = ( +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"ala" = ( +/obj/machinery/door/window/brigdoor/security/cell{ + id = "Cell 4"; + name = "Cell 4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/red/side, +/area/security/brig) +"alb" = ( +/obj/structure/chair{ + dir = 4; + name = "Prosecution" + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/courtroom) "alc" = ( /obj/structure/table/wood, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -3579,6 +4742,12 @@ dir = 6 }, /area/security/courtroom) +"alf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "alg" = ( /obj/structure/cable{ icon_state = "0-2" @@ -3609,6 +4778,17 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"aln" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/security/processing) "alp" = ( /turf/open/floor/plating, /area/security/processing) @@ -3640,6 +4820,35 @@ dir = 8 }, /area/ai_monitored/nuke_storage) +"alv" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = -25; + pixel_y = -2; + prison_radio = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"alw" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) +"alx" = ( +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "aly" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -3654,6 +4863,23 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"alz" = ( +/obj/machinery/button/door{ + id = "briggate"; + name = "Desk Shutters"; + pixel_x = -26; + pixel_y = 6 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/button/flasher{ + id = "brigentry"; + pixel_x = -28; + pixel_y = -8 + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) "alA" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -3685,6 +4911,19 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/courtroom) +"alE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/flasher{ + id = "Cell 4"; + pixel_x = 28 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "alF" = ( /obj/machinery/atmospherics/components/unary/tank/air{ dir = 2 @@ -3826,6 +5065,18 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"amf" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/flasher{ + id = "Cell 1"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "amg" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 1"; @@ -3833,6 +5084,15 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amh" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 2"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "ami" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 2"; @@ -3840,6 +5100,15 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amj" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/flasher{ + id = "Cell 3"; + pixel_x = -28 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "amk" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 3"; @@ -3894,6 +5163,15 @@ }, /turf/open/floor/plasteel/dark, /area/security/brig) +"amo" = ( +/obj/machinery/flasher{ + id = "brigentry"; + pixel_x = 28 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) "amp" = ( /obj/structure/closet/secure_closet/brig{ id = "Cell 4"; @@ -3901,6 +5179,19 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/brig) +"amq" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/item/radio/intercom{ + desc = "Talk through this. It looks like it has been modified to not broadcast."; + dir = 2; + name = "Prison Intercom (General)"; + pixel_x = 25; + pixel_y = -2; + prison_radio = 1 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/brig) "amr" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -4012,6 +5303,10 @@ /obj/item/trash/plate, /turf/open/floor/plating, /area/maintenance/port/fore) +"amK" = ( +/obj/structure/sign/warning/docking, +/turf/closed/wall, +/area/security/processing) "amL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/spawner/structure/window/reinforced, @@ -4048,12 +5343,112 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"amQ" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amR" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/machinery/door/poddoor/preopen{ + id = "Secure Gate"; + name = "brig shutters" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) "amS" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/closed/wall/r_wall, /area/security/brig) +"amT" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amU" = ( +/obj/machinery/door/poddoor/preopen{ + id = "briggate"; + name = "security blast door" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/brig) +"amV" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "briggate"; + name = "security shutters" + }, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Brig Desk"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark, +/area/security/brig) +"amW" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/brig) +"amX" = ( +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel/red/side{ + dir = 9 + }, +/area/security/brig) "amY" = ( /obj/structure/chair{ dir = 1 @@ -4199,6 +5594,22 @@ }, /turf/open/floor/plasteel, /area/security/processing) +"anu" = ( +/obj/machinery/button/door{ + desc = "A remote control switch for the exit."; + id = "laborexit"; + name = "exit button"; + normaldoorcontrol = 1; + pixel_x = 26; + pixel_y = -6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/red/side{ + dir = 5 + }, +/area/security/processing) "anv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4216,6 +5627,25 @@ dir = 1 }, /area/hallway/primary/fore) +"anx" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) +"any" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 1 + }, +/area/hallway/primary/fore) "anz" = ( /turf/open/floor/plasteel, /area/hallway/primary/fore) @@ -4224,6 +5654,21 @@ dir = 4 }, /area/hallway/primary/fore) +"anB" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 4 + }, +/area/hallway/primary/fore) +"anC" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/security/courtroom) "anD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4279,6 +5724,16 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/fore) +"anN" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + shuttledocked = 1 + }, +/turf/open/floor/plating, +/area/security/processing) "anO" = ( /obj/docking_port/stationary{ dir = 8; @@ -4291,10 +5746,43 @@ }, /turf/open/space/basic, /area/space) +"anP" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + id_tag = "laborexit"; + name = "Labor Shuttle"; + req_access_txt = "63" + }, +/turf/open/floor/plasteel, +/area/security/processing) +"anQ" = ( +/obj/structure/sign/warning/electricshock{ + pixel_y = 32 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anR" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "anS" = ( /obj/machinery/holopad, /turf/open/floor/plasteel, /area/hallway/primary/fore) +"anT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) +"anU" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Courtroom" + }, +/turf/open/floor/plasteel/dark, +/area/security/courtroom) "anV" = ( /obj/machinery/light/small, /turf/open/floor/plasteel/dark, @@ -4435,6 +5923,13 @@ /obj/item/circuitboard/machine/monkey_recycler, /turf/open/floor/plating, /area/maintenance/port/fore) +"aoq" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_y = -32 + }, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/security/processing) "aor" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -4496,11 +5991,68 @@ dir = 8 }, /area/hallway/primary/fore) +"aoy" = ( +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=EVA"; + location = "Security" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/fore) "aoz" = ( /turf/open/floor/plasteel/red/corner{ dir = 2 }, /area/hallway/primary/fore) +"aoA" = ( +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoB" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoC" = ( +/obj/machinery/vending/coffee, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoD" = ( +/obj/machinery/camera{ + c_tag = "Fore Primary Hallway East"; + dir = 1 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 5; + pixel_y = -32 + }, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoE" = ( +/obj/machinery/vending/cigarette, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) +"aoF" = ( +/obj/machinery/vending/snack/random, +/turf/open/floor/plasteel/red/corner{ + dir = 2 + }, +/area/hallway/primary/fore) "aoG" = ( /obj/structure/table, /obj/machinery/firealarm{ @@ -4718,6 +6270,12 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/closed/wall, /area/maintenance/fore/secondary) +"apo" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/closed/wall, +/area/maintenance/fore/secondary) "app" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -5343,6 +6901,10 @@ /obj/item/pen/red, /turf/open/floor/wood, /area/lawoffice) +"arc" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "ard" = ( /obj/machinery/door/poddoor/preopen{ id = "lawyer_blast"; @@ -7438,6 +9000,18 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"awN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "awO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -9521,6 +11095,24 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) +"aCd" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm1"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms) "aCe" = ( /obj/effect/landmark/xeno_spawn, /obj/item/bikehorn/rubberducky, @@ -10135,6 +11727,16 @@ /obj/structure/sign/warning/electricshock, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) +"aDK" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm1"; + name = "Dorm 1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms) "aDL" = ( /obj/structure/sink{ dir = 8; @@ -10632,12 +12234,62 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/ai_monitored/storage/eva) +"aFd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/neutral/side{ + dir = 4 + }, +/area/crew_quarters/dorms) +"aFe" = ( +/obj/machinery/camera{ + c_tag = "Dormitory South"; + c_tag_order = 999; + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/neutral/side{ + dir = 8 + }, +/area/crew_quarters/dorms) +"aFf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) "aFg" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, /area/crew_quarters/toilet) +"aFh" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) +"aFi" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Dormitory Bathrooms APC"; + areastring = "/area/crew_quarters/toilet"; + pixel_x = 26 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/plasteel/freezer, +/area/crew_quarters/toilet) "aFj" = ( /turf/open/floor/plasteel/redblue/redside, /area/crew_quarters/theatre) @@ -11524,6 +13176,16 @@ dir = 4 }, /area/chapel/main) +"aHp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/open/floor/plasteel/showroomfloor, +/area/security/warden) "aHq" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -12033,6 +13695,11 @@ /obj/structure/table/glass, /turf/open/floor/plasteel/chapel, /area/chapel/main) +"aIF" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/structure/cable, +/turf/open/floor/plating, +/area/security/warden) "aIH" = ( /obj/structure/table, /obj/item/storage/box/lights/mixed, @@ -19434,6 +21101,10 @@ }, /turf/closed/wall, /area/quartermaster/warehouse) +"bcU" = ( +/obj/item/stack/tile/plasteel, +/turf/open/space, +/area/space/nearstation) "bcV" = ( /obj/machinery/airalarm{ dir = 8; @@ -19824,6 +21495,10 @@ /obj/structure/closet/crate/medical, /turf/open/floor/plasteel/floorgrime, /area/quartermaster/warehouse) +"bdV" = ( +/obj/item/stack/sheet/metal, +/turf/open/floor/plating/airless, +/area/space/nearstation) "bdW" = ( /obj/item/clothing/gloves/color/rainbow, /obj/item/clothing/head/soft/rainbow, @@ -22418,6 +24093,10 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"bkA" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "bkB" = ( /obj/machinery/button/door{ id = "Disposal Exit"; @@ -23032,6 +24711,13 @@ }, /turf/open/floor/plating, /area/maintenance/disposal) +"blT" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "blU" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, @@ -33227,6 +34913,10 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) +"bJP" = ( +/obj/machinery/vending/boozeomat, +/turf/open/floor/plasteel/bar, +/area/maintenance/port/aft) "bJQ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -35124,7 +36814,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/droneDispenser, /turf/open/floor/plasteel, /area/science/misc_lab) "bOx" = ( @@ -35802,9 +37491,32 @@ }, /turf/open/floor/plasteel, /area/tcommsat/computer) +"bPR" = ( +/obj/effect/decal/cleanable/robot_debris/old, +/turf/open/floor/wood, +/area/maintenance/port/aft) "bPS" = ( /turf/open/floor/wood, /area/maintenance/port/aft) +"bPT" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken" + }, +/area/maintenance/port/aft) +"bPU" = ( +/obj/item/shard, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bPV" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Maint Bar Access"; + req_access_txt = "12" + }, +/obj/structure/barricade/wooden{ + name = "wooden barricade (CLOSED)" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bPW" = ( /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, @@ -36220,6 +37932,27 @@ /obj/machinery/computer/libraryconsole/bookmanagement, /turf/open/floor/plasteel/white, /area/science/circuit) +"bRc" = ( +/obj/structure/table/wood, +/obj/item/soap/nanotrasen, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/maintenance/port/aft) +"bRe" = ( +/obj/structure/table/wood, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 4; + name = "4maintenance loot spawner" + }, +/turf/open/floor/wood, +/area/maintenance/port/aft) +"bRf" = ( +/obj/structure/table/wood, +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/port/aft) "bRg" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -36687,6 +38420,18 @@ icon_state = "platingdmg3" }, /area/maintenance/starboard/aft) +"bSn" = ( +/obj/machinery/space_heater, +/turf/open/floor/wood, +/area/maintenance/port/aft) +"bSo" = ( +/obj/structure/chair/stool, +/turf/open/floor/wood, +/area/maintenance/port/aft) +"bSp" = ( +/obj/structure/grille/broken, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bSq" = ( /obj/structure/rack, /obj/item/tank/internals/emergency_oxygen, @@ -36709,6 +38454,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/tcommsat/computer) +"bSu" = ( +/obj/item/stack/cable_coil{ + amount = 5 + }, +/turf/open/floor/plating/airless, +/area/space/nearstation) "bSv" = ( /obj/machinery/camera{ c_tag = "Construction Area"; @@ -37159,6 +38910,40 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"bTs" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken5" + }, +/area/maintenance/port/aft) +"bTt" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/maintenance/port/aft) +"bTu" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/maintenance/port/aft) +"bTv" = ( +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bTw" = ( +/obj/machinery/door/airlock/maintenance/abandoned{ + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bTx" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 8 @@ -37166,6 +38951,13 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/maintenance/port/aft) +"bTy" = ( +/obj/effect/spawner/structure/window, +/obj/machinery/atmospherics/pipe/simple/general/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bTz" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -37529,6 +39321,34 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"bUt" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUu" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) +"bUv" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bUx" = ( /obj/structure/disposalpipe/junction/yjunction{ dir = 1 @@ -37976,6 +39796,12 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plating, /area/maintenance/port/aft) +"bVG" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/turf/open/floor/plating, +/area/maintenance/port/aft) "bVI" = ( /turf/closed/wall/r_wall, /area/tcommsat/server) @@ -39776,6 +41602,12 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"car" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall, +/area/maintenance/port/aft) "cas" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -43299,6 +45131,10 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cjn" = ( +/obj/item/weldingtool, +/turf/open/floor/plating/airless, +/area/space/nearstation) "cjo" = ( /obj/structure/closet/toolcloset, /turf/open/floor/plasteel, @@ -44230,6 +46066,11 @@ dir = 1 }, /area/engine/engineering) +"clS" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/machinery/rnd/production/techfab/department/security, +/turf/open/floor/plasteel/red/side, +/area/security/main) "clT" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/open/floor/engine/n2, @@ -45262,6 +47103,19 @@ }, /turf/open/space, /area/space/nearstation) +"cpg" = ( +/obj/item/grenade/barrier{ + pixel_x = 4 + }, +/obj/item/grenade/barrier, +/obj/item/grenade/barrier{ + pixel_x = -4 + }, +/obj/structure/table, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "cph" = ( /obj/structure/lattice, /obj/machinery/atmospherics/pipe/simple/green/visible, @@ -45398,6 +47252,15 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"cpA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "cpC" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/effect/landmark/event_spawn, @@ -45789,6 +47652,31 @@ /obj/machinery/atmospherics/pipe/simple/green/visible, /turf/closed/wall/r_wall, /area/engine/supermatter) +"cqG" = ( +/obj/structure/rack, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/item/storage/box/rubbershot{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/box/rubbershot{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "cqJ" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -46148,15 +48036,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"crS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) "crT" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ @@ -48033,6 +49912,21 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"cwM" = ( +/obj/structure/rack, +/obj/item/storage/box/teargas{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/box/handcuffs, +/obj/item/storage/box/flashbangs{ + pixel_x = 3; + pixel_y = -3 + }, +/turf/open/floor/plasteel/vault{ + dir = 8 + }, +/area/ai_monitored/security/armory) "cwT" = ( /obj/machinery/camera{ c_tag = "Arrivals Escape Pod 2"; @@ -48090,6 +49984,16 @@ }, /turf/open/floor/plating, /area/security/main) +"cxJ" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock"; + req_access_txt = "2" + }, +/turf/open/floor/plating, +/area/security/processing) "cxN" = ( /obj/structure/cable{ icon_state = "1-2" @@ -48103,6 +50007,15 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"cxP" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/airlock/external{ + name = "Labor Camp Shuttle Airlock" + }, +/turf/open/floor/plating, +/area/security/processing) "cxW" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -49191,6 +51104,18 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"cBV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/security{ + name = "Security Office"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/security/main) "cBZ" = ( /obj/structure/table/wood, /obj/item/clothing/under/burial, @@ -49201,6 +51126,10 @@ /obj/item/clothing/under/burial, /turf/open/floor/plasteel/grimy, /area/chapel/office) +"cCa" = ( +/obj/item/clothing/head/hardhat, +/turf/open/floor/plating/airless, +/area/space/nearstation) "cCb" = ( /obj/structure/table, /obj/item/stack/cable_coil{ @@ -50814,13 +52743,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) -"cIV" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restroom"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/freezer, -/area/security/prison) "cMm" = ( /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, @@ -51038,17 +52960,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cQs" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 4"; - name = "Cell 4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) "cQw" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -51328,21 +53239,6 @@ dir = 1 }, /area/engine/engineering) -"cTu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) "cTD" = ( /obj/structure/cable{ icon_state = "1-2" @@ -51466,23 +53362,6 @@ "cVb" = ( /turf/closed/wall, /area/hallway/secondary/service) -"dcW" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Brig Desk"; - req_access_txt = "1" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) "dfh" = ( /obj/machinery/power/apc{ areastring = "/area/science/circuit"; @@ -51497,16 +53376,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"dhD" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/ai_monitored/security/armory) "dqu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall/r_wall, @@ -51530,38 +53399,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"eet" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/hallway/primary/fore) -"efg" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"esl" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"ete" = ( -/turf/closed/wall, -/area/maintenance/bar) -"evS" = ( -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "eyM" = ( /obj/machinery/mineral/ore_redemption{ input_dir = 2; @@ -51570,41 +53407,6 @@ /obj/machinery/door/firedoor, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"eAL" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/advtaser{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun/advtaser, -/obj/item/gun/energy/e_gun/advtaser{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel{ - dir = 2 - }, -/area/ai_monitored/security/armory) -"eEc" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/warden) "eHI" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -51616,12 +53418,6 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"eTp" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/maintenance/bar) "eVL" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/light_switch{ @@ -51632,30 +53428,12 @@ }, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"faB" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - areastring = "/area/security/warden"; - dir = 1; - name = "Brig Control APC"; - pixel_y = 24 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) "fcG" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 }, /turf/closed/wall/r_wall, /area/science/mixing) -"fhC" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/effect/decal/cleanable/blood/old, -/obj/item/assembly/signaler, -/turf/open/floor/plating, -/area/maintenance/bar) "flc" = ( /obj/machinery/bookbinder, /turf/open/floor/plasteel/white, @@ -51673,46 +53451,10 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"fpJ" = ( -/obj/structure/table, -/obj/item/storage/lockbox/loyalty, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"fqD" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 1"; - name = "Cell 1" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) "fsQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"fuL" = ( -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) -"fDN" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"fEF" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/obj/structure/bed, -/obj/item/bedsheet, -/turf/open/floor/wood, -/area/maintenance/port/aft) "fGf" = ( /obj/machinery/smartfridge/disks, /turf/open/floor/plasteel/hydrofloor, @@ -51722,28 +53464,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, /area/science/circuit) -"fKO" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"fLS" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"fYm" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/machinery/light{ - dir = 4 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) "gbq" = ( /obj/structure/cable{ icon_state = "4-8" @@ -51775,31 +53495,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"gwo" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"gEX" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"gKP" = ( -/obj/machinery/door/airlock{ - name = "Unisex Restrooms" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) "gLH" = ( /obj/machinery/door/airlock/external{ name = "External Access"; @@ -51810,22 +53505,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"gPJ" = ( -/obj/structure/rack, -/obj/item/gun/energy/ionrifle, -/obj/item/gun/energy/temperature/security, -/obj/item/clothing/suit/armor/laserproof, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/red/side, -/area/ai_monitored/security/armory) -"gPL" = ( -/obj/structure/table/wood, -/obj/item/storage/box/drinkingglasses, -/turf/open/floor/wood, -/area/maintenance/bar) "gWd" = ( /obj/structure/cable{ icon_state = "1-4" @@ -51843,10 +53522,6 @@ dir = 8 }, /area/medical/sleeper) -"gZR" = ( -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/wood, -/area/maintenance/port/aft) "hcE" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/disposalpipe/segment, @@ -51864,14 +53539,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"hDJ" = ( -/obj/machinery/door/airlock/security{ - name = "Interrogation"; - req_access = null; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/dark, -/area/security/prison) "hRa" = ( /obj/structure/table/reinforced, /obj/machinery/light{ @@ -51884,94 +53551,20 @@ /obj/item/stock_parts/cell/super, /turf/open/floor/plasteel/white, /area/science/circuit) -"hYC" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"ihC" = ( -/obj/structure/sign/poster/random{ - pixel_y = -32 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"ihS" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/bar) "ijc" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, /turf/open/floor/plasteel/dark, /area/engine/engineering) "ipA" = ( -/obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"iqw" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"irr" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood, -/area/maintenance/bar) "itG" = ( /obj/structure/table/reinforced, /obj/item/paper_bin, /obj/item/pen, /turf/open/floor/plasteel/white, /area/science/circuit) -"iuz" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "briggate"; - name = "security shutters" - }, -/obj/machinery/door/window/eastright{ - name = "Brig Desk"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"ixw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/computer/security{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"iyF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) "iEJ" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod One" @@ -51989,33 +53582,6 @@ /obj/structure/reagent_dispensers/cooking_oil, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"iTV" = ( -/obj/structure/bed, -/obj/item/clothing/suit/straight_jacket, -/obj/item/clothing/mask/muzzle, -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"iYT" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"iZV" = ( -/obj/structure/sign/poster/random{ - pixel_x = -32 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "jbf" = ( /obj/structure/cable{ icon_state = "0-2" @@ -52028,14 +53594,6 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"jdX" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "jgm" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -52054,11 +53612,6 @@ /obj/machinery/rnd/production/techfab/department/cargo, /turf/open/floor/plasteel, /area/quartermaster/office) -"jnM" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) "jrE" = ( /obj/machinery/rnd/production/protolathe/department/science, /obj/structure/sign/poster/official/random{ @@ -52066,10 +53619,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"jss" = ( -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) "jAD" = ( /obj/structure/grille, /turf/open/floor/plating/airless, @@ -52086,17 +53635,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jDQ" = ( -/obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = -30 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) "jHt" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment{ @@ -52110,20 +53648,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jHE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"jJa" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 2 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) "jMF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -52139,12 +53663,6 @@ /obj/item/stack/cable_coil, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"jNv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "jSO" = ( /obj/machinery/light{ dir = 4 @@ -52163,22 +53681,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"jXE" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"kcq" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/obj/structure/closet/secure_closet/personal, -/turf/open/floor/wood, -/area/maintenance/port/aft) "khb" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 10 @@ -52216,27 +53718,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"ksu" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"kuo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) "kzT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 @@ -52254,15 +53735,6 @@ }, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"kPE" = ( -/obj/machinery/light, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/cryopod) "kQk" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -52271,17 +53743,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"kQp" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) "kQq" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ @@ -52293,66 +53754,10 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) -"kXo" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/hallway/primary/fore) -"lgR" = ( -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - layer = 2.9; - name = "blast door" - }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/westright{ - dir = 1; - name = "Transfer Room"; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/vault{ - dir = 8 - }, -/area/security/execution/transfer) -"lla" = ( -/obj/structure/closet/secure_closet/contraband/armory, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"loR" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"lsi" = ( -/obj/machinery/power/apc/highcap/five_k{ - dir = 4; - areastring = "/area/ai_monitored/security/armory"; - name = "Armory APC"; - pixel_x = 24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "lAB" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, /area/science/circuit) -"lIk" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "lMg" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -52363,63 +53768,10 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/science/circuit) -"lTe" = ( -/obj/structure/table, -/obj/item/storage/toolbox/drone, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"lVH" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/table, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"lYQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) "mjr" = ( /obj/machinery/vending/wardrobe/bar_wardrobe, /turf/open/floor/wood, /area/crew_quarters/bar) -"mlG" = ( -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"mqQ" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 2"; - name = "Cell 2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"muL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 2; - id_tag = "innerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) "mBv" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52431,117 +53783,22 @@ }, /turf/open/floor/engine, /area/engine/engineering) -"mCA" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"mKs" = ( -/obj/item/restraints/handcuffs/fake, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears, -/turf/open/floor/plating, -/area/maintenance/bar) "mNi" = ( /obj/machinery/light_switch{ pixel_x = -20 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mQI" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - dir = 4; - id = "Secure Cell"; - name = "Secure Cell" - }, -/obj/machinery/door/window/brigdoor/security/cell{ - dir = 8; - id = "Secure Cell"; - name = "Secure Cell" - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/plasteel/dark/side{ - dir = 8 - }, -/area/security/execution/transfer) "mRe" = ( /obj/machinery/light{ dir = 8 }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mTf" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/riot, -/obj/item/clothing/suit/armor/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/riot, -/obj/item/clothing/head/helmet/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/shield/riot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/shield/riot, -/obj/item/shield/riot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"nbc" = ( -/obj/machinery/hydroponics/soil, -/obj/item/plant_analyzer, -/obj/machinery/camera{ - c_tag = "Prison Common Room"; - network = list("ss13","prison") - }, -/turf/open/floor/plasteel/green/side{ - dir = 5 - }, -/area/security/prison) "noK" = ( /obj/structure/girder, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"npy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel, -/area/security/armory) -"nuw" = ( -/obj/structure/chair/stool, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -35 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"nuB" = ( -/turf/open/floor/wood, -/area/maintenance/bar) "nxv" = ( /obj/machinery/power/apc{ name = "Construction Area APC"; @@ -52557,18 +53814,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"nCJ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Brig"; - req_access = null; - req_access_txt = "63; 42" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) "nGt" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52580,13 +53825,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"nMU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) "nRG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 10 @@ -52599,56 +53837,16 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"orD" = ( -/obj/structure/table/wood/poker, -/obj/item/coin/iron, -/turf/open/floor/wood, -/area/maintenance/bar) -"oux" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 8 - }, -/area/crew_quarters/dorms) -"oxm" = ( -/obj/machinery/door_timer{ - id = "Cell 3"; - name = "Cell 3"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) "oDF" = ( /obj/machinery/light, /turf/open/floor/plating, /area/engine/engineering) -"oEE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) "oHU" = ( /obj/structure/cable{ icon_state = "1-2" }, /turf/open/floor/plasteel, /area/science/circuit) -"oKT" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) "oUh" = ( /obj/structure/disposalpipe/trunk{ dir = 1 @@ -52656,27 +53854,6 @@ /obj/machinery/disposal/bin, /turf/open/floor/plasteel/white, /area/science/circuit) -"piy" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/brig) -"poo" = ( -/obj/structure/lattice/catwalk, -/turf/open/space/basic, -/area/space/nearstation) -"pDm" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 5 - }, -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 2 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) "pHl" = ( /obj/structure/table, /obj/item/storage/box/beakers{ @@ -52722,17 +53899,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"qiF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"qla" = ( -/obj/machinery/flasher/portable, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) "qpv" = ( /obj/machinery/light{ dir = 4 @@ -52745,38 +53911,6 @@ /obj/structure/grille/broken, /turf/open/space/basic, /area/space/nearstation) -"qDl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"qQU" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/port/aft) -"qVv" = ( -/obj/structure/chair/comfy/black, -/obj/effect/landmark/start/head_of_security, -/turf/open/floor/carpet, -/area/crew_quarters/heads/hos) -"qZT" = ( -/obj/machinery/vending/snack/random, -/obj/machinery/flasher{ - id = "brigentry"; - pixel_x = 28 - }, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"rax" = ( -/obj/structure/closet/secure_closet/security/sec, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) "rcD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -52787,87 +53921,17 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) -"rmO" = ( -/obj/machinery/flasher{ - id = "Cell 3"; - pixel_x = -28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) "rmX" = ( /obj/structure/table, /obj/item/reagent_containers/food/drinks/beer, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"rpN" = ( -/obj/machinery/button/door{ - desc = "A remote control switch for the exit."; - id = "laborexit"; - name = "exit button"; - normaldoorcontrol = 1; - pixel_x = 26; - pixel_y = -6; - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/processing) -"rtk" = ( -/turf/open/floor/plasteel/dark, -/area/security/processing) -"ryv" = ( -/obj/machinery/flasher{ - id = "Cell 2"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"rAZ" = ( -/turf/closed/wall, -/area/crew_quarters/cryopod) -"rHF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) "rKP" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 1 }, /turf/open/floor/plating, /area/construction) -"rPG" = ( -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 8; - icon_state = "right"; - name = "Unisex Showers"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/freezer, -/area/security/prison) -"rTI" = ( -/obj/machinery/door/window/brigdoor/security/cell{ - id = "Cell 3"; - name = "Cell 3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) "saK" = ( /obj/structure/closet/crate, /obj/item/target/alien, @@ -52880,21 +53944,6 @@ /obj/item/gun/energy/laser/practice, /turf/open/floor/plasteel/white, /area/science/circuit) -"sfv" = ( -/obj/effect/spawner/structure/window, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/turf/open/floor/plating, -/area/security/brig) -"sgY" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "slk" = ( /obj/machinery/door/airlock/maintenance{ req_access_txt = "12" @@ -52907,38 +53956,12 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"ssv" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun/dragnet, -/obj/item/gun/energy/e_gun/dragnet, -/obj/effect/turf_decal/bot_white, -/obj/item/gun/energy/pumpaction/blaster, -/obj/item/gun/energy/pumpaction/blaster, -/turf/open/floor/plasteel/dark, -/area/security/armory) "sxs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/table, /obj/item/shovel/spade, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"sCj" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/brig) -"sGR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) "sLv" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -52958,11 +53981,6 @@ /obj/structure/chair/office/light, /turf/open/floor/plasteel/white, /area/science/circuit) -"sVi" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) "sWR" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -52986,80 +54004,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, /area/hallway/secondary/service) -"tfB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/obj/structure/tank_dispenser/oxygen, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"tra" = ( -/obj/machinery/computer/prisoner{ - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"tsC" = ( -/obj/machinery/atmospherics/pipe/simple/general/hidden{ - dir = 4 - }, -/obj/structure/bed, -/obj/item/bedsheet, -/obj/item/bedsheet, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"tvf" = ( -/obj/structure/table/wood/poker, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/item/storage/pill_bottle/dice, -/turf/open/floor/wood, -/area/maintenance/bar) -"txT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"tIp" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Armory"; - req_access_txt = "3" - }, +"trb" = ( /obj/machinery/light{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"tLw" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) +/area/security/courtroom) "tMl" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel/showroomfloor, @@ -53071,16 +54021,6 @@ }, /turf/open/floor/plasteel/white, /area/science/mixing) -"tTl" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - layer = 2.9; - name = "blast door" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/execution/transfer) "tXL" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 9 @@ -53113,34 +54053,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"uzg" = ( -/obj/structure/chair, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"uFV" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"uGh" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"uMu" = ( -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) "uNu" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -53151,12 +54063,6 @@ }, /turf/open/floor/plasteel, /area/science/circuit) -"uOE" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) "uPT" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 2 @@ -53166,10 +54072,6 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"uQt" = ( -/obj/structure/sign/poster/official/no_erp, -/turf/closed/wall, -/area/maintenance/bar) "uVS" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53182,14 +54084,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"uZB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) "vbD" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/command/glass{ @@ -53201,48 +54095,6 @@ }, /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) -"vdY" = ( -/obj/structure/falsewall, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"vmd" = ( -/obj/structure/rack, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/suit/armor/bulletproof, -/obj/item/clothing/suit/armor/bulletproof{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001 - }, -/obj/item/clothing/head/helmet/alt{ - layer = 3.00001; - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"vml" = ( -/obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"vnP" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, -/area/maintenance/bar) "vxh" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -53267,61 +54119,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel/white, /area/science/circuit) -"vCy" = ( -/obj/structure/window/reinforced, -/obj/machinery/door/window/eastleft{ - name = "Cyborg Docking Port" - }, -/obj/machinery/recharge_station, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"vGV" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Dormitory Bathrooms APC"; - areastring = "/area/crew_quarters/toilet"; - pixel_x = 26 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/freezer, -/area/crew_quarters/toilet) -"vJv" = ( -/obj/machinery/camera{ - c_tag = "Fore Primary Hallway East"; - dir = 1 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 5; - pixel_y = -32 - }, -/obj/machinery/light, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"vJW" = ( -/obj/machinery/camera{ - c_tag = "Brig Central"; - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door_timer{ - id = "Cell 4"; - name = "Cell 4"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) "vPE" = ( /obj/machinery/light{ dir = 4 @@ -53329,71 +54126,6 @@ /obj/machinery/libraryscanner, /turf/open/floor/plasteel/white, /area/science/circuit) -"vVq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"vYy" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"vYR" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Labor Shuttle"; - req_access = null; - req_access_txt = "2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"vZp" = ( -/obj/effect/turf_decal/delivery, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/turf/open/floor/plasteel, -/area/security/brig) -"wdF" = ( -/obj/structure/table/wood, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"wkw" = ( -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "wkN" = ( /turf/closed/wall, /area/science/circuit) @@ -53440,44 +54172,11 @@ }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) -"wOx" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/door/poddoor/preopen{ - id = "executionfireblast"; - layer = 2.9; - name = "blast door" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/security/execution/transfer) "wUY" = ( /obj/structure/table, /obj/item/reagent_containers/glass/bucket, /turf/open/floor/plasteel/hydrofloor, /area/hallway/secondary/service) -"wZF" = ( -/obj/effect/landmark/secequipment, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"xbq" = ( -/obj/machinery/computer/secure_data{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"xgi" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "xhV" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -53487,13 +54186,6 @@ }, /turf/open/floor/plating, /area/construction) -"xic" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/security/armory) "xiw" = ( /obj/machinery/door/airlock{ name = "Service Hall"; @@ -53505,29 +54197,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/service) -"xpa" = ( -/obj/structure/chair/stool, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "permabolt3"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"xDn" = ( -/obj/machinery/flasher{ - id = "Cell 4"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) "xEu" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -53539,1681 +54208,12 @@ /obj/effect/spawner/lootdrop/grille_or_trash, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"xJF" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - id_tag = "laborexit"; - name = "Labor Shuttle"; - req_access = null; - req_access_txt = "63" - }, -/turf/open/floor/plasteel, -/area/security/processing) -"xVn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"ybU" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating, -/area/maintenance/starboard/fore) "ycu" = ( /obj/structure/cable{ icon_state = "2-4" }, /turf/open/floor/plasteel, /area/science/circuit) -"ykv" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (EAST)"; - icon_state = "cryopod-open"; - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/cryopod) -"yLl" = ( -/obj/machinery/suit_storage_unit/security, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"yOg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/structure/table, -/obj/item/storage/box/prisoner, -/obj/machinery/camera{ - c_tag = "Labor Shuttle Dock North" - }, -/turf/open/floor/plasteel, -/area/security/processing) -"zaC" = ( -/obj/structure/rack, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/storage/box/rubbershot{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/item/storage/box/rubbershot{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"zcn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"zft" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/security/main) -"zmg" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel, -/area/security/brig) -"znN" = ( -/obj/structure/chair/stool, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"zxh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 4 - }, -/area/crew_quarters/dorms) -"zGy" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/camera/motion{ - c_tag = "Armory Motion Sensor"; - dir = 2; - name = "motion-sensitive security camera" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"zRm" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) -"zSX" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) -"AgS" = ( -/obj/machinery/vending/games{ - name = "\improper Good 'Clean' Fun" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"ATB" = ( -/obj/structure/closet/secure_closet/lethalshots, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"AWY" = ( -/obj/machinery/flasher{ - id = "Cell 1"; - pixel_x = -28 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"BdE" = ( -/obj/effect/turf_decal/stripes/line, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"BlT" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/window/southleft{ - base_state = "right"; - dir = 1; - icon_state = "right"; - name = "Armory"; - req_access_txt = "3" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"BSi" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"CaS" = ( -/obj/structure/table, -/obj/item/folder/red, -/obj/item/pen, -/obj/item/hand_labeler, -/obj/item/book/manual/wiki/security_space_law, -/obj/machinery/light, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"Clf" = ( -/obj/machinery/button/door{ - id = "briggate"; - name = "Desk Shutters"; - pixel_x = -26; - pixel_y = 6; - req_access_txt = "0" - }, -/obj/machinery/button/flasher{ - id = "brigentry"; - pixel_x = -28; - pixel_y = -8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"CpD" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"CxU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"CJg" = ( -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"CQC" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"CQO" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/ai_monitored/security/armory) -"CUx" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"Dhx" = ( -/obj/machinery/camera/motion{ - c_tag = "Non-Lethal Armory Motion Sensor"; - dir = 4 - }, -/obj/effect/turf_decal/stripes/end{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"DHH" = ( -/obj/machinery/button/door{ - id = "Maintdorm1"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"DHO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"DJw" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 5 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"DRh" = ( -/obj/structure/table, -/obj/item/grenade/barrier{ - pixel_x = 4 - }, -/obj/item/grenade/barrier, -/obj/item/grenade/barrier{ - pixel_x = -4 - }, -/obj/machinery/light{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/security/armory) -"DVb" = ( -/obj/structure/window/reinforced, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/structure/closet/secure_closet/brig{ - id = "Secure Cell"; - name = "Secure Cell Locker" - }, -/obj/effect/turf_decal/stripes/white/end{ - dir = 4 - }, -/obj/effect/turf_decal/delivery/white, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"EbP" = ( -/obj/machinery/suit_storage_unit/security, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"Ecg" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/item/reagent_containers/spray/cleaner, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"Eew" = ( -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=EVA"; - location = "Security" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"Eko" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/bar"; - dir = 2; - name = "Maintenance Bar APC"; - pixel_x = 1; - pixel_y = -24 - }, -/obj/structure/cable, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"Emp" = ( -/obj/structure/grille, -/obj/structure/lattice, -/turf/open/space/basic, -/area/space/nearstation) -"Evc" = ( -/obj/machinery/door/airlock/security{ - name = "Interrogation"; - req_access = null; - req_access_txt = "63" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/security/prison) -"EOh" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"EXC" = ( -/obj/structure/closet/l3closet/security, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"Fdq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - aiControlDisabled = 0; - id_tag = null; - locked = 0; - name = "Prisoner Transfer Centre"; - req_access = null; - req_access_txt = "2" - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Fwc" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"FJK" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"FQA" = ( -/obj/machinery/button/door{ - id = "seclobby"; - name = "Security Lobby Lockdown"; - pixel_x = -26; - pixel_y = 8; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/button/door{ - desc = "A remote control switch for the medbay foyer."; - id = "lobbyairlock"; - name = "Security Lobby Doors Control"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = -2; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"FRl" = ( -/obj/structure/falsewall, -/turf/open/floor/plating, -/area/maintenance/bar) -"FZW" = ( -/obj/effect/turf_decal/stripes/white/line{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Gbr" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/rack, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/clothing/mask/gas/sechailer, -/obj/item/clothing/mask/gas/sechailer{ - pixel_x = 3; - pixel_y = -3 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"GcW" = ( -/turf/closed/wall/r_wall, -/area/security/armory) -"GlY" = ( -/obj/machinery/door/window/westleft{ - base_state = "right"; - dir = 4; - icon_state = "right"; - name = "Brig Infirmary"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 4 - }, -/area/security/brig) -"Gmd" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/security/brig) -"Gnk" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"GpD" = ( -/obj/machinery/flasher{ - id = "brigentry"; - pixel_y = -28 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Gwy" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - id_tag = "Maintdorm2"; - req_access_txt = "0" - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"Hig" = ( -/obj/machinery/camera{ - c_tag = "Dormitory South"; - c_tag_order = 999; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/neutral/side{ - dir = 8 - }, -/area/crew_quarters/dorms) -"HJB" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/maintenance/bar) -"HWl" = ( -/obj/structure/table/wood, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/maintenance/bar) -"HXb" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/poddoor/preopen{ - id = "Prison Gate"; - name = "prison blast door" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/brig) -"IcK" = ( -/obj/effect/turf_decal/stripes/white/line, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 1 - }, -/obj/machinery/door_timer{ - id = "Secure Cell"; - name = "Secure Cell"; - pixel_y = -32 - }, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Iiq" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Labor Camp Shuttle Airlock"; - req_access_txt = "2" - }, -/obj/machinery/button/door{ - id = "prison release"; - name = "Labor Camp Shuttle Lockdown"; - pixel_y = -25; - req_access_txt = "2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/security/processing) -"IqS" = ( -/obj/structure/window/reinforced, -/obj/vehicle/ridden/secway, -/obj/item/key/security, -/obj/machinery/door/window/eastleft{ - name = "Secway Docking Port" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"IwC" = ( -/obj/effect/spawner/lootdrop/keg, -/turf/open/floor/wood, -/area/maintenance/bar) -"IEd" = ( -/obj/effect/turf_decal/stripes/line, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"IOq" = ( -/obj/structure/rack, -/obj/item/storage/box/chemimp{ - pixel_x = 6 - }, -/obj/item/storage/box/trackimp{ - pixel_x = -3 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/turf_decal/bot_white, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"IPJ" = ( -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"JbH" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"Jcn" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"Jcy" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Jfm" = ( -/turf/open/floor/plasteel/red/side{ - dir = 8 - }, -/area/security/brig) -"Jgm" = ( -/obj/effect/turf_decal/loading_area/white, -/obj/effect/turf_decal/stripes/white/corner{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/white/corner, -/turf/open/floor/plasteel/dark, -/area/security/execution/transfer) -"Jnv" = ( -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"JAr" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) -"JOT" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel, -/area/hallway/primary/fore) -"Knt" = ( -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"Kpp" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/cryopod{ - tag = "icon-cryopod-open (WEST)"; - icon_state = "cryopod-open"; - dir = 8 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"KrE" = ( -/obj/structure/rack, -/obj/item/soap/nanotrasen, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/port/aft) -"KvX" = ( -/obj/structure/chair/office/dark, -/obj/effect/landmark/start/warden, -/obj/machinery/button/door{ - id = "Prison Gate"; - name = "Prison Wing Lockdown"; - pixel_x = -27; - pixel_y = 8; - req_access_txt = "2" - }, -/obj/machinery/button/door{ - id = "seclobby"; - name = "Security Lobby Lockdown"; - pixel_x = -27; - pixel_y = -2; - req_access_txt = "2" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"KHo" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 4 - }, -/area/security/brig) -"KNi" = ( -/obj/machinery/door/window/southleft{ - name = "Armory"; - req_access_txt = "3" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/stripes/line{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"LcH" = ( -/obj/structure/table/wood, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/wood, -/area/maintenance/bar) -"Lru" = ( -/obj/structure/chair/stool, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "permabolt2"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"LAP" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"LZL" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/fore/secondary) -"Moa" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"MxR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/light, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Mzd" = ( -/obj/machinery/door/poddoor/shutters{ - id = "lowsecarmory"; - name = "Non-Lethal Armoury Shutter" - }, -/obj/machinery/button/door{ - id = "lowsecarmory"; - name = "Non-Lethal Armory Shutters"; - pixel_y = 26; - req_access_txt = "3" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/security/main) -"MIE" = ( -/obj/item/shard, -/obj/item/wirecutters, -/obj/item/wallframe/camera, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) -"MJI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"MLq" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"MRu" = ( -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/obj/structure/closet/secure_closet/courtroom, -/obj/effect/decal/cleanable/cobweb, -/obj/item/gavelhammer, -/turf/open/floor/plasteel, -/area/security/courtroom) -"MRP" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - name = "Incinerator Access"; - req_access_txt = "12" - }, -/obj/structure/barricade/wooden{ - name = "wooden barricade (CLOSED)" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"MWg" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"Nau" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"NkF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"Nmb" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"Nql" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/plating, -/area/security/brig) -"Nrx" = ( -/obj/item/radio/intercom{ - desc = "Talk through this. It looks like it has been modified to not broadcast."; - dir = 2; - name = "Prison Intercom (General)"; - pixel_x = -25; - pixel_y = -2; - prison_radio = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/floorgrime, -/area/security/brig) -"NzL" = ( -/obj/machinery/door/window/westleft{ - base_state = "left"; - dir = 4; - icon_state = "left"; - name = "Brig Infirmary"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/whitered/side{ - dir = 4 - }, -/area/security/brig) -"NQr" = ( -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_x = -30 - }, -/obj/machinery/camera{ - c_tag = "Brig Control Room"; - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/closet/secure_closet/warden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"NSC" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"Oly" = ( -/obj/machinery/chem_dispenser/drinks/beer, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"Osi" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "Armoury Shutter" - }, -/obj/effect/turf_decal/delivery, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"OtF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/maintenance/bar) -"Ozq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"OBq" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -31 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"OSr" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - id_tag = "Maintdorm1"; - req_access_txt = "0" - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"PcH" = ( -/obj/structure/table/wood/poker, -/turf/open/floor/wood, -/area/maintenance/bar) -"Pem" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/closed/wall, -/area/maintenance/bar) -"Pez" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"PlJ" = ( -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/turf/open/floor/plating, -/area/security/brig) -"PzP" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"PBc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"PEg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) -"PJW" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"PYb" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/effect/spawner/structure/window/reinforced, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/security/brig) -"Qcw" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"Qge" = ( -/obj/machinery/button/door{ - id = "Maintdorm2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/turf/open/floor/wood, -/area/maintenance/port/aft) -"Qru" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "lobbyairlock"; - name = "Security Lobby"; - req_access_txt = "0" - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"Qvz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"QDB" = ( -/obj/effect/turf_decal/stripes/line, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/armory) -"QFx" = ( -/obj/machinery/door/airlock/external{ - name = "Labor Camp Shuttle Airlock"; - req_access_txt = "2" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/security/processing) -"ReY" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"Rwb" = ( -/obj/machinery/computer/crew{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"RyJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"RRt" = ( -/obj/item/lighter/greyscale, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/bar) -"RWl" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/side{ - dir = 6 - }, -/area/security/brig) -"SbB" = ( -/obj/machinery/camera{ - c_tag = "Brig Equipment Room"; - dir = 4 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"Sfp" = ( -/obj/machinery/door/airlock/security/glass{ - id_tag = null; - name = "Evidence Storage"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side, -/area/security/brig) -"SjU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"Sly" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken" - }, -/area/maintenance/bar) -"STm" = ( -/obj/machinery/vending/clothing, -/turf/open/floor/wood, -/area/maintenance/bar) -"SUw" = ( -/obj/structure/rack, -/obj/item/storage/box/teargas{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/flashbangs{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel/red/side, -/area/ai_monitored/security/armory) -"SWq" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security{ - name = "Security Office"; - req_access = null; - req_access_txt = "1" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel, -/area/security/main) -"Tqy" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/security/glass{ - cyclelinkeddir = 1; - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"TIM" = ( -/obj/machinery/door_timer{ - id = "Cell 2"; - name = "Cell 2"; - pixel_y = -32 - }, -/obj/machinery/light, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/plasteel/red/corner, -/area/security/brig) -"TZk" = ( -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/red/side{ - dir = 4 - }, -/area/security/brig) -"UmK" = ( -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"UnJ" = ( -/obj/machinery/vending/kink, -/turf/open/floor/wood, -/area/maintenance/bar) -"UqV" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"Uua" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"Uuv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/filingcabinet/chestdrawer, -/turf/open/floor/plasteel/showroomfloor, -/area/security/warden) -"UvC" = ( -/obj/item/twohanded/required/kirbyplants/random, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/brig) -"USL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"UYY" = ( -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/cryopod"; - dir = 4; - name = "Cryogenics APC"; - pixel_x = 24 - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"Vup" = ( -/obj/structure/chair/stool, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/button/door{ - id = "permabolt1"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_y = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"VLP" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"VTn" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance/abandoned{ - req_access_txt = "0" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"VZe" = ( -/obj/machinery/door/poddoor/shutters{ - id = "armory"; - name = "Armoury Shutter" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"Wgg" = ( -/obj/structure/bed, -/obj/item/bedsheet/grey, -/obj/effect/decal/cleanable/semen{ - desc = "Blech."; - name = "dried semen" - }, -/obj/effect/spawner/lootdrop/costume, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/bar) -"WwY" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"WDU" = ( -/obj/machinery/door/airlock/security/glass{ - name = "Brig Control"; - req_access_txt = "3" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) -"WMt" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/plasteel/red/side{ - dir = 5 - }, -/area/security/brig) -"WQm" = ( -/obj/structure/chair{ - dir = 4; - name = "Prosecution" - }, -/turf/open/floor/plasteel/red/side{ - dir = 9 - }, -/area/security/courtroom) -"WRc" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "seclobby"; - name = "security shutters" - }, -/obj/machinery/door/airlock/public/glass{ - name = "Courtroom" - }, -/turf/open/floor/plasteel/dark, -/area/security/brig) -"WSZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood{ - icon_state = "wood-broken5" - }, -/area/maintenance/bar) -"WWX" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/brigdoor{ - dir = 1; - name = "Armory Desk"; - req_access_txt = "3" - }, -/obj/machinery/door/window/southleft{ - name = "Reception Desk"; - req_access_txt = "63" - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plasteel/showroomfloor, -/area/security/brig) -"WXW" = ( -/obj/structure/chair/stool/bar, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/maintenance/bar) -"Xfx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"Xiv" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/fore/secondary) -"XjL" = ( -/obj/structure/rack, -/obj/item/gun/energy/e_gun{ - pixel_x = -3; - pixel_y = 3 - }, -/obj/item/gun/energy/e_gun, -/obj/item/gun/energy/e_gun{ - pixel_x = 3; - pixel_y = -3 - }, -/obj/effect/turf_decal/bot{ - dir = 2 - }, -/obj/structure/window/reinforced{ - dir = 1; - layer = 2.9 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel{ - dir = 2 - }, -/area/ai_monitored/security/armory) -"XmQ" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/iv_drip, -/turf/open/floor/plasteel/whitered/side{ - dir = 5 - }, -/area/security/brig) -"XqB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/bar) -"XwE" = ( -/turf/open/floor/plasteel/red/side{ - dir = 10 - }, -/area/security/brig) -"XBE" = ( -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" - }, -/obj/item/crowbar, -/obj/item/electropack/shockcollar, -/turf/open/floor/plating, -/area/maintenance/bar) -"XLV" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"XMB" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/obj/machinery/rnd/production/protolathe/department/security, -/turf/open/floor/plasteel/red/side, -/area/security/main) -"XPp" = ( -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/newscaster{ - pixel_x = 30 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/maintenance/bar) -"XRe" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel/bar, -/area/security/brig) -"XSH" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/turf/open/floor/plasteel, -/area/security/brig) -"YcJ" = ( -/turf/open/floor/plasteel, -/area/security/execution/transfer) -"YjW" = ( -/obj/item/radio/intercom{ - freerange = 0; - frequency = 1459; - name = "Station Intercom (General)"; - pixel_x = 29 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/closet/wardrobe/red, -/turf/open/floor/plasteel/showroomfloor, -/area/security/main) -"YpE" = ( -/obj/structure/chair/stool, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/maintenance/bar) -"YNq" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) -"YNF" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/turf/open/floor/plasteel/red/side{ - dir = 1 - }, -/area/security/brig) -"YRL" = ( -/obj/structure/table, -/obj/item/storage/box/firingpins, -/obj/item/storage/box/firingpins, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) -"YUq" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/machinery/computer/cryopod{ - pixel_y = 25 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/tile/green/corner{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/cryopod) -"ZbZ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 8 - }, -/area/security/brig) -"Zhd" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 5 - }, -/turf/closed/wall, -/area/maintenance/bar) -"Zvf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 1 - }, -/area/security/brig) -"ZAl" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 25 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"ZEU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/brig) -"ZHV" = ( -/obj/machinery/door_timer{ - id = "Cell 1"; - name = "Cell 1"; - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/red/corner{ - dir = 2 - }, -/area/security/brig) (1,1,1) = {" aaa @@ -71049,6 +70049,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71056,8 +70058,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaa @@ -71306,6 +70306,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71313,8 +70315,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaf @@ -71563,6 +70563,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71570,8 +70572,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaa @@ -71820,6 +70820,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -71827,8 +70829,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS acy @@ -72077,6 +71077,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -72084,8 +71086,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aba aaa @@ -72334,6 +71334,8 @@ aaa aaa aaa aaa +aaa +aaa aag aaa aaa @@ -72341,8 +71343,6 @@ aaa aaa aaa aaa -aaa -aaa aaf aaS aaf @@ -72591,10 +71591,10 @@ aaa aaa aaa aaa +aaa +aaa aag aaa -aaa -aaa aoV bZm aoV @@ -72848,10 +71848,10 @@ aaa aaa aaa aaa +aaa +aaa aag aaa -aaa -aaa aoV bVz aaf @@ -73105,10 +72105,10 @@ aaa aaa aaa aaa +aaa +aaa aag aaa -aaa -aaa aag bVz aag @@ -73362,10 +72362,10 @@ aaa aaa aaa aaa -aag -gXs aaa aaa +aag +aaa aaf bVz aoV @@ -73618,10 +72618,10 @@ aaa aaa aaa aaa -gXs +aaa +aaa +aaa aag -gXs -gXs aaa aaf bVz @@ -73876,10 +72876,10 @@ aaa aaf aaf aaf +aaa +aaa aag -gXs -gXs -gXs +aaa bVx caf aoV @@ -74133,11 +73133,11 @@ aaa aaa aaa bCq +bCq +bCq bLv bCq -bCq -bCq -bCq +aoV cbj aoV aag @@ -74390,10 +73390,10 @@ aaa aaa aaa bCq -KrE +bJP +bCq +bSn bCq -bPS -gZR bCq cbj bLv @@ -74647,10 +73647,10 @@ aaa aaa aaa bCq -bHE -bCq -fLS -pDm +bPS +aad +bPS +bPS bCq cbk bLv @@ -74904,10 +73904,10 @@ aaa aaa aaa bLv -bHE -Gwy -Qge -tsC +bPR +bRc +bSo +bTs bCq bVy bLv @@ -75161,10 +74161,10 @@ aaa aaa aaa bCq -bHE -bCq -bCq -qQU +bPS +bRf +bSo +bTu bCq bVB bHE @@ -75418,10 +74418,10 @@ aaa aaa aaa bLv -bHE -bCq -bPS -kcq +bPT +bRe +bSo +bTt bCq bVA bWw @@ -75675,10 +74675,10 @@ aaa aaa aaa bCq -bHE +bPV bCq -fLS -jJa +bCq +bTw bCq bVD bWy @@ -75932,10 +74932,10 @@ bGi aoV aoV bCq +bPU bHE -OSr -DHH -fEF +bSp +bTv bCq bVC bWx @@ -76192,7 +75192,7 @@ bCq bPW bCq bCq -qQU +bTy bCq bVF bWA @@ -76706,20 +75706,20 @@ bCq bPY cOw bCq -ete -ete -ete -ete -ete -MRP -ete -ete -ete -ete -ete -ete -ete -ete +bCq +bCq +bCq +bCq +bCq +bYy +bCq +bCq +bLv +bCq +bCq +bCq +bCq +bLv bUs bLv aaa @@ -76963,20 +75963,20 @@ bCq bPX bRg bRg -ete -nuB -OBq -sGR -jDQ -nuB -IwC -ete -nuB -iZV -OBq -nuB -lIk -ete +bCq +bHE +bVG +bHE +bHE +bHE +bLv +aaf +aoV +aoV +aoV +aoV +aoV +bLv bUs bLv aaa @@ -77220,20 +76220,20 @@ bLv bQa bHE bHE -ete -Qvz -jHE -esl -Ozq -WSZ -Ozq -UmK -Ozq -Ozq -eTp -jnM -fDN -ete +bCq +bHE +bLv +bLv +bLv +bLv +bLv +aoV +aoV +aoV +aoV +aoV +aaf +bLv bUs bLv aaf @@ -77477,20 +76477,20 @@ bLv bPZ bHE bHE -ReY -CxU -WwY -WXW -FJK -CUx -qDl -rHF -qDl -Sly -Gnk -irr -nuB -ete +cTF +bHE +bLv +aoV +aoV +aoV +aoV +aoV +aoV +aoV +aoV +aoV +aoV +bLv bUs bLv aaa @@ -77734,20 +76734,20 @@ bLv bHE bHE bSs -ete -MJI -tLw -wdF -jss -tLw -nuB -uQt -HJB -irr -gEX -PcH -znN -ete +bCq +bHE +bLv +aoV +aoV +aoV +bcU +aaf +aaH +cCa +aoV +aoV +aoV +bLv bUs bLv aaa @@ -77991,20 +76991,20 @@ bCq bHE bRh bLu -ete -SjU -HWl -PzP -jdX -ihS -Eko -ete -nuB -uOE -gEX -PcH -nuw -ete +bCq +bHE +bLv +aaf +aaf +aoV +aoV +aaH +bdV +aaH +aaf +aaf +aaf +bLv bUs bLv aaf @@ -78169,10 +77169,10 @@ abc abc afu abc -abc -abc -abc -abc +aaa +aaa +aaa +aaa aaa aaa aaa @@ -78248,20 +77248,20 @@ bCq bOK bCq bCq -ete -VTn -Pem -Oly -LcH -gPL -ete -ete -nuB -irr -tvf -orD -irr -ete +bCq +bHE +bLv +aoV +aoV +aoV +aoV +cjn +bSu +aaH +aoV +aoV +aoV +bLv bUs bLv aaa @@ -78425,20 +77425,20 @@ abc aea aeH aft -vdY -Jgm -jXE -DJw abc -gXs +aaa +aaa +aaa +aaa +aaa aaa aaa aiU -QFx +aln aiU aaa aiU -QFx +anN aiU aaa aaa @@ -78506,19 +77506,19 @@ bHE bLv aaa bLv -lYQ -Pem -ete -ete -ete -ete -nuB -nuB -nuB -YpE -irr -ihC -ete +bHE +bLv +aoV +aoV +aoV +aoV +aoV +aaH +aaf +aoV +aoV +aoV +bLv bUs bLv aaa @@ -78684,18 +77684,18 @@ aeJ afw abc abc -FZW -IcK -abc -aaf aaf aaa +aaf +aaf +aaf +aaf aiU -rtk +alp aiU aaa aiU -rtk +alp aiU aaf aaf @@ -78763,19 +77763,19 @@ bHE bLv aaf bLv -lYQ -Pem -mKs -XBE -RRt -FRl -nuB -HJB -jnM -kuo -nuB -nuB -ete +bUt +bLv +aaf +aaf +aoV +aoV +aoV +aaH +aoV +aoV +aaf +aaf +bLv bUs bLv aaf @@ -78934,26 +77934,26 @@ abb abt aca acz -wOx +acX adC aeb aeI afv agf abc -DVb -mQI -abc +aaf +aaa +aaa aiT aiT aiV +akG +cxJ aiU -Iiq -aiU -aiT -aiU -Iiq +amK aiU +cxP +aoq aiV aiT aiT @@ -79020,19 +78020,19 @@ bLv bCq aaa bLv -lYQ -Pem -MIE -Wgg -fhC -ete -STm -vnP -XPp -Ecg -AgS -UnJ -ete +bUs +bLv +aoV +aoV +aoV +aoV +aoV +aaf +aoV +aoV +aoV +aoV +bCq bUs bCq aaa @@ -79191,17 +78191,17 @@ abe abw acc acB -tTl +acZ adE aee aeL afy agh abc -YcJ -YcJ -YcJ -aiV +aaf +aaa +aaf +aiT ajs akb akI @@ -79277,19 +78277,19 @@ bLv aaa aaa bTB -XqB -mCA -OtF -OtF -OtF -OtF -OtF -OtF -OtF -OtF -OtF -OtF -Zhd +bUv +bES +bES +bES +bES +bGp +bGp +bGp +bGp +bES +bES +bES +car bUs bCq bCq @@ -79448,17 +78448,17 @@ abd abv acb acA -lgR +acI adD aed aeK afx agg abc -YcJ -iTV -YcJ -aiV +aaf +aaa +aaa +aiU ajr aka akH @@ -79534,7 +78534,7 @@ bLv bLv bLv bTA -iqw +bUu bLw bLw bLw @@ -79708,14 +78708,14 @@ aby aby aby aeg -Fdq +aeN afA afA afA -YcJ -YcJ -YcJ -aiV +aaf +aaa +aaa +aiU aju akd akK @@ -79973,13 +78973,13 @@ aai aai aai aai -yOg +ajt akc akJ alr amd amL -rpN +anu alq aot apc @@ -80231,13 +79231,13 @@ agK aiB aai ajw -vYR +akf aiX aiX aiX aiX aiV -xJF +anP aiT cCi cCi @@ -80475,13 +79475,13 @@ aat abh aat acd -xpa +abK acY adG aeh aeO afI -hDJ +agl agH ags ags @@ -80726,7 +79726,7 @@ aak aap aay aaD -aau +aat aat aat aat @@ -80746,7 +79746,7 @@ aho acd ajy akh -Sfp +afK ajc afM afN @@ -81257,7 +80257,7 @@ agK agK ail aiE -Evc +aiW ajA akj agj @@ -81265,7 +80265,7 @@ agj agj aiX aiX -mlG +anQ aov cCi apU @@ -81494,7 +80494,7 @@ aaa aag aaf aaj -nbc +aaq aay aaE aaJ @@ -81503,7 +80503,7 @@ aaV aat aat acd -Lru +abL adb acd ael @@ -81516,13 +80516,13 @@ agj agj agj ajz -cTu -PEg -aly -AWY -Jcn -aiX +aki +akM +alv +amf +amQ anw +anz aov cCi arT @@ -81773,13 +80773,13 @@ ahW aiD agj auj -ZEU -fqD -hYC -qiF -amg -aiX +akl +akO +alx +alx +amR anw +anz aox cCi cCi @@ -82030,13 +81030,13 @@ ain aid agj aiZ -ZHV -akQ -agj -agj -agj -aiX -kXo +akk +akN +alw +amg +amR +anw +anR aow apg aqZ @@ -82286,14 +81286,14 @@ ahP ahP aiF agj -ajD -akm -PYb -aly -ryv -Jcn -aiX -anw +aja +ajG +akQ +agj +agj +amS +anx +anz aov aph aph @@ -82522,35 +81522,35 @@ aaa aag aaf aai -ZAl +aau aaA -Kpp +aaG aaK aaP aaX aat aat acd -Vup +acD acY adG aeq aeV acd agj -XmQ -NzL -GlY +ahm +ahD +aiw aiO agj -aja -ZEU -mqQ -hYC -qiF -ami -aiX +ajD +akm +akP +aly +amh +amR anw +anz aov aph aob @@ -82786,7 +81786,7 @@ aai aai aai abj -rPG +abG acd acd acd @@ -82794,20 +81794,20 @@ acd aeP afC agk -HXb +agF agP agP agP agP aiz -zmg -TIM -akQ -agj -agj -agj -aiX +ajg +akl +akR +alx +alx +amR anw +anz aov aph aoc @@ -83039,12 +82039,12 @@ aaa aaa aaf aaf -Emp +aaa aaf aai abi abF -cIV +ach acK adf acd @@ -83058,13 +82058,13 @@ agO agO aiy ajb -fuL -kQp -Nrx -rmO -Jcn -aiX +ajF +akN +alw +ami +amR anw +anz aov api ata @@ -83296,8 +82296,8 @@ aaf aaf aaf aaf -aaS aaf +aaR aaZ aaZ aaZ @@ -83312,16 +82312,16 @@ agn agR agn agR -eEc -aiX -VLP -akv -rTI -uGh -aww -amk -aiX -eet +agn +ajc +ajI +ako +akQ +agj +agj +amS +any +anz aov aph aqb @@ -83553,32 +82553,32 @@ aaa aaa aaa aaf -Emp +aaa +aaf +aaf +aaT aaf -GcW -qla -Dhx -EbP aaZ -fpJ -ATB -lla -YRL +abm +cpg +acv +adi +adi aaZ -NQr -Gbr -tra -ixw -lVH -piy -ajI -oxm -akQ -agj -agj -agj -aiX +aeW +agQ +ahv +ahQ +aiI +aiH +ajB +akm +akP +aly +amj +amR anw +anz aov aph aph @@ -83810,32 +82810,32 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -qla -QDB -EbP +aaf +aaT +aaa aaZ -MLq -cxA +abH +acl +ajC acL -lTe +adi aaZ -faB -Uua -CQC -NSC -KvX -WWX -VLP -akm -oKT -aly -xDn -Jcn -aiX +agp +agT +ahx +ahS +aiK +ajc +ajI +akl +akT +aww +alx +amR anw +anz aov apk anw @@ -84067,41 +83067,41 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -qla -fKO -tfB +aaf +abY +aaa aaZ -xgi +abn +ack adk adK -zaC -dhD -agt +cqG +aeX +ago agS agQ -agt -Rwb -akV +ahR +aiJ +ajc ajI -ZEU -cQs -hYC -qiF -amp -aiX +akk +akS +alw +amk +amR +anw anS -Eew -JbH -oEE -oEE -oEE -oEE -oEE -oEE -JOT +aoy +apj +anz +anz +anz +anz +anz +anz +awk axB anz anz @@ -84324,32 +83324,32 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -qla -QDB -yLl +aaf +aaT +aaa aaZ -zGy -XjL -Pez -IOq -CQO -PBc +abJ +ack +acM +adQ +cwM +aeZ +agr agU ahy -LAP -xbq -Gmd -KHo -vJW +ahX +aiL +ajc +ajI +akq akQ agj agj -agj -aiX -anA +amS +anx +anz aoz apm aqd @@ -84581,33 +83581,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -DRh -xic -yLl +aaf +aaT +aaa aaZ -YNq +abI +ack coS aet cxA -KNi +aeY agt agt -vVq -zcn -agt -WDU -vYy -xVn +ahz +aie +aiN +ajc +ajI +akp akU -Clf +alz aml -FQA -aiX -Qru -iYT +amT +anw +anz +aoz apl aqc aqc @@ -84838,33 +83838,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -ssv -Fwc -XLV -BlT -wkw -eAL -sgY -Moa -tIp +aaf +abY +aaa +aaZ +abQ +ack +adj +arc +blT +agq cml agV cxk aig -CaS -aiX -Zvf -ZbZ -Nql +aiM +ajc +ajI +akp +akV alB amn -UqV -dcW -aiG -Knt +amV +anw +anz +aoz aod aqf ahT @@ -84878,9 +83878,9 @@ anF anF anF anF -UYY -Xiv -gwo +anF +anF +anF aoa aJu aKF @@ -85095,33 +84095,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -vmd -MWg -IEd -VZe -EOh +aaf +abY +aaa +aaZ +abN +ack +bkA acF -acF -gPJ +aes avB amN agt -ahB -Uuv -agn -aiX -ksu -muL -amS +awN +aHp +aIF +ajc +ajI +akp +akQ alA -iuz amm -zRm -vZp -vZp +amU +anw +anT +aoA apn aqe arf @@ -85133,11 +84133,11 @@ arf arf arf arf -rAZ -rAZ -rAZ -rAZ -jNv +arf +arf +arf +arf +anF ahn aJn aJn @@ -85352,33 +84352,33 @@ aaa aaa aaa aaf -Emp +aaa aaf -GcW -mTf -npy -BdE -Osi -lsi -Jnv -RyJ -SUw +aaf +aaT +aaf +aaZ +aci +acm +cpA +adg +aeu alt agu agX ahB aij agn -UvC -sCj -uZB -PlJ -UvC -Jfm -Jfm -Jfm -Jfm -CpD +aje +ajJ +akr +akX +alC +alC +amX +anz +anz +aoB aod aqe arf @@ -85390,11 +84390,11 @@ atf arf aqa atf -rAZ -ykv -kPE -rAZ -jNv +arf +aqa +atf +arf +anF ahn aaa aJn @@ -85609,12 +84609,12 @@ aaa aaa aaf aaf +aaf +aaf +aaa adR -adR -adR -adR -Mzd -avB +abo +aaZ aaZ aaZ acT @@ -85626,18 +84626,18 @@ agW ahE aii agn -Xfx -ajb -NkF -PlJ -ajc -alC -Jfm -Jfm -loR -GpD -LZL -nMU +ajd +ajI +ahY +akW +aiG +amo +amW +anz +anz +aoz +aod +aqe arf apY ate @@ -85647,11 +84647,11 @@ ath arf apY ath -rAZ -YUq -zSX -rAZ -jNv +arf +apY +ate +arf +anF ahn aaa aJn @@ -85866,33 +84866,33 @@ aaa aaa aaa aaa +aaf +aaf +aaa abp -IqS -IqS -vCy -abO -abO -SbB -abO +abP +aco +acO +abl abO abO afc -abo +afQ agw agY ahA ahZ adR aiQ -VLP -txT -Tqy -sVi -ajc -Knt -aiG -CJg -vJv +ajI +akt +akQ +agj +agj +aiX +anB +anz +aoD aod aqe arf @@ -85904,11 +84904,11 @@ ath arf ayV ath -rAZ -crS -uMu -rAZ -jNv +arf +aCd +ath +arf +anF ahn aJw aJw @@ -86123,6 +85123,9 @@ aaa aaa aaa aaa +aaa +aaf +aaa abo abO abO @@ -86130,26 +85133,23 @@ abO abO abO abO -abO -abO -abO afb abo afg ahb ahG aik -SWq +cBV ajf ajK -DHO -Qcw -IPJ -ajc -XwE -alC -CJg -Jcy +aks +akY +alx +amp +aiX +anA +anz +aoC aod aqe arf @@ -86161,11 +85161,11 @@ awo arf asd aAb -rAZ -crS -JAr -rAZ -evS +arf +asd +aDK +arf +aoa ahn aJv aKG @@ -86380,15 +85380,15 @@ aaa aaa aaa aaa +aaa +aaf +aaa abp abO -abO -wZF -wZF -wZF -wZF -wZF -abO +acq +acq +acq +acq aew afe afS @@ -86397,17 +85397,17 @@ aha ahC aia aiP -YNF -XSH -MxR +aiR +ajB +akv +ala +akz +alf aiX -uzg -USL -uFV -uFV -Nmb -Nau -efg +anA +anz +aoF +apo aqh arh asg @@ -86421,8 +85421,8 @@ atj aAX azc atj -Hig -oux +aFe +aul aHT aJy aJy @@ -86637,17 +85637,17 @@ aaa aaa aaa aaf +aaf +aaf +aaf abo abO -abO -abO -abO acp acP acP acP aev -YjW +afd afR agx agZ @@ -86656,14 +85656,14 @@ aim adR aiG ajL -RWl +aku +akZ +alE +amq aiX -WMt -qZT -vml -PJW -TZk -XRe +anA +anz +aoE aod aqg aun @@ -86678,7 +85678,7 @@ azT auk auk aDG -zxh +aFd auk aHH aJg @@ -86894,15 +85894,15 @@ aaa aaa aaa aaa +aaa +aaa +aaf abp -aco -EXC -rax -fYm -rax -rax -rax -abl +abR +abP +abP +abP +abP abp abp abp @@ -86912,15 +85912,15 @@ ahF aip adR aiX -nCJ +ajN akx aiX aiX aiX aiX -sfv -WRc -sfv +anC +anU +anC cSA aqe arf @@ -86935,7 +85935,7 @@ azV aAh aAh aFg -gKP +aFh aAh aAh aAh @@ -87151,9 +86151,9 @@ aaa aaa aaf aaf -abp -abp -abp +aaf +aaf +aaf abq abq abq @@ -87168,10 +86168,10 @@ ahb ahF clI abp -MRu +ajh ajM akw -WQm +alb alG amr amY @@ -87192,7 +86192,7 @@ aAd aAh aCm aDL -iyF +aFf aGk aHU aJz @@ -87423,7 +86423,7 @@ afV agB ahd ahI -XMB +clS abp ajj ajP @@ -87449,7 +86449,7 @@ aAg aAh aDO aDQ -vGV +aFi aGl aBy aBy @@ -87670,7 +86670,7 @@ aaf aaf abr abS -qVv +acr acQ adn adM @@ -87933,7 +86933,7 @@ adp adP aey afj -BSi +afX agC ahf ahK @@ -88970,7 +87970,7 @@ abp ajp ajU ajn -ajn +trb ajn amr ajp @@ -89218,7 +88218,7 @@ aaf abo aeA afl -zft +aga abp ahj abp @@ -89981,8 +88981,8 @@ aaf aag aag aag -poo -poo +aaa +aaa aag abp abp @@ -101566,8 +100566,8 @@ aaf aaf aaf aaf -alP -ybU +aaf +aaf alP anf alP @@ -101823,8 +100823,8 @@ aaa aaa aaa aaa -alP -alP +aaa +aaf alP anf alP diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index e22386b9f8..af3cf7bade 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -92691,7 +92691,6 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "dQF" = ( -/obj/machinery/droneDispenser, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index f2b63a49f3..48f741a178 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -897,6 +897,13 @@ }, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acx" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acy" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -1042,6 +1049,15 @@ /obj/machinery/light, /turf/open/floor/plasteel/floorgrime, /area/security/prison) +"acM" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/turf/open/floor/plasteel/floorgrime, +/area/security/prison) "acN" = ( /obj/structure/table/glass, /obj/item/reagent_containers/syringe, @@ -6013,6 +6029,11 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"amU" = ( +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/port) "amW" = ( /obj/structure/table/reinforced, /obj/item/folder, @@ -21724,6 +21745,18 @@ "aUM" = ( /turf/closed/wall, /area/crew_quarters/locker) +"aUN" = ( +/obj/structure/closet/wardrobe/black, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUO" = ( +/obj/structure/closet/wardrobe/grey, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) +"aUP" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel/vault, +/area/crew_quarters/locker) "aUQ" = ( /turf/open/floor/plasteel/vault, /area/crew_quarters/locker) @@ -25533,6 +25566,12 @@ dir = 4 }, /area/security/checkpoint/engineering) +"bcO" = ( +/obj/structure/easel, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/fore) "bcP" = ( /obj/machinery/light{ dir = 8 @@ -54314,8 +54353,7 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "cmb" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo"; +/obj/machinery/chem_master{ pixel_x = -4 }, /turf/open/floor/plating, @@ -71412,6 +71450,10 @@ /obj/structure/easel, /turf/open/floor/plating, /area/maintenance/port) +"dbl" = ( +/obj/structure/easel, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "dbm" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel, @@ -76191,14 +76233,6 @@ }, /turf/open/floor/plating, /area/security/prison) -"hAJ" = ( -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/cryopod, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) "ioI" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -76447,10 +76481,6 @@ }, /turf/open/floor/plasteel/white, /area/science/circuit) -"mEW" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) "nnK" = ( /obj/item/stack/sheet/glass/fifty, /obj/item/paper_bin, @@ -76711,12 +76741,6 @@ }, /turf/open/floor/wood, /area/library) -"rhY" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/port) "rzX" = ( /obj/structure/chair/office/light{ dir = 1; @@ -76930,15 +76954,6 @@ }, /turf/open/floor/plasteel, /area/science/misc_lab) -"vlg" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/side, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) "vlx" = ( /obj/machinery/vr_sleeper, /turf/open/floor/plasteel/neutral/corner{ @@ -76994,7 +77009,6 @@ /turf/closed/wall, /area/science/circuit) "wOE" = ( -/obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/aft) "wPk" = ( @@ -77083,79 +77097,6 @@ /obj/machinery/light, /turf/open/floor/plasteel/white, /area/science/circuit) -"AIY" = ( -/obj/machinery/computer/cryopod{ - pixel_y = -24 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/effect/turf_decal/box/white/corners, -/obj/effect/turf_decal/box/white/corners{ - dir = 8 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"FiY" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/starboard/fore) -"KHe" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) -"RbF" = ( -/obj/machinery/vending/kink, -/obj/machinery/vending/kink, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) -"SuJ" = ( -/obj/machinery/cryopod, -/obj/effect/turf_decal/stripes/line{ - dir = 5 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"WoM" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel/vault, -/area/crew_quarters/locker) -"Xvm" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/obj/machinery/computer/cryopod{ - pixel_x = 30; - pixel_y = 6 - }, -/turf/open/floor/plasteel/floorgrime, -/area/security/prison) -"XMx" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green/corner, -/turf/open/floor/plasteel/neutral/corner{ - dir = 2 - }, -/area/crew_quarters/locker) (1,1,1) = {" aaa @@ -95026,7 +94967,7 @@ bHQ bvW bLg bLf -rhY +amU bPL alK bOf @@ -101641,8 +101582,8 @@ aay abs abK ace -hAJ -Xvm +acx +acM abe ady adT @@ -110487,7 +110428,7 @@ cGl cHg cIh dAh -RbF +dbl dyc dxQ dvY @@ -110675,8 +110616,8 @@ aOx aPJ aQT aOu -XMx -WoM +aTt +aUN aUM aYc aTC @@ -110932,8 +110873,8 @@ aOy aOt aQU aSg -vlg -AIY +aTt +aUO aUM boW aZt @@ -111189,8 +111130,8 @@ aOz aOu aQV aOv -KHe -SuJ +aTt +aUP aUM dCD aZt @@ -112475,7 +112416,7 @@ aPL aQZ aSh aTA -mEW +aUT aUM aYh aCM @@ -118361,7 +118302,7 @@ aaf aaf ack dni -FiY +bcO dnS dnS dnS diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 783b752b39..465d9ca072 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -7629,7 +7629,6 @@ }, /area/teleporter) "aoJ" = ( -/obj/machinery/droneDispenser, /obj/effect/turf_decal/stripes/line{ dir = 10 }, @@ -14629,6 +14628,18 @@ dir = 5 }, /area/crew_quarters/dorms) +"aEL" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-21" + }, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel/vault{ + dir = 5 + }, +/area/crew_quarters/dorms) "aEM" = ( /obj/structure/closet/crate/bin, /obj/effect/turf_decal/bot, @@ -35974,16 +35985,6 @@ dir = 5 }, /area/engine/atmos) -"ZwS" = ( -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/effect/turf_decal/bot, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/vault{ - dir = 5 - }, -/area/crew_quarters/dorms) (1,1,1) = {" aaa @@ -72590,7 +72591,7 @@ aAF aBO aCN aDD -ZwS +aEL awQ aGz aGM diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 27a5b55895..3a75a0b048 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aaa" = ( /turf/open/space/basic, /area/space) @@ -3054,6 +3054,10 @@ }, /turf/open/space, /area/space/nearstation) +"ajB" = ( +/obj/item/storage/box/mousetraps, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "ajC" = ( /obj/structure/chair/stool, /turf/open/floor/plating, @@ -3448,6 +3452,10 @@ }, /turf/open/floor/plating, /area/maintenance/department/security/brig) +"aks" = ( +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/department/security/brig) "akt" = ( /obj/structure/bed, /obj/item/bedsheet, @@ -10349,6 +10357,14 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aBK" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/crowbar, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "aBL" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -10422,6 +10438,10 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"aBT" = ( +/obj/structure/closet/wardrobe/white, +/turf/open/floor/plasteel/arrival, +/area/crew_quarters/fitness/recreation) "aBU" = ( /obj/structure/closet/wardrobe/mixed, /turf/open/floor/plasteel/arrival, @@ -12047,6 +12067,14 @@ /obj/machinery/vending/snack, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aFD" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/taperecorder, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "aFE" = ( /obj/structure/cable{ icon_state = "1-2" @@ -12420,6 +12448,13 @@ /obj/machinery/vending/cigarette, /turf/open/floor/plasteel, /area/hallway/primary/central) +"aGA" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/storage/emergency/starboard) "aGB" = ( /obj/machinery/space_heater, /turf/open/floor/plating, @@ -21173,7 +21208,6 @@ }, /area/maintenance/department/cargo) "bdA" = ( -/obj/machinery/droneDispenser, /turf/open/floor/plating, /area/maintenance/department/cargo) "bdB" = ( @@ -33115,6 +33149,10 @@ }, /turf/open/space/basic, /area/space/nearstation) +"bHP" = ( +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/dark, +/area/maintenance/department/engine) "bHQ" = ( /turf/open/floor/plasteel/dark, /area/maintenance/department/engine) @@ -43077,6 +43115,19 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) +"cjO" = ( +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/item/stack/sheet/glass/fifty{ + layer = 4 + }, +/obj/item/stack/sheet/metal{ + amount = 20; + layer = 3.1 + }, +/turf/open/floor/plating, +/area/maintenance/department/chapel/monastery) "cjP" = ( /obj/item/twohanded/required/kirbyplants{ icon_state = "plant-22" @@ -47905,7 +47956,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/general/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/department/cargo) @@ -48014,16 +48064,6 @@ }, /turf/open/floor/plating, /area/engine/engineering) -"eWf" = ( -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/cryopod, -/obj/machinery/computer/cryopod{ - pixel_y = 24 - }, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) "eWi" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel/dark, @@ -50991,11 +51031,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/wood, /area/lawoffice) -"nSH" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/dark, -/area/maintenance/department/engine) "nVU" = ( /obj/item/twohanded/spear, /turf/open/floor/plating, @@ -51957,15 +51992,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/chief) -"qHi" = ( -/obj/structure/table, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/crowbar, -/obj/item/taperecorder, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "qHI" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -52354,7 +52380,7 @@ width = 9 }, /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "rKr" = ( /obj/structure/cable{ icon_state = "4-8" @@ -53135,7 +53161,7 @@ /area/construction/mining/aux_base) "uoS" = ( /turf/open/floor/plating, -/area/shuttle/auxillary_base) +/area/construction/mining/aux_base) "uqJ" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable, @@ -54452,65 +54478,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"yzM" = ( -/obj/machinery/light/small, -/obj/item/storage/box/mousetraps, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"Drm" = ( -/obj/effect/turf_decal/stripes/corner, -/turf/open/floor/plasteel/green/corner, -/area/hallway/primary/central) -"EjC" = ( -/obj/machinery/cryopod, -/turf/open/floor/plasteel/dark, -/area/hallway/primary/central) -"JAb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/item/taperecorder, -/turf/open/floor/plating, -/area/storage/emergency/starboard) -"KhG" = ( -/obj/machinery/vending/kink, -/turf/open/floor/plating, -/area/maintenance/department/security/brig) -"QYc" = ( -/obj/machinery/vending/kink, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" - }, -/turf/open/floor/plating, -/area/maintenance/department/chapel/monastery) -"RST" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plasteel/green/side{ - dir = 4 - }, -/area/hallway/primary/central) -"Xmf" = ( -/obj/item/stack/sheet/metal{ - amount = 20; - layer = 3.1 - }, -/obj/item/stack/sheet/glass/fifty{ - layer = 4 - }, -/turf/open/floor/plating, -/area/maintenance/department/chapel/monastery) -"YSB" = ( -/obj/machinery/vending/kink, -/turf/closed/wall, -/area/storage/emergency/starboard) -"Zud" = ( -/obj/machinery/vending/kink, -/obj/machinery/vending/kink, -/turf/open/floor/plasteel/arrival, -/area/crew_quarters/fitness/recreation) (1,1,1) = {" aaa @@ -70775,7 +70742,7 @@ aaa aaa ait aiV -KhG +ajB akr aiu ait @@ -71149,7 +71116,7 @@ cvw cvI ckQ clf -Xmf +cwA cwA cwS cjm @@ -71290,7 +71257,7 @@ aaa aiu aiX ajD -yzM +aks aiu ait ait @@ -71405,7 +71372,7 @@ cgG cfn ciR cwa -QYc +cjO ckk ckC ckR @@ -75731,7 +75698,7 @@ bDg bEj bFF bva -nSH +bHP bJb bJb bJb @@ -90583,12 +90550,12 @@ awd abI awd aAM -qHi +aBK aDa aEb -Drm -RST -RST +aAM +aFD +aDa aAN aIf aJe @@ -90844,8 +90811,8 @@ awd awd aAN aAN -eWf -EjC +awd +awd aAN aIg aJf @@ -91100,10 +91067,10 @@ aaa aaa aaa aaa -aAN -aAN -aAN -aAN +aaa +aaa +aaa +awd aHN aIU aJI @@ -92387,7 +92354,7 @@ aDd apX aEU aFE -JAb +aGA aHn aIi aJi @@ -92901,7 +92868,7 @@ com apX aET lKL -YSB +aET aET aHN aIU @@ -95209,7 +95176,7 @@ axw ayu azC axw -Zud +aBT atn aEf aFc diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 02c20e6896..9a03ede62b 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2162,6 +2162,9 @@ /obj/structure/kitchenspike, /turf/open/floor/plasteel/dark, /area/ctf) +"gu" = ( +/turf/closed/indestructible/splashscreen, +/area/start) "gv" = ( /turf/open/floor/plasteel/darkblue/side{ dir = 10 @@ -13483,9 +13486,6 @@ }, /turf/open/floor/wood, /area/centcom/holding) -"NE" = ( -/turf/closed/indestructible/splashscreen, -/area/space) "NF" = ( /obj/structure/ladder/unbreakable/binary, /turf/open/indestructible/airblock, @@ -13956,9 +13956,6 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) -"Wd" = ( -/turf/open/space/basic, -/area/start) "WJ" = ( /obj/machinery/door/airlock/centcom{ name = "Thunderdome Administration"; @@ -14267,21 +14264,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -NE +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +gu aa aa aa @@ -14524,21 +14521,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -14781,21 +14778,21 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX +fX aa aa aa @@ -15052,7 +15049,7 @@ fX fX fX fX -Wd +fX aa aa aa @@ -16073,7 +16070,7 @@ fX fX fX fX -fX +fY fX fX fX @@ -16844,7 +16841,7 @@ fX fX fX fX -fY +fX fX fX fX @@ -18122,21 +18119,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18379,21 +18376,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18636,21 +18633,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -18893,21 +18890,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19150,21 +19147,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -19407,21 +19404,21 @@ aa aa aa aa -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX -fX +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa From 6646ef854f3f3480cf100d465908d82ca3b7b786 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 06:13:29 -0500 Subject: [PATCH 036/136] Automatic changelog generation for PR #6964 [ci skip] --- html/changelogs/AutoChangeLog-pr-6964.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6964.yml diff --git a/html/changelogs/AutoChangeLog-pr-6964.yml b/html/changelogs/AutoChangeLog-pr-6964.yml new file mode 100644 index 0000000000..9b57865956 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6964.yml @@ -0,0 +1,4 @@ +author: "Cruix" +delete-after: True +changes: + - rscadd: "AIs now have an experimental multi-camera mode that allows them to view up to six map areas at the same time, accessible through two new buttons on their HUD." From d2fd75caa0361244f89f4d9d6051f803083ccc5c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:20:44 -0500 Subject: [PATCH 037/136] Automatic changelog generation for PR #6958 [ci skip] --- html/changelogs/AutoChangeLog-pr-6958.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6958.yml diff --git a/html/changelogs/AutoChangeLog-pr-6958.yml b/html/changelogs/AutoChangeLog-pr-6958.yml new file mode 100644 index 0000000000..e59e3a143e --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6958.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Moving diagonally past delivery chutes, transit tube pods, &c. no longer causes your camera to be stuck on them." From 0ad56788945d30f0b711e7e76c7ee2f0fbfae3b2 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:22:23 -0500 Subject: [PATCH 038/136] Automatic changelog generation for PR #6966 [ci skip] --- html/changelogs/AutoChangeLog-pr-6966.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6966.yml diff --git a/html/changelogs/AutoChangeLog-pr-6966.yml b/html/changelogs/AutoChangeLog-pr-6966.yml new file mode 100644 index 0000000000..e727e153fc --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6966.yml @@ -0,0 +1,4 @@ +author: "Dax Dupont" +delete-after: True +changes: + - bugfix: "Fixed rpeds throwing stock part rating related runtimes." From ede4c78bcdd0b8583239dd9cfe1e283823c6f040 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:23:45 -0500 Subject: [PATCH 039/136] Automatic changelog generation for PR #6963 [ci skip] --- html/changelogs/AutoChangeLog-pr-6963.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6963.yml diff --git a/html/changelogs/AutoChangeLog-pr-6963.yml b/html/changelogs/AutoChangeLog-pr-6963.yml new file mode 100644 index 0000000000..ee8f0dadc9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6963.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Fixes cyborgs not being able to use two-handed modules while other modules are equipped." From ef81bb2f6d61e8b7621f095d6011c3327fc3b44d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:28:10 -0500 Subject: [PATCH 040/136] Automatic changelog generation for PR #6969 [ci skip] --- html/changelogs/AutoChangeLog-pr-6969.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6969.yml diff --git a/html/changelogs/AutoChangeLog-pr-6969.yml b/html/changelogs/AutoChangeLog-pr-6969.yml new file mode 100644 index 0000000000..770043e579 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6969.yml @@ -0,0 +1,4 @@ +author: "Nichlas0010" +delete-after: True +changes: + - bugfix: "You can no longer use a soapstone infinitely" From 7c597ea289355afb84f84b44009e1dd3621b3fe5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:28:58 -0500 Subject: [PATCH 041/136] Automatic changelog generation for PR #6972 [ci skip] --- html/changelogs/AutoChangeLog-pr-6972.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6972.yml diff --git a/html/changelogs/AutoChangeLog-pr-6972.yml b/html/changelogs/AutoChangeLog-pr-6972.yml new file mode 100644 index 0000000000..a9ffa8bf78 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6972.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The overlay effects of cult flooring are now on the floor plane, fixing their odd ambient occlusion appearance." From df08e83215f80ef568162ccfc932a1034813a231 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:29:19 -0500 Subject: [PATCH 042/136] Automatic changelog generation for PR #6973 [ci skip] --- html/changelogs/AutoChangeLog-pr-6973.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6973.yml diff --git a/html/changelogs/AutoChangeLog-pr-6973.yml b/html/changelogs/AutoChangeLog-pr-6973.yml new file mode 100644 index 0000000000..04a93d79ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6973.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Cloning no longer breaks a character's connection to their family heirloom." From 89deed21ec1186230356e11cd73fd366cbb958ab Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:29:40 -0500 Subject: [PATCH 043/136] Automatic changelog generation for PR #6974 [ci skip] --- html/changelogs/AutoChangeLog-pr-6974.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6974.yml diff --git a/html/changelogs/AutoChangeLog-pr-6974.yml b/html/changelogs/AutoChangeLog-pr-6974.yml new file mode 100644 index 0000000000..9b295ea168 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6974.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Beam rifle tracers no longer fall into chasms." From dbf0329b30743ad96c2aa5b0db5c1961c94f1c11 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:31:03 -0500 Subject: [PATCH 044/136] Automatic changelog generation for PR #6975 [ci skip] --- html/changelogs/AutoChangeLog-pr-6975.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6975.yml diff --git a/html/changelogs/AutoChangeLog-pr-6975.yml b/html/changelogs/AutoChangeLog-pr-6975.yml new file mode 100644 index 0000000000..298fdf4cad --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6975.yml @@ -0,0 +1,8 @@ +author: "Big Tobacco" +delete-after: True +changes: + - rscadd: "Cheap lighters now come in four different shapes and Zippos can have one of four different designs, collect them all and improve our sales!" + - imageadd: "All existing lighter sprites have been given a face-lift and the flames are now subtly animated." + - tweak: "Cheap lighters now use a fixed list of 16 colors to pick from instead of using totally randomized colors." + - imageadd: "Cigar cases have been tweaked to be a bit smaller and to have a modified design." + - imageadd: "Cohiba Robusto and Havanan cigars now use separate case sprites from the generic premium cigar cases." From 4ccdf2d72d7c424fb7346b3cdfb4fb5c39daa8b3 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:31:55 -0500 Subject: [PATCH 045/136] Automatic changelog generation for PR #6976 [ci skip] --- html/changelogs/AutoChangeLog-pr-6976.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6976.yml diff --git a/html/changelogs/AutoChangeLog-pr-6976.yml b/html/changelogs/AutoChangeLog-pr-6976.yml new file mode 100644 index 0000000000..eda65aebd0 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6976.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Vomiting on the same tile a second time no deletes the vomited reagents." From 2f602f173e725b73c1997fb3beade1f6b7d846e5 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 2 Jun 2018 07:32:33 -0500 Subject: [PATCH 046/136] Automatic changelog generation for PR #6978 [ci skip] --- html/changelogs/AutoChangeLog-pr-6978.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6978.yml diff --git a/html/changelogs/AutoChangeLog-pr-6978.yml b/html/changelogs/AutoChangeLog-pr-6978.yml new file mode 100644 index 0000000000..79a17c8c34 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6978.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "fixed the clockwork helmet not dropping to ground when used by non-clock cultists" From 85ba48a053d8bb981f1d007a1fd9247c3c1afc15 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 3 Jun 2018 09:01:17 -0500 Subject: [PATCH 047/136] donator item --- icons/obj/custom.dmi | Bin 18075 -> 18518 bytes .../code/modules/client/loadout/__donator.dm | 6 ++++++ .../modules/custom_loadout/custom_items.dm | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/icons/obj/custom.dmi b/icons/obj/custom.dmi index 419b14f52644f814ce15707c78ba6d1230969d2d..c4c2f71b267b80478fdd40cc5f6d3a908175cb0f 100644 GIT binary patch literal 18518 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 Date: Sun, 3 Jun 2018 09:33:10 +0200 Subject: [PATCH 048/136] Fixes pda style loading --- code/__DEFINES/misc.dm | 2 ++ code/modules/client/preferences.dm | 4 ++++ code/modules/client/preferences_savefile.dm | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index a31ebccbad..43c706e58e 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -254,6 +254,8 @@ GLOBAL_LIST_INIT(ghost_others_options, list(GHOST_OTHERS_SIMPLE, GHOST_OTHERS_DE #define ORBITRON "Orbitron" #define SHARE "Share Tech Mono" +GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE)) + //Color Defines #define OOC_COLOR "#002eb8" diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 7eb1c25455..044becba9c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1380,7 +1380,11 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(pickedui) UI_style = pickedui if("pda_style") +<<<<<<< HEAD var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference") as null|anything in list(MONO, SHARE, ORBITRON, VT) +======= + var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference", pda_style) as null|anything in GLOB.pda_styles +>>>>>>> 513a5f1... Fixes pda style loading (#38238) if(pickedPDAStyle) pda_style = pickedPDAStyle if("pda_color") diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index f17ddf8b7c..ad53f8f0dd 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -168,7 +168,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION) menuoptions = SANITIZE_LIST(menuoptions) be_special = SANITIZE_LIST(be_special) - pda_style = sanitize_inlist(MONO, VT, SHARE, ORBITRON) + pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style)) pda_color = sanitize_hexcolor(pda_color, 6, 1, initial(pda_color)) screenshake = sanitize_integer(screenshake, 0, 800, initial(screenshake)) From 26a24e49b7a313e1bbe8559f6e8426d99bb31601 Mon Sep 17 00:00:00 2001 From: LetterJay Date: Sun, 3 Jun 2018 09:02:44 -0500 Subject: [PATCH 049/136] Update __donator.dm --- modular_citadel/code/modules/client/loadout/__donator.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modular_citadel/code/modules/client/loadout/__donator.dm b/modular_citadel/code/modules/client/loadout/__donator.dm index 7d7e1b8721..36955d878e 100644 --- a/modular_citadel/code/modules/client/loadout/__donator.dm +++ b/modular_citadel/code/modules/client/loadout/__donator.dm @@ -284,7 +284,7 @@ datum/gear/darksabresheath path = /obj/item/clothing/suit/toggle/labcoat/mad/techcoat ckeywhitelist = list("wilchen") -/datum/gear/ssk +/datum/gear/leechjar name = "Jar of Leeches" category = SLOT_IN_BACKPACK path = /obj/item/custom/leechjar From 4b38136d7967c912689f0da69d4f34c29467f672 Mon Sep 17 00:00:00 2001 From: KorPhaeron Date: Sat, 2 Jun 2018 22:23:37 -0500 Subject: [PATCH 050/136] Only load Reebe during clock cult (#38156) * Only load clock cult during clock cult * Return FALSE --- _maps/_basemap.dm | 1 - code/controllers/subsystem/mapping.dm | 15 ++++++--------- code/game/gamemodes/clock_cult/clock_cult.dm | 6 ++++++ 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/_maps/_basemap.dm b/_maps/_basemap.dm index da795b6933..6a7e1d3636 100644 --- a/_maps/_basemap.dm +++ b/_maps/_basemap.dm @@ -5,7 +5,6 @@ #ifndef LOWMEMORYMODE #ifdef ALL_MAPS #include "map_files\Mining\Lavaland.dmm" - #include "map_files\generic\City_of_Cogs.dmm" #include "map_files\debug\runtimestation.dmm" #include "map_files\Deltastation\DeltaStation2.dmm" #include "map_files\MetaStation\MetaStation.dmm" diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 9b6944403a..2d99012881 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -121,7 +121,7 @@ SUBSYSTEM_DEF(mapping) z_list = SSmapping.z_list #define INIT_ANNOUNCE(X) to_chat(world, "[X]"); log_world(X) -/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits) +/datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE) var/start_time = REALTIMEOFDAY if (!islist(files)) // handle single-level maps @@ -157,8 +157,8 @@ SUBSYSTEM_DEF(mapping) var/full_path = "_maps/[path]/[file]" if(!loader.load_map(file(full_path), 0, 0, start_z + files[file], no_changeturf = TRUE)) errorList |= full_path - - INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") + if(!silent) + INIT_ANNOUNCE("Loaded [name] in [(REALTIMEOFDAY - start_time)/10]s!") /datum/controller/subsystem/mapping/proc/loadWorld() //if any of these fail, something has gone horribly, HORRIBLY, wrong @@ -187,9 +187,6 @@ SUBSYSTEM_DEF(mapping) LoadGroup(FailedZs, "Lavaland", "map_files/Mining", "Lavaland.dmm", default_traits = ZTRAITS_LAVALAND) else if (!isnull(config.minetype)) INIT_ANNOUNCE("WARNING: An unknown minetype '[config.minetype]' was set! This is being ignored! Update the maploader code!") - - // load Reebe - LoadGroup(FailedZs, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE) #endif if(LAZYLEN(FailedZs)) //but seriously, unless the server's filesystem is messed up this will never happen @@ -367,14 +364,14 @@ GLOBAL_LIST_EMPTY(the_station_areas) away_level = template.load_new_z() else return - + message_admins("Admin [key_name_admin(usr)] has loaded [away_name] away mission.") log_admin("Admin [key_name(usr)] has loaded [away_name] away mission.") if(!away_level) message_admins("Loading [away_name] failed!") return - - + + if(GLOB.the_gateway) //Link any found away gate with station gate var/obj/machinery/gateway/centeraway/new_gate diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index 355dd869b1..a0cfd79770 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -143,6 +143,12 @@ Credit where due: var/datum/team/clockcult/main_clockcult /datum/game_mode/clockwork_cult/pre_setup() + var/list/errorList = list() + SSmapping.LoadGroup(errorList, "Reebe", "map_files/generic", "City_of_Cogs.dmm", default_traits = ZTRAITS_REEBE, silent = TRUE) + if(errorList.len) // reebe failed to load + message_admins("Rebee failed to load!") + log_game("Rebee failed to load!") + return FALSE if(CONFIG_GET(flag/protect_roles_from_antagonist)) restricted_jobs += protected_jobs if(CONFIG_GET(flag/protect_assistant_from_antagonist)) From 95bbfb29d1f3a0574871f0b72738d88486d38d4e Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Sat, 2 Jun 2018 17:41:57 -0700 Subject: [PATCH 052/136] Fix mecha mouse pointer issues (#38213) * Fix mecha mouse pointer issues * Migrate ranged ability mouse pointers to new system --- code/game/mecha/combat/combat.dm | 25 +------------------- code/game/mecha/mecha.dm | 4 ++++ code/modules/antagonists/cult/blood_magic.dm | 1 - code/modules/antagonists/cult/cult_comms.dm | 1 - code/modules/mob/living/living.dm | 13 ++++------ code/modules/mob/living/logout.dm | 2 -- code/modules/mob/login.dm | 1 + code/modules/mob/mob.dm | 9 +++++++ code/modules/spells/spell.dm | 12 ++-------- 9 files changed, 22 insertions(+), 46 deletions(-) diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index c516571e2a..ea51693135 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -2,27 +2,4 @@ force = 30 internal_damage_threshold = 50 armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - -/obj/mecha/combat/moved_inside(mob/living/carbon/human/H) - if(..()) - if(H.client && H.client.mouse_pointer_icon == initial(H.client.mouse_pointer_icon)) - H.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi' - return 1 - else - return 0 - -/obj/mecha/combat/mmi_moved_inside(obj/item/mmi/mmi_as_oc,mob/user) - if(..()) - if(occupant.client && occupant.client.mouse_pointer_icon == initial(occupant.client.mouse_pointer_icon)) - occupant.client.mouse_pointer_icon = 'icons/mecha/mecha_mouse.dmi' - return 1 - else - return 0 - - -/obj/mecha/combat/go_out() - if(occupant && occupant.client && occupant.client.mouse_pointer_icon == 'icons/mecha/mecha_mouse.dmi') - occupant.client.mouse_pointer_icon = initial(occupant.client.mouse_pointer_icon) - ..() - - + mouse_pointer = 'icons/mecha/mecha_mouse.dmi' diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 438c5fdb39..c6f070c23a 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -115,6 +115,7 @@ var/smashcooldown = 3 //deciseconds var/occupant_sight_flags = 0 //sight flags to give to the occupant (e.g. mech mining scanner gives meson-like vision) + var/mouse_pointer hud_possible = list (DIAG_STAT_HUD, DIAG_BATT_HUD, DIAG_MECH_HUD, DIAG_TRACK_HUD) @@ -855,6 +856,7 @@ if(H && H.client && H in range(1)) occupant = H H.forceMove(src) + H.update_mouse_pointer() add_fingerprint(H) GrantActions(H, human_occupant=1) forceMove(loc) @@ -912,6 +914,7 @@ brainmob.reset_perspective(src) brainmob.remote_control = src brainmob.update_canmove() + brainmob.update_mouse_pointer() icon_state = initial(icon_state) update_icon() setDir(dir_in) @@ -981,6 +984,7 @@ setDir(dir_in) if(L && L.client) + L.update_mouse_pointer() L.client.change_view(CONFIG_GET(string/default_view)) zoom_mode = 0 diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 3df3d63ebd..7c8c2b2022 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -271,7 +271,6 @@ attached_action.desc += "
Has [attached_action.charges] use\s remaining." attached_action.UpdateButtonIcon() if(attached_action.charges <= 0) - remove_mousepointer(ranged_ability_user.client) remove_ranged_ability("You have exhausted the spell's power!") qdel(src) diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index b51ff99041..4e6a50bf6b 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -457,7 +457,6 @@ new /obj/effect/temp_visual/cult/sparks(get_turf(target), ranged_ability_user.dir) attached_action.throwing = FALSE attached_action.cooldown = world.time + attached_action.base_cooldown - remove_mousepointer(ranged_ability_user.client) remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.") caller.update_action_buttons_icon() addtimer(CALLBACK(caller, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 68c8913385..7bdc65fcb0 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -35,14 +35,6 @@ QDEL_LIST(diseases) return ..() -/mob/living/ghostize(can_reenter_corpse = 1) - var/prev_client = client - . = ..() - if(.) - if(ranged_ability && prev_client) - ranged_ability.remove_mousepointer(prev_client) - - /mob/living/proc/OpenCraftingMenu() return @@ -1149,6 +1141,11 @@ clear_fullscreen("remote_view", 0) update_pipe_vision() +/mob/living/update_mouse_pointer() + ..() + if (client && ranged_ability && ranged_ability.ranged_mousepointer) + client.mouse_pointer_icon = ranged_ability.ranged_mousepointer + /mob/living/vv_edit_var(var_name, var_value) switch(var_name) if("stat") diff --git a/code/modules/mob/living/logout.dm b/code/modules/mob/living/logout.dm index b7e9036a8a..d2c50559c6 100644 --- a/code/modules/mob/living/logout.dm +++ b/code/modules/mob/living/logout.dm @@ -1,7 +1,5 @@ /mob/living/Logout() update_z(null) - if(ranged_ability && client) - ranged_ability.remove_mousepointer(client) ..() if(!key && mind) //key and mind have become separated. mind.active = 0 //This is to stop say, a mind.transfer_to call on a corpse causing a ghost to re-enter its body. \ No newline at end of file diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 7e7a86a9e4..6dd8b73a4b 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -38,6 +38,7 @@ AA.onNewMob(src) update_client_colour() + update_mouse_pointer() if(client) client.click_intercept = null diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index c98f3f4afb..c9ec43c387 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -849,6 +849,15 @@ if (L) L.alpha = lighting_alpha +/mob/proc/update_mouse_pointer() + if (!client) + return + client.mouse_pointer_icon = initial(client.mouse_pointer_icon) + if (ismecha(loc)) + var/obj/mecha/M = loc + if(M.mouse_pointer) + client.mouse_pointer_icon = M.mouse_pointer + /mob/proc/is_literate() return 0 diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 89e513fd60..4d92878cc2 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -68,27 +68,19 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th return user.ranged_ability = src user.click_intercept = src - add_mousepointer(user.client) + user.update_mouse_pointer() ranged_ability_user = user if(msg) to_chat(ranged_ability_user, msg) active = TRUE update_icon() -/obj/effect/proc_holder/proc/add_mousepointer(client/C) - if(C && ranged_mousepointer && C.mouse_pointer_icon == initial(C.mouse_pointer_icon)) - C.mouse_pointer_icon = ranged_mousepointer - -/obj/effect/proc_holder/proc/remove_mousepointer(client/C) - if(C && ranged_mousepointer && C.mouse_pointer_icon == ranged_mousepointer) - C.mouse_pointer_icon = initial(C.mouse_pointer_icon) - /obj/effect/proc_holder/proc/remove_ranged_ability(msg) if(!ranged_ability_user || !ranged_ability_user.client || (ranged_ability_user.ranged_ability && ranged_ability_user.ranged_ability != src)) //To avoid removing the wrong ability return ranged_ability_user.ranged_ability = null ranged_ability_user.click_intercept = null - remove_mousepointer(ranged_ability_user.client) + ranged_ability_user.update_mouse_pointer() if(msg) to_chat(ranged_ability_user, msg) ranged_ability_user = null From 217dfc0d53b1a71825762e6d55fb7b527145e0a0 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 2 Jun 2018 17:36:58 -0700 Subject: [PATCH 054/136] Fixes exploit (#38250) --- code/modules/antagonists/cult/blood_magic.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 3df3d63ebd..b38274d1fd 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -64,7 +64,7 @@ qdel(nullify_spell) return BS = possible_spells[entered_spell_name] - if(QDELETED(src) || owner.incapacitated() || !BS) + if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit)) return to_chat(owner,"You begin to carve unnatural symbols into your flesh!") SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10)) From b38f42f989e99ddddd00801ddca95e315d480631 Mon Sep 17 00:00:00 2001 From: Nich Date: Sun, 3 Jun 2018 02:26:33 +0200 Subject: [PATCH 056/136] Fixes a locate and adds job checks to download objective (#38199) --- code/modules/antagonists/traitor/datum_traitor.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm index f3ea4ef2ea..ae750adebc 100644 --- a/code/modules/antagonists/traitor/datum_traitor.dm +++ b/code/modules/antagonists/traitor/datum_traitor.dm @@ -164,7 +164,7 @@ kill_objective.find_target() add_objective(kill_objective) else - if(prob(15) && !(locate(/datum/objective/download in owner.objectives))) + if(prob(15) && !(locate(/datum/objective/download) in owner.objectives) && !(owner.assigned_role in list("Research Director", "Scientist", "Roboticist"))) var/datum/objective/download/download_objective = new download_objective.owner = owner download_objective.gen_amount_goal() From bd25d809c3d9fed4cc7f870189bc1ec7ebf8bac3 Mon Sep 17 00:00:00 2001 From: cyclowns Date: Sat, 2 Jun 2018 17:21:25 -0700 Subject: [PATCH 058/136] Fixes tritium and plasma fires storing cached_results incorrectly (#38230) * id -> "fire" * testing remnant --- code/modules/atmospherics/gasmixtures/reactions.dm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm index dd953dcb11..ebfc9fbf2d 100644 --- a/code/modules/atmospherics/gasmixtures/reactions.dm +++ b/code/modules/atmospherics/gasmixtures/reactions.dm @@ -111,7 +111,7 @@ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow var/temperature = air.temperature var/list/cached_results = air.reaction_results - cached_results[id] = 0 + cached_results["fire"] = 0 var/turf/open/location = isturf(holder) ? holder : null var/burned_fuel = 0 @@ -131,7 +131,7 @@ ASSERT_GAS(/datum/gas/water_vapor, air) //oxygen+more-or-less hydrogen=H2O cached_gases[/datum/gas/water_vapor][MOLES] += burned_fuel/TRITIUM_BURN_OXY_FACTOR - cached_results[id] += burned_fuel + cached_results["fire"] += burned_fuel if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() @@ -148,7 +148,7 @@ item.temperature_expose(air, temperature, CELL_VOLUME) location.temperature_expose(air, temperature, CELL_VOLUME) - return cached_results[id] ? REACTING : NO_REACTION + return cached_results["fire"] ? REACTING : NO_REACTION //plasma combustion: combustion of oxygen and plasma (treated as hydrocarbons). creates hotspots. exothermic /datum/gas_reaction/plasmafire @@ -169,7 +169,7 @@ var/list/cached_gases = air.gases //this speeds things up because accessing datum vars is slow var/temperature = air.temperature var/list/cached_results = air.reaction_results - cached_results[id] = 0 + cached_results["fire"] = 0 var/turf/open/location = isturf(holder) ? holder : null //Handle plasma burning @@ -206,7 +206,7 @@ energy_released += FIRE_PLASMA_ENERGY_RELEASED * (plasma_burn_rate) - cached_results[id] += (plasma_burn_rate)*(1+oxygen_burn_rate) + cached_results["fire"] += (plasma_burn_rate)*(1+oxygen_burn_rate) if(energy_released > 0) var/new_heat_capacity = air.heat_capacity() @@ -223,7 +223,7 @@ item.temperature_expose(air, temperature, CELL_VOLUME) location.temperature_expose(air, temperature, CELL_VOLUME) - return cached_results[id] ? REACTING : NO_REACTION + return cached_results["fire"] ? REACTING : NO_REACTION //fusion: a terrible idea that was fun but broken. Now reworked to be less broken and more interesting. Again. /datum/gas_reaction/fusion From b9ac5c0544c57cee1e0a672a0285f775348cc2f4 Mon Sep 17 00:00:00 2001 From: theo2003 <35148170+theo2003@users.noreply.github.com> Date: Sun, 3 Jun 2018 03:20:35 +0300 Subject: [PATCH 060/136] Roboticists now have access to open the R&D windoors. (#38226) --- _maps/map_files/BoxStation/BoxStation.dmm | 2 +- _maps/map_files/Deltastation/DeltaStation2.dmm | 15 +++++---------- _maps/map_files/MetaStation/MetaStation.dmm | 8 ++++---- _maps/map_files/OmegaStation/OmegaStation.dmm | 4 ++-- _maps/map_files/PubbyStation/PubbyStation.dmm | 7 ++----- 5 files changed, 14 insertions(+), 22 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 27d68bb5cb..e30ccc380e 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -22918,7 +22918,7 @@ /obj/structure/table/reinforced, /obj/machinery/door/window/southright{ name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rnd"; diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index af3cf7bade..dad495f0da 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -72556,7 +72556,7 @@ /obj/item/pen, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -76089,7 +76089,7 @@ /obj/machinery/door/window/southleft{ dir = 4; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/window/westleft, /obj/effect/turf_decal/delivery, @@ -76754,7 +76754,7 @@ /obj/machinery/door/window/southleft{ dir = 8; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab2"; @@ -92690,11 +92690,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) -"dQF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/maintenance/port/aft) "dQG" = ( /obj/structure/table, /obj/effect/decal/cleanable/dirt, @@ -100047,7 +100042,7 @@ /obj/machinery/autolathe, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ @@ -134174,7 +134169,7 @@ dNC dNC dOT dPM -dQF +dOb dRE dSC dTA diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 48f741a178..cdbd083c3a 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -51651,7 +51651,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "research_shutters"; @@ -55830,7 +55830,7 @@ /obj/machinery/door/window/eastright{ dir = 4; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/item/folder/white{ pixel_x = 4; @@ -56670,7 +56670,7 @@ /obj/machinery/door/window/eastleft{ dir = 1; name = "Research and Development Deliveries"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/structure/window/reinforced{ dir = 8 @@ -76251,7 +76251,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/firedoor, /obj/machinery/door/poddoor/shutters/preopen{ diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index 465d9ca072..437cd5491e 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -20534,7 +20534,7 @@ /obj/item/pen, /obj/machinery/door/window/southleft{ name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; @@ -21487,7 +21487,7 @@ /obj/machinery/door/window/southleft{ dir = 4; name = "Research Lab Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "rndlab1"; diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 3a75a0b048..4fb4d5ee39 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -21207,9 +21207,6 @@ icon_state = "platingdmg3" }, /area/maintenance/department/cargo) -"bdA" = ( -/turf/open/floor/plating, -/area/maintenance/department/cargo) "bdB" = ( /obj/structure/cable{ icon_state = "1-4" @@ -25766,7 +25763,7 @@ /obj/machinery/door/window/eastright{ dir = 2; name = "Research and Development Desk"; - req_access_txt = "7" + req_one_access_txt = "7;29" }, /obj/machinery/door/poddoor/shutters/preopen{ id = "research_shutters_2"; @@ -91348,7 +91345,7 @@ aPY bau aLf aFi -bdA +aFi beI beI bgD From 7be9b6ebf990f2b9c07d9f4d07ba687f070358e4 Mon Sep 17 00:00:00 2001 From: Jordan Brown Date: Sat, 2 Jun 2018 19:48:19 -0400 Subject: [PATCH 062/136] Antag reputation rewards are now configurable --- code/controllers/configuration/entries/game_options.dm | 10 +++++++++- code/controllers/subsystem/job.dm | 2 +- code/modules/jobs/job_types/job.dm | 6 ++++++ config/antag_rep.txt | 5 +++++ config/config.txt | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 config/antag_rep.txt diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 3de0ebe439..8ac0941b11 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -288,6 +288,7 @@ /datum/config_entry/flag/shift_time_realtime +<<<<<<< HEAD //Cit changes - Adds config options for crew objectives and miscreants /datum/config_entry/flag/allow_crew_objectives @@ -304,4 +305,11 @@ /datum/config_entry/number/nightshift_finish config_entry_value = 6 -//End of Cit changes \ No newline at end of file +//End of Cit changes +======= +/datum/config_entry/keyed_number_list/antag_rep + +/datum/config_entry/number/monkeycap + config_entry_value = 64 + min_val = 0 +>>>>>>> d060e4e... Antag reputation rewards are now configurable (#38077) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index c19345f328..f72b7d1d6a 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -422,7 +422,7 @@ SUBSYSTEM_DEF(job) else M = H - SSpersistence.antag_rep_change[M.client.ckey] += job.antag_rep + SSpersistence.antag_rep_change[M.client.ckey] += job.GetAntagRep() to_chat(M, "You are the [rank].") if(job) diff --git a/code/modules/jobs/job_types/job.dm b/code/modules/jobs/job_types/job.dm index 87db3146e4..1cd7f59a27 100644 --- a/code/modules/jobs/job_types/job.dm +++ b/code/modules/jobs/job_types/job.dm @@ -49,6 +49,7 @@ var/exp_type_department = "" //The amount of good boy points playing this role will earn you towards a higher chance to roll antagonist next round + //can be overriden by antag_rep.txt config var/antag_rep = 10 //Only override this proc @@ -67,6 +68,11 @@ /datum/job/proc/special_check_latejoin(client/C) return TRUE +/datum/job/proc/GetAntagRep() + . = CONFIG_GET(keyed_number_list/antag_rep)[lowertext(title)] + if(. == null) + return antag_rep + //Don't override this unless the job transforms into a non-human (Silicons do this for example) /datum/job/proc/equip(mob/living/carbon/human/H, visualsOnly = FALSE, announce = TRUE, latejoin = FALSE) if(!H) diff --git a/config/antag_rep.txt b/config/antag_rep.txt new file mode 100644 index 0000000000..a26b157d5a --- /dev/null +++ b/config/antag_rep.txt @@ -0,0 +1,5 @@ +## Custom antag reputation values +## List of job titles followed by antag rep value, all prefixed with ANTAG_REP. See code/modules/jobs/job_types for titles +## e.g. +## ANTAG_REP Captain 10 +## ANTAG_REP Assistant 0 diff --git a/config/config.txt b/config/config.txt index 57e0050d69..fba903477c 100644 --- a/config/config.txt +++ b/config/config.txt @@ -3,6 +3,7 @@ $include game_options.txt $include dbconfig.txt $include comms.txt +$include antag_rep.txt # You can use the @ character at the beginning of a config option to lock it from being edited in-game # Example usage: From b7ae7967341d244d2b53a5815ad14245b9575c64 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Sat, 2 Jun 2018 18:20:56 -0400 Subject: [PATCH 063/136] Fixes cigar bugs (#38218) --- code/game/objects/items/cigs_lighters.dm | 2 +- code/game/objects/items/storage/fancy.dm | 21 +++++++++++++-------- icons/obj/cigarettes.dmi | Bin 11615 -> 12018 bytes 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 9b10df57fa..9401579e61 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -340,7 +340,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!" icon_state = "cigaroff" icon_on = "cigaron" - icon_off = "cigaroff" + icon_off = "cigaroff" //make sure to add positional sprites in icons/obj/cigarettes.dmi if you add more. type_butt = /obj/item/cigbutt/cigarbutt throw_speed = 0.5 item_state = "cigaroff" diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm index aaee6f65ab..5fc5af6779 100644 --- a/code/game/objects/items/storage/fancy.dm +++ b/code/game/objects/items/storage/fancy.dm @@ -154,7 +154,7 @@ SendSignal(COMSIG_TRY_STORAGE_TAKE, W, user) user.put_in_hands(W) contents -= W - to_chat(user, "You take a [icon_type] out of the pack.") + to_chat(user, "You take \a [W] out of the pack.") else to_chat(user, "There are no [icon_type]s left in the pack.") @@ -166,18 +166,20 @@ else icon_state = initial(icon_state) add_overlay("[icon_state]_open") - var/i = contents.len + var/cig_position = 1 for(var/C in contents) var/mutable_appearance/inserted_overlay = mutable_appearance(icon) - inserted_overlay.pixel_x = 1 * (i - 1) + if(istype(C, /obj/item/lighter/greyscale)) inserted_overlay.icon_state = "lighter_in" else if(istype(C, /obj/item/lighter)) inserted_overlay.icon_state = "zippo_in" else inserted_overlay.icon_state = "cigarette" + + inserted_overlay.icon_state = "[inserted_overlay.icon_state]_[cig_position]" add_overlay(inserted_overlay) - i-- + cig_position++ else cut_overlays() @@ -191,7 +193,7 @@ SendSignal(COMSIG_TRY_STORAGE_TAKE, W, M) M.equip_to_slot_if_possible(W, SLOT_WEAR_MASK) contents -= W - to_chat(user, "You take a [icon_type] out of the pack.") + to_chat(user, "You take \a [W] out of the pack.") else ..() else @@ -294,10 +296,13 @@ cut_overlays() if(fancy_open) icon_state = "[initial(icon_state)]_open" - var/mutable_appearance/cigar_overlay = mutable_appearance(icon, icon_type) - for(var/c = contents.len, c >= 1, c--) - cigar_overlay.pixel_x = 3 * (c - 1) + + var/cigar_position = 1 //generate sprites for cigars in the box + for(var/obj/item/clothing/mask/cigarette/cigar/smokes in contents) + var/mutable_appearance/cigar_overlay = mutable_appearance(icon, "[smokes.icon_off]_[cigar_position]") add_overlay(cigar_overlay) + cigar_position++ + else icon_state = "[initial(icon_state)]" diff --git a/icons/obj/cigarettes.dmi b/icons/obj/cigarettes.dmi index 84979e438746455b3d2f49a2dba9d73ed21934ee..0f0433be7fb1ea90dbdb33851256704eb4052223 100644 GIT binary patch literal 12018 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 Mt2|b&P_zpF7xAe?xBvhE From 67841c3f195b97a67d2d34f43d1e03ab718d3335 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Sat, 2 Jun 2018 17:04:26 -0400 Subject: [PATCH 065/136] Fixes pocket items being deleted when monkeyizing (#38220) --- code/datums/diseases/transformation.dm | 2 +- code/game/machinery/recycler.dm | 2 +- code/modules/admin/verbs/debug.dm | 5 ++++- code/modules/admin/verbs/one_click_antag.dm | 2 +- code/modules/antagonists/highlander/highlander.dm | 2 +- code/modules/assembly/bomb.dm | 2 +- code/modules/clothing/outfits/standard.dm | 2 +- code/modules/mob/inventory.dm | 2 +- code/modules/mob/transform_procs.dm | 6 +++--- 9 files changed, 14 insertions(+), 11 deletions(-) diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 52b63ccd5f..8008c185a5 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -55,7 +55,7 @@ if(affected_mob.notransform) return affected_mob.notransform = 1 - for(var/obj/item/W in affected_mob.get_equipped_items()) + for(var/obj/item/W in affected_mob.get_equipped_items(TRUE)) affected_mob.dropItemToGround(W) for(var/obj/item/I in affected_mob.held_items) affected_mob.dropItemToGround(I) diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index 08fcb1baa8..8b1e104089 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -181,7 +181,7 @@ // Remove and recycle the equipped items if(eat_victim_items) - for(var/obj/item/I in L.get_equipped_items()) + for(var/obj/item/I in L.get_equipped_items(TRUE)) if(L.dropItemToGround(I)) eat(I, sound=FALSE) diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 2fd212b4dc..e837953f4e 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -734,14 +734,17 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(!dresscode) return + var/delete_pocket var/mob/living/carbon/human/H if(isobserver(M)) H = M.change_mob_type(/mob/living/carbon/human, null, null, TRUE) else H = M + if(alert("Drop Items in Pockets? No will delete them.", "Robust quick dress shop", "Yes", "No") == "No") + delete_pocket = TRUE SSblackbox.record_feedback("tally", "admin_verb", 1, "Select Equipment") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - for (var/obj/item/I in H.get_equipped_items()) + for (var/obj/item/I in H.get_equipped_items(delete_pocket)) qdel(I) if(dresscode != "Naked") H.equipOutfit(dresscode) diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index fd9de5308b..410e976b85 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -290,7 +290,7 @@ /datum/admins/proc/equipAntagOnDummy(mob/living/carbon/human/dummy/mannequin, datum/antagonist/antag) - for(var/I in mannequin.get_equipped_items()) + for(var/I in mannequin.get_equipped_items(TRUE)) qdel(I) if (ispath(antag, /datum/antagonist/ert)) var/datum/antagonist/ert/ert = antag diff --git a/code/modules/antagonists/highlander/highlander.dm b/code/modules/antagonists/highlander/highlander.dm index 6f50e69c84..4e511d7fac 100644 --- a/code/modules/antagonists/highlander/highlander.dm +++ b/code/modules/antagonists/highlander/highlander.dm @@ -42,7 +42,7 @@ if(!istype(H)) return - for(var/obj/item/I in H.get_equipped_items()) + for(var/obj/item/I in H.get_equipped_items(TRUE)) qdel(I) for(var/obj/item/I in H.held_items) qdel(I) diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm index 25a0e804a4..9e3ffaf483 100644 --- a/code/modules/assembly/bomb.dm +++ b/code/modules/assembly/bomb.dm @@ -117,7 +117,7 @@ if(isigniter(assembly.a_left) == isigniter(assembly.a_right)) return - if((src in user.get_equipped_items()) && !user.canUnEquip(src)) + if((src in user.get_equipped_items(TRUE)) && !user.canUnEquip(src)) to_chat(user, "[src] is stuck to you!") return diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 6375f7986f..88752f7415 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -151,7 +151,7 @@ r_hand = /obj/item/twohanded/fireaxe /datum/outfit/psycho/post_equip(mob/living/carbon/human/H) - for(var/obj/item/carried_item in H.get_equipped_items()) + for(var/obj/item/carried_item in H.get_equipped_items(TRUE)) carried_item.add_mob_blood(H)//Oh yes, there will be blood... for(var/obj/item/I in H.held_items) I.add_mob_blood(H) diff --git a/code/modules/mob/inventory.dm b/code/modules/mob/inventory.dm index 4e945b437f..44af3936a8 100644 --- a/code/modules/mob/inventory.dm +++ b/code/modules/mob/inventory.dm @@ -379,7 +379,7 @@ /mob/living/proc/unequip_everything() var/list/items = list() - items |= get_equipped_items() + items |= get_equipped_items(TRUE) for(var/I in items) dropItemToGround(I) drop_all_held_items() diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index 45aa3b06ff..f1940be0e2 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -23,7 +23,7 @@ CH.cavity_item = null if(tr_flags & TR_KEEPITEMS) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W) @@ -174,7 +174,7 @@ //now the rest if (tr_flags & TR_KEEPITEMS) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W, TRUE) @@ -495,7 +495,7 @@ SSblackbox.record_feedback("amount", "gorillas_created", 1) - var/Itemlist = get_equipped_items() + var/Itemlist = get_equipped_items(TRUE) Itemlist += held_items for(var/obj/item/W in Itemlist) dropItemToGround(W, TRUE) From d8113dfc99e1be2c33c5204e3a611fa926a41d85 Mon Sep 17 00:00:00 2001 From: Jordie <4343468+Jordie0608@users.noreply.github.com> Date: Sun, 3 Jun 2018 06:41:58 +1000 Subject: [PATCH 067/136] Fixes datediff not returning (#38215) --- code/modules/client/client_procs.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 2d12b7b0a4..2723370cb9 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -520,7 +520,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) if(!account_join_date) account_age = -1 else - var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),[account_join_date])") + var/datum/DBQuery/query_datediff = SSdbcore.NewQuery("SELECT DATEDIFF(Now(),'[account_join_date]')") if(!query_datediff.Execute()) return if(query_datediff.NextRow()) From d3f34517dce0f75cb2447fd940177065ce7603cf Mon Sep 17 00:00:00 2001 From: Jalleo Date: Sat, 2 Jun 2018 21:23:52 +0100 Subject: [PATCH 069/136] Slight changes to camera network code --- _maps/map_files/BoxStation/BoxStation.dmm | 1 - _maps/shuttles/aux_base_default.dmm | 9 +- _maps/shuttles/aux_base_small.dmm | 149 ++++++++++++++++++++++ code/game/machinery/camera/camera.dm | 1 - code/game/machinery/camera/tracking.dm | 8 +- code/game/machinery/computer/camera.dm | 2 +- 6 files changed, 154 insertions(+), 16 deletions(-) create mode 100644 _maps/shuttles/aux_base_small.dmm diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 27d68bb5cb..bf4f82f883 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -12246,7 +12246,6 @@ "aFe" = ( /obj/machinery/camera{ c_tag = "Dormitory South"; - c_tag_order = 999; dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ diff --git a/_maps/shuttles/aux_base_default.dmm b/_maps/shuttles/aux_base_default.dmm index d35420ebb0..e093d3c864 100644 --- a/_maps/shuttles/aux_base_default.dmm +++ b/_maps/shuttles/aux_base_default.dmm @@ -1,4 +1,4 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -44,10 +44,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/shuttle/auxillary_base) -"y" = ( -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plating, -/area/shuttle/auxillary_base) "z" = ( /obj/machinery/light{ dir = 8 @@ -82,7 +78,6 @@ /area/shuttle/auxillary_base) "X" = ( /obj/machinery/camera{ - c_tag = "Auxillary Mining Base"; dir = 1 }, /obj/structure/mining_shuttle_beacon, @@ -142,7 +137,7 @@ P k k k -y +x "} (6,1,1) = {" v diff --git a/_maps/shuttles/aux_base_small.dmm b/_maps/shuttles/aux_base_small.dmm new file mode 100644 index 0000000000..a7ddb70a9b --- /dev/null +++ b/_maps/shuttles/aux_base_small.dmm @@ -0,0 +1,149 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"b" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/structure/ore_box, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"c" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"d" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"e" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"f" = ( +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"g" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"h" = ( +/obj/machinery/camera{ + dir = 1 + }, +/obj/structure/mining_shuttle_beacon, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"i" = ( +/obj/machinery/light{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"j" = ( +/obj/docking_port/mobile/auxillary_base{ + dheight = 4; + dir = 2; + dwidth = 4; + height = 9; + width = 9; + timid = 1 + }, +/obj/machinery/bluespace_beacon, +/obj/machinery/computer/auxillary_base, +/turf/closed/wall, +/area/shuttle/auxillary_base) +"k" = ( +/obj/machinery/light{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"l" = ( +/obj/machinery/portable_atmospherics/canister/air, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"m" = ( +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) +"n" = ( +/obj/structure/closet/secure_closet/miner/unlocked, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/turf/open/floor/plating, +/area/shuttle/auxillary_base) + +(1,1,1) = {" +b +e +e +e +e +e +l +"} +(2,1,1) = {" +c +f +f +f +f +f +m +"} +(3,1,1) = {" +c +f +f +i +f +f +m +"} +(4,1,1) = {" +c +f +h +j +f +f +m +"} +(5,1,1) = {" +c +f +f +k +f +f +m +"} +(6,1,1) = {" +c +f +f +f +f +f +m +"} +(7,1,1) = {" +d +g +g +g +g +g +n +"} diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 2ea74637d5..1f2017ec6d 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -19,7 +19,6 @@ integrity_failure = 50 var/list/network = list("ss13") var/c_tag = null - var/c_tag_order = 999 var/status = TRUE anchored = TRUE var/start_active = FALSE //If it ignores the random chance to start broken on round start diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index c327f4c17a..1dbfe9d055 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -146,10 +146,6 @@ for (var/j = 1 to i - 1) a = L[j] b = L[j + 1] - if (a.c_tag_order != b.c_tag_order) - if (a.c_tag_order > b.c_tag_order) - L.Swap(j, j + 1) - else - if (sorttext(a.c_tag, b.c_tag) < 0) - L.Swap(j, j + 1) + if (sorttext(a.c_tag, b.c_tag) < 0) + L.Swap(j, j + 1) return L diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index 4ccf9d588c..7e901667ab 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -196,7 +196,7 @@ icon_keyboard = "mining_key" network = list("mine") circuit = /obj/item/circuitboard/computer/mining - + /obj/machinery/computer/security/research name = "research camera console" desc = "Used to access the various cameras in science." From 5503e00199309e779306da7f52b95e46552f2853 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 10:41:41 -0500 Subject: [PATCH 070/136] Automatic changelog generation for PR #6985 [ci skip] --- html/changelogs/AutoChangeLog-pr-6985.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6985.yml diff --git a/html/changelogs/AutoChangeLog-pr-6985.yml b/html/changelogs/AutoChangeLog-pr-6985.yml new file mode 100644 index 0000000000..7fa4518219 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6985.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Switching mobs into/out of a mech (by VR, ghosting, or mindswap) no longer improperly applies the mech's cursor." From 927e3af71a356312158dc8a8a39704520b28ae4c Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 10:42:29 -0500 Subject: [PATCH 071/136] Automatic changelog generation for PR #6987 [ci skip] --- html/changelogs/AutoChangeLog-pr-6987.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6987.yml diff --git a/html/changelogs/AutoChangeLog-pr-6987.yml b/html/changelogs/AutoChangeLog-pr-6987.yml new file mode 100644 index 0000000000..491a186af9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6987.yml @@ -0,0 +1,5 @@ +author: "Nichlas0010" +delete-after: True +changes: + - bugfix: "You now can't get multiple download objectives!" + - tweak: "RDs, Scientists and Roboticists can no longer get download objectives!" From ab7709bedd9cf60f703048bb42c2b59b6f2e55d7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 10:44:53 -0500 Subject: [PATCH 072/136] Automatic changelog generation for PR #6988 [ci skip] --- html/changelogs/AutoChangeLog-pr-6988.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6988.yml diff --git a/html/changelogs/AutoChangeLog-pr-6988.yml b/html/changelogs/AutoChangeLog-pr-6988.yml new file mode 100644 index 0000000000..4b29f0fb09 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6988.yml @@ -0,0 +1,4 @@ +author: "cyclowns" +delete-after: True +changes: + - bugfix: "Fires no longer flicker back and forth like crazy" From 0d42b1c4d12ac573837f1063bd303d08f880c647 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sun, 3 Jun 2018 18:02:27 +0200 Subject: [PATCH 073/136] Replaces airlock_controller/incinerator related varedits with defines/subtypes --- _maps/map_files/BoxStation/BoxStation.dmm | 123 ++------- .../map_files/Deltastation/DeltaStation2.dmm | 128 ++-------- _maps/map_files/MetaStation/MetaStation.dmm | 130 +++------- _maps/map_files/PubbyStation/PubbyStation.dmm | 237 ++++++++---------- code/__DEFINES/atmospherics.dm | 31 +++ code/game/machinery/airlock_control.dm | 166 ++++++++++++ code/game/machinery/buttons.dm | 38 +++ code/game/machinery/doors/airlock_types.dm | 42 ++++ code/game/machinery/doors/poddoor.dm | 20 ++ .../embedded_controller/airlock_controller.dm | 37 ++- code/game/machinery/igniter.dm | 12 + .../components/binary_devices/dp_vent_pump.dm | 12 + 12 files changed, 545 insertions(+), 431 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 27d68bb5cb..fb43a1d231 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -36023,10 +36023,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bMu" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Mixer Room Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "bMv" = ( @@ -36036,9 +36033,8 @@ /turf/closed/wall/r_wall, /area/science/mixing) "bMw" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ @@ -36047,9 +36043,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "bMx" = ( -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_y = 24 }, /obj/machinery/atmospherics/components/binary/pump/on{ @@ -36074,14 +36068,8 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_x = -24; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_x = -24 }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -36411,33 +36399,17 @@ /area/science/mixing) "bNu" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /turf/open/floor/engine, /area/science/mixing) "bNv" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) "bNw" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 2 }, /turf/open/floor/engine, /area/science/mixing) @@ -36867,9 +36839,8 @@ /turf/open/floor/plasteel, /area/tcommsat/computer) "bOE" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ @@ -36904,15 +36875,11 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Mixing Room Vent Control"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = -25; - pixel_y = 5; - req_access_txt = "7" + pixel_y = 5 }, -/obj/machinery/button/ignition{ - id = "mixingsparker"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -25; pixel_y = -5 }, @@ -45814,19 +45781,13 @@ /turf/open/floor/plasteel/floorgrime, /area/maintenance/disposal/incinerator) "cli" = ( -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = 6; - pixel_y = -24; - req_access_txt = "32" + pixel_y = -24 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -6; - pixel_y = -24; - req_access_txt = "32" + pixel_y = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ dir = 4 @@ -46117,14 +46078,7 @@ /area/maintenance/disposal/incinerator) "cmf" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Turbine Interior Airlock"; - req_access_txt = "32" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -46132,17 +46086,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = 38; - pixel_y = 6; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = 6 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -46379,9 +46325,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_x = 8; pixel_y = 24 }, @@ -46406,10 +46350,8 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -46603,14 +46545,7 @@ /area/construction) "cnC" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Turbine Exterior Airlock"; - req_access_txt = "32" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable/yellow{ icon_state = "1-2" }, @@ -46874,10 +46809,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cos" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Auxiliary Incinerator Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cot" = ( @@ -47559,10 +47491,7 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "cqt" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cqu" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index af3cf7bade..454828be9f 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -15401,9 +15401,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_y = 24 }, /turf/open/floor/engine, @@ -15960,10 +15958,7 @@ }, /area/security/execution/education) "aNO" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aNP" = ( @@ -15997,9 +15992,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aNR" = ( -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ icon_state = "4-8" }, @@ -16011,14 +16004,7 @@ /area/maintenance/disposal/incinerator) "aNS" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Incinerator Exterior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable{ icon_state = "4-8" }, @@ -16033,23 +16019,14 @@ icon_state = "4-8" }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 2 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aNU" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Incinerator Interior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable{ icon_state = "4-8" }, @@ -16057,16 +16034,8 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; - pixel_y = 27; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ + pixel_y = 27 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -16735,24 +16704,17 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "aPA" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 8; pixel_y = -36 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -8; - pixel_y = -36; - req_access_txt = "12" + pixel_y = -36 }, -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = -8; - pixel_y = -24; - req_access_txt = "12" + pixel_y = -24 }, /obj/machinery/computer/turbine_computer{ dir = 1; @@ -17622,10 +17584,7 @@ /turf/open/floor/plating/airless, /area/maintenance/disposal/incinerator) "aRo" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Incineration Chamber Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "aRp" = ( @@ -99678,14 +99637,7 @@ }, /area/science/mixing) "fpQ" = ( -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/science/mixing) @@ -99713,9 +99665,7 @@ /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 }, -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_x = -24 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -99950,17 +99900,13 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, -/obj/machinery/button/ignition{ - id = "herrington_memorial_toxigniter"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -6; pixel_y = 30 }, -/obj/machinery/button/door{ - id = "mixvent"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = 8; - pixel_y = 30; - req_one_access = null; - req_one_access_txt = "8" + pixel_y = 30 }, /obj/effect/decal/cleanable/dirt, /obj/machinery/camera{ @@ -100065,10 +100011,8 @@ }, /area/science/mixing) "lyU" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 8 }, /turf/open/floor/engine, /area/science/mixing) @@ -100143,14 +100087,8 @@ /area/science/circuit) "mkm" = ( /obj/machinery/atmospherics/components/binary/valve, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_y = 26; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_y = 26 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/vault{ @@ -100206,15 +100144,7 @@ }, /area/science/mixing) "oIE" = ( -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_one_access = "8"; - req_one_access_txt = "0" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/engine, /area/science/mixing) @@ -100254,9 +100184,7 @@ }, /area/science/research) "oYI" = ( -/obj/machinery/igniter{ - id = "herrington_memorial_toxigniter" - }, +/obj/machinery/igniter/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "oZC" = ( @@ -100359,9 +100287,7 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "svv" = ( -/obj/machinery/door/poddoor{ - id = "mixvent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "tmi" = ( diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 48f741a178..b8a827375c 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -52974,29 +52974,14 @@ /area/maintenance/disposal/incinerator) "cja" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Incinerator Interior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, /obj/structure/cable{ icon_state = "1-2" }, /obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = 40; - pixel_y = 8; - req_access_txt = "12"; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -53704,9 +53689,7 @@ /obj/machinery/atmospherics/components/binary/pump/on{ dir = 1 }, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_atmos{ pixel_x = -8; pixel_y = 24 }, @@ -53719,10 +53702,8 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 8; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 8 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -54366,14 +54347,7 @@ /area/space/nearstation) "cmd" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Incinerator Exterior Airlock"; - req_access_txt = "12" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /obj/structure/cable{ icon_state = "1-2" }, @@ -54833,9 +54807,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cne" = ( -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ icon_state = "1-2" }, @@ -54855,10 +54827,7 @@ /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cng" = ( -/obj/machinery/door/poddoor{ - id = "auxincineratorvent"; - name = "Incineration Chamber Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "cnh" = ( @@ -56943,10 +56912,7 @@ /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "crf" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Turbine Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "crg" = ( @@ -63457,10 +63423,7 @@ /turf/open/space, /area/science/mixing) "cEr" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Mixer Room Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "cEs" = ( @@ -63470,9 +63433,8 @@ /turf/open/floor/engine/vacuum, /area/science/mixing) "cEt" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxins_mixing_output{ @@ -63487,9 +63449,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "cEv" = ( -/obj/machinery/airlock_sensor{ - id_tag = "tox_airlock_sensor"; - master_tag = "tox_airlock_control"; +/obj/machinery/airlock_sensor/incinerator_toxmix{ pixel_y = 24 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -63503,14 +63463,8 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "tox_airlock_pump"; - exterior_door_tag = "tox_airlock_exterior"; - id_tag = "tox_airlock_control"; - interior_door_tag = "tox_airlock_interior"; - pixel_x = -24; - sanitize_external = 1; - sensor_tag = "tox_airlock_sensor" +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ + pixel_x = -24 }, /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -63902,35 +63856,19 @@ /area/science/mixing) "cFo" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Mixing Room Exterior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /turf/open/floor/engine, /area/science/mixing) "cFp" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "tox_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 2 }, /obj/effect/landmark/blobstart, /turf/open/floor/engine, /area/science/mixing) "cFq" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/research/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Mixing Room Interior Airlock"; - req_access_txt = "8" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /turf/open/floor/engine, /area/science/mixing) "cFr" = ( @@ -64354,9 +64292,8 @@ }, /area/science/research) "cGj" = ( -/obj/machinery/sparker{ +/obj/machinery/sparker/toxmix{ dir = 2; - id = "mixingsparker"; pixel_x = 25 }, /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ @@ -64379,15 +64316,11 @@ dir = 4 }, /obj/machinery/meter, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Mixing Room Vent Control"; +/obj/machinery/button/door/incinerator_vent_toxmix{ pixel_x = -25; - pixel_y = 5; - req_access_txt = "7" + pixel_y = 5 }, -/obj/machinery/button/ignition{ - id = "mixingsparker"; +/obj/machinery/button/ignition/incinerator/toxmix{ pixel_x = -25; pixel_y = -5 }, @@ -67135,8 +67068,7 @@ /turf/open/floor/plating, /area/maintenance/aft) "cLC" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 8; pixel_y = -36 }, @@ -67147,20 +67079,14 @@ network = list("turbine"); pixel_x = 29 }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Turbine Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = -8; - pixel_y = -36; - req_access_txt = "12" + pixel_y = -36 }, /obj/machinery/atmospherics/pipe/simple/general/visible, -/obj/machinery/button/door{ - id = "auxincineratorvent"; - name = "Auxiliary Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = -8; - pixel_y = -24; - req_access_txt = "12" + pixel_y = -24 }, /obj/machinery/computer/turbine_computer{ dir = 1; diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 3a75a0b048..4077ea65b5 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -31516,8 +31516,8 @@ /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 }, /turf/open/floor/plasteel/white, /area/science/mixing) @@ -32098,9 +32098,6 @@ dir = 4 }, /area/science/explab) -"bFg" = ( -/turf/open/floor/plasteel/white, -/area/science/mixing) "bFh" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 @@ -32535,6 +32532,9 @@ /area/science/mixing) "bGn" = ( /obj/machinery/vending/wardrobe/science_wardrobe, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGo" = ( @@ -32554,6 +32554,9 @@ pixel_y = -2 }, /obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGp" = ( @@ -32578,6 +32581,9 @@ network = list("ss13","rd") }, /obj/machinery/light, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGq" = ( @@ -32595,16 +32601,25 @@ }, /obj/item/assembly/timer, /obj/structure/table/reinforced, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGr" = ( /obj/structure/tank_dispenser, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGs" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /turf/open/floor/plasteel/whitepurple/side, /area/science/mixing) "bGt" = ( @@ -33057,12 +33072,8 @@ /area/science/mixing) "bHz" = ( /obj/machinery/atmospherics/components/binary/valve, -/obj/machinery/button/door{ - id = "toxvent"; - name = "Aft Vent Control"; - pixel_y = -24; - req_access_txt = "0"; - req_one_access_txt = "8;24" +/obj/machinery/button/door/incinerator_vent_toxmix{ + pixel_y = -24 }, /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -33078,14 +33089,9 @@ pixel_x = -6; pixel_y = -24 }, -/obj/machinery/doorButtons/airlock_controller{ - idExterior = "tox_airlock_exterior"; - idInterior = "tox_airlock_interior"; - idSelf = "tox_access_control"; - name = "Mixing Chamber Access Console"; +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix{ pixel_x = 6; - pixel_y = -26; - req_access_txt = "0" + pixel_y = -26 }, /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -33102,9 +33108,15 @@ dir = 2; name = "Incinerator Output Pump" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/science/mixing) "bHD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/plasteel/purple/side, /area/science/mixing) "bHE" = ( @@ -33115,6 +33127,9 @@ /obj/effect/turf_decal/bot{ dir = 2 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, /turf/open/floor/plasteel/purple/side, /area/science/mixing) "bHI" = ( @@ -33553,15 +33568,7 @@ /area/science/mixing) "bIL" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_interior"; - name = "Interior Airlock"; - req_access_txt = "8"; - req_one_access_txt = "0" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/engine, /area/science/mixing) @@ -33992,36 +33999,33 @@ /obj/machinery/atmospherics/components/binary/pump/on{ dir = 2 }, -/obj/machinery/doorButtons/access_button{ - idDoor = "tox_airlock_exterior"; - idSelf = "tox_access_control"; - layer = 3.1; - name = "airlock control"; - pixel_x = 8; - pixel_y = -24 - }, /obj/machinery/light/small{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/airlock_sensor/incinerator_toxmix{ + pixel_x = -24 + }, /turf/open/floor/engine, /area/science/mixing) "bJR" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix{ + dir = 8 + }, /turf/open/floor/engine, /area/science/mixing) "bJS" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 1 }, -/obj/machinery/doorButtons/access_button{ - idDoor = "tox_airlock_interior"; - idSelf = "tox_access_control"; - name = "airlock control"; - pixel_x = -8; - pixel_y = 24 - }, /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, /turf/open/floor/engine, /area/science/mixing) "bJT" = ( @@ -34505,15 +34509,7 @@ /area/engine/atmos) "bLf" = ( /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "tox_airlock_exterior"; - name = "Exterior Airlock"; - req_access_txt = "8"; - req_one_access_txt = "0" - }, +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, @@ -35718,10 +35714,7 @@ /turf/closed/wall/r_wall, /area/science/mixing) "bOt" = ( -/obj/machinery/door/poddoor{ - id = "toxvent"; - name = "Aft Vent" - }, +/obj/machinery/door/poddoor/incinerator_toxmix, /turf/open/floor/engine/vacuum, /area/science/mixing) "bOu" = ( @@ -40346,19 +40339,13 @@ dir = 8; id = "incineratorturbine" }, -/obj/machinery/button/door{ - id = "turbinevent"; - name = "Outtake Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_main{ pixel_x = 24; - pixel_y = 6; - req_one_access_txt = "8;24" + pixel_y = 6 }, -/obj/machinery/button/door{ - id = "mixvent"; - name = "Intake Vent Control"; +/obj/machinery/button/door/incinerator_vent_atmos_aux{ pixel_x = 24; - pixel_y = -6; - req_one_access_txt = "8;24" + pixel_y = -6 }, /turf/open/floor/plasteel/darkyellow/side{ dir = 4 @@ -40378,6 +40365,9 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/airlock_sensor/incinerator_atmos{ + pixel_y = 22 + }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "bZT" = ( @@ -40645,24 +40635,10 @@ icon_state = "4-8" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_interior"; - name = "Turbine Interior Airlock"; - req_access_txt = "24" - }, -/obj/machinery/embedded_controller/radio/airlock_controller{ - airpump_tag = "incinerator_airlock_pump"; - exterior_door_tag = "incinerator_airlock_exterior"; - id_tag = "incinerator_airlock_control"; - interior_door_tag = "incinerator_airlock_interior"; - name = "Incinerator Access Console"; +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior, +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos{ pixel_x = -6; - pixel_y = -26; - sanitize_external = 1; - sensor_tag = "incinerator_airlock_sensor" + pixel_y = -26 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -40670,10 +40646,8 @@ /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume{ - dir = 2; - frequency = 1449; - id = "incinerator_airlock_pump" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos{ + dir = 2 }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) @@ -40682,23 +40656,14 @@ icon_state = "4-8" }, /obj/effect/mapping_helpers/airlock/locked, -/obj/machinery/door/airlock/public/glass{ - autoclose = 0; - frequency = 1449; - heat_proof = 1; - id_tag = "incinerator_airlock_exterior"; - name = "Turbine Exterior Airlock"; - req_access_txt = "24" - }, +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caO" = ( /obj/structure/cable/yellow{ icon_state = "4-8" }, -/obj/machinery/igniter{ - id = "Incinerator" - }, +/obj/machinery/igniter/incinerator_atmos, /obj/machinery/air_sensor/atmos/incinerator_tank{ pixel_x = 32; pixel_y = -32 @@ -40735,10 +40700,7 @@ /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "caR" = ( -/obj/machinery/door/poddoor{ - id = "turbinevent"; - name = "Outtake Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_main, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "caS" = ( @@ -40958,8 +40920,7 @@ /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "cbC" = ( -/obj/machinery/button/ignition{ - id = "Incinerator"; +/obj/machinery/button/ignition/incinerator/atmos{ pixel_x = 26; pixel_y = -6 }, @@ -40983,12 +40944,6 @@ }, /obj/machinery/light/small, /obj/machinery/atmospherics/pipe/simple/general/hidden, -/obj/machinery/airlock_sensor{ - id_tag = "incinerator_airlock_sensor"; - master_tag = "incinerator_airlock_control"; - pixel_x = -26; - pixel_y = 8 - }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) "cbF" = ( @@ -41232,10 +41187,7 @@ }, /area/maintenance/disposal/incinerator) "ccs" = ( -/obj/machinery/door/poddoor{ - id = "mixvent"; - name = "Intake Vent" - }, +/obj/machinery/door/poddoor/incinerator_atmos_aux, /turf/open/floor/engine/vacuum, /area/maintenance/disposal/incinerator) "ccu" = ( @@ -49769,6 +49721,12 @@ icon_state = "platingdmg3" }, /area/maintenance/department/engine) +"kfh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "kfM" = ( /obj/structure/closet, /obj/machinery/light/small{ @@ -49833,6 +49791,10 @@ /obj/item/clothing/under/rank/clown/sexy, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) +"kmn" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/white, +/area/science/mixing) "knw" = ( /obj/structure/cable{ icon_state = "1-2" @@ -49875,9 +49837,6 @@ dir = 9 }, /area/chapel/office) -"kwI" = ( -/turf/open/floor/plasteel, -/area/science/mixing) "kxj" = ( /obj/structure/chair/office/dark{ dir = 1 @@ -50772,6 +50731,12 @@ /obj/item/stack/spacecash/c10, /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) +"noM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/science/mixing) "npE" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plating, @@ -50809,6 +50774,12 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"nsD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "ntj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -52433,6 +52404,10 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"rPW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) "rSH" = ( /obj/item/trash/can, /turf/open/floor/wood, @@ -53046,6 +53021,10 @@ }, /turf/open/floor/plating/airless, /area/engine/engineering) +"ubW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall/r_wall, +/area/science/mixing) "uek" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance{ @@ -54328,6 +54307,12 @@ }, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) +"xIx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/closed/wall/r_wall, +/area/science/mixing) "xJy" = ( /obj/structure/chair/comfy/black, /obj/structure/sign/plaques/atmos{ @@ -94970,7 +94955,7 @@ bAF bBK bCW bDV -bFg +bFh bGm bHy aaa @@ -95227,7 +95212,7 @@ bAF bBL bCW bDW -bFh +kmn bGn bHy aaa @@ -96514,9 +96499,9 @@ bDa bEa bFm bGs -bHy -bHy -bHy +ubW +ubW +xIx bHy bHy bHy @@ -97542,9 +97527,9 @@ bHy bHy bHy bGw -bHy -bHy -bHy +nsD +rPW +kfh bHy bHy bHy @@ -97799,7 +97784,7 @@ bwm glf bFr qtA -kwI +khk bIN dAF bCV @@ -98569,7 +98554,7 @@ nev hgD bEf bFu -khk +noM bHE bJV bLh diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index c6c35ef08b..f6f903ec8f 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -194,6 +194,37 @@ #define ATMOS_GAS_MONITOR_WASTE_ENGINE "engine-waste_out" #define ATMOS_GAS_MONITOR_WASTE_ATMOS "atmos-waste_out" +//AIRLOCK CONTROLLER TAGS + +//RnD toxins burn chamber +#define INCINERATOR_TOXMIX_IGNITER "toxmix_igniter" +#define INCINERATOR_TOXMIX_VENT "toxmix_vent" +#define INCINERATOR_TOXMIX_DP_VENTPUMP "toxmix_airlock_pump" +#define INCINERATOR_TOXMIX_AIRLOCK_SENSOR "toxmix_airlock_sensor" +#define INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER "toxmix_airlock_controller" +#define INCINERATOR_TOXMIX_AIRLOCK_INTERIOR "toxmix_airlock_interior" +#define INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR "toxmix_airlock_exterior" + +//Atmospherics/maintenance incinerator +#define INCINERATOR_ATMOS_IGNITER "atmos_incinerator_igniter" +#define INCINERATOR_ATMOS_MAINVENT "atmos_incinerator_mainvent" +#define INCINERATOR_ATMOS_AUXVENT "atmos_incinerator_auxvent" +#define INCINERATOR_ATMOS_DP_VENTPUMP "atmos_incinerator_airlock_pump" +#define INCINERATOR_ATMOS_AIRLOCK_SENSOR "atmos_incinerator_airlock_sensor" +#define INCINERATOR_ATMOS_AIRLOCK_CONTROLLER "atmos_incinerator_airlock_controller" +#define INCINERATOR_ATMOS_AIRLOCK_INTERIOR "atmos_incinerator_airlock_interior" +#define INCINERATOR_ATMOS_AIRLOCK_EXTERIOR "atmos_incinerator_airlock_exterior" + +//Syndicate lavaland base incinerator (lavaland_surface_syndicate_base1.dmm) +#define INCINERATOR_SYNDICATELAVA_IGNITER "syndicatelava_igniter" +#define INCINERATOR_SYNDICATELAVA_MAINVENT "syndicatelava_mainvent" +#define INCINERATOR_SYNDICATELAVA_AUXVENT "syndicatelava_auxvent" +#define INCINERATOR_SYNDICATELAVA_DP_VENTPUMP "syndicatelava_airlock_pump" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR "syndicatelava_airlock_sensor" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER "syndicatelava_airlock_controller" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR "syndicatelava_airlock_interior" +#define INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR "syndicatelava_airlock_exterior" + //MULTIPIPES //IF YOU EVER CHANGE THESE CHANGE SPRITES TO MATCH. #define PIPING_LAYER_MIN 1 diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index f02b765573..f709ce07a7 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -1,3 +1,4 @@ +<<<<<<< HEAD #define AIRLOCK_CONTROL_RANGE 5 // This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) @@ -151,4 +152,169 @@ /obj/machinery/airlock_sensor/Destroy() SSradio.remove_object(src,frequency) +======= +#define AIRLOCK_CONTROL_RANGE 5 + +// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) +/obj/machinery/door/airlock + var/id_tag + var/frequency + var/datum/radio_frequency/radio_connection + + +/obj/machinery/door/airlock/receive_signal(datum/signal/signal) + if(!signal) + return + + if(id_tag != signal.data["tag"] || !signal.data["command"]) + return + + switch(signal.data["command"]) + if("open") + open(1) + + if("close") + close(1) + + if("unlock") + locked = FALSE + update_icon() + + if("lock") + locked = TRUE + update_icon() + + if("secure_open") + locked = FALSE + update_icon() + + sleep(2) + open(1) + + locked = TRUE + update_icon() + + if("secure_close") + locked = FALSE + close(1) + + locked = TRUE + sleep(2) + update_icon() + + send_status() + + +/obj/machinery/door/airlock/proc/send_status() + if(radio_connection) + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "door_status" = density ? "closed" : "open", + "lock_status" = locked ? "locked" : "unlocked" + )) + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + + +/obj/machinery/door/airlock/open(surpress_send) + . = ..() + if(!surpress_send) + send_status() + + +/obj/machinery/door/airlock/close(surpress_send) + . = ..() + if(!surpress_send) + send_status() + + +/obj/machinery/door/airlock/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + if(new_frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) + +/obj/machinery/door/airlock/Destroy() + if(frequency) + SSradio.remove_object(src,frequency) + return ..() + +/obj/machinery/airlock_sensor + icon = 'icons/obj/airlock_machines.dmi' + icon_state = "airlock_sensor_off" + name = "airlock sensor" + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + + power_channel = ENVIRON + + var/id_tag + var/master_tag + var/frequency = FREQ_AIRLOCK_CONTROL + + var/datum/radio_frequency/radio_connection + + var/on = TRUE + var/alert = FALSE + +/obj/machinery/airlock_sensor/incinerator_toxmix + id_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR + master_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/incinerator_atmos + id_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR + master_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/incinerator_syndicatelava + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR + master_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER + +/obj/machinery/airlock_sensor/update_icon() + if(on) + if(alert) + icon_state = "airlock_sensor_alert" + else + icon_state = "airlock_sensor_standby" + else + icon_state = "airlock_sensor_off" + +/obj/machinery/airlock_sensor/attack_hand(mob/user) + . = ..() + if(.) + return + var/datum/signal/signal = new(list( + "tag" = master_tag, + "command" = "cycle" + )) + + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + flick("airlock_sensor_cycle", src) + +/obj/machinery/airlock_sensor/process() + if(on) + var/datum/gas_mixture/air_sample = return_air() + var/pressure = round(air_sample.return_pressure(),0.1) + alert = (pressure < ONE_ATMOSPHERE*0.8) + + var/datum/signal/signal = new(list( + "tag" = id_tag, + "timestamp" = world.time, + "pressure" = num2text(pressure) + )) + + radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) + + update_icon() + +/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) + SSradio.remove_object(src, frequency) + frequency = new_frequency + radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) + +/obj/machinery/airlock_sensor/Initialize() + . = ..() + set_frequency(frequency) + +/obj/machinery/airlock_sensor/Destroy() + SSradio.remove_object(src,frequency) +>>>>>>> 5f76d96... replaces varedits with defines/subtypes (#38240) return ..() \ No newline at end of file diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 9511e8d0d4..2c6a2abea4 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -190,6 +190,31 @@ device = new /obj/item/assembly/control(src) ..() +/obj/machinery/button/door/incinerator_vent_toxmix + name = "combustion chamber vent control" + id = INCINERATOR_TOXMIX_VENT + req_access = list(ACCESS_TOX) + +/obj/machinery/button/door/incinerator_vent_atmos_main + name = "turbine vent control" + id = INCINERATOR_ATMOS_MAINVENT + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/button/door/incinerator_vent_atmos_aux + name = "combustion chamber vent control" + id = INCINERATOR_ATMOS_AUXVENT + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/button/door/incinerator_vent_syndicatelava_main + name = "turbine vent control" + id = INCINERATOR_SYNDICATELAVA_MAINVENT + req_access = list(ACCESS_SYNDICATE) + +/obj/machinery/button/door/incinerator_vent_syndicatelava_aux + name = "combustion chamber vent control" + id = INCINERATOR_SYNDICATELAVA_AUXVENT + req_access = list(ACCESS_SYNDICATE) + /obj/machinery/button/massdriver name = "mass driver button" desc = "A remote control switch for a mass driver." @@ -204,6 +229,19 @@ skin = "launcher" device_type = /obj/item/assembly/control/igniter +/obj/machinery/button/ignition/incinerator + name = "combustion chamber ignition switch" + desc = "A remote control switch for the combustion chamber's igniter." + +/obj/machinery/button/ignition/incinerator/toxmix + id = INCINERATOR_TOXMIX_IGNITER + +/obj/machinery/button/ignition/incinerator/atmos + id = INCINERATOR_ATMOS_IGNITER + +/obj/machinery/button/ignition/incinerator/syndicatelava + id = INCINERATOR_SYNDICATELAVA_IGNITER + /obj/machinery/button/flasher name = "flasher button" desc = "A remote control switch for a mounted flasher." diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 69621adc84..33bd47126c 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -79,6 +79,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_access = list(ACCESS_SYNDICATE) + +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_interior + name = "Turbine Interior Airlock" + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/glass/incinerator/syndicatelava_exterior + name = "Turbine Exterior Airlock" + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR + /obj/machinery/door/airlock/command/glass opacity = 0 glass = TRUE @@ -107,6 +121,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/research/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_access = list(ACCESS_TOX) + +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_interior + name = "Mixing Room Interior Airlock" + id_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/research/glass/incinerator/toxmix_exterior + name = "Mixing Room Exterior Airlock" + id_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR + /obj/machinery/door/airlock/mining/glass opacity = 0 glass = TRUE @@ -287,6 +315,20 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/public/glass/incinerator + autoclose = FALSE + frequency = FREQ_AIRLOCK_CONTROL + heat_proof = TRUE + req_one_access = list(ACCESS_ATMOSPHERICS, ACCESS_MAINT_TUNNELS) + +/obj/machinery/door/airlock/public/glass/incinerator/atmos_interior + name = "Turbine Interior Airlock" + id_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR + +/obj/machinery/door/airlock/public/glass/incinerator/atmos_exterior + name = "Turbine Exterior Airlock" + id_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR + ////////////////////////////////// /* External Airlocks diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index 9e467e8926..a581b20f52 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -36,6 +36,26 @@ else INVOKE_ASYNC(src, .proc/close) +/obj/machinery/door/poddoor/incinerator_toxmix + name = "combustion chamber vent" + id = INCINERATOR_TOXMIX_VENT + +/obj/machinery/door/poddoor/incinerator_atmos_main + name = "turbine vent" + id = INCINERATOR_ATMOS_MAINVENT + +/obj/machinery/door/poddoor/incinerator_atmos_aux + name = "combustion chamber vent" + id = INCINERATOR_ATMOS_AUXVENT + +/obj/machinery/door/poddoor/incinerator_syndicatelava_main + name = "turbine vent" + id = INCINERATOR_SYNDICATELAVA_MAINVENT + +/obj/machinery/door/poddoor/incinerator_syndicatelava_aux + name = "combustion chamber vent" + id = INCINERATOR_SYNDICATELAVA_AUXVENT + /obj/machinery/door/poddoor/CollidedWith(atom/movable/AM) if(density) return 0 diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index e2402177e2..8b9255b5ac 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -7,11 +7,11 @@ /datum/computer/file/embedded_program/airlock_controller var/id_tag - var/exterior_door_tag - var/interior_door_tag - var/airpump_tag - var/sensor_tag - var/sanitize_external + var/exterior_door_tag //Burn chamber facing door + var/interior_door_tag //Station facing door + var/airpump_tag //See: dp_vent_pump.dm + var/sensor_tag //See: /obj/machinery/airlock_sensor + var/sanitize_external //Before the interior airlock opens, do we first drain all gases inside the chamber and then repressurize? state = AIRLOCK_STATE_CLOSED var/target_state = AIRLOCK_STATE_CLOSED @@ -211,6 +211,33 @@ var/sensor_tag var/sanitize_external +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_toxmix + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_TOXMIX_DP_VENTPUMP + exterior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_TOXMIX_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_TOXMIX_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_TOXMIX_AIRLOCK_SENSOR + +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_atmos + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_ATMOS_DP_VENTPUMP + exterior_door_tag = INCINERATOR_ATMOS_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_ATMOS_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_ATMOS_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_ATMOS_AIRLOCK_SENSOR + +/obj/machinery/embedded_controller/radio/airlock_controller/incinerator_syndicatelava + name = "Incinerator Access Console" + airpump_tag = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + exterior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_EXTERIOR + id_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_CONTROLLER + interior_door_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_INTERIOR + sanitize_external = TRUE + sensor_tag = INCINERATOR_SYNDICATELAVA_AIRLOCK_SENSOR + /obj/machinery/embedded_controller/radio/airlock_controller/Initialize(mapload) . = ..() if(!mapload) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index d5bb8db0e3..0753d7598f 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -14,6 +14,15 @@ armor = list("melee" = 50, "bullet" = 30, "laser" = 70, "energy" = 50, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70) resistance_flags = FIRE_PROOF +/obj/machinery/igniter/incinerator_toxmix + id = INCINERATOR_TOXMIX_IGNITER + +/obj/machinery/igniter/incinerator_atmos + id = INCINERATOR_ATMOS_IGNITER + +/obj/machinery/igniter/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_IGNITER + /obj/machinery/igniter/on on = TRUE icon_state = "igniter1" @@ -60,6 +69,9 @@ anchored = TRUE resistance_flags = FIRE_PROOF +/obj/machinery/sparker/toxmix + id = INCINERATOR_TOXMIX_IGNITER + /obj/machinery/sparker/Initialize() . = ..() spark_system = new /datum/effect_system/spark_spread diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm index 671eca928e..a737b3c688 100644 --- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm @@ -62,6 +62,18 @@ Acts like a normal vent, but has an input AND output. /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume name = "large dual-port air vent" +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_toxmix + id = INCINERATOR_TOXMIX_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_atmos + id = INCINERATOR_ATMOS_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/incinerator_syndicatelava + id = INCINERATOR_SYNDICATELAVA_DP_VENTPUMP + frequency = FREQ_AIRLOCK_CONTROL + /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer1 piping_layer = PIPING_LAYER_MIN pixel_x = -PIPING_LAYER_P_X From 8b4a3ab273369f48775bcbd1d20d119b288e6734 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Sun, 3 Jun 2018 18:03:24 +0200 Subject: [PATCH 074/136] Readds missing objs to Delta toxins (#38245) * prb: no update * another one --- _maps/map_files/Deltastation/DeltaStation2.dmm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index af3cf7bade..c540e99274 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -82923,7 +82923,6 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 }, -/obj/structure/window/spawner/north, /obj/effect/turf_decal/stripes/line{ dir = 5 }, @@ -83693,6 +83692,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/portable_atmospherics/pump{ + name = "Lil Pump" + }, /turf/open/floor/plasteel, /area/science/mixing) "dxQ" = ( @@ -84469,7 +84471,6 @@ dir = 4 }, /obj/machinery/portable_atmospherics/canister, -/obj/structure/window/spawner, /obj/effect/turf_decal/stripes/line{ dir = 6 }, @@ -84989,7 +84990,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 10 }, -/obj/structure/window/spawner, /turf/open/floor/plasteel, /area/science/mixing) "dAD" = ( @@ -85787,6 +85787,9 @@ /obj/effect/turf_decal/stripes/line{ dir = 5 }, +/obj/item/radio/intercom{ + pixel_x = -26 + }, /turf/open/floor/plasteel, /area/science/mixing) "dCb" = ( @@ -86384,7 +86387,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 9 }, -/obj/structure/window/spawner/north, /turf/open/floor/plasteel, /area/science/mixing) "dDt" = ( @@ -86891,6 +86893,7 @@ /obj/structure/sign/poster/official/science{ pixel_x = 32 }, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plasteel, /area/science/mixing) "dEv" = ( @@ -87473,6 +87476,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel, /area/science/mixing) "dFM" = ( From 42e5ded9b34b650e01429fb78ab37a4505cf0ad7 Mon Sep 17 00:00:00 2001 From: iksyp <33264221+iskyp@users.noreply.github.com> Date: Sun, 3 Jun 2018 09:05:03 -0700 Subject: [PATCH 076/136] fatsuits (#38233) --- _maps/shuttles/infiltrator_basic.dmm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_maps/shuttles/infiltrator_basic.dmm b/_maps/shuttles/infiltrator_basic.dmm index 5d21fad7f8..0b1a7c5c6a 100644 --- a/_maps/shuttles/infiltrator_basic.dmm +++ b/_maps/shuttles/infiltrator_basic.dmm @@ -411,12 +411,12 @@ /area/shuttle/syndicate/airlock) "bi" = ( /obj/structure/rack, -/obj/item/clothing/suit/space/syndicate/black/red, -/obj/item/clothing/head/helmet/space/syndicate/black/red, /obj/effect/turf_decal/bot_white, /obj/effect/turf_decal/stripes/line{ dir = 10 }, +/obj/item/clothing/suit/space/syndicate, +/obj/item/clothing/head/helmet/space/syndicate, /turf/open/floor/mineral/plastitanium, /area/shuttle/syndicate/airlock) "bj" = ( From 83cf30c92e91838be3d926ee6dc6718812eafd2c Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sun, 3 Jun 2018 19:45:25 +0300 Subject: [PATCH 078/136] oh ho (#38249) --- code/game/machinery/computer/communications.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 14d02e9752..37282c6478 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -51,7 +51,7 @@ /obj/machinery/computer/communications/Topic(href, href_list) if(..()) return - if(!is_station_level(z) && !is_centcom_level(z)) //Can only use on centcom and SS13 + if(!is_station_level(z) && !is_transit_level(z)) //Can only use in transit and on SS13 to_chat(usr, "Unable to establish a connection: \black You're too far away from the station!") return usr.set_machine(src) From 68236af5424241e3c22f6c5f7224bf80109b0782 Mon Sep 17 00:00:00 2001 From: yorii Date: Sun, 3 Jun 2018 19:58:17 +0200 Subject: [PATCH 080/136] Adds one brain damage statement (#38244) * this one is kinda funny tbqh * fix comma * fix --- strings/traumas.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/strings/traumas.json b/strings/traumas.json index 4dd2d77abb..ab3f58f984 100644 --- a/strings/traumas.json +++ b/strings/traumas.json @@ -106,7 +106,8 @@ "@pick(bug)", "@pick(semicolon)wtf??????????? @pick(bug)", "@pick(semicolon)i ran into the supermattre ten i dsappeard @pick(bug)", - "DON'T EVER TUCH ME" + "DON'T EVER TUCH ME", + "@pick(semicolon)GIVE ME FREE ROBUX PLEASE JUST ENOUGH FOR SHIRT AND PANTS" ], "mutations": [ From 805852e1dfb4dedca2c14284118cb63f3f8edf21 Mon Sep 17 00:00:00 2001 From: theo2003 <35148170+theo2003@users.noreply.github.com> Date: Sun, 3 Jun 2018 20:59:09 +0300 Subject: [PATCH 082/136] Fixed hydroponics tray weed light not turning off when weeds are removed by an integrated circuits device. (#38246) --- code/modules/integrated_electronics/subtypes/manipulation.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm index f4cc363afb..645e54c153 100644 --- a/code/modules/integrated_electronics/subtypes/manipulation.dm +++ b/code/modules/integrated_electronics/subtypes/manipulation.dm @@ -286,6 +286,7 @@ push_data() if(1) TR.weedlevel = 0 + TR.update_icon() if(2) if(TR.myseed) //Could be that they're just using it as a de-weeder TR.age = 0 From f83dc08fa77c0b49cb59b9a89bbaf5b91eb0d392 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sun, 3 Jun 2018 21:21:18 +0300 Subject: [PATCH 084/136] are we free? (#38228) --- code/datums/holocall.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index 22dc6a7671..12070f6fe2 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -202,7 +202,7 @@ /datum/holorecord/proc/set_caller_image(mob/user) var/olddir = user.dir user.setDir(SOUTH) - caller_image = getFlatIcon(user) + caller_image = image(user) user.setDir(olddir) /obj/item/disk/holodisk @@ -300,7 +300,7 @@ mannequin.equipOutfit(outfit_type,TRUE) mannequin.setDir(SOUTH) COMPILE_OVERLAYS(mannequin) - . = getFlatIcon(mannequin) + . = image(mannequin) unset_busy_human_dummy("HOLODISK_PRESET") /obj/item/disk/holodisk/example @@ -344,4 +344,3 @@ /datum/preset_holoimage/clown outfit_type = /datum/outfit/job/clown - From 568dfa7f35a89334e6081a7b40ca0601f2091b87 Mon Sep 17 00:00:00 2001 From: vuonojenmustaturska Date: Sun, 3 Jun 2018 21:24:45 +0300 Subject: [PATCH 086/136] Include item overlays in attack animations (shows the proper color of screwdrivers etc) (#38225) * overlay attacks * this works too * fix trays too --- code/game/atoms_movable.dm | 2 +- code/game/objects/items/storage/bags.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 29c02932fc..22a7940bbf 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -562,7 +562,7 @@ if(visual_effect_icon) I = image('icons/effects/effects.dmi', A, visual_effect_icon, A.layer + 0.1) else if(used_item) - I = image(used_item.icon, A, used_item.icon_state, A.layer + 0.1) + I = image(icon = used_item, loc = A, layer = A.layer + 0.1) // Scale the icon. I.transform *= 0.75 diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm index a44e61f16a..a3e4bc112e 100644 --- a/code/game/objects/items/storage/bags.dm +++ b/code/game/objects/items/storage/bags.dm @@ -310,7 +310,7 @@ /obj/item/storage/bag/tray/update_icon() cut_overlays() for(var/obj/item/I in contents) - add_overlay(mutable_appearance(I.icon, I.icon_state)) + add_overlay(new /mutable_appearance(I)) /obj/item/storage/bag/tray/Entered() . = ..() From 9f4f4706072818d0109ed400434ea6c0d34f015f Mon Sep 17 00:00:00 2001 From: Tad Hardesty Date: Sun, 3 Jun 2018 12:25:34 -0700 Subject: [PATCH 088/136] Delay smoothing atoms that have not initialized yet (#38173) --- code/controllers/subsystem/icon_smooth.dm | 22 ++++++++++++++++------ code/modules/mapping/map_template.dm | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/code/controllers/subsystem/icon_smooth.dm b/code/controllers/subsystem/icon_smooth.dm index d0ad2ffbc3..1c8d94826d 100644 --- a/code/controllers/subsystem/icon_smooth.dm +++ b/code/controllers/subsystem/icon_smooth.dm @@ -6,16 +6,26 @@ SUBSYSTEM_DEF(icon_smooth) flags = SS_TICKER var/list/smooth_queue = list() + var/list/deferred = list() /datum/controller/subsystem/icon_smooth/fire() - while(smooth_queue.len) - var/atom/A = smooth_queue[smooth_queue.len] - smooth_queue.len-- - smooth_icon(A) + var/list/cached = smooth_queue + while(cached.len) + var/atom/A = cached[cached.len] + cached.len-- + if (A.flags_1 & INITIALIZED_1) + smooth_icon(A) + else + deferred += A if (MC_TICK_CHECK) return - if (!smooth_queue.len) - can_fire = 0 + + if (!cached.len) + if (deferred.len) + smooth_queue = deferred + deferred = cached + else + can_fire = 0 /datum/controller/subsystem/icon_smooth/Initialize() smooth_zlevel(1,TRUE) diff --git a/code/modules/mapping/map_template.dm b/code/modules/mapping/map_template.dm index b5b2091eb9..0cfdf322c4 100644 --- a/code/modules/mapping/map_template.dm +++ b/code/modules/mapping/map_template.dm @@ -57,12 +57,12 @@ if(!bounds) return FALSE - smooth_zlevel(world.maxz) repopulate_sorted_areas() SSlighting.initialize_lighting_objects(block(locate(bounds[MAP_MINX], bounds[MAP_MINY], bounds[MAP_MINZ]),locate(bounds[MAP_MAXX], bounds[MAP_MAXY], bounds[MAP_MAXZ]))) //initialize things that are normally initialized after map load initTemplateBounds(bounds) + smooth_zlevel(world.maxz) log_game("Z-level [name] loaded at at [x],[y],[world.maxz]") return level From 6791d13e8113de97de922a4a7b2a31faba8a0306 Mon Sep 17 00:00:00 2001 From: Yenwodyah Date: Sun, 3 Jun 2018 15:47:03 -0500 Subject: [PATCH 090/136] Fix some advanced disease thresholds (#38257) --- code/datums/diseases/advance/symptoms/fire.dm | 2 +- code/datums/diseases/advance/symptoms/heal.dm | 6 +++--- code/datums/diseases/advance/symptoms/shivering.dm | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index 781cd6de4d..f85024a7a9 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -125,7 +125,7 @@ Bonus symptom_delay_max = 140 if(A.properties["stage_rate"] >= 8) //serious boom when wet explosion_power = 2 - if(A.properties["transmission"] >= 8) //extra chemicals + if(A.properties["transmittable"] >= 8) //extra chemicals chems = TRUE /datum/symptom/alkali/Activate(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 02e0546201..9f274c0aa3 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -60,7 +60,7 @@ /datum/symptom/heal/starlight/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["transmission"] >= 6) + if(A.properties["transmittable"] >= 6) nearspace_penalty = 1 if(A.properties["stage_rate"] >= 6) power = 2 @@ -358,7 +358,7 @@ return if(A.properties["stage_rate"] >= 7) power = 2 - if(A.properties["trasmission"] >= 6) + if(A.properties["transmittable"] >= 6) temp_rate = 4 /datum/symptom/heal/plasma/CanHeal(datum/disease/advance/A) @@ -425,7 +425,7 @@ return if(A.properties["resistance"] >= 7) power = 2 - if(A.properties["trasmission"] >= 6) + if(A.properties["transmittable"] >= 6) cellular_damage = TRUE /datum/symptom/heal/radiation/CanHeal(datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index c67bf7798a..e4bb5e1b3e 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -33,10 +33,10 @@ Bonus /datum/symptom/fever/Start(datum/disease/advance/A) if(!..()) return - if(A.properties["stage_speed"] >= 5) //dangerous cold + if(A.properties["stage_rate"] >= 5) //dangerous cold power = 1.5 unsafe = TRUE - if(A.properties["stage_speed"] >= 10) + if(A.properties["stage_rate"] >= 10) power = 2.5 /datum/symptom/shivering/Activate(datum/disease/advance/A) From 46790245f9313b39deec002fbd4a09e6928ec1cc Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:19:18 -0500 Subject: [PATCH 092/136] Automatic changelog generation for PR #6991 [ci skip] --- html/changelogs/AutoChangeLog-pr-6991.yml | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6991.yml diff --git a/html/changelogs/AutoChangeLog-pr-6991.yml b/html/changelogs/AutoChangeLog-pr-6991.yml new file mode 100644 index 0000000000..bf8b60a831 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6991.yml @@ -0,0 +1,6 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed cigar cases & cigarette packets taking two inventory slots" + - bugfix: "Fixed cigar cases showing the wrong icon for the cigars inside them." + - bugfix: "Fixed cigar cases & cigarette packets stating the wrong name of the cigar/cigarette when removed via altclick." From c96416ed91d3aecfb552804208710ec86627c2c0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:19:38 -0500 Subject: [PATCH 093/136] Automatic changelog generation for PR #6992 [ci skip] --- html/changelogs/AutoChangeLog-pr-6992.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6992.yml diff --git a/html/changelogs/AutoChangeLog-pr-6992.yml b/html/changelogs/AutoChangeLog-pr-6992.yml new file mode 100644 index 0000000000..30168181c9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6992.yml @@ -0,0 +1,11 @@ +author: "ShizCalev" +delete-after: True +changes: + - bugfix: "Fixed items in pockets vanishing when a mob is monkeyized." + - bugfix: "Fixed items in pockets vanishing when a mob is gorillized." + - bugfix: "Fixed items in pockets vanishing when a mob is infected with a transformation disease." + - bugfix: "Fixed items in pockets not being properly deleted when a mob goes through a recycler" + - bugfix: "Fixed items in pockets not being properly deleted when highlander mode is enabled." + - bugfix: "Fixed exploit allowing you to remove unremovable tanks from pockets." + - bugfix: "Fixed items in pockets dropping when a mob is equipped with a new outfit." + - bugfix: "Fixed items in pockets not being covered in blood when equipping the psycho outfit." From dd70a5ef8b01a4f37e618ffa7cd3588af02c3364 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:20:01 -0500 Subject: [PATCH 094/136] Automatic changelog generation for PR #6989 [ci skip] --- html/changelogs/AutoChangeLog-pr-6989.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6989.yml diff --git a/html/changelogs/AutoChangeLog-pr-6989.yml b/html/changelogs/AutoChangeLog-pr-6989.yml new file mode 100644 index 0000000000..b448b9a768 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6989.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "roboticists have access to R&D windoors" From b3a4fb6560634374f006192fb2907829631971c6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:20:33 -0500 Subject: [PATCH 095/136] Automatic changelog generation for PR #6996 [ci skip] --- html/changelogs/AutoChangeLog-pr-6996.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6996.yml diff --git a/html/changelogs/AutoChangeLog-pr-6996.yml b/html/changelogs/AutoChangeLog-pr-6996.yml new file mode 100644 index 0000000000..8485bdb247 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6996.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "The Deltastation toxins lab has its portable scrubber, air pump and intercom back." From 431f48c0891011d1974559494c4920747bf06c7f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:21:00 -0500 Subject: [PATCH 096/136] Automatic changelog generation for PR #6997 [ci skip] --- html/changelogs/AutoChangeLog-pr-6997.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6997.yml diff --git a/html/changelogs/AutoChangeLog-pr-6997.yml b/html/changelogs/AutoChangeLog-pr-6997.yml new file mode 100644 index 0000000000..fe6f96ec08 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6997.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - tweak: "switched the type of the space suit on the syndicate shuttle" From 18de1bad241c8ecbbfe6eb36417084e0b4ae98a0 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:21:21 -0500 Subject: [PATCH 097/136] Automatic changelog generation for PR #6998 [ci skip] --- html/changelogs/AutoChangeLog-pr-6998.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6998.yml diff --git a/html/changelogs/AutoChangeLog-pr-6998.yml b/html/changelogs/AutoChangeLog-pr-6998.yml new file mode 100644 index 0000000000..4c5fa0b950 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6998.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "comms consoles now work in transit again, and no longer work in centcom" From d667da2d8d78a723c0ec3233fd1ed4a36174d503 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:21:39 -0500 Subject: [PATCH 098/136] Automatic changelog generation for PR #6999 [ci skip] --- html/changelogs/AutoChangeLog-pr-6999.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6999.yml diff --git a/html/changelogs/AutoChangeLog-pr-6999.yml b/html/changelogs/AutoChangeLog-pr-6999.yml new file mode 100644 index 0000000000..5c646a8334 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6999.yml @@ -0,0 +1,4 @@ +author: "yorpan" +delete-after: True +changes: + - rscadd: "Brain damage makes you say one more thing." From 3607e0db5d851def0756f3c394bbd5153d3827bb Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:21:55 -0500 Subject: [PATCH 099/136] Automatic changelog generation for PR #7000 [ci skip] --- html/changelogs/AutoChangeLog-pr-7000.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7000.yml diff --git a/html/changelogs/AutoChangeLog-pr-7000.yml b/html/changelogs/AutoChangeLog-pr-7000.yml new file mode 100644 index 0000000000..c4aaff36e6 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7000.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "fixed hydroponics tray weed light staying on when removing weeds with integrated circuits" From 4e7b5bd0c964ce2b095df92fd7db19466d5a5806 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:22:11 -0500 Subject: [PATCH 100/136] Automatic changelog generation for PR #7001 [ci skip] --- html/changelogs/AutoChangeLog-pr-7001.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7001.yml diff --git a/html/changelogs/AutoChangeLog-pr-7001.yml b/html/changelogs/AutoChangeLog-pr-7001.yml new file mode 100644 index 0000000000..2721ba92e2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7001.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - code_imp: "removed unnecessary getFlatIcons from holocalls" From 5974ec89c30e2c3ec67db8c0fc74241d1cd7ab36 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:22:32 -0500 Subject: [PATCH 101/136] Automatic changelog generation for PR #7002 [ci skip] --- html/changelogs/AutoChangeLog-pr-7002.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7002.yml diff --git a/html/changelogs/AutoChangeLog-pr-7002.yml b/html/changelogs/AutoChangeLog-pr-7002.yml new file mode 100644 index 0000000000..df3104e20f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7002.yml @@ -0,0 +1,4 @@ +author: "Naksu" +delete-after: True +changes: + - bugfix: "Screwdrivers and other items with overlays now show the proper appearance of the item when attacking something with them, or when put on a tray." From 99ae2dccf6d3cf87245f89495117901ee9214b8b Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:23:50 -0500 Subject: [PATCH 102/136] Automatic changelog generation for PR #7003 [ci skip] --- html/changelogs/AutoChangeLog-pr-7003.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7003.yml diff --git a/html/changelogs/AutoChangeLog-pr-7003.yml b/html/changelogs/AutoChangeLog-pr-7003.yml new file mode 100644 index 0000000000..c60bd62fcf --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7003.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "Atom initialization and icon smoothing no longer race, causing late-loading mineral turfs to have no icon." From 3a3a9f89f83e704be8a71cd256ad2fb6d9ef05d1 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 3 Jun 2018 16:24:00 -0500 Subject: [PATCH 103/136] Automatic changelog generation for PR #7004 [ci skip] --- html/changelogs/AutoChangeLog-pr-7004.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7004.yml diff --git a/html/changelogs/AutoChangeLog-pr-7004.yml b/html/changelogs/AutoChangeLog-pr-7004.yml new file mode 100644 index 0000000000..a981bcaf98 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7004.yml @@ -0,0 +1,4 @@ +author: "yenwodyah" +delete-after: True +changes: + - bugfix: "A few virus threshold effects should work now" From a57bda822bad8404bc24636af211c7703337c23e Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Jun 2018 22:19:13 -0400 Subject: [PATCH 104/136] Update game_options.dm --- .../configuration/entries/game_options.dm | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 8ac0941b11..ebf27324b9 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -288,7 +288,11 @@ /datum/config_entry/flag/shift_time_realtime -<<<<<<< HEAD +/datum/config_entry/keyed_number_list/antag_rep + +/datum/config_entry/number/monkeycap + config_entry_value = 64 + min_val = 0 //Cit changes - Adds config options for crew objectives and miscreants /datum/config_entry/flag/allow_crew_objectives @@ -306,10 +310,3 @@ /datum/config_entry/number/nightshift_finish config_entry_value = 6 //End of Cit changes -======= -/datum/config_entry/keyed_number_list/antag_rep - -/datum/config_entry/number/monkeycap - config_entry_value = 64 - min_val = 0 ->>>>>>> d060e4e... Antag reputation rewards are now configurable (#38077) From 8157233145bfc88983632d6e244c63e6383221d1 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Sun, 3 Jun 2018 22:19:52 -0400 Subject: [PATCH 105/136] Update airlock_control.dm --- code/game/machinery/airlock_control.dm | 158 +------------------------ 1 file changed, 1 insertion(+), 157 deletions(-) diff --git a/code/game/machinery/airlock_control.dm b/code/game/machinery/airlock_control.dm index f709ce07a7..1db9669a96 100644 --- a/code/game/machinery/airlock_control.dm +++ b/code/game/machinery/airlock_control.dm @@ -1,158 +1,3 @@ -<<<<<<< HEAD -#define AIRLOCK_CONTROL_RANGE 5 - -// This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) -/obj/machinery/door/airlock - var/id_tag - var/frequency - var/datum/radio_frequency/radio_connection - - -/obj/machinery/door/airlock/receive_signal(datum/signal/signal) - if(!signal) - return - - if(id_tag != signal.data["tag"] || !signal.data["command"]) - return - - switch(signal.data["command"]) - if("open") - open(1) - - if("close") - close(1) - - if("unlock") - locked = FALSE - update_icon() - - if("lock") - locked = TRUE - update_icon() - - if("secure_open") - locked = FALSE - update_icon() - - sleep(2) - open(1) - - locked = TRUE - update_icon() - - if("secure_close") - locked = FALSE - close(1) - - locked = TRUE - sleep(2) - update_icon() - - send_status() - - -/obj/machinery/door/airlock/proc/send_status() - if(radio_connection) - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "door_status" = density ? "closed" : "open", - "lock_status" = locked ? "locked" : "unlocked" - )) - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - - -/obj/machinery/door/airlock/open(surpress_send) - . = ..() - if(!surpress_send) - send_status() - - -/obj/machinery/door/airlock/close(surpress_send) - . = ..() - if(!surpress_send) - send_status() - - -/obj/machinery/door/airlock/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - if(new_frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/door/airlock/Destroy() - if(frequency) - SSradio.remove_object(src,frequency) - return ..() - -/obj/machinery/airlock_sensor - icon = 'icons/obj/airlock_machines.dmi' - icon_state = "airlock_sensor_off" - name = "airlock sensor" - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF - - anchored = TRUE - power_channel = ENVIRON - - var/id_tag - var/master_tag - var/frequency = FREQ_AIRLOCK_CONTROL - - var/datum/radio_frequency/radio_connection - - var/on = TRUE - var/alert = FALSE - - -/obj/machinery/airlock_sensor/update_icon() - if(on) - if(alert) - icon_state = "airlock_sensor_alert" - else - icon_state = "airlock_sensor_standby" - else - icon_state = "airlock_sensor_off" - -/obj/machinery/airlock_sensor/attack_hand(mob/user) - . = ..() - if(.) - return - var/datum/signal/signal = new(list( - "tag" = master_tag, - "command" = "cycle" - )) - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - flick("airlock_sensor_cycle", src) - -/obj/machinery/airlock_sensor/process() - if(on) - var/datum/gas_mixture/air_sample = return_air() - var/pressure = round(air_sample.return_pressure(),0.1) - alert = (pressure < ONE_ATMOSPHERE*0.8) - - var/datum/signal/signal = new(list( - "tag" = id_tag, - "timestamp" = world.time, - "pressure" = num2text(pressure) - )) - - radio_connection.post_signal(src, signal, range = AIRLOCK_CONTROL_RANGE, filter = RADIO_AIRLOCK) - - update_icon() - -/obj/machinery/airlock_sensor/proc/set_frequency(new_frequency) - SSradio.remove_object(src, frequency) - frequency = new_frequency - radio_connection = SSradio.add_object(src, frequency, RADIO_AIRLOCK) - -/obj/machinery/airlock_sensor/Initialize() - . = ..() - set_frequency(frequency) - -/obj/machinery/airlock_sensor/Destroy() - SSradio.remove_object(src,frequency) -======= #define AIRLOCK_CONTROL_RANGE 5 // This code allows for airlocks to be controlled externally by setting an id_tag and comm frequency (disables ID access) @@ -316,5 +161,4 @@ /obj/machinery/airlock_sensor/Destroy() SSradio.remove_object(src,frequency) ->>>>>>> 5f76d96... replaces varedits with defines/subtypes (#38240) - return ..() \ No newline at end of file + return ..() From 678e429dbfd693caf6d7b8cb2a7579378ed2b20d Mon Sep 17 00:00:00 2001 From: MrDoomBringer Date: Mon, 4 Jun 2018 01:36:53 -0400 Subject: [PATCH 106/136] Adds a Supplypod-delivery admin smite (#38069) * wa la * oop forgot an icon * buildmode compatibility * ok * makes centcompod default * CentCom pods fall faster and are capatilized right * yike * yike2 * FASTER * white space and default icon state * spacemaniac thanks --- code/__DEFINES/admin.dm | 1 + .../closets/secure/supplypod.dm | 59 +++++++++++++----- code/modules/admin/verbs/randomverbs.dm | 18 +++++- icons/obj/2x2.dmi | Bin 18601 -> 24355 bytes 4 files changed, 60 insertions(+), 18 deletions(-) diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 94a247171c..2a8f455e64 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -67,6 +67,7 @@ #define ADMIN_PUNISHMENT_BSA "Bluespace Artillery Device" #define ADMIN_PUNISHMENT_FIREBALL "Fireball" #define ADMIN_PUNISHMENT_ROD "Immovable Rod" +#define ADMIN_PUNISHMENT_SUPPLYPOD "Supply Pod" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm index ca64b7c537..c51f13bb12 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/supplypod.dm @@ -1,6 +1,7 @@ //The "BDPtarget" temp visual is created by the expressconsole, which in turn makes two things: a falling droppod animation, and the droppod itself. #define POD_STANDARD 0 #define POD_BLUESPACE 1 +#define POD_CENTCOM 2 //------------------------------------SUPPLY POD-------------------------------------// /obj/structure/closet/supplypod @@ -18,17 +19,25 @@ armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) anchored = TRUE anchorable = FALSE - var/generated = FALSE var/datum/supply_order/SupplyOrder + var/atom/other_delivery /obj/structure/closet/supplypod/bluespacepod name = "Bluespace Drop Pod" desc = "A Nanotrasen Bluespace drop pod. Teleports back to CentCom after delivery." icon_state = "bluespacepod" -/obj/structure/closet/supplypod/Initialize(mapload, datum/supply_order/so) +/obj/structure/closet/supplypod/bluespacepod/centcompod + name = "CentCom Drop Pod" + desc = "A Nanotrasen Bluespace drop pod, this one has been marked with Central Command's designations. Teleports back to Centcom after delivery." + icon_state = "centcompod" + +/obj/structure/closet/supplypod/Initialize(mapload, var/SO) . = ..() - SupplyOrder = so//uses Supply Order passed from expressconsole into BDPtarget + if(istype(SO, /datum/supply_order)) + SupplyOrder = SO//uses Supply Order passed from expressconsole into BDPtarget + else + other_delivery = SO//if the object is not a supply order, we force the object in the pod addtimer(CALLBACK(src, .proc/open), 30)//open 3seconds after appearing /obj/structure/closet/supplypod/update_icon() @@ -47,9 +56,10 @@ /obj/structure/closet/supplypod/open() var/turf/T = get_turf(src) opened = TRUE - if(!generated) - generated = TRUE + if(SupplyOrder) SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf + if(other_delivery) + new other_delivery(T) update_icon() playsound(src, open_sound, 15, 1, -3) if(istype(src,/obj/structure/closet/supplypod/bluespacepod)) @@ -66,21 +76,24 @@ //------------------------------------FALLING SUPPLY POD-------------------------------------// /obj/effect/temp_visual/DPfall icon = 'icons/obj/2x2.dmi' - icon_state = "supplypod_falling" pixel_x = -16 pixel_y = -5 pixel_z = 200 desc = "Get out of the way!" layer = FLY_LAYER//that wasnt flying, that was falling with style! randomdir = FALSE + icon_state = "supplypod_falling" /obj/effect/temp_visual/DPfall/Initialize(var/dropLocation, var/podID) - if (podID == POD_BLUESPACE) + if (podID == POD_STANDARD) + icon_state = "supplypod_falling" + name = "Supply Drop Pod" + else if (podID == POD_BLUESPACE) icon_state = "bluespacepod_falling" name = "Bluespace Drop Pod" else - icon_state = "supplypod_falling" - name = "Supply Drop Pod" + icon_state = "centcompod_falling" + name = "CentCom Drop Pod" . = ..() //------------------------------------TEMPORARY_VISUAL-------------------------------------// @@ -91,22 +104,34 @@ light_range = 2 var/obj/effect/temp_visual/fallingPod -/obj/effect/DPtarget/Initialize(mapload, datum/supply_order/SO, var/podID) +/obj/effect/DPtarget/Initialize(mapload, var/SO, var/podID) . = ..() - addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), podID == POD_BLUESPACE ? 15 : 30)//standard pods take 3 seconds to come in, bluespace pods take 1.5 + var/delayTime = 0 + switch(podID) + if(POD_STANDARD) + delayTime = 30 + if(POD_BLUESPACE) + delayTime = 15 + if(POD_CENTCOM) + delayTime = 1 -/obj/effect/DPtarget/proc/beginLaunch(datum/supply_order/SO, var/podID) + addtimer(CALLBACK(src, .proc/beginLaunch, SO, podID), delayTime)//standard pods take 3 seconds to come in, bluespace pods take 1.5 + +/obj/effect/DPtarget/proc/beginLaunch(var/SO, var/podID) fallingPod = new /obj/effect/temp_visual/DPfall(drop_location(), podID) animate(fallingPod, pixel_z = 0, time = 3, easing = LINEAR_EASING)//make and animate a falling pod addtimer(CALLBACK(src, .proc/endLaunch, SO, podID), 3, TIMER_CLIENT_TIME)//fall 0.3seconds -/obj/effect/DPtarget/proc/endLaunch(datum/supply_order/SO, var/podID) - if (podID == POD_BLUESPACE) +/obj/effect/DPtarget/proc/endLaunch(var/SO, var/podID) + if (podID == POD_STANDARD) + new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created + explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing + else if (podID == POD_BLUESPACE) new /obj/structure/closet/supplypod/bluespacepod(drop_location(), SO)//pod is created explosion(src,0,0,2, flame_range = 1) //explosion and camshake (shoutout to @cyberboss) else - new /obj/structure/closet/supplypod(drop_location(), SO)//pod is created - explosion(src,0,0,2, flame_range = 3) //less advanced equipment than bluespace pod, so larger explosion when landing + new /obj/structure/closet/supplypod/bluespacepod/centcompod(drop_location(), SO) + explosion(src,0,0,2, flame_range = 1) qdel(src) /obj/effect/DPtarget/Destroy() @@ -120,4 +145,4 @@ icon = 'icons/obj/module.dmi' icon_state = "cargodisk" item_state = "card-id" - w_class = WEIGHT_CLASS_SMALL + w_class = WEIGHT_CLASS_SMALL \ No newline at end of file diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index be0b9d04bb..fb5111e88e 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -1277,7 +1277,7 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits if(!check_rights(R_ADMIN)) return - var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD) + var/list/punishment_list = list(ADMIN_PUNISHMENT_LIGHTNING, ADMIN_PUNISHMENT_BRAINDAMAGE, ADMIN_PUNISHMENT_GIB, ADMIN_PUNISHMENT_BSA, ADMIN_PUNISHMENT_FIREBALL, ADMIN_PUNISHMENT_ROD, ADMIN_PUNISHMENT_SUPPLYPOD) var/punishment = input("Choose a punishment", "DIVINE SMITING") as null|anything in punishment_list @@ -1305,6 +1305,22 @@ GLOBAL_LIST_EMPTY(custom_outfits) //Admin created outfits var/turf/startT = spaceDebrisStartLoc(startside, T.z) var/turf/endT = spaceDebrisFinishLoc(startside, T.z) new /obj/effect/immovablerod(startT, endT,target) + if(ADMIN_PUNISHMENT_SUPPLYPOD) + ///////load the supply pod up with something! + var/target_path = input(usr,"Enter typepath of an atom you'd like to send with the pod (type \"empty\" to send an empty pod):" ,"Typepath","/obj/item/reagent_containers/food/snacks/grown/harebell") as null|text + if (isnull(target_path)) + return + if (target_path == "empty")//if you type "abort", spawn an empty pod + new /obj/effect/DPtarget(get_turf(target), null, POD_CENTCOM) + return + var/delivery = text2path(target_path) + if(!ispath(delivery)) + delivery = pick_closest_path(target_path) + if(!delivery) + delivery = /obj/item/reagent_containers/food/snacks/grown/harebell + alert("That path is not allowed.") + //send the pod + new /obj/effect/DPtarget(get_turf(target), delivery, POD_CENTCOM) var/msg = "[key_name_admin(usr)] punished [key_name_admin(target)] with [punishment]." message_admins(msg) diff --git a/icons/obj/2x2.dmi b/icons/obj/2x2.dmi index 246afe51e6ffeb35d0955b059ba2ad3624d257d3..a72a86f3d8393062ac7df381140bc157ec5cd6b5 100644 GIT binary patch literal 24355 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

q>S?*r$i~X(l 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 Xmmt9`)V2(&-b1>Yh8kt+Hevq*a3oad literal 18601 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 Date: Mon, 4 Jun 2018 01:47:45 -0400 Subject: [PATCH 108/136] New directional beach sprites and corners for the 2018 Summer Ball (#38262) * Adds beach corners, interior corners, and other sides in addition to the normal down direction. * SOMEONE LIED TO ME * Update misc_plating.dm * don't copy paste at 4am * okay there we go --- .../simulated/floor/plating/misc_plating.dm | 3 +++ icons/misc/beach.dmi | Bin 11979 -> 57256 bytes 2 files changed, 3 insertions(+) diff --git a/code/game/turfs/simulated/floor/plating/misc_plating.dm b/code/game/turfs/simulated/floor/plating/misc_plating.dm index b21e361639..a04bd818ad 100644 --- a/code/game/turfs/simulated/floor/plating/misc_plating.dm +++ b/code/game/turfs/simulated/floor/plating/misc_plating.dm @@ -119,6 +119,9 @@ icon_state = "water" baseturfs = /turf/open/floor/plating/beach/water +/turf/open/floor/plating/beach/coastline_t/sandwater_inner + icon_state = "sandwater_inner" + baseturfs = /turf/open/floor/plating/beach/coastline_t/sandwater_inner /turf/open/floor/plating/ironsand name = "iron sand" diff --git a/icons/misc/beach.dmi b/icons/misc/beach.dmi index c78c61658e2249013389531220e283185b0365b2..a538bdbe44fee9d2a31b20d00b58d87e21b3e3fb 100644 GIT binary patch literal 57256 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

?z=~L*I-u>(8bZWw1d6Rz*$oZwviU@Jq zgHlq!^5);h=#~WrV!W5tuTmcibjiF7<9}v~ZCCD2)=`NpcqmPm5ifni?$-U`=cM-a zL!;hA<@*hQK>*^?xApXsP22RG#~yle4HxO6gqrm@c+&RSjMS~EYI+6)Iw%CjLI{p+ z{FIy_q~rUOpO-8XV-jA3eSS*Ce=`A~W}Pk#ucGSX``P4p zNSGLXZVz4InjK#?(&u~ky^$KkT}1r6UiYR4(c~Zkx%}vQTVU3PcLi<7 zxdZ{_%>ieN1ybfp+84jpM;_Bgi$x4wNk^aeT<4o7_$Hei&sH52Q81#}L<7O^c)F%e zzJ@>g^(&{nR*J(#c-*cD|5LO(KQOEBvOd_anwl%!Epo!13y*a>Alr9ny9$r4I$WK> zc!osC=mgabh49z^2K&Z^^)2ebr?BR)F2xVCS2R}aFG%)eXlHi8HfJ`+m)L~WLLRGR z^`+U%M#TPS^)0@%y@;zMo7~DrcbGKXmgXN*E&r?hxeZ%X8$4%Gyh3;~h)$D6B;5fi z>M-jq6?0yt8g&t|rjkaScFGB;l9S!!){?a_Y_R)Rxyx}DQNX$KYSrjnbLsB~C|0rn zFpNCLwd1Ay7DLZSU^Ttw7}v4+4Y=rq)l=e8AFTA2??iGsH#t;(?5@6;*Cm|x@C)qFfuX5c92gpH- zxE0wY@niFABzuPMOwo6d-Xx10omQB@I;65)^WJ6oH4w)tI{i`xlE?+CIeYoK?>Fq< zyizBi`@1BeC#r%;-V4I}XNmh%jW&^3g_vvUo=b*Ox7@AG1>F;50!XBB-*K9}&}Qr||# zW+e09=++l{l!IBqF*tfSh)}JKjB9KaVV?@x?1blkZ?rIA)siEU|D!#*KLKBQ0Ip`+ z+LT=uS2~7g!py&6kWbc05a42e_K(&T`QCEb1##EcPv_?aQs5KXH?y9h&h#aZ@1w}` zV*nXgCtD5Yq^tkv%*_0IDNDkguMdkiOV{k zX;i>1ru|^^I}o&eAv*7!Ks>>V6pHMG&x2K*te(pG&OANl;1Q>Z5~%qUKN3W6P&SMt6OBo_D

yNB51e$I#T*ar9@borqD)$JoIjSFc*_ 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 literal 11979 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 Date: Mon, 4 Jun 2018 07:55:20 -0500 Subject: [PATCH 110/136] Automatic changelog generation for PR #7007 [ci skip] --- html/changelogs/AutoChangeLog-pr-7007.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7007.yml diff --git a/html/changelogs/AutoChangeLog-pr-7007.yml b/html/changelogs/AutoChangeLog-pr-7007.yml new file mode 100644 index 0000000000..9dcc0d988f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7007.yml @@ -0,0 +1,4 @@ +author: "MrDoomBringer" +delete-after: True +changes: + - admin: "Central Command can now smite misbehaving crewmembers with supply pods (filled with whatever their hearts desire!)" From 495f0e07498c6abcb1dc1da7d2fe572bb04bac9f Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Mon, 4 Jun 2018 07:55:39 -0500 Subject: [PATCH 111/136] Automatic changelog generation for PR #7008 [ci skip] --- html/changelogs/AutoChangeLog-pr-7008.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7008.yml diff --git a/html/changelogs/AutoChangeLog-pr-7008.yml b/html/changelogs/AutoChangeLog-pr-7008.yml new file mode 100644 index 0000000000..87b0ecdac1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7008.yml @@ -0,0 +1,4 @@ +author: "Beachsprites" +delete-after: True +changes: + - imageadd: "added directional beach sprites" From d3c7dd3802fecdebf13766da93b9032c110ff003 Mon Sep 17 00:00:00 2001 From: 1fbff5f83b23d39d38b1dfcb4cac8d9b <0a02d0db@opayq.com> Date: Tue, 5 Jun 2018 07:47:32 +0200 Subject: [PATCH 112/136] Fix recycling the same assembly multiple times (#38275) --- code/modules/integrated_electronics/core/printer.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 61edd75ed1..2cab5ad3b9 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -87,7 +87,7 @@ return to_chat(user, "You begin recycling [EA]'s components...") playsound(src, 'sound/items/electronic_assembly_emptying.ogg', 50, TRUE) - if(!do_after(user, 30, target = src)) //short channel so you don't accidentally start emptying out a complex assembly + if(!do_after(user, 30, target = src) || recycling) //short channel so you don't accidentally start emptying out a complex assembly return recycling = TRUE var/datum/component/material_container/mats = GetComponent(/datum/component/material_container) From 1778c97eeb811d3aafc980ff40655d921ec4f6c5 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Mon, 4 Jun 2018 22:55:16 +0200 Subject: [PATCH 114/136] Adds missing minerals to /everything closet (#38267) * adds bs/ayy minerals to everything closet * plastic+wood --- .../objects/structures/crates_lockers/closets/syndicate.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm index 3edbde93b7..f2d32b773e 100644 --- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm +++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm @@ -106,7 +106,11 @@ /obj/item/stack/sheet/plasteel, /obj/item/stack/sheet/mineral/titanium, /obj/item/stack/sheet/mineral/plastitanium, - /obj/item/stack/rods + /obj/item/stack/rods, + /obj/item/stack/sheet/bluespace_crystal, + /obj/item/stack/sheet/mineral/abductor, + /obj/item/stack/sheet/plastic, + /obj/item/stack/sheet/mineral/wood ) for(var/i = 0, i<2, i++) From 70e1f9d27d211b6ed5e2ac19d8a68149f6218568 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 12:11:37 -0500 Subject: [PATCH 116/136] Automatic changelog generation for PR #6995 [ci skip] --- html/changelogs/AutoChangeLog-pr-6995.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6995.yml diff --git a/html/changelogs/AutoChangeLog-pr-6995.yml b/html/changelogs/AutoChangeLog-pr-6995.yml new file mode 100644 index 0000000000..0d3751d794 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6995.yml @@ -0,0 +1,5 @@ +author: "Denton" +delete-after: True +changes: + - tweak: "Pubbystation: Added a dual-port vent pump to the toxins burn chamber." + - code_imp: "Removed most airlock_controller/incinerator related varedits and replaced them with defines/subtypes." From 1042fa8ff1a32eec6dcd8781112b7e6173468d01 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 5 Jun 2018 18:15:51 +0000 Subject: [PATCH 117/136] Adds @CitadelBot wheelofsalt command (#7005) * adds the wheel of salt chat command to tgs3 * fuck i missed a couple things --- modular_citadel/code/modules/admin/chat_commands.dm | 10 ++++++++++ tgstation.dme | 1 + 2 files changed, 11 insertions(+) create mode 100644 modular_citadel/code/modules/admin/chat_commands.dm diff --git a/modular_citadel/code/modules/admin/chat_commands.dm b/modular_citadel/code/modules/admin/chat_commands.dm new file mode 100644 index 0000000000..9cd25d328c --- /dev/null +++ b/modular_citadel/code/modules/admin/chat_commands.dm @@ -0,0 +1,10 @@ +/datum/tgs_chat_command/wheelofsalt + name = "wheelofsalt" + help_text = "What are Citadel Station 13 players salting about today? Spin the wheel and find out!" + +/datum/tgs_chat_command/wheelofsalt/Run(datum/tgs_chat_user/sender, params) + var/saltresult = "The wheel of salt [pick("clatters","vibrates","clanks","groans","moans","squeaks","emits a[pick(" god-forsaken"," lewd"," creepy"," generic","n orgasmic")] [pick("airhorn","bike horn","trumpet","clown","latex","vore","dog")] noise")] as it spins violently... And it seems the salt of the day is the " + var/saltprimarysubject = "[pick("combat","medical","grab","furry","wall","orgasm","cat","ERP","lizard","dog","latex","vision cone","atmospherics","table","chem","vore","dogborg","Skylar Lineman","Mekhi Anderson","Peppermint","rework","cum","dick","cockvore")]" + var/saltsecondarysubject = "[pick("rework","changes","r34","ban","removal","addition","leak","proposal","fanart","introduction","tabling","ERP")]" + saltresult += "[saltprimarysubject] [saltsecondarysubject]" + return "[saltresult]!" diff --git a/tgstation.dme b/tgstation.dme index e0a84f22a5..5b830ad0af 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2732,6 +2732,7 @@ #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\wardrobe.dm" #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\secure\citadel_lockers.dm" #include "modular_citadel\code\modules\admin\admin.dm" +#include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" #include "modular_citadel\code\modules\admin\topic.dm" From 8a971eaa0625aee318f46622ec8bd3ddf5dbe759 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:15:53 -0500 Subject: [PATCH 118/136] Automatic changelog generation for PR #7005 [ci skip] --- html/changelogs/AutoChangeLog-pr-7005.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7005.yml diff --git a/html/changelogs/AutoChangeLog-pr-7005.yml b/html/changelogs/AutoChangeLog-pr-7005.yml new file mode 100644 index 0000000000..ca71f91693 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7005.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "Adds the wheelofsalt command to TGS3. Spin the wheel of salt to find out what the Citadel Station 13 players are salting about today!" From 4076078210ad15a0b472f7a4b86a4b57cca353e6 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 5 Jun 2018 18:16:17 +0000 Subject: [PATCH 119/136] Adds table slamming as a right click interaction for tables (#7006) * Adds table slamming as a right click interaction for tables * and the DME, too. fuck. * fixes compiling errors --- .../code/game/objects/structures/tables_racks.dm | 10 ++++++++++ tgstation.dme | 1 + 2 files changed, 11 insertions(+) create mode 100644 modular_citadel/code/game/objects/structures/tables_racks.dm diff --git a/modular_citadel/code/game/objects/structures/tables_racks.dm b/modular_citadel/code/game/objects/structures/tables_racks.dm new file mode 100644 index 0000000000..f7300e1d3f --- /dev/null +++ b/modular_citadel/code/game/objects/structures/tables_racks.dm @@ -0,0 +1,10 @@ +/obj/structure/table/alt_attack_hand(mob/user) + if(user && Adjacent(user) && !user.incapacitated()) + if(istype(user) && user.a_intent == INTENT_HARM) + user.visible_message("[user] slams [p_their()] palms down on [src].", "You slam your palms down on [src].") + playsound(src, 'sound/weapons/sonic_jackhammer.ogg', 50, 1) + else + user.visible_message("[user] slaps [p_their()] hands on [src].", "You slap your hands on [src].") + playsound(src, 'sound/weapons/tap.ogg', 50, 1) + user.do_attack_animation(src) + return TRUE diff --git a/tgstation.dme b/tgstation.dme index 5b830ad0af..b895f951bb 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2726,6 +2726,7 @@ #include "modular_citadel\code\game\objects\items\melee\eutactic_blades.dm" #include "modular_citadel\code\game\objects\items\melee\transforming.dm" #include "modular_citadel\code\game\objects\items\storage\firstaid.dm" +#include "modular_citadel\code\game\objects\structures\tables_racks.dm" #include "modular_citadel\code\game\objects\structures\beds_chairs\chair.dm" #include "modular_citadel\code\game\objects\structures\beds_chairs\sofa.dm" #include "modular_citadel\code\game\objects\structures\crates_lockers\closets\fitness.dm" From 36357a4274ea2c54a285103f88aec6446698d5b7 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:16:19 -0500 Subject: [PATCH 120/136] Automatic changelog generation for PR #7006 [ci skip] --- html/changelogs/AutoChangeLog-pr-7006.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7006.yml diff --git a/html/changelogs/AutoChangeLog-pr-7006.yml b/html/changelogs/AutoChangeLog-pr-7006.yml new file mode 100644 index 0000000000..afe3a639db --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7006.yml @@ -0,0 +1,4 @@ +author: "deathride58" +delete-after: True +changes: + - rscadd: "You can now slam or slap your hands onto tables by right clicking them in combat mode." From 0b362e017b549e344cb4a8aa06fe26a681e68945 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:16:55 -0500 Subject: [PATCH 121/136] [MIRROR] Lavaland Clock Cult Ruin (#7011) * Lavaland Clock Cult Ruin (#38263) * Dead Ratvar * tgm map * Lavaland Clock Cult Ruin --- .../lavaland_surface_dead_ratvar.dmm | 990 ++++++++++++++++++ code/datums/ruins/lavaland.dm | 8 + .../ruins/lavalandruin_code/surface.dm | 19 +- icons/obj/lavaland/dead_ratvar.dmi | Bin 0 -> 70277 bytes 4 files changed, 1016 insertions(+), 1 deletion(-) create mode 100644 _maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm create mode 100644 icons/obj/lavaland/dead_ratvar.dmi diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm new file mode 100644 index 0000000000..d6bb476f32 --- /dev/null +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_dead_ratvar.dmm @@ -0,0 +1,990 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"b" = ( +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"c" = ( +/obj/item/clockwork/alloy_shards/small, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"d" = ( +/obj/structure/destructible/clockwork/wall_gear, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"e" = ( +/obj/item/stack/tile/brass, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"f" = ( +/turf/closed/mineral/volcanic, +/area/lavaland/surface/outdoors/unexplored) +"g" = ( +/obj/item/clockwork/alloy_shards/medium/gear_bit, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"h" = ( +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"i" = ( +/obj/structure/grille/ratvar/broken, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"j" = ( +/turf/closed/wall/clockwork, +/area/lavaland/surface/outdoors/unexplored) +"k" = ( +/obj/item/clockwork/alloy_shards/small, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"l" = ( +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"m" = ( +/obj/item/clockwork/alloy_shards/medium, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"n" = ( +/obj/item/clockwork/component/belligerent_eye/blind_eye, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"o" = ( +/obj/item/clockwork/alloy_shards/large, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"p" = ( +/obj/item/clockwork/alloy_shards/medium, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"q" = ( +/obj/structure/lattice/catwalk/clockwork, +/turf/open/lava/smooth/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"r" = ( +/obj/structure/lattice/clockwork, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"s" = ( +/obj/item/clockwork/alloy_shards/large, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"t" = ( +/obj/item/stack/tile/brass, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"u" = ( +/obj/structure/grille/ratvar, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"v" = ( +/obj/item/clockwork/alloy_shards/medium, +/obj/structure/lattice/clockwork, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"w" = ( +/obj/structure/grille/ratvar/broken, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"x" = ( +/obj/structure/destructible/clockwork/wall_gear, +/obj/item/stack/tile/brass, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"y" = ( +/obj/item/clockwork/component/geis_capacitor/fallen_armor, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"z" = ( +/obj/structure/destructible/clockwork/wall_gear, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"A" = ( +/obj/item/clockwork/alloy_shards/clockgolem_remains, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"B" = ( +/obj/item/clockwork/weapon/ratvarian_spear, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"C" = ( +/obj/item/clockwork/alloy_shards/medium/gear_bit, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"D" = ( +/obj/structure/grille/ratvar, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"E" = ( +/obj/item/clockwork/alloy_shards/clockgolem_remains, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) +"F" = ( +/obj/structure/dead_ratvar, +/turf/open/floor/clockwork{ + initial_gas_mix = "o2=14;n2=23;TEMP=300" + }, +/area/lavaland/surface/outdoors/unexplored) +"G" = ( +/obj/item/stack/tile/brass/fifty, +/turf/open/floor/plating/asteroid/basalt/lava_land_surface, +/area/lavaland/surface/outdoors/unexplored) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +b +s +h +b +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +o +b +a +h +b +r +c +j +x +b +b +g +a +a +a +a +a +"} +(3,1,1) = {" +a +a +a +a +a +a +f +b +l +b +v +b +p +w +j +j +c +l +b +b +a +a +a +a +"} +(4,1,1) = {" +a +a +a +a +a +a +f +l +l +r +b +b +l +j +j +j +p +l +b +h +c +r +a +a +"} +(5,1,1) = {" +a +a +a +a +a +b +l +l +p +h +c +l +l +l +j +l +b +l +l +D +h +r +a +a +"} +(6,1,1) = {" +a +a +a +h +c +h +m +l +l +c +l +l +l +l +w +l +l +l +m +c +h +f +a +a +"} +(7,1,1) = {" +a +a +b +b +b +l +l +l +l +h +b +l +l +l +l +l +l +l +l +c +f +f +b +a +"} +(8,1,1) = {" +a +h +h +g +c +b +l +l +l +l +n +h +r +l +l +b +l +l +l +l +f +b +a +a +"} +(9,1,1) = {" +a +b +c +b +b +l +l +l +l +t +h +b +h +w +p +b +g +l +l +b +b +b +b +a +"} +(10,1,1) = {" +b +h +l +l +l +l +l +l +b +b +p +r +F +b +h +A +b +l +l +l +m +l +l +a +"} +(11,1,1) = {" +c +i +j +j +l +l +l +l +l +b +h +k +h +h +h +r +l +l +l +l +l +l +b +a +"} +(12,1,1) = {" +d +j +j +j +h +l +l +b +l +q +r +h +h +h +c +q +l +b +l +l +b +h +o +a +"} +(13,1,1) = {" +e +k +b +l +l +l +b +p +s +r +h +h +h +h +h +h +h +l +l +l +l +b +b +a +"} +(14,1,1) = {" +b +b +b +m +l +l +l +b +h +h +k +h +h +h +h +h +c +b +l +l +b +b +h +b +"} +(15,1,1) = {" +b +b +b +l +l +l +l +h +h +h +h +h +h +h +k +B +h +l +l +l +l +b +b +a +"} +(16,1,1) = {" +f +l +l +l +l +l +l +q +b +h +h +h +h +h +h +s +b +l +l +l +l +f +f +a +"} +(17,1,1) = {" +b +b +b +l +l +l +b +l +q +r +h +h +h +h +h +b +s +r +l +r +l +l +b +a +"} +(18,1,1) = {" +b +h +l +l +l +b +b +h +b +h +h +h +h +h +r +k +b +C +r +h +b +b +m +b +"} +(19,1,1) = {" +b +b +l +l +l +l +h +b +h +h +h +h +h +h +h +r +j +h +c +h +r +h +b +b +"} +(20,1,1) = {" +b +l +l +l +l +b +b +p +h +c +h +k +h +h +o +b +l +l +l +b +E +r +G +o +"} +(21,1,1) = {" +g +b +l +l +l +l +l +r +h +r +h +h +h +h +y +l +l +l +l +l +l +j +j +r +"} +(22,1,1) = {" +c +c +b +l +l +b +h +h +t +b +h +h +h +h +h +m +b +l +l +l +h +j +j +j +"} +(23,1,1) = {" +b +h +m +n +b +h +l +o +j +u +r +p +h +r +h +b +l +l +l +b +b +w +r +b +"} +(24,1,1) = {" +a +a +b +b +l +l +l +j +j +q +p +h +m +e +z +j +j +l +l +c +l +l +b +a +"} +(25,1,1) = {" +a +a +a +l +l +l +l +j +l +l +b +h +r +x +h +l +l +l +l +l +l +a +a +a +"} +(26,1,1) = {" +a +a +a +c +b +l +l +l +l +l +l +g +q +b +h +l +l +l +c +m +b +a +a +a +"} +(27,1,1) = {" +a +a +a +b +h +b +l +l +l +l +l +l +l +l +l +l +l +l +l +b +a +a +a +a +"} +(28,1,1) = {" +a +a +a +a +c +b +l +b +l +l +l +l +l +l +l +l +b +l +f +a +a +a +a +a +"} +(29,1,1) = {" +a +a +a +a +b +b +f +c +b +l +c +l +l +l +l +c +o +l +b +a +a +a +a +a +"} +(30,1,1) = {" +a +a +a +a +a +g +c +b +l +l +b +m +l +b +l +f +b +a +a +a +a +a +a +a +"} +(31,1,1) = {" +a +a +a +a +a +a +a +b +l +b +a +b +l +c +f +f +a +a +a +a +a +a +a +a +"} +(32,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +c +a +a +a +a +a +a +a +a +a +"} diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 8817a1ff96..af299aaee9 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -115,6 +115,14 @@ // Generates nothing but atmos runtimes and salt cost = 0 +/datum/map_template/ruin/lavaland/ratvar + name = "Dead God" + id = "ratvar" + description = "Ratvars final resting place." + suffix = "lavaland_surface_dead_ratvar.dmm" + cost = 0 + allow_duplicates = FALSE + /datum/map_template/ruin/lavaland/hierophant name = "Hierophant's Arena" id = "hierophant" diff --git a/code/modules/ruins/lavalandruin_code/surface.dm b/code/modules/ruins/lavalandruin_code/surface.dm index b2312ded87..72896c08a3 100644 --- a/code/modules/ruins/lavalandruin_code/surface.dm +++ b/code/modules/ruins/lavalandruin_code/surface.dm @@ -2,4 +2,21 @@ /obj/item/paper/fluff/stations/lavaland/surface/henderson_report name = "Important Notice - Mrs. Henderson" - info = "Nothing of interest to report." \ No newline at end of file + info = "Nothing of interest to report." + +//ratvar + +/obj/structure/dead_ratvar + name = "hulking wreck" + desc = "The remains of a monstrous war machine." + icon = 'icons/obj/lavaland/dead_ratvar.dmi' + icon_state = "dead_ratvar" + flags_1 = ON_BORDER_1 + appearance_flags = 0 + layer = FLY_LAYER + anchored = TRUE + density = TRUE + bound_width = 416 + bound_height = 64 + pixel_y = -10 + resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF diff --git a/icons/obj/lavaland/dead_ratvar.dmi b/icons/obj/lavaland/dead_ratvar.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5e6e9087bd0936f0db8901a26fca2edc540e21fd GIT binary patch literal 70277 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 Date: Tue, 5 Jun 2018 20:16:16 +0200 Subject: [PATCH 122/136] Stop swarmers from attacking field gens/turret covers (#38283) --- code/modules/antagonists/swarmer/swarmer.dm | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm index 8557405801..d4d86cc087 100644 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ b/code/modules/antagonists/swarmer/swarmer.dm @@ -373,6 +373,10 @@ to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") return FALSE +/obj/machinery/porta_turret_cover/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) + to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") + return FALSE + /mob/living/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) S.DisperseTarget(src) return TRUE @@ -405,6 +409,10 @@ to_chat(S, "This object does not contain enough materials to work with.") return FALSE +/obj/machinery/field/generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) + to_chat(S, "Destroying this object would cause a catastrophic chain reaction. Aborting.") + return FALSE + ////END CTRL CLICK FOR SWARMERS//// /mob/living/simple_animal/hostile/swarmer/proc/Fabricate(atom/fabrication_object,fabrication_cost = 0) From 74aeecca6db22e3b6bcc319e3aeb02ba011f5cca Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:17:47 -0500 Subject: [PATCH 124/136] [MIRROR] Fix the Lightning Bolt spell (#7013) * Fix the Lightning Bolt spell (#38253) * Fix the Lightning Bolt spell --- code/modules/spells/spell_types/aimed.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm index 6c860fda9b..35f9a8f50a 100644 --- a/code/modules/spells/spell_types/aimed.dm +++ b/code/modules/spells/spell_types/aimed.dm @@ -29,7 +29,7 @@ remove_ranged_ability(msg) on_deactivation(user) else - msg = "[active_msg]Left-click to shoot it at a target!" + msg = "[active_msg] Left-click to shoot it at a target!" current_amount = projectile_amount add_ranged_ability(user, msg, TRUE) on_activation(user) @@ -101,7 +101,7 @@ base_icon_state = "lightning" sound = 'sound/magic/lightningbolt.ogg' active = FALSE - projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_boom" = FALSE) + projectile_var_overrides = list("tesla_range" = 15, "tesla_power" = 20000, "tesla_flags" = TESLA_MOB_DAMAGE) active_msg = "You energize your hand with arcane lightning!" deactive_msg = "You let the energy flow out of your hands back into yourself..." projectile_type = /obj/item/projectile/magic/aoe/lightning From fbe49fece0035ca462c8dcb8f22104fd5ad5a731 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:17:49 -0500 Subject: [PATCH 125/136] Automatic changelog generation for PR #7013 [ci skip] --- html/changelogs/AutoChangeLog-pr-7013.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7013.yml diff --git a/html/changelogs/AutoChangeLog-pr-7013.yml b/html/changelogs/AutoChangeLog-pr-7013.yml new file mode 100644 index 0000000000..51fda8cec2 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7013.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "The Lightning Bolt spell now works again." From eb2368be0373e41494bd0657275012b9fdcd40e6 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:18:27 -0500 Subject: [PATCH 126/136] [MIRROR] Fix inconsistent energy gun suicide (#7012) * Fix inconsistent energy gun suicide (#38252) * Fix inconsistent energy gun suicide --- code/modules/projectiles/guns/energy.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index 7a3f002cbf..2a352932fa 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -166,8 +166,8 @@ /obj/item/gun/energy/ui_action_click() toggle_gunlight() -/obj/item/gun/energy/suicide_act(mob/user) - if (can_shoot() && can_trigger_gun(user)) +/obj/item/gun/energy/suicide_act(mob/living/user) + if (istype(user) && can_shoot() && can_trigger_gun(user) && user.get_bodypart(BODY_ZONE_HEAD)) user.visible_message("[user] is putting the barrel of [src] in [user.p_their()] mouth. It looks like [user.p_theyre()] trying to commit suicide!") sleep(25) if(user.is_holding(src)) @@ -181,7 +181,7 @@ user.visible_message("[user] panics and starts choking to death!") return(OXYLOSS) else - user.visible_message("[user] is pretending to blow [user.p_their()] brains out with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message("[user] is pretending to melt [user.p_their()] face off with [src]! It looks like [user.p_theyre()] trying to commit suicide!") playsound(src, "gun_dry_fire", 30, 1) return (OXYLOSS) From 6a6407881c184a2da273d1ab28b4d1355c4fdb72 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:18:30 -0500 Subject: [PATCH 127/136] Automatic changelog generation for PR #7012 [ci skip] --- html/changelogs/AutoChangeLog-pr-7012.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7012.yml diff --git a/html/changelogs/AutoChangeLog-pr-7012.yml b/html/changelogs/AutoChangeLog-pr-7012.yml new file mode 100644 index 0000000000..b4ff596298 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7012.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - spellcheck: "Faceless persons no longer \"melt their face off\" in energy gun suicides." From de73153ccb2c70ce6f4cda87e036b2241abd5218 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 13:19:33 -0500 Subject: [PATCH 128/136] [MIRROR] Fixes uplink refunds (#7014) * Fixes uplink refunds (#38272) * Fixes uplink refunds * Whoops * Sure * Fixes uplink refunds --- code/modules/uplink/uplink.dm | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/code/modules/uplink/uplink.dm b/code/modules/uplink/uplink.dm index e269e0bf49..deacb6d401 100644 --- a/code/modules/uplink/uplink.dm +++ b/code/modules/uplink/uplink.dm @@ -74,25 +74,17 @@ GLOBAL_LIST_EMPTY(uplinks) return //no hitting everyone/everything just to try to slot tcs in! if(istype(I, /obj/item/stack/telecrystal)) LoadTC(user, I) - for(var/item in subtypesof(/datum/uplink_item)) - var/datum/uplink_item/UI = item - var/path = null - if(initial(UI.refund_path)) - path = initial(UI.refund_path) - else - path = initial(UI.item) - var/cost = 0 - if(initial(UI.refund_amount)) - cost = initial(UI.refund_amount) - else - cost = initial(UI.cost) - var/refundable = initial(UI.refundable) - if(I.type == path && refundable && I.check_uplink_validity()) - telecrystals += cost - purchase_log.total_spent -= cost - to_chat(user, "[I] refunded.") - qdel(I) - return + for(var/category in uplink_items) + for(var/item in uplink_items[category]) + var/datum/uplink_item/UI = uplink_items[category][item] + var/path = UI.refund_path || UI.item + var/cost = UI.refund_amount || UI.cost + if(I.type == path && UI.refundable && I.check_uplink_validity()) + telecrystals += cost + purchase_log.total_spent -= cost + to_chat(user, "[I] refunded.") + qdel(I) + return /datum/component/uplink/proc/interact(mob/user) if(locked) From 2fb5bb10b5dff1017408c4a232c5c226e8b6e184 Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Tue, 5 Jun 2018 20:27:18 +0200 Subject: [PATCH 129/136] Arcade reward: snack rigs (#38268) * chew you havisfaction a singlelicious satisfact to snack that up? * random snack spawn and sponsor name * static list/initialize --- code/game/machinery/computer/arcade.dm | 4 ++- code/game/objects/items/storage/belt.dm | 47 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 9dad813677..3ce64c9030 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -51,7 +51,9 @@ /obj/item/hot_potato/harmless/toy = 1, /obj/item/card/emagfake = 1, /obj/item/clothing/shoes/wheelys = 2, - /obj/item/clothing/shoes/kindleKicks = 2) + /obj/item/clothing/shoes/kindleKicks = 2, + /obj/item/storage/belt/military/snack = 2 + ) light_color = LIGHT_COLOR_GREEN diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 1c4ad03b01..249eb67c05 100755 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -326,6 +326,53 @@ GET_COMPONENT(STR, /datum/component/storage) STR.max_w_class = WEIGHT_CLASS_SMALL +/obj/item/storage/belt/military/snack + name = "tactical snack rig" + +/obj/item/storage/belt/military/snack/Initialize() + . = ..() + var/sponsor = pick("DonkCo", "Waffle Co.", "Roffle Co.", "Gorlax Marauders", "Tiger Cooperative") + desc = "A set of snack-tical webbing worn by athletes of the [sponsor] VR sports division." + +/obj/item/storage/belt/military/snack/ComponentInitialize() + . = ..() + GET_COMPONENT(STR, /datum/component/storage) + STR.max_items = 6 + STR.max_w_class = WEIGHT_CLASS_SMALL + STR.can_hold = typecacheof(list( + /obj/item/reagent_containers/food/snacks, + /obj/item/reagent_containers/food/drinks + )) + + var/amount = 5 + var/rig_snacks + while(contents.len <= amount) + rig_snacks = pick(list( + /obj/item/reagent_containers/food/snacks/candy, + /obj/item/reagent_containers/food/drinks/dry_ramen, + /obj/item/reagent_containers/food/snacks/chips, + /obj/item/reagent_containers/food/snacks/sosjerky, + /obj/item/reagent_containers/food/snacks/syndicake, + /obj/item/reagent_containers/food/snacks/spacetwinkie, + /obj/item/reagent_containers/food/snacks/cheesiehonkers, + /obj/item/reagent_containers/food/snacks/nachos, + /obj/item/reagent_containers/food/snacks/cheesynachos, + /obj/item/reagent_containers/food/snacks/cubannachos, + /obj/item/reagent_containers/food/snacks/nugget, + /obj/item/reagent_containers/food/snacks/pastatomato, + /obj/item/reagent_containers/food/snacks/rofflewaffles, + /obj/item/reagent_containers/food/snacks/donkpocket, + /obj/item/reagent_containers/food/drinks/soda_cans/cola, + /obj/item/reagent_containers/food/drinks/soda_cans/space_mountain_wind, + /obj/item/reagent_containers/food/drinks/soda_cans/dr_gibb, + /obj/item/reagent_containers/food/drinks/soda_cans/starkist, + /obj/item/reagent_containers/food/drinks/soda_cans/space_up, + /obj/item/reagent_containers/food/drinks/soda_cans/pwr_game, + /obj/item/reagent_containers/food/drinks/soda_cans/lemon_lime, + /obj/item/reagent_containers/food/drinks/drinkingglass/filled/nuka_cola + )) + new rig_snacks(src) + /obj/item/storage/belt/military/abductor name = "agent belt" desc = "A belt used by abductor agents." From 9fd7bfb3479ce69bbd6621560389aa70cdd2d09e Mon Sep 17 00:00:00 2001 From: 81Denton <32391752+81Denton@users.noreply.github.com> Date: Tue, 5 Jun 2018 20:29:15 +0200 Subject: [PATCH 131/136] Blacklist ion trails from chasms (#38284) --- code/datums/components/chasm.dm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index 1f3a846c61..88a92ce8ec 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -18,7 +18,9 @@ /obj/effect/landmark, /obj/effect/temp_visual, /obj/effect/light_emitter/tendril, - /obj/effect/collapse)) + /obj/effect/collapse, + /obj/effect/particle_effect/ion_trails + )) /datum/component/chasm/Initialize(turf/target) RegisterSignal(list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Entered) From b2bc6dc213fb7a9a215657984d569ef8c0b2eef4 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 15:52:06 -0500 Subject: [PATCH 133/136] Automatic changelog generation for PR #7016 [ci skip] --- html/changelogs/AutoChangeLog-pr-7016.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7016.yml diff --git a/html/changelogs/AutoChangeLog-pr-7016.yml b/html/changelogs/AutoChangeLog-pr-7016.yml new file mode 100644 index 0000000000..f8daa8581f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7016.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - rscadd: "Arcades have been stocked with preloaded tactical snack rigs." From 2b020926399d80946b8f6b43897978a13c526611 Mon Sep 17 00:00:00 2001 From: deathride58 Date: Tue, 5 Jun 2018 17:03:55 -0400 Subject: [PATCH 134/136] Update preferences.dm --- code/modules/client/preferences.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 044becba9c..5c6c0a8229 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1380,11 +1380,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(pickedui) UI_style = pickedui if("pda_style") -<<<<<<< HEAD - var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference") as null|anything in list(MONO, SHARE, ORBITRON, VT) -======= var/pickedPDAStyle = input(user, "Choose your PDA style.", "Character Preference", pda_style) as null|anything in GLOB.pda_styles ->>>>>>> 513a5f1... Fixes pda style loading (#38238) if(pickedPDAStyle) pda_style = pickedPDAStyle if("pda_color") From 93d43c1d503838ea4e016c16284db1da8796ab89 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 16:04:18 -0500 Subject: [PATCH 135/136] Automatic changelog generation for PR #7015 [ci skip] --- html/changelogs/AutoChangeLog-pr-7015.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-7015.yml diff --git a/html/changelogs/AutoChangeLog-pr-7015.yml b/html/changelogs/AutoChangeLog-pr-7015.yml new file mode 100644 index 0000000000..e15283155d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-7015.yml @@ -0,0 +1,4 @@ +author: "Denton" +delete-after: True +changes: + - bugfix: "Swarmers can no longer attack field generators and turret covers." From 3489ed23c61f58c1b11b8c989eed18d1665c4c0a Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Tue, 5 Jun 2018 16:23:56 -0500 Subject: [PATCH 136/136] Automatic changelog generation for PR #6983 [ci skip] --- html/changelogs/AutoChangeLog-pr-6983.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-6983.yml diff --git a/html/changelogs/AutoChangeLog-pr-6983.yml b/html/changelogs/AutoChangeLog-pr-6983.yml new file mode 100644 index 0000000000..b74d9635b3 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6983.yml @@ -0,0 +1,4 @@ +author: "CitadelStationBot" +delete-after: True +changes: + - bugfix: "PDA style now gets loaded correctly."