From 19a3aca61950b18376b0efd4cf8d224e4926466a Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 10 Dec 2019 15:33:15 +0100 Subject: [PATCH 01/32] I fear for my powernet --- code/__HELPERS/areas.dm | 131 ++++++++++++++++++ code/__HELPERS/game.dm | 4 +- code/__HELPERS/unsorted.dm | 76 ---------- code/datums/components/virtual_reality.dm | 2 +- code/datums/diseases/wizarditis.dm | 2 +- code/datums/weather/weather.dm | 5 +- code/datums/wires/airalarm.dm | 4 +- code/game/area/Space_Station_13_areas.dm | 24 +++- code/game/area/areas.dm | 105 ++++++++++---- code/game/gamemodes/events.dm | 5 +- code/game/machinery/cell_charger.dm | 2 +- code/game/machinery/doors/firedoor.dm | 2 +- code/game/machinery/firealarm.dm | 14 +- code/game/machinery/recharger.dm | 2 +- .../game/mecha/equipment/tools/other_tools.dm | 4 +- .../effects/effect_system/effects_foam.dm | 2 +- code/game/objects/items/crayons.dm | 4 +- code/game/objects/structures/ai_core.dm | 2 +- code/game/objects/structures/displaycase.dm | 2 +- code/modules/VR/vr_sleeper.dm | 27 ++-- code/modules/admin/verbs/debug.dm | 16 ++- .../atmospherics/machinery/airalarm.dm | 20 +-- .../components/unary_devices/vent_pump.dm | 4 +- .../components/unary_devices/vent_scrubber.dm | 4 +- code/modules/mob/living/silicon/ai/life.dm | 10 +- .../hostile/megafauna/colossus.dm | 58 ++++---- .../simple_animal/hostile/megafauna/legion.dm | 2 +- code/modules/power/apc.dm | 80 +++++------ code/modules/power/lighting.dm | 4 +- code/modules/power/power.dm | 3 +- .../xenobiology/crossbreeding/consuming.dm | 2 +- icons/turf/areas.dmi | Bin 38318 -> 38605 bytes .../code/game/gamemodes/gangs/dominator.dm | 4 +- .../code/game/gamemodes/gangs/gang_decals.dm | 4 +- .../code/game/gamemodes/gangs/gang_items.dm | 2 +- .../code/game/machinery/firealarm.dm | 2 +- 36 files changed, 386 insertions(+), 248 deletions(-) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 1f5b82f7bf..316c159fb8 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -1,5 +1,81 @@ #define BP_MAX_ROOM_SIZE 300 +//Repopulates sortedAreas list +/proc/repopulate_sorted_areas() + GLOB.sortedAreas = list() + + for(var/area/A in world) + GLOB.sortedAreas.Add(A) + + sortTim(GLOB.sortedAreas, /proc/cmp_name_asc) + +/area/proc/addSorted() + GLOB.sortedAreas.Add(src) + sortTim(GLOB.sortedAreas, /proc/cmp_name_asc) + +//Takes: Area type as a text string from a variable. +//Returns: Instance for the area in the world. +/proc/get_area_instance_from_text(areatext) + if(istext(areatext)) + areatext = text2path(areatext) + return GLOB.areas_by_type[areatext] + +//Takes: Area type as text string or as typepath OR an instance of the area. +//Returns: A list of all areas of that type in the world. +/proc/get_areas(areatype, subtypes=TRUE) + if(istext(areatype)) + areatype = text2path(areatype) + else if(isarea(areatype)) + var/area/areatemp = areatype + areatype = areatemp.type + else if(!ispath(areatype)) + return null + + var/list/areas = list() + if(subtypes) + var/list/cache = typecacheof(areatype) + for(var/V in GLOB.sortedAreas) + var/area/A = V + if(cache[A.type]) + areas += V + else + for(var/V in GLOB.sortedAreas) + var/area/A = V + if(A.type == areatype) + areas += V + return areas + +//Takes: Area type as text string or as typepath OR an instance of the area. +//Returns: A list of all turfs in areas of that type of that type in the world. +/proc/get_area_turfs(areatype, target_z = 0, subtypes=FALSE) + if(istext(areatype)) + areatype = text2path(areatype) + else if(isarea(areatype)) + var/area/areatemp = areatype + areatype = areatemp.type + else if(!ispath(areatype)) + return null + + var/list/turfs = list() + if(subtypes) + var/list/cache = typecacheof(areatype) + for(var/V in GLOB.sortedAreas) + var/area/A = V + if(!cache[A.type]) + continue + for(var/turf/T in A) + if(target_z == 0 || target_z == T.z) + turfs += T + else + for(var/V in GLOB.sortedAreas) + var/area/A = V + if(A.type != areatype) + continue + for(var/turf/T in A) + if(target_z == 0 || target_z == T.z) + turfs += T + return turfs + // Gets an atmos isolated contained space // Returns an associative list of turf|dirs pairs // The dirs are connected turfs in the same space @@ -96,4 +172,59 @@ to_chat(creator, "You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.") return TRUE + +/** + * Returns either the base area the target's belongs to or the target's area itself. + */ +/proc/get_base_area(atom/target) + var/area/A = get_area(target) + if(A?.master_area) + return A.master_area + return A + +/** + * Returns either null, or a list containing all the sub_areas associated with the base area the target is located in. + * If include_base is TRUE, the base area will also be added to the return list. + */ +/proc/get_sub_areas(atom/target, include_base = FALSE) + var/area/A = get_area(target) + if(!A) + return + . = list() + if(A.master_area) + A = A.master_area + if(include_base) + . += A + if(A.sub_areas) + . += A.sub_areas + +/** + * Proc for purposes similar to the get_areas_turfs(), but aimed to include associated areas. + * Only takes area (A) instances and paths, no text strings. + * Returns a list of all turfs found in the associated sub_areas (including the base's if include_base is TRUE) + * and located in the same z as target_z, or anywhere if the latter is 0 + */ + +/proc/get_sub_areas_turfs(area/A, target_z = 0, include_base = TRUE) + var/list/contents = get_sub_areas_contents(A, include_base) + . = list() + for(var/turf/T in contents) + if(target_z == 0 || target_z == T.z) + . += T +/** + * Simple proc that returns all a sum of all contents from all associated areas, + * Think of the above but for all contents, not just turfs, and without target z. + */ + +/proc/get_sub_areas_contents(area/A, include_base = TRUE) + if(ispath(A)) + A = GLOB.areas_by_type[A] + if(!A) + return + if(A.master_area) + A = A.master_area + . = list(A.contents) + for(var/i in A.sub_areas) + . += A.sub_areas[i].contents + #undef BP_MAX_ROOM_SIZE diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index d76fc7731a..4b43782b12 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -8,8 +8,8 @@ #define Z_TURFS(ZLEVEL) block(locate(1,1,ZLEVEL), locate(world.maxx, world.maxy, ZLEVEL)) #define CULT_POLL_WAIT 2400 -/proc/get_area_name(atom/X, format_text = FALSE) - var/area/A = isarea(X) ? X : get_area(X) +/proc/get_area_name(atom/X, format_text = FALSE, get_base_area = FALSE) + var/area/A = get_base_area ? get_base_area(X) : get_area(X) if(!A) return null return format_text ? format_text(A.name) : A.name diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 9abe42ea8e..1080dc5710 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -566,82 +566,6 @@ Turf and target are separate in case you want to teleport some distance from a t else return 0 -//Repopulates sortedAreas list -/proc/repopulate_sorted_areas() - GLOB.sortedAreas = list() - - for(var/area/A in world) - GLOB.sortedAreas.Add(A) - - sortTim(GLOB.sortedAreas, /proc/cmp_name_asc) - -/area/proc/addSorted() - GLOB.sortedAreas.Add(src) - sortTim(GLOB.sortedAreas, /proc/cmp_name_asc) - -//Takes: Area type as a text string from a variable. -//Returns: Instance for the area in the world. -/proc/get_area_instance_from_text(areatext) - if(istext(areatext)) - areatext = text2path(areatext) - return GLOB.areas_by_type[areatext] - -//Takes: Area type as text string or as typepath OR an instance of the area. -//Returns: A list of all areas of that type in the world. -/proc/get_areas(areatype, subtypes=TRUE) - if(istext(areatype)) - areatype = text2path(areatype) - else if(isarea(areatype)) - var/area/areatemp = areatype - areatype = areatemp.type - else if(!ispath(areatype)) - return null - - var/list/areas = list() - if(subtypes) - var/list/cache = typecacheof(areatype) - for(var/V in GLOB.sortedAreas) - var/area/A = V - if(cache[A.type]) - areas += V - else - for(var/V in GLOB.sortedAreas) - var/area/A = V - if(A.type == areatype) - areas += V - return areas - -//Takes: Area type as text string or as typepath OR an instance of the area. -//Returns: A list of all turfs in areas of that type of that type in the world. -/proc/get_area_turfs(areatype, target_z = 0, subtypes=FALSE) - if(istext(areatype)) - areatype = text2path(areatype) - else if(isarea(areatype)) - var/area/areatemp = areatype - areatype = areatemp.type - else if(!ispath(areatype)) - return null - - var/list/turfs = list() - if(subtypes) - var/list/cache = typecacheof(areatype) - for(var/V in GLOB.sortedAreas) - var/area/A = V - if(!cache[A.type]) - continue - for(var/turf/T in A) - if(target_z == 0 || target_z == T.z) - turfs += T - else - for(var/V in GLOB.sortedAreas) - var/area/A = V - if(A.type != areatype) - continue - for(var/turf/T in A) - if(target_z == 0 || target_z == T.z) - turfs += T - return turfs - /proc/get_cardinal_dir(atom/A, atom/B) var/dx = abs(B.x - A.x) var/dy = abs(B.y - A.y) diff --git a/code/datums/components/virtual_reality.dm b/code/datums/components/virtual_reality.dm index 7bad836e47..d72b741abe 100644 --- a/code/datums/components/virtual_reality.dm +++ b/code/datums/components/virtual_reality.dm @@ -114,7 +114,7 @@ to_chat(mastermind, "You feel everything fading away...") dreamer.death(FALSE) if(cleanup) - var/obj/effect/vr_clean_master/cleanbot = locate() in get_area(M) + var/obj/effect/vr_clean_master/cleanbot = locate() in get_base_area(M) if(cleanbot) LAZYADD(cleanbot.corpse_party, M) if(vr_sleeper) diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index b288046380..3a74663643 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -94,7 +94,7 @@ STI KALY - blind var/area/thearea = pick(theareas) var/list/L = list() - for(var/turf/T in get_area_turfs(thearea.type)) + for(var/turf/T in thearea) if(T.z != affected_mob.z) continue if(T.name == "space") diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index a3b666dcc6..01b9facbb8 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -50,7 +50,10 @@ stage = STARTUP_STAGE var/list/affectareas = list() for(var/V in get_areas(area_type)) - affectareas += V + var/area/A = V + affectareas |= A + if(A.sub_areas) + affectareas |= A.sub_areas for(var/V in protected_areas) affectareas -= get_areas(V) for(var/V in affectareas) diff --git a/code/datums/wires/airalarm.dm b/code/datums/wires/airalarm.dm index 6eb4dc04db..0c4715e27e 100644 --- a/code/datums/wires/airalarm.dm +++ b/code/datums/wires/airalarm.dm @@ -46,7 +46,7 @@ A.mode = 1 // AALARM_MODE_SCRUB A.apply_mode() if(WIRE_ALARM) // Clear alarms. - var/area/AA = get_area(A) + var/area/AA = get_base_area(A) if(AA.atmosalert(0, holder)) A.post_alert(0) A.update_icon() @@ -68,7 +68,7 @@ A.mode = 3 // AALARM_MODE_PANIC A.apply_mode() if(WIRE_ALARM) // Post alarm. - var/area/AA = get_area(A) + var/area/AA = get_base_area(A) if(AA.atmosalert(2, holder)) A.post_alert(2) A.update_icon() \ No newline at end of file diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index fa66306302..733a5ace75 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -403,7 +403,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/crew_quarters/dorms name = "Dormitories" icon_state = "Sleep" - safe = TRUE /area/crew_quarters/dorms/male name = "Male Dorm" @@ -413,6 +412,29 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Female Dorm" icon_state = "Sleep" +/area/crew_quarters/dorms/cabin + name = "Dorms Cabin One" + icon_state = "sleep_cabin" + safe = TRUE + +/area/crew_quarters/dorms/cabin/two + name = "Dorms Cabin Two" + +/area/crew_quarters/dorms/cabin/three + name = "Dorms Cabin Three" + +/area/crew_quarters/dorms/cabin/four + name = "Dorms Cabin Four" + +/area/crew_quarters/dorms/cabin/five + name = "Dorms Cabin Five" + +/area/crew_quarters/dorms/cabin/six + name = "Dorms Cabin Six" + +/area/crew_quarters/dorms/cabin/seven + name = "Dorms Cabin Seven" + /area/crew_quarters/rehab_dome name = "Rehabilitation Dome" icon_state = "Sleep" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 612c3cba42..74e238cdc0 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -63,6 +63,15 @@ var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default? var/list/canSmoothWithAreas //typecache to limit the areas that atoms in this area can smooth with +/** + * These two vars allow for multiple unique areas to be linked to a master area + * for reasons such as APC powernet nodes, fire alarms and similar, without sacrificing + * their own flags, statuses, variables and uniqueness. + * Friendly reminder: don't varedit area paths, make new typepaths instead. + */ + var/list/area/sub_areas //list of typepaths of the areas you wish to link here, will be replaced with a list of references on mapload. + var/area/master_area //The area we wish to use in place of src for certain actions such as APC area linking. + /*Adding a wizard area teleport list because motherfucking lag -- Urist*/ /*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/ GLOBAL_LIST_EMPTY(teleportlocs) @@ -121,10 +130,31 @@ GLOBAL_LIST_EMPTY(teleportlocs) reg_in_areas_in_z() + //so far I'm only implementing it on mapped unique areas, it's easier this way. + if(unique && LAZYLEN(sub_areas)) + var/paths = sub_areas.Copy() + sub_areas = null + for(var/type in paths) + var/area/A = GLOB.areas_by_type[type] + if(!A) + /* By chance an area not loaded in the station, ruin or map, let's not bother for now. + WARNING("No area of type [type] found in GLOB.areas_by_type for [src]'s linked areas.") + */ + continue + if(A == src) + WARNING("\"[src]\" area a attempted to link with itself.") + continue + if(A.master_area) + WARNING("[src] attempted to link with [A] while the latter is already linked to another area ([A.master_area]).") + continue + LAZYADD(sub_areas, A) + A.master_area = src + return INITIALIZE_HINT_LATELOAD /area/LateInitialize() - power_change() // all machines set to current power level, also updates icon + if(!master_area) //we don't want to run it twice. + power_change() // all machines set to current power level, also updates icon /area/proc/reg_in_areas_in_z() if(contents.len) @@ -147,6 +177,19 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/Destroy() if(GLOB.areas_by_type[type] == src) GLOB.areas_by_type[type] = null + if(master_area) + LAZYREMOVE(master_area, src) + master_area = null + if(sub_areas) + for(var/i in sub_areas) + var/area/A = i + A.master_area = null + sub_areas -= A + if(A.requires_power) + A.power_light = FALSE + A.power_equip = FALSE + A.power_environ = FALSE + INVOKE_ASYNC(A, .proc/power_change) STOP_PROCESSING(SSobj, src) return ..() @@ -212,9 +255,11 @@ GLOBAL_LIST_EMPTY(teleportlocs) var/datum/computer_file/program/alarm_monitor/p = item p.cancelAlarm("Atmosphere", src, source) - src.atmosalm = danger_level - return 1 - return 0 + atmosalm = danger_level + for(var/i in sub_areas) + sub_areas[i].atmosalm = danger_level + return TRUE + return FALSE /area/proc/ModifyFiredoors(opening) if(firedoors) @@ -239,7 +284,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) return if (!fire) - set_fire_alarm_effect() + set_fire_alarm_effects(TRUE) ModifyFiredoors(FALSE) for(var/item in firealarms) var/obj/machinery/firealarm/F = item @@ -262,7 +307,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/proc/firereset(obj/source) if (fire) - unset_fire_alarm_effects() + set_fire_alarm_effects(FALSE) ModifyFiredoors(TRUE) for(var/item in firealarms) var/obj/machinery/firealarm/F = item @@ -298,9 +343,9 @@ GLOBAL_LIST_EMPTY(teleportlocs) return //Trigger alarm effect - set_fire_alarm_effect() + set_fire_alarm_effects(TRUE) //Lockdown airlocks - for(var/obj/machinery/door/DOOR in src) + for(var/obj/machinery/door/DOOR in get_sub_areas_contents(src)) close_and_lock_door(DOOR) for (var/i in GLOB.silicon_mobs) @@ -309,23 +354,16 @@ GLOBAL_LIST_EMPTY(teleportlocs) //Cancel silicon alert after 1 minute addtimer(CALLBACK(SILICON, /mob/living/silicon.proc/cancelAlarm,"Burglar",src,trigger), 600) -/area/proc/set_fire_alarm_effect() - fire = TRUE - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - for(var/alarm in firealarms) - var/obj/machinery/firealarm/F = alarm - F.update_fire_light(fire) - for(var/obj/machinery/light/L in src) - L.update() - -/area/proc/unset_fire_alarm_effects() - fire = FALSE +/area/proc/set_fire_alarm_effects(boolean) + fire = boolean mouse_opacity = MOUSE_OPACITY_TRANSPARENT for(var/alarm in firealarms) var/obj/machinery/firealarm/F = alarm F.update_fire_light(fire) for(var/obj/machinery/light/L in src) L.update() + for(var/i in sub_areas) + sub_areas[i].fire = boolean /area/proc/updateicon() var/weather_icon @@ -370,26 +408,34 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/proc/power_change() for(var/obj/machinery/M in src) // for each machine in the area M.power_change() // reverify power status (to update icons etc.) + if(sub_areas) + for(var/i in sub_areas) + var/area/A = i + A.power_light = power_light + A.power_equip = power_equip + A.power_environ = power_environ + INVOKE_ASYNC(A, .proc/power_change) updateicon() /area/proc/usage(chan) - var/used = 0 switch(chan) if(LIGHT) - used += used_light + . += used_light if(EQUIP) - used += used_equip + . += used_equip if(ENVIRON) - used += used_environ + . += used_environ if(TOTAL) - used += used_light + used_equip + used_environ + . += used_light + used_equip + used_environ if(STATIC_EQUIP) - used += static_equip + . += static_equip if(STATIC_LIGHT) - used += static_light + . += static_light if(STATIC_ENVIRON) - used += static_environ - return used + . += static_environ + if(sub_areas) + for(var/i in sub_areas) + . += sub_areas[i].usage(chan) /area/proc/addStaticPower(value, powerchannel) switch(powerchannel) @@ -404,6 +450,9 @@ GLOBAL_LIST_EMPTY(teleportlocs) used_equip = 0 used_light = 0 used_environ = 0 + if(sub_areas) + for(var/i in sub_areas) + sub_areas[i].clear_usage() /area/proc/use_power(amount, chan) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 8d3254933a..d0671dd285 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -12,7 +12,7 @@ var/list/skipped_areas = list(/area/engine/engineering, /area/engine/supermatter, /area/engine/atmospherics_engine, /area/ai_monitored/turret_protected/ai) for(var/area/A in world) - if( !A.requires_power || A.always_unpowered ) + if( !A.requires_power || A.always_unpowered || A.master_area) continue var/skip = 0 @@ -61,8 +61,9 @@ S.output_attempt = 1 S.update_icon() S.power_change() + for(var/area/A in world) - if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A, /area/arrival)) + if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A, /area/arrival) && !A.always_unpowered && !A.master_area) A.power_light = TRUE A.power_equip = TRUE A.power_environ = TRUE diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index 1839e44e3b..c0317f0c94 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -44,7 +44,7 @@ var/area/a = loc.loc // Gets our locations location, like a dream within a dream if(!isarea(a)) return - if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power! + if(!a.powered(EQUIP)) // There's no APC in this area, don't try to cheat power! to_chat(user, "[src] blinks red as you try to insert the cell!") return if(!user.transferItemToLoc(W,src)) diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index dec41b0a59..61ad9f7c41 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -44,7 +44,7 @@ /obj/machinery/door/firedoor/proc/CalculateAffectingAreas() remove_from_areas() - affecting_areas = get_adjacent_open_areas(src) | get_area(src) + affecting_areas = get_adjacent_open_areas(src) | get_base_area(src) for(var/I in affecting_areas) var/area/A = I LAZYADD(A.firedoors, src) diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 5c2676c2b9..fd7d2216ce 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -44,7 +44,7 @@ pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 update_icon() - myarea = get_area(src) + myarea = get_base_area(src) LAZYADD(myarea.firealarms, src) /obj/machinery/firealarm/Destroy() @@ -116,14 +116,14 @@ if(!is_operational() && (last_alarm+FIREALARM_COOLDOWN < world.time)) return last_alarm = world.time - var/area/A = get_area(src) + var/area/A = get_base_area(src) A.firealert(src) playsound(src.loc, 'goon/sound/machinery/FireAlarm.ogg', 75) /obj/machinery/firealarm/proc/reset() if(!is_operational()) return - var/area/A = get_area(src) + var/area/A = get_base_area(src) A.firereset(src) /obj/machinery/firealarm/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \ @@ -142,7 +142,7 @@ else data["seclevel"] = "green" - var/area/A = get_area(src) + var/area/A = get_base_area(src) data["alarm"] = A.fire return data @@ -306,7 +306,7 @@ /obj/machinery/firealarm/partyalarm/reset() if (stat & (NOPOWER|BROKEN)) return - var/area/A = get_area(src) + var/area/A = get_base_area(src) if (!A || !A.party) return A.party = FALSE @@ -315,7 +315,7 @@ /obj/machinery/firealarm/partyalarm/alarm() if (stat & (NOPOWER|BROKEN)) return - var/area/A = get_area(src) + var/area/A = get_base_area(src) if (!A || A.party || A.name == "Space") return A.party = TRUE @@ -325,5 +325,5 @@ /obj/machinery/firealarm/partyalarm/ui_data(mob/user) . = ..() - var/area/A = get_area(src) + var/area/A = get_base_area(src) .["alarm"] = A && A.party diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 927608d3d5..001ef94163 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -53,7 +53,7 @@ //Checks to make sure he's not in space doing it, and that the area got proper power. var/area/a = get_area(src) - if(!isarea(a) || a.power_equip == 0) + if(!a || !a.powered(EQUIP)) to_chat(user, "[src] blinks red as you try to insert [G].") return 1 diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index a8ba9850ff..579273d5e5 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -283,7 +283,7 @@ /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay/proc/get_charge() if(equip_ready) //disabled return - var/area/A = get_area(chassis) + var/area/A = get_base_area(chassis) var/pow_chan = get_power_channel(A) if(pow_chan) return 1000 //making magic @@ -328,7 +328,7 @@ occupant_message("No powercell detected.") return if(cur_charge < chassis.cell.maxcharge) - var/area/A = get_area(chassis) + var/area/A = get_base_area(chassis) if(A) var/pow_chan for(var/c in list(EQUIP,ENVIRON,LIGHT)) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 10ee73915c..a3ba63108c 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -126,7 +126,7 @@ T.PlaceOnTop(/turf/open/floor/plating/foam) for(var/direction in GLOB.cardinals) var/turf/cardinal_turf = get_step(T, direction) - if(get_area(cardinal_turf) != get_area(T)) //We're at an area boundary, so let's block off this turf! + if(get_base_area(cardinal_turf) != get_area(T)) //We're at an area boundary, so let's block off this turf! new/obj/structure/foamedmetal(T) break flick("[icon_state]-disolve", src) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 2a7b5d24cd..4a8c46e551 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -425,7 +425,7 @@ /obj/item/toy/crayon/proc/can_claim_for_gang(mob/user, atom/target) // Check area validity. // Reject space, player-created areas, and non-station z-levels. - var/area/A = get_area(target) + var/area/A = get_base_area(target) if(!A || (!is_station_level(A.z)) || !A.valid_territory) to_chat(user, "[A] is unsuitable for tagging.") return FALSE @@ -459,7 +459,7 @@ qdel(old_marking) var/datum/antagonist/gang/G = user.mind.has_antag_datum(/datum/antagonist/gang) - var/area/territory = get_area(target) + var/area/territory = get_base_area(target) new /obj/effect/decal/cleanable/crayon/gang(target,G.gang,"graffiti",0,user) // Heres the gang tag. to_chat(user, "You tagged [territory] for your gang!") diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm index 8964d1ca41..0b8732fb1c 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -52,7 +52,7 @@ var/area/A = get_area(src) if(!A.blob_allowed) return FALSE - if(!A.power_equip) + if(!A.powered(EQUIP)) return FALSE if(!SSmapping.level_trait(T.z,ZTRAIT_STATION)) return FALSE diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index 771b4bc04e..df1b6cadf8 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -80,7 +80,7 @@ /obj/structure/displaycase/proc/trigger_alarm() //Activate Anti-theft if(alert) - var/area/alarmed = get_area(src) + var/area/alarmed = get_base_area(src) alarmed.burglaralert(src) playsound(src, 'sound/effects/alert.ogg', 50, 1) diff --git a/code/modules/VR/vr_sleeper.dm b/code/modules/VR/vr_sleeper.dm index 72cbdc1409..dd9620e3be 100644 --- a/code/modules/VR/vr_sleeper.dm +++ b/code/modules/VR/vr_sleeper.dm @@ -211,17 +211,20 @@ /obj/effect/vr_clean_master/Initialize() . = ..() - vr_area = get_area(src) - addtimer(CALLBACK(src, .proc/clean_up), 3 MINUTES) + vr_area = get_base_area(src) + addtimer(CALLBACK(src, .proc/clean_up), 3 MINUTES, TIMER_LOOP) /obj/effect/vr_clean_master/proc/clean_up() - if (vr_area) - for (var/obj/item/ammo_casing/casing in vr_area) - qdel(casing) - for(var/obj/effect/decal/cleanable/C in vr_area) - qdel(C) - for (var/A in corpse_party) - var/mob/M = A - if(get_area(M) == vr_area && M.stat == DEAD) - qdel(M) - addtimer(CALLBACK(src, .proc/clean_up), 3 MINUTES) + if (!vr_area) + qdel(src) + return + var/list/contents = get_sub_areas_contents(src) + for (var/obj/item/ammo_casing/casing in contents) + qdel(casing) + for(var/obj/effect/decal/cleanable/C in contents) + qdel(C) + for (var/A in corpse_party) + var/mob/M = A + if(!QDELETED(M) && (M in contents) && M.stat == DEAD) + qdel(M) + corpse_party -= M diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index 53fdb315b5..e474e4c9fe 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -541,7 +541,9 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) var/list/areas_all = list() var/list/areas_with_APC = list() var/list/areas_with_multiple_APCs = list() + var/list/sub_areas_APC = list() var/list/areas_with_air_alarm = list() + var/list/sub_areas_air_alarm = list() var/list/areas_with_RC = list() var/list/areas_with_light = list() var/list/areas_with_LS = list() @@ -578,6 +580,7 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) if(!A) dat += "Skipped over [APC] in invalid location, [APC.loc]." continue + LAZYSET(sub_areas_APC, A.type, get_sub_areas(A, FALSE)) if(!(A.type in areas_with_APC)) areas_with_APC.Add(A.type) else if(A.type in areas_all) @@ -585,10 +588,11 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) CHECK_TICK for(var/obj/machinery/airalarm/AA in GLOB.machines) - var/area/A = get_area(AA) + var/area/A = get_base_area(AA) if(!A) //Make sure the target isn't inside an object, which results in runtimes. dat += "Skipped over [AA] in invalid location, [AA.loc].
" continue + LAZYSET(sub_areas_air_alarm, A.type, get_sub_areas(A, FALSE)) if(!(A.type in areas_with_air_alarm)) areas_with_air_alarm.Add(A.type) CHECK_TICK @@ -638,8 +642,8 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) areas_with_camera.Add(A.type) CHECK_TICK - var/list/areas_without_APC = areas_all - areas_with_APC - var/list/areas_without_air_alarm = areas_all - areas_with_air_alarm + var/list/areas_without_APC = areas_all - (areas_with_APC + flatten_list(sub_areas_APC)) + var/list/areas_without_air_alarm = areas_all - (areas_with_air_alarm + flatten_list(sub_areas_air_alarm)) var/list/areas_without_RC = areas_all - areas_with_RC var/list/areas_without_light = areas_all - areas_with_light var/list/areas_without_LS = areas_all - areas_with_LS @@ -656,12 +660,18 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) dat += "

AREAS WITH MULTIPLE APCS:

" for(var/areatype in areas_with_multiple_APCs) dat += "[areatype]
" + if(sub_areas_APC[areatype]) + dat += "  SUB-AREAS:
  " + dat += jointext(sub_areas_APC[areatype], "
  ") CHECK_TICK if(areas_without_air_alarm.len) dat += "

AREAS WITHOUT AN AIR ALARM:

" for(var/areatype in areas_without_air_alarm) dat += "[areatype]
" + if(sub_areas_air_alarm[areatype]) + dat += "  SUB-AREAS:
  " + dat += jointext(sub_areas_air_alarm[areatype], "
  ") CHECK_TICK if(areas_without_RC.len) diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 58ab9c6183..9ef04d8641 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -207,7 +207,7 @@ pixel_y = (dir & 3)? (dir == 1 ? -24 : 24) : 0 if(name == initial(name)) - name = "[get_area_name(src)] Air Alarm" + name = "[get_area_name(src, get_base_area = TRUE)] Air Alarm" power_change() set_frequency(frequency) @@ -250,7 +250,7 @@ "danger_level" = danger_level, ) - var/area/A = get_area(src) + var/area/A = get_base_area(src) data["atmos_alarm"] = A.atmosalm data["fire_alarm"] = A.fire @@ -386,7 +386,7 @@ send_signal(device_id, list("checks" = text2num(params["val"])^2), usr) . = TRUE if("set_external_pressure", "set_internal_pressure") - var/area/A = get_area(src) + var/area/A = get_base_area(src) var/target = input("New target pressure:", name, A.air_vent_info[device_id][(action == "set_external_pressure" ? "external" : "internal")]) as num|null if(!isnull(target) && !..()) send_signal(device_id, list("[action]" = target), usr) @@ -420,12 +420,12 @@ apply_mode() . = TRUE if("alarm") - var/area/A = get_area(src) + var/area/A = get_base_area(src) if(A.atmosalert(2, src)) post_alert(2) . = TRUE if("reset") - var/area/A = get_area(src) + var/area/A = get_base_area(src) if(A.atmosalert(0, src)) post_alert(0) . = TRUE @@ -456,7 +456,7 @@ return 0 /obj/machinery/airalarm/proc/refresh_all() - var/area/A = get_area(src) + var/area/A = get_base_area(src) for(var/id_tag in A.air_vent_names) var/list/I = A.air_vent_info[id_tag] if(I && I["timestamp"] + AALARM_REPORT_TIMEOUT / 2 > world.time) @@ -507,7 +507,7 @@ return "Flood" /obj/machinery/airalarm/proc/apply_mode() - var/area/A = get_area(src) + var/area/A = get_base_area(src) switch(mode) if(AALARM_MODE_SCRUBBING) for(var/device_id in A.air_scrub_names) @@ -645,7 +645,7 @@ icon_state = "alarm1" var/overlay_state = AALARM_OVERLAY_OFF - var/area/A = get_area(src) + var/area/A = get_base_area(src) switch(max(danger_level, A.atmosalm)) if(0) add_overlay(AALARM_OVERLAY_GREEN) @@ -715,7 +715,7 @@ return var/datum/signal/alert_signal = new(list( - "zone" = get_area_name(src), + "zone" = get_area_name(src, get_base_area = TRUE), "type" = "Atmospheric" )) if(alert_level==2) @@ -728,7 +728,7 @@ frequency.post_signal(src, alert_signal, range = -1) /obj/machinery/airalarm/proc/apply_danger_level() - var/area/A = get_area(src) + var/area/A = get_base_area(src) var/new_area_danger_level = 0 for(var/obj/machinery/airalarm/AA in A) diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm index 75f2a60f80..c98204d274 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm @@ -124,7 +124,7 @@ id_tag = assign_uid_vents() /obj/machinery/atmospherics/components/unary/vent_pump/Destroy() - var/area/A = get_area(src) + var/area/A = get_base_area(src) if (A) A.air_vent_names -= id_tag A.air_vent_info -= id_tag @@ -312,7 +312,7 @@ "sigtype" = "status" )) - var/area/A = get_area(src) + var/area/A = get_base_area(src) if(!A.air_vent_names[id_tag]) name = "\improper [A.name] vent pump #[A.air_vent_names.len + 1]" A.air_vent_names[id_tag] = name diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm index 8585471ea4..d31c35dd16 100644 --- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm +++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm @@ -63,7 +63,7 @@ pixel_y = PIPING_LAYER_P_Y /obj/machinery/atmospherics/components/unary/vent_scrubber/Destroy() - var/area/A = get_area(src) + var/area/A = get_base_area(src) if (A) A.air_scrub_names -= id_tag A.air_scrub_info -= id_tag @@ -135,7 +135,7 @@ "sigtype" = "status" )) - var/area/A = get_area(src) + var/area/A = get_base_area(src) if(!A.air_scrub_names[id_tag]) name = "\improper [A.name] air scrubber #[A.air_scrub_names.len + 1]" A.air_scrub_names[id_tag] = name diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 15a04235cc..1147042c8c 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -53,11 +53,11 @@ if(NONE) return FALSE if(POWER_REQ_ALL) - return !T || !A || ((!A.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha))) + return !T || !A || ((!A.powered(EQUIP) || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha))) if(POWER_REQ_CLOCKCULT) for(var/obj/effect/clockwork/sigil/transmission/ST in range(src, SIGIL_ACCESS_RANGE)) return FALSE - return !T || !A || (!istype(T, /turf/open/floor/clockwork) && (!A.power_equip || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha))) + return !T || !A || (!istype(T, /turf/open/floor/clockwork) && (!A.powered(EQUIP) || isspaceturf(T)) && !is_type_in_list(loc, list(/obj/item, /obj/mecha))) /mob/living/silicon/ai/updatehealth() if(status_flags & GODMODE) @@ -100,7 +100,7 @@ sleep(50) var/turf/T = get_turf(src) var/area/AIarea = get_area(src) - if(AIarea && AIarea.power_equip) + if(AIarea && AIarea.powered(EQUIP)) if(!isspaceturf(T)) ai_restore_power() return @@ -120,7 +120,7 @@ var/PRP //like ERP with the code, at least this stuff is no more 4x sametext for (PRP=1, PRP<=4, PRP++) T = get_turf(src) - AIarea = get_area(src) + AIarea = get_base_area(src) if(AIarea) for (var/obj/machinery/power/apc/APC in AIarea) if (!(APC.stat & BROKEN)) @@ -134,7 +134,7 @@ to_chat(src, "Lost connection with the APC!") aiRestorePowerRoutine = POWER_RESTORATION_SEARCH_APC return - if(AIarea.power_equip) + if(AIarea.powered(EQUIP)) if(!isspaceturf(T)) ai_restore_power() return diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index 51a9d8d62b..e691a30d3a 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -479,34 +479,36 @@ Difficulty: Very Hard NewTerrainTables = /obj/structure/table/abductor /obj/machinery/anomalous_crystal/theme_warp/ActivationReaction(mob/user, method) - if(..()) - var/area/A = get_area(src) - if(!A.outdoors && !(A in affected_targets)) - for(var/atom/Stuff in A) - if(isturf(Stuff)) - var/turf/T = Stuff - if((isspaceturf(T) || isfloorturf(T)) && NewTerrainFloors) - var/turf/open/O = T.ChangeTurf(NewTerrainFloors) - if(O.air) - var/datum/gas_mixture/G = O.air - G.copy_from_turf(O) - if(prob(florachance) && NewFlora.len && !is_blocked_turf(O, TRUE)) - var/atom/Picked = pick(NewFlora) - new Picked(O) - continue - if(iswallturf(T) && NewTerrainWalls) - T.ChangeTurf(NewTerrainWalls) - continue - if(istype(Stuff, /obj/structure/chair) && NewTerrainChairs) - var/obj/structure/chair/Original = Stuff - var/obj/structure/chair/C = new NewTerrainChairs(Original.loc) - C.setDir(Original.dir) - qdel(Stuff) - continue - if(istype(Stuff, /obj/structure/table) && NewTerrainTables) - new NewTerrainTables(Stuff.loc) - continue - affected_targets += A + . = ..() + if(!.) + return + for(var/i in get_sub_areas(src, include_base = TRUE)) + var/area/A = i + if(A.outdoors || (A in affected_targets)) + continue + affected_targets += A + for(var/stuff in A) + var/atom/target = stuff + if(isturf(target)) + var/turf/T = target + if((isspaceturf(T) || isfloorturf(T)) && NewTerrainFloors) + var/turf/open/O = T.ChangeTurf(NewTerrainFloors) + if(O.air) + var/datum/gas_mixture/G = O.air + G.copy_from_turf(O) + if(NewFlora.len && prob(florachance) && !is_blocked_turf(O, TRUE)) + var/atom/Picked = pick(NewFlora) + new Picked(O) + else if(iswallturf(T) && NewTerrainWalls) + T.ChangeTurf(NewTerrainWalls) + else if(NewTerrainChairs && istype(target, /obj/structure/chair)) + var/obj/structure/chair/Original = target + var/obj/structure/chair/C = new NewTerrainChairs(Original.loc) + C.setDir(Original.dir) + qdel(target) + else if(NewTerrainTables && istype(target, /obj/structure/table)) + new NewTerrainTables(target.loc) + qdel(target) /obj/machinery/anomalous_crystal/emitter //Generates a projectile when interacted with observer_desc = "This crystal generates a projectile when activated." diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm index 5bfabe376e..fa7103dc0d 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm @@ -170,7 +170,7 @@ Difficulty: Medium to_chat(user, "The staff is still recharging!") return - var/area/user_area = get_area(user) + var/area/user_area = get_base_area(user) var/turf/user_turf = get_turf(user) if(!user_area || !user_turf || (user_area.type in excluded_areas)) to_chat(user, "Something is preventing you from using the staff here.") diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 5e3888a8c5..ecb2d6c29d 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -56,6 +56,8 @@ integrity_failure = 50 var/damage_deflection = 10 resistance_flags = FIRE_PROOF + armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 100, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) + req_access = list(ACCESS_ENGINE_EQUIP) interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON var/lon_range = 1.5 @@ -147,12 +149,39 @@ if(terminal) terminal.connect_to_network() -/obj/machinery/power/apc/New(turf/loc, var/ndir, var/building=0) - if (!req_access) - req_access = list(ACCESS_ENGINE_EQUIP) - if (!armor) - armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 100, "bomb" = 30, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) - ..() +/obj/machinery/power/apc/Initialize(mapload, ndir, building = FALSE) + . = ..() + var/area/A = get_base_area(src) + if(!building) + has_electronics = APC_ELECTRONICS_SECURED + // is starting with a power cell installed, create it and set its charge level + if(cell_type) + cell = new cell_type + cell.charge = start_charge * cell.maxcharge / 100 // (convert percentage to actual value) + + //if area isn't specified use current + if(areastring) + area = get_area_instance_from_text(areastring) + if(!area) + area = A + stack_trace("Bad areastring path for [src], [src.areastring]") + else if(isarea(A) && !areastring) + area = A + if(auto_name) + name = "\improper [A.name] APC" + update_icon() + + make_terminal() + + else + area = A + opened = APC_COVER_OPENED + operating = FALSE + name = "\improper [A.name] APC" + stat |= MAINT + update_icon() + addtimer(CALLBACK(src, .proc/update), 5) + GLOB.apcs_list += src wires = new /datum/wires/apc(src) @@ -163,9 +192,6 @@ src.tdir = dir // to fix Vars bug setDir(SOUTH) - if(auto_name) - name = "\improper [get_area(src)] APC" - switch(tdir) if(NORTH) pixel_y = 23 @@ -175,14 +201,6 @@ pixel_x = 24 if(WEST) pixel_x = -25 - if (building) - area = get_area(src) - opened = APC_COVER_OPENED - operating = FALSE - name = "[area.name] APC" - stat |= MAINT - src.update_icon() - addtimer(CALLBACK(src, .proc/update), 5) /obj/machinery/power/apc/Destroy() GLOB.apcs_list -= src @@ -216,32 +234,6 @@ terminal.setDir(tdir) terminal.master = src -/obj/machinery/power/apc/Initialize(mapload) - . = ..() - if(!mapload) - return - has_electronics = APC_ELECTRONICS_SECURED - // is starting with a power cell installed, create it and set its charge level - if(cell_type) - cell = new cell_type - cell.charge = start_charge * cell.maxcharge / 100 // (convert percentage to actual value) - - var/area/A = src.loc.loc - - //if area isn't specified use current - if(areastring) - src.area = get_area_instance_from_text(areastring) - if(!src.area) - src.area = A - stack_trace("Bad areastring path for [src], [src.areastring]") - else if(isarea(A) && src.areastring == null) - src.area = A - update_icon() - - make_terminal() - - addtimer(CALLBACK(src, .proc/update), 5) - /obj/machinery/power/apc/examine(mob/user) . = ..() if(stat & BROKEN) @@ -1376,7 +1368,7 @@ return for(var/A in GLOB.ai_list) var/mob/living/silicon/ai/I = A - if(get_area(I) == area) + if(get_base_area(I) == area) return failure_timer = max(failure_timer, round(duration)) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index cdbaa29a3b..782d9e89ed 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -294,7 +294,7 @@ cut_overlays() switch(status) // set icon_states if(LIGHT_OK) - var/area/A = get_area(src) + var/area/A = get_base_area(src) if(emergency_mode || (A && A.fire)) icon_state = "[base_state]_emergency" else @@ -323,7 +323,7 @@ var/CO = bulb_colour if(color) CO = color - var/area/A = get_area(src) + var/area/A = get_base_area(src) if (A && A.fire) CO = bulb_emergency_colour else if (nightshift_enabled) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 58a259de3a..5f8d1e822b 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -382,6 +382,7 @@ return null /area/proc/get_apc() + var/target = master_area ? master_area : src for(var/obj/machinery/power/apc/APC in GLOB.apcs_list) - if(APC.area == src) + if(APC.area == target) return APC \ No newline at end of file diff --git a/code/modules/research/xenobiology/crossbreeding/consuming.dm b/code/modules/research/xenobiology/crossbreeding/consuming.dm index d6536f4fdd..e976016a0b 100644 --- a/code/modules/research/xenobiology/crossbreeding/consuming.dm +++ b/code/modules/research/xenobiology/crossbreeding/consuming.dm @@ -212,7 +212,7 @@ Consuming extracts: taste = "sugar and starlight" /obj/item/slime_cookie/bluespace/do_effect(mob/living/M, mob/user) - var/list/L = get_area_turfs(get_area(get_turf(M))) + var/list/L = get_sub_areas_turfs(get_area(M)) var/turf/target while (L.len && !target) var/I = rand(1, L.len) diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index fe60cf6c0d63504c16c97738d39175d735f290fc..aad3e78590e9d275cf62bee4a4e1bea67b2ef47a 100644 GIT binary patch delta 36061 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 delta 35754 zcmZs?2UHVL(=betj#32#0YL%jq9UR+5v5D-B~+z~Qly4O1Zh%3lPXn#kkETVQABzZ zLXSu%bVw*6@CBdu`QGz?=ihU(xifd}y|cS>ck1?+lflZ!5^e!G0fwgDDvn2g1&FE|glmm2vUG}sUyrogh3GOD>`}65m z#9px%m^Xj=_TYAPE+pkUwEJ|)=*nzi39UnQjQ%`&YdvVkUWMo06OPjO?t-_{VO$26 zmBe;emF1~~pWBN#(Cj$sD){og(znOTKk|fIe!i~~a(S2J$I|UbeMlKSIH+;!6YEFL zSJm`|Q}%m+5A^xE0pTgt%fI(Am!O+U!A5l64))rM5dAo)Wr$~yrS`Muif)U#W;zb} z!4DH+)m$VyHuZL{tf`;+@o^{mQs2KOaO2p)*nml~T-awnIXoatu7_e`?Y0l!h#$#N zPV9#w2rmntr(gQ5tJBgI-2L(54N?hCqB*?@=0}NOKoS1NQPIZ4@3MAG$^Lz5gjiKd z-C=PW>Qq!%VKB$kX1w5(GF8cgDbE__= zd2?uf`ig$(+VwA#?_V~|&nNo)VYd0|NW-9XEGsB#Nw^-P1%4{|w8Zp}oklP(0KLgq z;_24@ND(lPXL-r^gL<*8zKD(9&w>o_b-wnParsP%omH?#S@IS~JKZP4PSGegQ^D1G1laxw;BV=rz=+Y@htpVBht))Q*X zas#JW{viRA94`OVMA8KGYZY^NJo`mqQ!%M%W#`Y~^BZ9B#Dya&y$mX~xwbV=miQE!4Ql+5#`!;Fy-**cJY z`;E!bQewY0YZ+u>Ie7nNGyXOHbpA#sN29#?sFEZipYXT7n84pqjJ`jNelU!d9uAI% zuK^E+AGZz!y{|86bcJ}KidSITLspsj%@5Rl-7~hPRAy^Snmi1A(CG#4rCZa0;cWeX z;No?pwvmm@8JULxcEBWM!23OBi}q)LcEdW%2GoCb!?iIKEMQUrU!cVqS+*lTy6R2c zavNd1UFX`Q{_M+d*qR{sd*$Zh%;ZZw8yT-hm~U6PHi`3Q)?5<#2Y!PS=`_DI5$VL= zPc=z6BU5$SFjs*$hu+El?_PJjdL?oE>sf`SNAThui=@z4b}F||Tn*%sDP+EoViwX5 zusgJFKCBaN$u!bjjxKjB-d10IP$utU6gaW^#e1Dn$wcC5=r)5^$!~}3eyXDn?{@Z| zaTVnQwiQisR3BuVBZ98HD51Mw#hm)cFxH6qP2N2n1Eki7FJSg9;^lU3j#CAfgkDn)Of;i2h(AN7Lw@65Ckf^IXG4#vYKm^t} z`Wme~mhq5K?-dXVl}>nZOGfx<1l4+|m%+R}SY7HYHn=~*mNk$I)P>;aya zxJqDmA4VpClK|2ZJ$02E_pRECnAfRZ!Q5g)!X1eC0&T?c|GF;!B9=$E?E^3xQz}6|mjA~!V%VA3vu31Z z0KHqD_nm#{c2lZ{5D4dn^)-7Wjq{qWX_}$okpiH)8{UfJWKtXfC zvcYGaE1N6+vZ$ZZtAr)fY1E%;bSIu_Uvu?P2llxrw;dUfyXe!6c^ga4wHSg;_%~bd z(gOO#R`}2EayLL&l;mZe|Z+zHVpHIJ;M zuD+D9^kkvZaCiJS%LC27F~4vmMSW=%y!X(>)O7vz!13AP`4mz-kT+m-{;8bcwDiV) zkOit8-!$hny{+hw`)&46hxHJzdf$TQP7LRq5F&T!Gx=H@`S{b<=Xg+1r9e|*$lnV4 zo^*i;<;8%Gm)b#0;pY|gga~v!z>reb4xIq)Hbr~Oi0pn<36W!`Bcu=3RvV^v!u6#)82e3I9VWx8^)_UeWYs+h;?E5f0ej_IOFqBY* z=MPk+eOHdw@7Tzyw(1+0&{t0eWWZpyMR{KTH!&d%N6%i>@6`(*h^eI|&_v~Abe{<0 ze7Ux_XAcR#Q@!8~e-2F!Ood$(>6m#ca%}y}7SqeLS=n9*yz%dtqJI2SFmsPL4;Ttq zR3#y?vmGw#Opggv*!!d5ocF+e?(6T?N-^jZs~KnSc!_+g4+Yb3$1o_M{`!K#;67)W z2ltYK=clg3FvX{D^1*9OHk{e%AdR3DwFlU89m4m6l)x7}BaZCQI#;B#`bYnIIHbqQ z9ThYhbbA8s+KL;@UCxP@Yv_=i1Xk+g){pDvTRm#|X#^VohN3|iCz;mQ0de>Muv2!H zz3r{=6jp7OS7D!7b%Wxz5vCnlafdHLxWAB#QmwXWd>gb6u#R8D7WdbZi|#qbcHx$W zU0k_}hJByZQN&av<-qIKXVspt$G}7##@egKF`3B) z5tB0t1}8fu`q*p&ZM3> zO8}MvrTA6&ye5@Cu-LCnV_Cw?CNZ&ZRBES?$Q}Ay%_Oid#}nMc8 zEk?p~qMBiiVUzdszQ+mVa8KTvOvZaMm^@~)GKoA-_caQ1n%l%w(Hf^`*HHdJf>~Y{2ZOnZ@15nv$hFq$@!B3KGy57|9u=HfvFIVKR2y+@HPC$E5LW z#e_}_W9i=kK%~x>$X*SxE1ra^AC~fn(49=AU*gAXpZRV>@kt!7H|LAYS0W zW~=ULoQmyxqYf6f?=?ahWF#SUAR6wnOAPTAMSi-WU(p9ILP)vNCf1exm^uUNo0x3@ z5|TT;4K3YC5K-=~Cxez6o@jPd#^mV&Bub zl&k>b3eX@jW=io~ywcTgW1`EUB#Wpfct;oHey)6b5K||<&$QyjYe+^$pPt+UEM!PC zEf?T`nQA+9sZdIl^ z)DC&N(4Utec&_(#Ts*@UuRVnQ=Fr-2Zd3spIJL6N!| z+%^kb`AsTHvmP==;nTLv^_vuE2AgQ(RlHk@cZ+@6GD08Oe37ZyEXttN;UFRL{~`W+>e%^1m-Ii4LvrB1@mX!GUXZl_WhDG5os?~S(QEOWjmk#~qa`+YWdd8|$F z{4So`X7xVi2QT)EB*7&vwoSbf_@Ncosq?8>z*3sVvr9IIsu%|;dc-dK*E zj`&rUg72W{Q`gUqvLBYcW#LCjOtMi`*7BP(^>LLjI7E z7{2cu=b{wNriD)d9q>Bvo&AI7A0fBFZkfR8 zi5+jB9D>P)Q~c**`a$w;!;*aUKz}Fu$5TZ1$YfF#|A#?Byk@+JV&?bWp~rOp5muB)d@gH8kyH;^R}^EEfXUqh78LsYI2+}e*|mLsI^gQl`V)Kc zFrL&TWa#S26Q^I^H+3FN^~lxtcaY+dyz;c}$)~QE?+N9WO7Rt8X&dAu=0EmMZm?1T z%a_^gFJChExRfp#-`l}#{Rl1Uqr;x(5Rgsxb5lPoY0XE1qdvw;>DdIn2w^iaU4$nI zVN1x@pc6w|s^g`@LGJi3fs{2(YZMUGwQHmMa%|NEs9f}InXa;ff=E-p&N)&uqN^j; zVz(W#fiH-JGTw}DJQ4n*r$SgJ;RXS+YR$%0gk{5E*5N4Z3d8M1EW-&ke`Kl%GQnh?A!7{4My&Y*Qj@1BQK<7XM;x>hBP# z7w`kBknVA1Xt%%B)-l{%vn`P9MM1c6W=C%ntJU{i4R-#%&VlU5GC-P6)riQ7S*J$Z zkr96N=;1my>W4MA@dD$5wo7hr{q*8`rChCSpDfb~;O@#QzSjmw$5D?gA7wdXYdN&~ zpFr|4#BF>h7voeb&a}kh0Ru;#4hDGl<0}Sg!#IZ{^y@a|M^nQjpT+ZNPTn;6{ktwV z=88PC_B?k&Qn7TMoywC>t4Xr2_(+{LS6Do>U0#}X^b6e4q`7tMLp>?!4f!BYNVGz; zs|KQU?wff@*;fI%H+sBHhXs%a8Ft4Y?#fQ`mr<;;Y5kAdM8QUrPq>7y{AU(Kh z)2jem6cdwF{!?Ci_uq940ZIn*2}vHQu3aK!dew!`iTnNWLBU7b=n6YBsE(tczSj?L z>Lgp+rHnMEc}ID6{rIKD_s$y?`FKlLEA*~W6Uw?m&}g@vQX)Q0^7q$mmE`>qu8*g1 zp1*XJovA?k4$Uo;Y4n@Q@o|X~y=jGSnyY3BB`G_uBlkgCY29kG1~GZbNKy8_v`>=5 zc9Hm0wW{SH`_VYjZtJ*am$3IiLB98XMv934Shn=rUHB+b7I0M|$p2N|e}?1+xCbzx za;&2GdKFsis-px-l?OvV70Qr(x~)*(*Q4nLWP^I|u`fuMwb%H!Dsk)QwsVL?mr_h- z4FU6GYyv;jHezXzm6n#cAekGt zbWSTT{*Gl6KlK~W+r;t^mdMgWS%w8lk`Ts|7pmy&WG~7vc9Q)Ntk|y~r;_~n?GAE4 z3+$*_jHvQfnVMivv`vxF|9=MDT{ZTVki=~VFeyJn3QmCDwmU;NxSO4muLX?(Z%jqH^t{W(1LhIPplCiuthU^5AisaF=sw(5%^^#E-Hx zUbE4&N3m=!Q|E}AcwW$`0^wjGxS^EL9gc=N2fM#LcqP4g-qw@7GFH=CRi%%8P|^In zSGs>R``a(}Z!dJM%IYQ-}ZLPoSLbCcX#tCCTwG|tPUVko=?{^?-nvO?8#Z=Y<5;_w>&G2pT<;- zi3Tq&%q;s)`flc-8gS0htkyB)Q&KrY1OZ$&Cu7p3>QAh?*F#$(jq7Tc(&gA~dyNx2 zFu&ll_4eDD5~~N>a8~Q5`SXv41JZC`x#3i9o^};>SRo-w(bFU^&$&ks{%hQ%j1Z-3 z+(0&DtbL$cWUyO7?Q6-M=zc!en<#qzPd7T0^e8{nUJaI>ESR8JyME_0S8>;kjz<*y zZUHp36&FM3#AFp*=gPk#;*E1~$Vb4#3|ju)>7|an)D#l_PYGEJ(RVnY z8gZq31KkQt2g7zpTXm?%JnYSU8Gc6-8NVC0m5a~1 z!@n4Q)y~n;QAMSusi{e9+SB?F8vuSm>pSa%T1HpAlE;{}w^Cd{8huTMKw*NN)K7c; zthLIY{8|w_we`LA*z3Gkm{n4$2kV!b7Lq^C3mF zL&Lw~<+CuRY$j{%XKA;l$$$Qh_G)!#{SmHi`l(V0^4IPBj8J9_fM8=Q&hQLYE07;W zxeG&jnY;h5puhdKI$S^e`h!gKg-w!E7;U9GqEQFWBcFsxD+eMhc_h)t+A8T`ohb*= zyAR{lnSR>4$5ee*r7i8+u#oPAT!*-8dUr-j3Kx%$qZh7P>1Ua(nA35#ak(yZvtNME z!^9vcRD+pIzedjK1}B@Wn2Q5wFom9>N*tv4E;gnSQgi(qRbw*?^Iz9>h&{I?X+8wP ztw*L)1X<=zkvZH(w@%6IN_*4@Ad4v@;o~$Zc_ByZe16Xzg!=N2O2Y+C^m}v*{pOP{ zrBe%^hlML&n1 zJG3_0Cu3t{bIJHh9)a`--uiRTZ?5{x%m@!ZXZbyLiKI`6_pEw)y9|6;+JCp*G*sIb3DRJ zR>6QLdbPnTEnDw}z+sWAn=7Z-n1*c^j86+yJSkV$4bt>0N3E|hAKJ|6@I>Nj`&I)} z8w4S%H8_#gPzrN#72)rx=tCY(T~U-vjigjLm>reu4Tb{cOiWgqDlGgbsuRS;w-JQ7 zzbyKxJ7l{=caQNWt#CsJgF9b%?x{x>-t&x;Kj7BJcZCfdH~|?(QY4Pf^5Cv`PeOj< z3IXI1D;MvmY7w7uw)6htDz0pH(Q>(R2Nq>S@|mbfz3lUiwGkzHt~#dt5kE}7!4E5z zz1~;>3?w8q8s&^%YC!|0QJ6UL%^R+UaLe^>+hS+r0Pf4pumx@YE?hn zzw#XSR3^?L6BJ%oA2wR$)LW3l`wTkxLk?_6sF(>k9CDm+) z9(3x}yEpNmcC(c*6kCAWYz_EKfx_TG2r*f7}Z~ zp6sQy1{vXs+LFN5U0ua9ehaapCLl0&ear-e5Wy=v5m-5vQ%KF%^f2JvWIuS<$;f=S zTEzRgL*SU0WTx~xc_u{c9)-xoT}D;wY)tlWS5J*<-ENt3ZA3OaA%X1+qit@Pkf7+%Mn>wr|vd@h&yaweDE4Kd)M>nqI z1g7I*@{29R*YGtmt(bC!D9QYCo(c&Y4?}Udp*w!#vgqQ~n9JDkWpG~GZ^g(xhAlO0 z`Sp9pK28}QQctAC3HL}YWDL7u@+$mk=G`!7?2;Za0NVKGEREIDxVePAPw1Q7z#+CA zf$)7|KHq7W;rGk?VIqFy`&iKg|5T3GSglNH9XNY`tV#yT;1q93jRJnj{;v8bx!6q; zRl&mu4g1wf=A}DLi!( OH@c}O`Sh?^XwlaTS7LS%J$kn@}3T(>I}*pY(bds9aR zu2yBDE$g(6XJr2bvYX+w)W8D&->s zs**6U$v4z`{EKNwxInPc#|H`_8Ov=>fqC$I@Kz#piEF9t;YK5p((^Pie4`g^1+YL} z8hGVg{8|%59t|emQg8>$b=OuV^S9sAL2td`YRl0IccrowKbU8yz1s{?Y zLlOlwuiRGR9tbb^Z~h9hE-1wYm-*=l|IUe7#|&{<`m{Ba$NRwFJ%UIH-6gGsI0*4^ z^Qv?4DtU+o$t!rI^@YUT^f3uRx6rg0L*o&Sb`h%ZFqq0~kHYSk$I zks+4$HKMTeSo3vjQz-$}x>5=st2ytaI~=y8F992q;}<4c^c^FYp>IUtlS zOaSqXbFuU)hhYbm^%cb04j+F$p|#FKvEBzbhi^{9QFXSUxJI{iS2ve)(Zeh`6&3G) z>8iS|TwvE9kDV%hCyw{*b2I?imtfL`B#v)RopR0*;Lhg)fJ(%H-k_JoHeVMB$?ivF}blvBeE9j5|a=s z0kfSO3KhLSm@n$cFr#~WvY#slO*No8>oVi(+3d+!oQ#WoDO%c4`=>jWqw z#w6d0%WTT}s6cLrumb+^c~1ue`#vkq7=w7q-#LNBM(|4(22%@;li%K6{@*tE^8QCQ z11T^yY*L91Mh6^MQu%FkfPyzj{eNT1kM+Y8W~TQ-I;Y0}7KY7oNU{y~`V`6AsH}lL zaNKAM_$Ac(3}0k30-n86J{XPw3C{_MDwf?6s{^KRO-$Ll!9{+#&{Jqq#e~b~0yd1> zdzI$#!0D-}yS!jmd2ke_X>Z^j{>`+HThGN~3JUF!VUT)Y5!Pbn9w| zpm-|kV4b#r#g+-(gHX_i-|~>89ijT*K=hwIRo+z990;L(DPAEffKLzS+~T1W6R`xm z9YwA(I8|Q7=K@P9_?%#Tf5cMaio^L@J$mMsLX3zB+I;&_ZfE*-5PRyc;bRaIE1;sk zA$J(WbCF!KxJID=3r9W3vL@;qjM*?U}96*i-+vf%!$wov*=IkS=aQj(udyghjfi7FYV@8=P zR-V(^c>9x++bc^sFy!KxifBD!dDDsTeOZ%$7HBZ<8~>~(Mg_6Dpt`9B9^oqG9C6Y2 zt+!<7Bw`kuZxpTaPf64jD!B%{Ee7*7Mb^cL3lB|INIqj9epe|#VGg@24y4vZ()zb# zL`sk-SA6-aP;W(6R&rz)G*=G$VRl*U{Z(dz00o?!@TbCtsuLB9XPF9Ub5|O;v+{C4 zX8=-vylIFRmlv!KMfhw%e8g;gGv8DtZTd7{ZXX**wZ5g+r>lYuheBOzZe$90lOfAC zGdws$q3$4|Kh0CH<6^#F#OH5+^pjAdcnelz)7vQoD~y1aaDV*%X>aSff3mCPzSaC* zLgTWP)03;pbRyuhS$NZW!u3&tskL^^o=g7KS>ITTmG!rD+20+xj~)9lbz@W^>TEWt zU1c*%Dibnt)>c#Xa@GQe^(`RnxbYmRRc2P>V=7m0NfK-ACWe_6_`lFbwP}*IcrH~8 zDs|^gk-olL<4#J!szD=-=)r2H@9^)ZMe(7{yJO!m_?+qe-^%;gHIDRA^w?9 zeMo$qJ5~ye&Q2)Wjud;gpbUMqUDm%-;0#&<*Io;*8S)2de~$nosdr$B4FXX>f`q;OX+WU}vGJ+ju)gV$`S0m1u!$B)-i;Cs z8t$I!@Z?j;Wj28vXq`vj)b^Ni&GC58WA5_ncfh~*XHxNRTU9uivq~s_s-ol$!LE3v zBocdDVl)&fZfd$#kmEteW_-}9D%9Tlg;c;ID$Ud(CIrBWubiAi`ok!147w!9wl0*W>##y@#ZdyP1Y?mGMf{T~Svsum+pW!Ps5JhGX`M>@?nc1hL`OT>j&fCiZZx zFmQ6^oki5~zkU9%=dp|w2w>NXHS_RqIp9RM(3Me_Nnrm3YUz!tl8x1QT(uo5;t7fu zb~#Za-ji!=FJMCj3L5PKht!j{yNk5a=IXdA_zE_-Md4Y{+u$@feK=Mve}Z6teDHlx z)VB9wg^O+%J{69_661Z=3z@lW4s&U+L&vdm5dkE}=g}feu$fPr=ax5= zCPoNT`LxKbaO*3exZ_x9P`3ENh`Lr?J#q?{smp(9vJ*d8N-pSyfZ9RbmqXWX1(tER zW;WV9>Yfw%nE|1Dx#X>`?;2<}w)6A>$+z$;;y-h4J~RDB-+3QJ9V32on5|m(yQqqm zFbygreebF^Tyjyn+n>#rcM}s}4Lh+e+1GYnAjs^6yjAo8;ss5w?ljkU7_~`O!k0+* zvG%<>zjiq!GmR8`OIrov_pY0OVG|A~894j(*WCq{9%Hk#W1H)l;GaGFp5aW`f+)|j zx$47Sfh2vpa&x=B728p43o%M+S=$OFO0|BJ_)R|4%2d@54=f!kusL|sip^rPfH38~ zdj_E}MFEb2b(7l-ePJ(Cd$bx7d|Aw~wKeIx@--Hy{q-_JdXvS;m8brTb*w7FJ`FC@ zuO6Z`(~>GQG>^tH@6-~^j?IurQIo!u{Z4nywzUB3lVAJ#O5Mnu`t=VfQ1)dJ&Eb>? zv0`NfCw5U);g zc)Q#*oiJ=CxM-zOt^t}x#^@>sP7Cn5Oy@f4%NsV$rTM^mKcq$*J?AeHdu9N=%YtNP zfmN~I;6W{b7ZX9_EpYkEID4o4*S}zMz=A5%`^lTwyeZ_d;kF6y#>z6fgJc{f(4I2h*QUu4`+ zU%FIa%|Wu1o~m5NM|n`HI!1^;9@i|*XkEmWl}!PJK-h`7HXhXS=4Gw`PbatUj2@o3 z)DxAP1$8+mPZ+*5PKXb6n@a<@hfocLd<%MlH#8mxdPYC~(ap^dBZ3Tlo-#s?!KksmtH|igqo-;%#Aj)9JnA~^n zM)>oC{L*D-G|-4FC44`x+d`e&q7+I>2`mROMw{`la|a_l>KxcEcj5j2u}fL)D27+N z6n}~QfC-HbYP8E;FmX$dry>)V#W_o~Db?Z|mmA@O&e65J@wK)(Q$z18-%TU0xOe$j ziBBllML~&%+lFJ}k_&qa<;r31w7}dsu?i+wg{Qo310#iT%3i2Be;gRMdb8C51WN<^ z!)kM5WPqG0uf^D}b+BRkndP^WC|AoBi+7QcF9=Zi;x26Z*s`=Sx@uwJ_bc4>`81w1 zRac1=`TDF!9grec9F2**spX7+Ng`&TCL{RV+?J3uez!ds#pxYXc*W__{g-^CQX_SQAlI;|%M zBui-C7yTNyqlxpGUT^++YnboXg>Bl)5IBk2zj!#QUCgEr{QH_dj=aML?oGPyKdRwI z`}jOD8C;+RpJNY8gw5ZGUnj&Oh&ew0;Q3XLhZL`zf-}JaschDO_jU&+ehWweH$KPd z5C(E?1}OaC(%F>VTMjP>M7O;0hO-(4Xmxmb#t-F;`%AnaY~tcozGT1)Zi=X zIymWvcdz-tf@$dn6^Q7`w<|d(eMBN6Bx4fB4aRoN6~Gnt2V>Y?1iqH_2}7CY_i&B| z{(Q5z+A()C2gqMMode{*#=Xhyq#QiPRhar64%e%KT`jr>317iGK-p%AxJjxgrgol`ZCC zRfTsJq~v*k58H?%ISYYS%8lWqP|=^gjx;qK69xjE`mjTd?L;qm`oOv%va+y4(J;1G zc|OQmb)Jf$plRM3I22_O8g8!EIyshVP+864K1W(8iP`eAB>&sC)bA4IIk_5!sYrNS8BD#)Wj-i;eR%Ix%nzk2BtaCw5r| z*?v!!SLUgJ-U?#7ZWYmd%PKHizXdRMf^K56WT0?ay~p{|d%w7@a-RTgF|lu!%6*)!NmS2k zjP7^8DG)ulJ?sjVf4Zuh5BCV?@v=?4MUl#5FBYHn(-#?zL73XA@OXt^(+sjQRdcTF z%-4#Op^?8UmQiD4r$^k_0pfGY_@5ninn1Lu_^(A%7N%tu?L6#Vx00^=ejGAw-y2** zBi^DY7#3i(JU?TJ%}W-UI)8&ffFQFlQP2sY&@-T(@?q# zIxS+@uI!D+4t1A8&*1nsdE*pB|`==NTXX}o^a9G z3q-vL5*7e21OD~a2d6_ z%A1``#!F$_H2m6KS^;)G4`Y_ftB#6)`d##+`6*%SYzCrQsnxd~b2Zf(cr0$=wbz4X zHv>y&Fj5jaOcqZRDPf_!2GA7E7mL41yljoafHbeFTnidBRa#bsN{Ugk5s#)Wp5Qe} zqiMKSnQm@d^5z;X=rfIA{kwFAvJ*rWgrG0oeyd6YDJ_JTGCDx;+`&{zBD*fHbuF$Q z8``wO2!hGK4%ffqQK6;o?`!*m?VgM$RSan`=@ymFuq=&j^ptyhOeu=j=wCAIjy@Ix zE*f$5z2VTeR|8*klNCxyBkvQPK=xX6tI>+6$|$D|v&pO^uXfq2rsukU3N)10V%Iv! zyiHp8(zQLo-@&X*8)=o2EGy;qPT8(V;o8qwRYtP~0eLG07oZhL`z5lrwl~jgc7d?`M-`#zP(&^LQ?$)R{)7^T zw{3kuWM^Q$DsGQ&+IYZ(CI0h&fLS8I#d9xrXk9t%ILw$>B_dSQ#AvIKHx^D!C;z3{ z9iLZv=spc6oPm|g=!i0IZWVdwztpAFUdA0j8Xqqz5oNyb$uJv7ihEp*?$tQ5LI8#x za2KAG9X*=XQm|o%s=#RmvHInPMab$cg4WLM{Ai_+F=+-;N>XDM>N|4L)LMLE$c(v7 zYNF)#-DI@6L1$P?MQra8qfV2owEqkbFRDu%zsN2Mu1S7TkvzZn0TzFw-1N+p59*fn|GeI6kY-MqZ4SY`}C`+(=YpAf+i9`Z8u{ML5F}Q zLC(Atbi#3BVPoYQY0|RXtN0b~DOT&Tx%T}Kk-QKfcE*j1a3ZZ+`JJsACt+E4xZ2?u zSVT-3qci@QA&KDy@Y&`I{R!s(i0YQ6Qw23YyR@Sqi%Ja4)(&IWQ&bKy*Q!i_ETsOS z&6ersxl4>E5puJqI{;k$bCEvmdFw5FY5-6y>SQV8V1$TwSNT!OK~4){~R8 zp!4wyUR(QHsZv*yz4pFsn$LYBgBjByRTqiXb;^Q;@C`<)#3AEvJzo?h-#`I9v zgtXL(_RT!d;)B^abJId=3w67e8}5_Z$0zkq`p(>GYKD;R5%YFvlT5O)!(fe80CQ-z zy~g|;w(kW~&1FAXDgCkiUZBu4M7{8~=H$Jw?LcQl{q?*__GrI0OH8J97VfpPR8e@G z^=Rs0uPRL@H7O2=ACj!c@_Gn2m()!c_9hraXG^qFs%$Ydjm$HeJp3ud=rZxDiI%FC zaAvP;i9{djw+fZ4q#Vg7@JMc1kZI7>Cd-2tgCv{J2$Ij37&zh^#|v*DwD_c0Sc;SJ zKenb19xYkMu@4B;)qL${wngrHb5wfF?6iBtM@GW@y9j|n)J8N z^Rhfbrd6UBoR7KQN4zzmWLTK<jlpOIaS|Y!EP8=1G=5(>Cl{bhaOB2LT5Kfcq#9m3F$ zE&CnLLpNKpc2nBHDO}KCfcW|t`s7RuZ}NAt*86VHA^1T7TDf1J@EKQ7SUuoRzW1`c zwnr}vSGm^!ZGj0U&k=K2ZKwR-A;uF)2*4S(Pb?>SVd;ZVUNLjE8)#k@h_`!8B7-kPBEqI%J*Ur8WWH_KfPn>IOn%Rlj!D#52=QsAxo z6Wf~9Lq=C_dgoY=t~{0`RqGUKp~3Il13YRa(__+B!RMD5#$lsy@%_fAlWv|nFo5c1 zl!*M#qT3p*j*dYTdgV^cGKC{%38i6`o-qAqrdyA456i-Y#0-t| z=@tPS>Gi(0U|(E$>5MTi?$s!=Q;u-j+eO`&gaOBMN6VsB%ePy53yO&5m#5g`wO(SP zItrSUBf%??IBK+nhi%-v)bNDe8pc?wNMh5<%iDIE_f_=!_cJ%5w%G?vrh{2DKHhUZ zKTQ$T4EZ0`TEm_Rky3gL9|GC`(!Q#O{DQXon4l` zTjNyz7K;bM%9w*qltPSNW>A>Ay~v19AaUg)swonZp1b1lH%rCabR(}iB$`)TB?^t( z=qnEsUZSQl`v$p+<4}})V z|KBR#zMIHxD-(ilKS1YaqP?JUF!bl>rt6gA?w>iwg4@*v{ zY}5|Or8mF-kJB!7Q4>WxxJRd(Z(MAYj!k=@E3SOJh3x_zlJth^RI` z_?(1T4iefQfkTM!nzZya`rp``Ee6U1(%=+pA(R-r9K?t60{qs>EsV)d z*})?O?v%jM7<4T6+6ZieZ!?}}C zc0zNn;?{aS(BJ&Jb-oksza-834okWkO(k(MKsVTUsK*QblfT`P(B-Y@$PJIJRlGK$ zNrgFh-<@FHW8aip6^Hsc1@CuImgJ^iC5J@$flB{_;}yS*MzqugcRD#Az2+GuB>S{H zm{K6(h@5^>+bBB`#`u-@=CH->Wq`ecV06JAFgWS2R}Zr+yC7C7?7}Ii(}{?s^s%&+ zrRayma#=21KHz)Y_5Z!Rh|LPEVc#mF*jXev2)u2?3{>1cV%y5jm2b5?ex0>|i^DpN?~ zGv0@U?0Q(s)+@>Qvqp6*hT_Z#T}KPP{t4YB=*Ro^PgC5(|Mv{0c77o()-z6J&!4Xi zVSFwNm@(OXXrJO%QGs-i^foAd7DIgM@+XG2KDA>Rh8&JY+zIU`pBZ$v(#*SDqgJ^X zz$@EPkwnH1+$Q7QSF#q=iUA3qu$orngQK=L&Q<>6GawL`TQH&lvnj=; zw1YR{$}zCV{7;oailPd(|C^A$W@;yVe|axqX%TGp|F)!=tUZ90atq~YIDWF%WGS81 zdhfdY>vBx9u6=vWv)hTxFOqN9d_tb{%h`#%;)aVW0q&B9>^Sg0sK1fza*Iv%HU)%V zD@Mw-Px^IK^EbNNOO-v0_NjkH>}PcP@kvS{SNXf9jgqc=n5a+fyi-qHWVW7p`SxZ1 znvVdioGsN?%n=co_g&M7$xN{~t&gYq1#B}DoR(H9SQVTm`B~vzwk6jGD0*ps`3DT* zS^#XsoLJ56F(qOar>&Ma z<&WS&d=jov2-hmg6KsvOoB@dn59aJf@~@ z#_(Y+Kk{X|IL{sQy&GUJ0fe!6*czw3lynzV8U|Lr-@l^KsZn@XKIW_TfX|Skb<^DX z(JRfkqK)?a{wYZc(6#6+f_{aZQQn&ZYy0x}E9xhamyHC&?xRxKO_n0IruP1>kNDj! z?rgW~JAL36^tM6`=_7oEO2{u1cSPehN?Gy&-=m)u1@P*XJ zxn~>v_3ND~Upc~gZcaYXWO+;Y&}k$;V6O?;jV>!kbrb#%Yu_E#RI~L9BGOa@q$x!} zK%|5sC|wam35bG7C-jbVrGsfRxZe$la*#Ip;gyz5iXF zhn>l+nYCw6X0KVZX06{KE(PWC-5gO+d;?mAp4*!SaMSDU2m5_4z!Hwn2DL0KiAiqV zglZ0;?%-z2H?sP)s>R#+zg4!wPP@M|1Lw39V4+sDx@FHLw=B z9^{mFP=q6?Ph1PUFDUuprhds19&D)amo5@IHZ%ku(j1~^>c<-nV;#$f%ZNvsyV=X{ z6*!Nd#9%YuUx!2&I>{y5QELWQu?gNoYRzj=)^D)P(kL-g0};Cq(iz0T*T7N5rwrWt z51|fY&CB<5$&v~qX0;A9Sh%i`8KTRHP~h1yVSKz{gsFN;9z#8~R4h|uN6J3Z0S@*G zBhaou+oL>Hm0)a(M(Z&D3doZ3&q)Y8I(aUKNEjQKB(NTg!-IBFjIcbd^Rv>Mc0{e+ z=plKus}T%zP>z9Xf2tfGY2^@}IFh_-z4{%MjZ6|~tHsW;7HwnB#_~-_*&FWcDowMC zuP2~o&fC{*Z{U>`*BWriX~8!th>LXI8zvUEM5ahS4tcPP20cgWjZZm7-FRN21gT`V zymP}`cic3)j@&K}e7wl@N&cRmPNv+Oy`!Ikyt@g21h`~p)@xZ5(YkCg5NTDvR&~>Q zfO-0kB+Gw{n8&L+e5t5o9fy1f&@0Sgp>?l3zxn%~q9w85TXNPGf+)678N+W+YzpZL zHF;jYSA)7ll1ghuZo)(EgjF_&6tg@_Br;w0&5#H)*J}A9wb1H#P5rA<>9@dGpkf@; zrY=2bAkS6uJOr*7l3fMWwFbt7=crm&f57*MD0n-TiCuF?PQ1lfj|JpBuZoMkxlj+q*C3R%P1rp;3 zBE(MazEnY-*%ZOJ@VS3D$I~5S*F2BCah>Eky|AU3ynI*v=#S&wb-Hts@o#dsN-?V?)()Hn6=&JgaC3$;@7_vxq`Trwd{GiSI{!)vyH_0d<)#P^bz?X zqEuQ-OI&T_%xfH1l8Np5>87+drpfR;XNoyw{p_remmHGoj<1$a#XBb4Afi=xa%c;; zS3#3EhOTm2hQCo_2Q(FOSG7(rJPA?@$Fth=ZSvq`X*l&Y15Fw@He2^y(8~y6y1!3l zhA71i*27^r7Pv(sAS2WDWIF3=?vymWC*08pZM_RtrzBpD6gMk-v(}c&iVji7{@ea+O=T1pWRvT=1*`MT{ayP&G^(xut%gZ-U4^`kPBEpbvD>$h_FVCXzu?F#JdWJwqI z{lM9W*tJ}Nq*UX*aXwkFrZ>;WP%|qU!Z;{T@kH1j-^+1DJKk-o8pb(bwI@x74Kq`I zG7`+*uCq8URuox!EuH#JX>*uv8lf^`p>gVg`^O@rBl&bWEyS$(TY{^ z;u_~cm7WB%n6zo(pj6oJ7OXU+?fUpc?uR)$E9p{Dz8;2-j|q<%g36>T_%AxXF?KoG z#n8Sj)w&uCyOykO{`8f>o{2wpI%BWa!%{12(Tv!K#S{;g4 z(^3>R#2Gpi90Okr0mTaNyLz6pZpX91re?Vo{Ge3L1`1Byv>FK zZ0q0gzRN-j?sQW;V!>3vkveW;Y4uw+_ls?VqI6zHuzA-WBtMab5trVavi-D-QlNI= zGgu)dtR9b~)Db|uyb()wuo3^*!SBPA$D%NOL2r7ZTsj+B)x^$J*_L~@q`BP}mY+YMp0zX~3zcPa#>rJDPqH=xQqf4Ak*RZ$Z zb@F}P<{J=9vYA>2-Djg%@5GrKav&qk4sa2Z}xfcL;qHtosB ztIiLGcFpZ$hU4}U<(F#6hTRU*3Q5mu?Wf=M&kjd>LxT$GfhCI^9HD#-O+5qu#`CA@ zSJeVeb4F{(jm)7Qk@b55OT2sbt4e<488buQ5GxVsN9VpK>9DHB@i{KU?m75@LRId| z!hE$T)+g!j@w9GfdUHh_E{hd@xMtkFcWap~)T5FTYa|oqAkqH%j*|vy1JNfabTusj zBB$tI5D*RUlmdZp-Xg3YAT!DJI?jGi$ z`1C~(2mSNQs6obz;Z<<_Fb!WG#1)oileOFTadr* zOpBz**$;@*a2j^+XR4Q+mXN2SG)^&w(=Gtl(yzmA@b)ihs49HCZN;&GoPyj8%Zv3% zwvrCy+cquriBK#-$n-~c&cEXkSRs3q8JI^0i2*kfT3_8Xxud|!y^3^c@Gqa6HTPv- zjuY8&EpvJ9$7S}||CqF>x_#dRKktPh>F%3u|2hR9YNKN7)+uM#sW>0Onq5zd$ZmXK zWZ)yuqc_KwcoQ5Bvu&hdrREC}HOe-a>CV2zz(=IFxxVT+f|j))&6cC)uM6+4RYV6R z+;$CKrVc_!Sa_Il)FD< zvPLb|WdYe@qxv1!cHTxE)^4{0qdw%LaT@6|)WEl+3wuE{8d@4_;%xBdoM(*u>eFRX z_qNF7+efjavkTt{weo9jnfZ+Z)v#hXo`@X+Kb|K2$C}>hXhnnCuhDBDlMnPQ&J}En zyLQJ1P%g6}br~5;z1DH_fuH83X7;5XPPIH8`!__%A2P=#G8BpZ%#uFX2uhwhX!@i- zyRb_2LW*4dxn!}0$+(1`)+>RiA}uK~y{HYA`o??wH!tM`865PT|=@%nsOXb_Ilr9h|XIsJ_O6whRq%UZx?Lk|r@3VNU2;p9#Ilh_!2j7MJ z)Xgj^UyYr)Ehpn9?>q+Y8p{Aia$TcfOwY>8{B$1GwFIgPxUNz!APL($32KtDQWUSI z)TN}+0<6-|jJg4QBxLymbLh!_*=Qf%{;72Fp%G3DPbp1@RpM{j@=Nzrs5b*Y-g9tK zG|QxOX1*u!re|-=b^71}mIdLS(FSgGw_d=fX*vf(I#I*KJ#=`!0s*^IiDv9%W?5oK&sA}ssuywG=J zz`nNpZw+=$CYviS*QG+bjEH@1vC%V$f5h3DF`!}tDO5l2i98M;pK44}xtN!w zl-`bJN*{0ZWLas(WIPTl8L&YVo=qalH#9CV0+bQ(H#MKX>%;tR znuQCrXEa2$74~0l(Hzs7tGKXZJ&HkG!@4;2PgF{3X)^V8hOB; z4LC4WN^4YLzx{P$QCLaFO5vC9sEY&|sk}{s$y!sRC#BH}FJr8u)MZdvD&MNO?03B? zA7e9(3}vlwZm@Zf-eEJF?2P$Cyz-k^_0a1*Ft-Cbh5P%j-UNX{CRaq6qKzDsxbng% z1dLt_0^Uey&{gh)sK=Yfjuy-&cdkc$8#XGamon7{_b*n~H;k_S%~;V7xN)AbcyFpg zHj>E^jTRsRx9A1bVW35ouk)$lmiH3>5|3NQc>4#Vf>S;#30j)hDvHlofEDd+t&xkd z_XcF{-fLgnow!i87i!vl_9`MJCJ!}1nK}w*3YW)wXgj%uugyH8AS>I_wHyzB(~&o1 z^JH5xZcz187no;Uy#cKvvwyRBSf3Pq^;tLQsojye8b(>1lrQt{(faR%%Ku1Q zEl$c%dB-wdUIh3;X@O~UPGY-dV9348- z4gK;H>c;|Sc_PX@C3H9=Ww7k<{`u+$J4;p{|2SXVzTRv5k-?ZbHs4UMAd27;Th?v; z%d=OwrpFmW+hk+dft>xA+`4oJNvZICMfI+VDbW-~ z%{MZiDQx<#jHvDAzkPm3HOf8INLIVUInpgRkxBt{e2~rE;JoN^8x@E|JY0{#^GqzG}Fm?j1m>1`gFZW>QLLemQ#m zpVX33E?&5SELZ(fj8(AIyjaCGv6&c3&xGX{>_f2M_Z%wW4Q73$)+XsqrNF>?ZrnsEs{Z z6K90k;fsae)O!Hf%NxIRdr2aVzS=pcvtC7`#ZQqDz)|&@>>jh$tuCnwUJ8?ZM|90a zy`uI?$|-crM(waqt$s#0Dt?PfVm`8mdL(&mknM}O9~Ak~zM<%$z^%D4YB zyOZdm221!Im@vcNUk)Y{i-*VRjpvwJrxoQAHV2U`>@W>?g|Pw6I8N=K-G}C^SpU>l zhEVxey(GDbeq1GWgWOs({v|AT)J!Wp{oOd1L8|y9;y6nn9@tj9++4bei)FhQ{iL?)e1~YHv!F zw9^Q2Gv!^kW#B|0Y8Q*IFXuJ2w`s^9Ky=b-?cr>s;)JMIur5Oi@KFP?^Y$=>V2`M zIkD=MeBt^%W1Mtk<&g;Svin*Ujir|W03u_#&fIP9#xfLYSkD%QR)+a%srqR25)=rJ z6MT<1Bq`9?F&-m;_Tf9aHW{vaA16`Ke{iNv-{|igbeZ~o3)HT9?-%?^vnt@9`o2u5 z;#M2feIyk}V|c~2Atv;G4(RJzW$h!AB3hKy<5nqR6d<6kolKRQPkEgWLVuAC0PR?M z*R=bjO5a3n_^ioaXv>36ir@a~5{$l+N{OJ{eVwslk6w7A5MA`)+&7wEs5CKDdZSfB z<<8s7NAw`#03_cPA6A12Nmdy-gC-pWfR;daa`CJj?9PwooP!3}SzL}K&K`lPJu~Vc zw>?{{bVAfWi^l5K@Fg-xp8>^|*geHMp{)nqyLq!mMOKImwUd+$ zF5&GG$WXIlU>4sBKHgU-=$$w-QiiaatJN1ccsA$^?pj;o;a^$-m|U8s(BAgaPW5M= zPGdxPUN=DPpz4X+W2v{NzrJqNUv6WRJ_FIL;BejE@P~fvWm!2WS8zv|l9-<#(OYwv z`}%ndyXU#9cns(HO@y{V2%}1&u#38f;C(M$)7Rg6Pn%ajtLUCty#<0uU156i0WIE3 zFDj+c(Bh#9Sn0a^9^iewu$M$I?%W@p#EI|F2%>Mv))H9@dQ3*C-#s}^ki@&wTkGCn z=~@Fi(&O=O-?~V$lH@vopZjIcS4 ztuO>9!|2_yGVJ#P%nFz&mvm`bcWe61DP&(m#fySs_8fp}?))-df&NJ*m0&R|QwUah0n$8%~rZ=ZY1?M~1~ zt(QubtuY)hW(QEOjPDF1#toqA+Jfi((n-RGzYZ=#R^DI1A8*;cmVFEpPxAcfc2)cL z-9`Esp?$cM^9M+3i2{S!2oQg=w3r9c4CM^ZSEn+ojKE6gkHk=(FzEZ2F1Ar^t2bcK z12%1@j0@RJHXf3|f64jzc~3Te#M^ioK+Kz7U0&$>3UN>tx;|A;qoO;Fkjb%e2fO_v z*oAm6{IW?NT^PKyw}s7t6Qy4iJ@3|^6lIWGH1w}WZ6sI33Q5A#+V2KTNJsiDZ@J}`-yYw2I> zmGZm4JmF$zV0Iu{%hgd2z8>p;^AOCn!PD0aoqaW~@XeNOl*AnnrFFrDQOpgiMzA~! z08tmMrw)urQD8ll7Uydh?4?1&`jUw=j+}loC!UaBRPPWAhTN{ifg|HFBe)j-*3wH> zRDO4@V~$-jEv!BrrEroGcx%v{9<@rL>9azdrgBdpKysEc4~|L-1ye64#Om zOoyD3{HuHMzng~OMQba-XP|{hNyKYs;%K&+DTXMNPOv3C5XOUK1>N zu@L2D+An$axnGUpcGdf=?F@=x^}PEc`A>`0Fq&Uv1hPiXmeBDG7M!Dl%i(0J>3_#zn*#L`izPM@O*$#{=zg4TlX}^j7RYB{y+gQdkL_&sdtI#i?Zf{c7?>l$Z(>M3`J+e#W!vd0hdMf zg@f6Mtid}zq|wn!-4LXL?|N7$sMQUyb6yq&NBOsN4-{u`8I|5nP-D`suD}&2@{Oz1 zKaPD4x*|!G_x5?rpW$`kf^{I>^Hr@4wM8w^ZGraLQP@nYdta>|6Xsgr?LRLHKImr? z%u_N|c667dRv%jl6AD}V^9a|5DtCoXT}?2YRyUFde{F)prK|x9b?#IC2!@p)&Q6r0 z5V=##icz^!gxM^R0k*m^ zyj%Qs_^dbuI4^)396xF+65iP+Zzdc@?QKOuL=XMn@?8NbcwZTib<4Hx%4fS>K^}X; zn@dx^eVh^BfoGjw>6)!`0|v__u|1ndB_(36dV~lw|%GQcAs) z2SFs&FiYD15lJ2+Kj^QgiD6xd#m`r7@OCvVl9*CICjG2drZ@6{A~=eZcC@rXA`gSP z&j5Li<#e&IK~xE&Aj6YtD008FxRro$T3kWq@xsXoPIu&N_@pS)RVy>&4-ORA$W^+( zjs5(H-2?ApOP9m`6#CHv55<(jAW^W78aMytf7M8E$?Ku}w{#-zHupAU(;~QO)o5r* z7_&{X$ev`H^u0kMYfTtLICtPWW&+g+FIRS`SK|3EogY4Ec@wx5Vsn9K|9w88w{4v= z!xAw8G$G>j2c%fKFxq_$ZX{t|b)buhI$`Rx>UIsub~^s;{pIAlh988!wNp(u#DO%b zm0+1Vv$Lsgkdj7ARxm!{eKc}Nm%1{b&SiSc*V$#f3r5>F>HnfCD+Jq?8O(cuNB(wY z|JsP3KCKThXFKgJFt!-Jhh007e7-k8OO_u|LIdY`ZT%<$AMYW<979pPue}Fz=SUH7 z^T24JxIP+wGS`2%pyqDY7?nt@qSO+lI#0bqac%j|*Yu%b$%wHS}hzkq3@+ zA@@CPX=sV!Q8S)bq2a-YMIsu%2{DQyo^Oagl!095<%+Iq0DMbuo?JSprQ3N8&%h)egh;;bo@wVrCi>*_&F*c-tW9xm(TD!GM-`xG!B zZRhn)dPT{J8=PuKSW|0?HK{c8&$qJ5+DbVI3l0Dq>t zEnU04KJ<^x4TR|~dp6(THh{Vp``?)W9n`LPTj`iXE>RF-;>woWe%zp)3X;3NWfeu+ za-L6fp5HX3Wfx3_YGX~+hY2wSf3VU4d(-LDK7K`66t9%`h=}1D~bjae!1vjI$@fp6Q(-B*pjs z0kjvzWQuIEe6N@^g5b$39LCm{63!&BajFB5(|uu7*mrHs+j9hQ2j2eg3Z@!drcXdG4%}}wBY(02EGLD3Ct}-c za2V*C{E&^sMjykfkV~6Qou`E}jt&R<#%Ca$x~MzO#glzTkIQd|oEp z{ZinpxTkl%=mCDY2hWKXHwC4BeevL2T1FS4Nr7MpdI8+ZzsInG^V9RrD64)xBbS3k z7h=eVrrc)teHYwj3vr<6%E6lCVD^|5n?tbtx%6?v-o^Q$>9)A=29I6V=m*^N2YZu; zXsG|F$h^@fl*nPo`!-sNq3DKRa#{@lhYakjnKp5wgUG@H&d+)r_vAtCot953I$Z*F zS3zl|q(WTM<;N2ax4j7*`F?;Z!>7n?_bk^u3Z+lGAR~4iUT42J8x*Bak}LYL*lYqT zS+k4NzlO!5>rZ_lZ$2vv6(m4LaUep|z0`{u*(Vyh*V#~RIKH6p_6f_!OXGZkH=*Gh zF5uY8*h}&d(X~5c->=WY(cbXbEa|gnO=X5RvG2EXdP>88sshQGNL;7m>J&sexFE~O z3Dq^bpA#)@;dp9$wqmDk?#KQbA9OjA~?rLzev-FL*Dxj6xqt2Ok zPbVk!68pM@aEfeVA%|TosnlDg05O=-H!K$N5}8ZFzV7jxlxde8I1vY3U6;rXIzSm7$M*n7WKn7KP#IVc zFaIRH6ELsradn&JFp+S_ge31pB8Y#u#`s3b!p(1yXK4lW2g;)QW#Ib`ZlLiA4+&R~%3jGc%-{1-%PZq{ z$_}tFvAjrk_s56w;~Avq+u+qis20C2V0Y$f=1}`QC~x`=0O7^m9(sQW_~@Z`X>C43 zci5}8xjB`$rNw*0CrZAp;m0lxz*%#+YhzqN*d%93eK?g~O5h=1IT#kOHhK`}+@#nb zpLTUZD5;pGc?;A1j5U?lJFw%8=K)frB}m?>?De9`0g5o4F#;huFopKe^qGl3gU=U3cbe1M+IsT z5f|{sS--DR5BE;Fd$bDyb5*jkca19r+EWADqI~4&*#>}ip}DI4PiD1_7USm&TF@;V z|B_cDx_pi^25Kdp z_qc!4iF6vyoiPLt^4}f4vhD5PBG-<;S1(>!jH@;&i{db z0aN#~d4!)v#AOV{f@*?a)6aIt8yt%}=h}f8fZ9KXo+|(}L0Jv{i@!^J*fDoF5xn$U zEeIc(FK_z!yB>NZS~4NQ;#_gKJRab0E=d1dr{GCEtJ2ignLF1gG?=VCDCEPtek&e; zOX-e#O=WHQ{TR@)FN(*5A{c`mLKJ zdMXa?>bstoNjcbtp$F!7);9DQ&hO9ofN)}J_w7Q&-BJf%F#PpsxS31Me3`WH3dU-> z-adPNb<zn;$MUt*PJvph3iMQX z>|yc0_(4*GrO!^t->oyB%t)VtHZdq!)~l3A?plA5)@YjN*)rVfE)+KY5Z-^WhW(p$ zeJSw2cq7`YKpdtV;OsN!w6AK;;4U$wo!)!&XW*R~L>{jnqH^$Opuab~Pv2gkvfT#Q zxc|;b8USjrWj}6kYUxn;V&dACf89W4YqyQHvmayPcFZY3wIhf-)ea^^|EKynC-P=c zX|b0B&J_@T4RTNcX`?>ZU@~^@RJQw`Ej~XdxbhSKi?CzP1rlh~WkDt7wFa5hwMRdP!#!7l1Y!zhHB+OS@`CAu?`{ZpkgB-_VbI*=*+o)ew7SiKzs6-{8 z)7ZkfV<1rxdLj0a$)$jx!OubOd0Jn*d!ioZTj{_tNqX=k=C0inS@)DjDP|7|_~!hL zeO~qP@m4De3gx!S$rJlK2Knd_C$@$J69_&j(!FzJue4<6 z93D(ptizC^hZ1QOAwrjWmln=}YW$$UA$i+B=|l1gAg>5qcW_zHO4Eh=K|NEB>t~#B z4;7jC*2Z>SE1hsJz~r&(I>veo`&huWGF`m~xiI|yOk$g(z@W*7BIn=r{)5H8lfZv+ z{&)8OEmvzE=xYF!{%H$9(9ixfl^;K&qqVoG^Qdq_K)_L_*SYwNL7c<%GlAe4_glqY zhStY?KN}4HqX_?B!lzHTKt?JdfQW7JAA0yXi~pkk2l@9M{+m2RS?~90uz{8`MY+ssS+CE49FGC;vzpXu9hVAV|9bpWbG+^uV!Q`5mwF(B#ir7w_(3 zFTu*=tQ`J~f;%KxIh|kjxckreVEtd{9;o?Bz4lgBTk1TfCip|S^jz%=8&dspLJq5Z ze<4^x?sEc+C8ARlxbDr1_Th4tBT-m7B~6j-FTAFheP^lo9=n65?+aF>Ix!gh#46e# zBWUa!zs=>0ZuebQnzsOX`cEWKEo= z0%&3=EBFGU04Dy#x2czeqr`MZH7uRJ2yMVGXL{%h`^IoFYba5eb`#OWI|*NcMV$_p z*5f=hcZ0xFrpjND)4kN{FLas~`sF2@p7F~til^Rx%DvHY#PayVv#y=U4+)|ThD9hU z&7cSdnCN+eOuN5OD}Cvx`#mpGUDz5Ud&yfuzmtGzd{k=Ji-lYR8cKB86+FU0LSG5R z_9vXGvDqse;w~VQnKouQcOSqyh1ptD#FY*sQxEwv#5oI*F zS=|!UbFylwY*MjC4&mEK%ax2&0(O3uNL5d%uDz}KhdOc9k2V@TG?t{W(SWODy!yAO z0o^~9&<_~&bjIb?-R~||O4U~8g%ljTdK(|~w-Vy;Z}m3-@Xp0vlUWzlwf_&bvxxB@ zF7}mwh}oMp|Eh}mL!9+f^9pXUTWe<(tIt+6nU(GcuGFo;2^~+VYP#3=dZ4n8G9lJU z?PZvrRz#A*Hic0A!7D8sR(t>r7FlyY%!)0PjMN2?^-?hRySm6T!Nanwk^^h?bt~nz zLpCwAeEEDma<5|~srSb*(LovKu&u;la+W0ZJWB28AT1KPF^fp*eo%cFv|m$3vuNzW2>8vRiI}pz@jhKG_HePBYx?~%pR&MJ@w44yvi0lhP zEdp*zvu~o+B93b{OX}wL?^*lhrRJgM=g*0=nOXMY#?&TKwo%sGn9m;#dhd37oO9lA z(+YX~`sK==Y1cu)^w5KX?}38J_o3y573AHbax5+)I|1xXvBrQq8&MstkkYT8$gN`iZ;dvLq==)^vJi`CW$7L1;ubnGMN<($Vv*Er- zJE7}mXEqEWvk~k>i{DqfBkhDQJr^A!eJ(0MRC-OD^0W%J*Kufq*>J?zEOu#?EH!%2 z=vIXlwtw}V0A7Vj>O(Uke;Kaas&z1_3GuDd&-bCjF`Hvw8FOm|LQ*{@w;tWd_d)n# z>4^&!W4DbAAR62(?G=U_oVT?p*y{aRjT#-655=6vr&A`Qx8It_e>T)9jL%G4y^l?m z)OY-9A{MBNxUVda&vz%%!8{J-JUx27rQE_Y&~t=$N}oW4$WT?)c+ZP>hab*RowZ6+{L<-F|bHBt?^l@qGP{22K_VZW(8WebRyI#U&A?G4+ zoN@`@3fmVTq0jq>iGS%2;(^BXa0y?oaAkKANvG+tY73^KD0-g&|F`kwuIA;K_GcGw zBAYC&lSJ}y*qcZP-C!FW-bTCY;I|#@ycqdd;`i@`!jkxSG?&8{yi|ct>R$PNsD(BY zxD)usul-BnO%(hicEA%9O`d_KH*sWiG1mfi9>AwOo1C2$X|B;TSbdW!? zk9F}cBXKZ>dV` zV&rcGP~f+bs%;2J1Sj61z3mMv<;+9>XE1lxMC92)83Eo(*KP287*G!AHl(17`al8E zkZFQ>%V06$tl4n=Tw2W8zP)FS_$`Onrw`%EK(0aOA2}kGN3{M9{#TCJGkn`P$@}x- zZx|@mc>Wbi@DUqx@i*TCOU4hA|682Qy(90Y|088;>a*RXKjNXBNRg}r_#e5sa2yB{K&a_V4hC37N`m6$ku|agYE)hs3xc<>Sbh-yfQ&W%6UY1NRbWY1CqxAm7%P@~^hPy-Z_MBnLY6F9&6{=VXQ zjogYS$}`nJd&>|a1*}?Kx^x(?JM!=pJ`bbRs@91!kktA8Y0nUM>1UxI`pcl;Sft^I z&1ave?1Jkc$Jr2e`t$6Z8!_|mI%IMU^*s@X@-k%2WL_g|T?8Cmk;k5-RVCIPVcb1% z9eB?{7gY6%tYf#c^t;KTxc0Eu zLzkJnav#y)x6c*EvF4%EemO$rUWyC*9(YlVQ5y~uv~ODl@^h6Q!3$7+nfkk4%Tu1_ zr1{&@;Y4{k#NkX3PuMe`;tDdE%U&ZK;IoRHawjwpTjK7T{gyI%5E{K|of|aTVwdvd zXn4xCc;ysA)Rh+6%)#ppx^Zh6Qz*hyuHmmn4U?rcgm!qTHQuhh)sFW-^0y)sWzFQ; z7)q3v?FtG6{i<762*bbnGJ`q{J^$L)Ox4H<1D<(17IO%*w!oFaKt%nhgL(L(nG)5@ zI;r8=r~|)&5nHV(B0L^im+*(~TmX566lhs^Kv-Qk7&RY~oEDrtH|iO9pj)o!xB(tt zkb)EE}cwfKyijUg6Bq1@m;Lfat(uw-QCep4&ehrjog#Cy}5i zuz#!C!8hxHEJo0z_+aE4>GCfZpn-znFM67IQ)gd6 zXoHG#SE+N?b}VdwX9&_^3+&-toB3t?E7a~FcC%goITCq}DBnfYEUVao-SRaZ2m0aC zQ;p#?bm8oLZSOYD?KGO!u)X6`ytl1p+CC+CQmJZ`9k8^UZ0oUlTw2cT=2?Z5cE)5x z;UNv@FHX0phT<8^xRs}O4x`Uo)+VoxyPjeSqA=Fgu0AF$nUPTp$_g{QOEc|fl@Do% zJII=Fko1jpd+zw1SrFJ-ZczQ6yvU$6O)i>zUHiOyjI{NBH2S(Sc+%5$M$s@U6tUy3$_N6{pWCpS zNBt>k6wC{wx>}amOu@l3dJ)WZ1TtN6obuGo0smrtMWzC-#uo6PFmbTCp)k7GpOsE_ zbqOs8Ofdp&Z+G0Ie+jmERjup_n1qPdp`LEpys<7X!*V(LCaL#q*uqgK42sD28y#q5 z?b#N15|+RsUM1yB1AuEA6cA0aG}gnkan9Wv!%*g)P!_MhjmN&5Kbiy-qMQdk))@2( zL!2s>PNhDAug4L*lgY8_uwri#n#f%a^ljL>qRIs-J#~Pt4SCkrco#J5PS&BqwOR$O zIhkMG!&d|0q+u{$d8IVMw`1hJSVX$ehc)-C5x(Fgv= zhK({&w~)a8b@1Hb(Thy{coOE27#j7IRIC2Va>}?8$uIdhm0ELf^O_pmF4|PJW==Oj##l< z>dC2AA)ebW-l2wi;0h7Rm2)HFb5}8VJoK&LMmxaDPE0%M8ZaAxrvdNHHL*F;`A z@2&Jbp6!dj4`Fl$w3+chb4v_aGV0BcS&epdcZptk)yYP&+tm>rs)@PPiumakQ%CoS zq90Q;Od`83fipFjYsD^ccfZOA^bPz(&YXRr<@%0I1CEh~ux9U|5UX{V$QZ)gH;U%D zlycN{bG(Td27;9-b_wKjr2N|k+z+n49Z2^!`{Bk-2s1Viw>S+^tWJW>ySR#%6|VF^ zJWo5fX!TB?i~}8zhNB(c0j_!IoZH#lkgLQQcmh#khxWky^mEk4&rRg~S#RGv&!b#3 zY1{!|=5!M=?}7Ad$iYl^>vSwW9x$69>dF10_iIdv9=Y^=miGj+lL6hXQk0dq$voqz z^i-H9Y!-MSOD;<}z=%>bQ%v%86w(kEiIjG|_uQ>Y#wUEM$7D@1h}wW}NigHO6&EXj z+T7fn??)aHM<3T&BcQXJ0ZlCJ9zHVBJuTw#Y8kc64@mEL9ew$xd!bAAP7bkv-lgxZ1x^6=)y{J6h=7L3z?XvLyPh7-j>WbzfgH3Bu_}SQ z;j6=FiGJaR1CO-_eA+tEGzR6z*5<{_4;n%gxs(&hM>(H*Me0~OO{x9tM(dFZ(de@L z>?ym<^?QUBsE0j4QBQE5jvta5b<0^o!$MJyFF2R?BJXF#3)~+W_F@d% z6rU=quZCsP$aB1>ZW(n|1d3tV={%2Cq@ths1m-EEDw5{qUh`0Pq98D#Vm{oGk|mdR zsFiqT3^R;y7THNLDv~&O*6Z$KtNk_YJ5;=##63R^y$4m)eNIL84S`xYZx)WQ7@C^GrFo#ICz#3bxWxj zCIAfuXWF{U7J>MSQmQLLsdC|--b3iQ`+iov-c_}i&1lG^k6xahO4)yR!idKH93xdS zN|Dsp$%IM2#MBTV23XXfRDF-)@SQqBA^7sX^-Gr8w}`_OP|7eVI6 z9409%p(hmSE+8e-C#wdm1(Hmx-Ulg6$%Tl!lGy-^iZn^rOQ#%nR1 zA-m-M=*cZfEg%~jl;yu~K6d#V(emJSf*JRpg7ojf~D4AtPjEW3ZWfQ#Nj07Bul?uzK3xGb~`2n<_e3niGT?hSpp`jd# zP#+HRs7>1&%y*j~Tw3>&W?G#}i=K88jR2>n0kL`8EopdHJv8q~;u+WS_`&1%cL>x; zh>IMfYSZrwHKC!qPF;8>F};U!f-4vm#h59yRLGb2hvn(HnWI$o>`xIMH==(H!#$V; zRqL1>f$gowPN!s;$ahy9}Ef68f?S4_&n#)HKa*5H;#l-EQ;< zc>P#KacM5h|J#fwI3i9)f1GF-9{BbqTBeq-4p%i~ZXI{RO=@fsx<2w)?Yx3xQs@*h zGJ+)%EXpw!A5hm++DmQ?%d0Z0*4Wls=~dCD0;URI>$tE!1yo3Tu7}dMFXhU{qNJTr z1knZ4NRnPPy*eDdAd6gNzm9FUHTeSJ^GG)G7%SzDxXJCSUw1JO1*Po?;^pSUMlHb=TOizw3=aLR!O zWgkLAh0?q8)3rL~ZraIJ?6xNMVK?V5&8iv|DMU`zTkP5BnkkgzOe+=}IwUYj3zNt2 zzEd|>Ai-Pt_>LqD3@_hf-!P81t_Z#&Dmw2OIwM~(S!TMWgx;+Q=yn1 zQb>#Mt!OIU$|#}7hK&kQ$!_b=d#8w8RlY1So?2@evLuMzIs*xRxP~AJZ$N%we@t=- zj|J!xyRGpJ!6RIV7;Vj~Di;}!@ri{NRXwGK3QW^>vCGV7PPu)u7_o^rQ=H}pQtGq> zG=Jq<8>L6n>)Kp1c>Ungr`3|DB^h!2ZLUfI)FYa^$XoRuM=DB+ZTISNJ!W<8k4^-q z9{apkZLhw#mK%O_@Uge}UAj$f3WGLzM!Wm52r_E)Gk1KPq%^0%h5icEi_hhBwwjxl zroV?U?_CR1bhd0B7X?jxicsHzR{&MHMj_W?Qso@c^1@wug10%Xn*=0{37rSm)2-6B zGzt+B*jtXRK9iKWB}H*zE^1_uk+*VH<+n*$$qa4Negct)75M6g{&?nz9-6_X+R6-{MMHOpQra)CfdmB&vi*>wxJm3?}`{e%w zbODS0EXbB)KSHbs1m`yN+2r1on%2?O( zp!Q}>-QQ7<^DRM|gwm9{&^|$e%qE^(Pd#F}aWZpR25cPzW(%wb0F>jB0P`(BPI*7I zJp`AqGPU^v_iK>4U6D;Jnd)7_s^pV@l&SkbGE<&doLZh*5B#L0mN+GrEWTP|%L4|$ zQiw}O3?{+Lm#xpE6iZ6dxRbIQ$JmH}Jax6yUoVc$o7ah*o?akbgT z1F$rZ2_FD32~)Dx|M=dWZhNC2W!57aN1Ou#Xrpuw)Pe1^`$r zb6Eyls(k>K3The dominator can be spawned only on territory controlled by your gang!") return FALSE diff --git a/modular_citadel/code/game/machinery/firealarm.dm b/modular_citadel/code/game/machinery/firealarm.dm index 7c136f4e4d..cd55c70764 100644 --- a/modular_citadel/code/game/machinery/firealarm.dm +++ b/modular_citadel/code/game/machinery/firealarm.dm @@ -1,6 +1,6 @@ /obj/machinery/firealarm/alt_attack_hand(mob/user) if(can_interact(usr)) - var/area/A = get_area(src) + var/area/A = get_base_area(src) if(istype(A)) if(A.fire) reset() From 8ed21b47b66ed764132f5447566e6bbac1dc8c4a Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Tue, 10 Dec 2019 16:20:57 +0100 Subject: [PATCH 02/32] Grammar and something. --- code/__HELPERS/areas.dm | 29 ++++++++++--------- code/game/area/areas.dm | 18 ++++++------ code/game/gamemodes/events.dm | 4 +-- .../hostile/megafauna/colossus.dm | 2 +- code/modules/power/apc.dm | 2 +- code/modules/power/power.dm | 2 +- 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index 316c159fb8..593acdd21a 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -174,35 +174,36 @@ /** - * Returns either the base area the target's belongs to or the target's area itself. + * Returns the base area the target is located in if there is one. + * Alternatively, returns the area as is. */ /proc/get_base_area(atom/target) var/area/A = get_area(target) - if(A?.master_area) - return A.master_area + if(A?.base_area) + return A.base_area return A /** - * Returns either null, or a list containing all the sub_areas associated with the base area the target is located in. + * Returns either null, or a list containing every sub area associated with our base area. * If include_base is TRUE, the base area will also be added to the return list. */ -/proc/get_sub_areas(atom/target, include_base = FALSE) +/proc/get_sub_areas(atom/target, include_base = TRUE) var/area/A = get_area(target) if(!A) return . = list() - if(A.master_area) - A = A.master_area + if(A.base_area) + A = A.base_area if(include_base) . += A if(A.sub_areas) . += A.sub_areas /** - * Proc for purposes similar to the get_areas_turfs(), but aimed to include associated areas. - * Only takes area (A) instances and paths, no text strings. - * Returns a list of all turfs found in the associated sub_areas (including the base's if include_base is TRUE) - * and located in the same z as target_z, or anywhere if the latter is 0 + * Proc used for purposes similar to get_areas_turfs(), but aimed to include associated areas. + * Only accepts area instances and paths for the first arg, no text strings. + * Returns a list of all turfs found in the sub areas (including the base's if include_base is TRUE) + * and located in a z level matching target_z, or anywhere if target_z is 0 */ /proc/get_sub_areas_turfs(area/A, target_z = 0, include_base = TRUE) @@ -212,7 +213,7 @@ if(target_z == 0 || target_z == T.z) . += T /** - * Simple proc that returns all a sum of all contents from all associated areas, + * Simple proc that returns a sum of all contents from every sub area, * Think of the above but for all contents, not just turfs, and without target z. */ @@ -221,8 +222,8 @@ A = GLOB.areas_by_type[A] if(!A) return - if(A.master_area) - A = A.master_area + if(A.base_area) + A = A.base_area . = list(A.contents) for(var/i in A.sub_areas) . += A.sub_areas[i].contents diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 74e238cdc0..a24f6211bc 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -70,7 +70,7 @@ * Friendly reminder: don't varedit area paths, make new typepaths instead. */ var/list/area/sub_areas //list of typepaths of the areas you wish to link here, will be replaced with a list of references on mapload. - var/area/master_area //The area we wish to use in place of src for certain actions such as APC area linking. + var/area/base_area //The area we wish to use in place of src for certain actions such as APC area linking. /*Adding a wizard area teleport list because motherfucking lag -- Urist*/ /*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/ @@ -144,16 +144,16 @@ GLOBAL_LIST_EMPTY(teleportlocs) if(A == src) WARNING("\"[src]\" area a attempted to link with itself.") continue - if(A.master_area) - WARNING("[src] attempted to link with [A] while the latter is already linked to another area ([A.master_area]).") + if(A.base_area) + WARNING("[src] attempted to link with [A] while the latter is already linked to another area ([A.base_area]).") continue LAZYADD(sub_areas, A) - A.master_area = src + A.base_area = src return INITIALIZE_HINT_LATELOAD /area/LateInitialize() - if(!master_area) //we don't want to run it twice. + if(!base_area) //we don't want to run it twice. power_change() // all machines set to current power level, also updates icon /area/proc/reg_in_areas_in_z() @@ -177,13 +177,13 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/Destroy() if(GLOB.areas_by_type[type] == src) GLOB.areas_by_type[type] = null - if(master_area) - LAZYREMOVE(master_area, src) - master_area = null + if(base_area) + LAZYREMOVE(base_area, src) + base_area = null if(sub_areas) for(var/i in sub_areas) var/area/A = i - A.master_area = null + A.base_area = null sub_areas -= A if(A.requires_power) A.power_light = FALSE diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index d0671dd285..00a677d331 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -12,7 +12,7 @@ var/list/skipped_areas = list(/area/engine/engineering, /area/engine/supermatter, /area/engine/atmospherics_engine, /area/ai_monitored/turret_protected/ai) for(var/area/A in world) - if( !A.requires_power || A.always_unpowered || A.master_area) + if( !A.requires_power || A.always_unpowered || A.base_area) continue var/skip = 0 @@ -63,7 +63,7 @@ S.power_change() for(var/area/A in world) - if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A, /area/arrival) && !A.always_unpowered && !A.master_area) + if(!istype(A, /area/space) && !istype(A, /area/shuttle) && !istype(A, /area/arrival) && !A.always_unpowered && !A.base_area) A.power_light = TRUE A.power_equip = TRUE A.power_environ = TRUE diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm index e691a30d3a..51bf6d4144 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm @@ -482,7 +482,7 @@ Difficulty: Very Hard . = ..() if(!.) return - for(var/i in get_sub_areas(src, include_base = TRUE)) + for(var/i in get_sub_areas(src)) var/area/A = i if(A.outdoors || (A in affected_targets)) continue diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index ecb2d6c29d..f744ef536a 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -180,7 +180,7 @@ name = "\improper [A.name] APC" stat |= MAINT update_icon() - addtimer(CALLBACK(src, .proc/update), 5) + addtimer(CALLBACK(src, .proc/update), 5) GLOB.apcs_list += src diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index 5f8d1e822b..1bebb61a0b 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -382,7 +382,7 @@ return null /area/proc/get_apc() - var/target = master_area ? master_area : src + var/target = base_area ? base_area : src for(var/obj/machinery/power/apc/APC in GLOB.apcs_list) if(APC.area == target) return APC \ No newline at end of file From bafd03bc1936dceed76d2a426c2706f773cacef6 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 11 Dec 2019 12:11:09 +0100 Subject: [PATCH 03/32] Mapping. --- _maps/map_files/BoxStation/BoxStation.dmm | 1185 +++++++------ .../map_files/Deltastation/DeltaStation2.dmm | 1514 +++++++++-------- _maps/map_files/MetaStation/MetaStation.dmm | 894 +++++----- _maps/map_files/OmegaStation/OmegaStation.dmm | 458 ++--- _maps/map_files/PubbyStation/PubbyStation.dmm | 1309 +++++++------- code/game/area/Space_Station_13_areas.dm | 30 +- 6 files changed, 2933 insertions(+), 2457 deletions(-) diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 820ffd0be4..286971078c 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -226,6 +226,9 @@ /obj/structure/chair/stool, /turf/open/floor/plasteel, /area/security/prison) +"aaK" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/seven) "aaL" = ( /obj/machinery/computer/libraryconsole/bookmanagement, /obj/structure/table, @@ -1133,15 +1136,8 @@ /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "acN" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - on = 0; - pixel_x = -7; - pixel_y = 12 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/seven) "acO" = ( /obj/structure/closet/l3closet/security, /obj/machinery/camera{ @@ -5726,19 +5722,18 @@ /turf/open/floor/plasteel, /area/security/courtroom) "alK" = ( -/obj/machinery/button/door{ - id = "Room Two"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 7; - pixel_y = -24; - specialfunctions = 4 +/obj/structure/mirror{ + pixel_y = 32 }, -/obj/structure/chair/comfy/brown{ - dir = 8 +/obj/structure/sink{ + dir = 1; + pixel_y = 25 }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms_cabin/seven) "alL" = ( /obj/structure/disposalpipe/segment, /obj/machinery/power/apc{ @@ -6175,18 +6170,11 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "amJ" = ( -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/sink{ - dir = 1; - pixel_y = 25 - }, -/obj/structure/toilet{ - dir = 4 +/obj/machinery/shower{ + dir = 8 }, /turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "amK" = ( /obj/structure/sign/warning/docking, /turf/closed/wall, @@ -6211,11 +6199,9 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "amO" = ( -/obj/machinery/shower{ - dir = 8 - }, +/obj/machinery/light/small, /turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "amP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, @@ -6365,12 +6351,8 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "anc" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/item/soap, /turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "and" = ( /obj/machinery/light/small{ dir = 4 @@ -6474,8 +6456,8 @@ /turf/closed/wall/r_wall, /area/ai_monitored/security/armory) "anr" = ( -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) "ans" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 4 @@ -6589,11 +6571,15 @@ /turf/open/floor/plating, /area/security/courtroom) "anD" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 +/obj/structure/window/reinforced/tinted{ + dir = 8 }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/curtain, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms_cabin/seven) "anE" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -6640,15 +6626,9 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "anM" = ( -/obj/structure/window/reinforced/tinted{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted{ - dir = 4 - }, -/obj/structure/curtain, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/obj/structure/chair/sofa/right, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/seven) "anN" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -7008,9 +6988,12 @@ /turf/open/floor/plasteel/dark, /area/security/courtroom) "aoI" = ( -/obj/structure/fireplace, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/chair/sofa/left, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "aoJ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -7273,13 +7256,12 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "apu" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; - name = "Personal ID-Locked Closet"; - pixel_y = 15 +/obj/machinery/shower{ + dir = 4 }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/obj/item/soap, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms_cabin/six) "apv" = ( /obj/structure/lattice/catwalk, /turf/open/space/basic, @@ -7466,13 +7448,18 @@ /turf/open/floor/plating, /area/maintenance/fore) "apX" = ( -/obj/structure/bed, -/obj/item/bedsheet/random, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 +/obj/structure/mirror{ + pixel_y = 32 }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/obj/structure/sink{ + dir = 1; + pixel_y = 25 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms_cabin/six) "apY" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -7584,40 +7571,20 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "aql" = ( -/obj/structure/mirror{ - pixel_y = 32 +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 }, -/obj/structure/sink{ - dir = 1; - pixel_y = 25 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/seven) "aqm" = ( -/obj/structure/chair/sofa/right, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "aqn" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm4"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, +/obj/structure/fireplace, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "aqo" = ( /obj/structure/cable{ icon_state = "4-8" @@ -7753,38 +7720,32 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aqC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/obj/structure/chair/comfy/brown{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aqD" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aqE" = ( -/obj/item/flashlight/lamp/green{ - pixel_x = -3; - pixel_y = 22 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/item/radio/intercom{ dir = 4; - pixel_y = 5 - }, -/obj/structure/dresser{ - desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; - name = "Dresser"; - pixel_y = 7 + name = "Station Intercom (General)"; + pixel_x = 27 }, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) +"aqD" = ( +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms_cabin/six) +"aqE" = ( +/obj/structure/toilet{ + dir = 8 + }, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms_cabin/six) "aqF" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = -7; + pixel_y = 12 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "aqG" = ( /obj/docking_port/stationary/random{ dir = 4; @@ -7841,11 +7802,19 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "aqN" = ( -/obj/structure/toilet{ +/obj/machinery/button/door{ + id = "Room Two"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 7; + pixel_y = -24; + specialfunctions = 4 + }, +/obj/structure/chair/comfy/brown{ dir = 8 }, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/seven) "aqO" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance{ @@ -7899,13 +7868,11 @@ /turf/open/floor/plating, /area/maintenance/fore) "aqU" = ( -/obj/structure/closet/secure_closet/personal{ - desc = "Swipe your ID on this locker to claim it. You can drag it around and use it as your own personal storage area. Very useful."; - name = "Personal ID-Locked Locker"; - pixel_y = 10 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 }, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) "aqV" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -7972,8 +7939,12 @@ /turf/open/floor/wood, /area/lawoffice) "arf" = ( -/turf/closed/wall, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/seven) "arg" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/light{ @@ -7990,25 +7961,27 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "ari" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"arj" = ( -/obj/machinery/door/airlock{ - id_tag = "Room Two"; - name = "Room Seven - Luxury Suite" - }, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) -"ark" = ( /obj/structure/bed, /obj/item/bedsheet/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/seven) +"arj" = ( +/obj/structure/window/reinforced/tinted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/curtain, +/turf/open/floor/mineral/titanium/blue, +/area/crew_quarters/dorms_cabin/six) +"ark" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/seven) "arl" = ( /obj/structure/sign/poster/official/ion_rifle, /turf/closed/wall/r_wall, @@ -8063,17 +8036,14 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "ars" = ( -/obj/item/flashlight/lamp/green{ - pixel_x = -3; - pixel_y = 22 +/obj/machinery/door/airlock{ + id_tag = "Room Two"; + name = "Room Seven - Luxury Suite" }, -/obj/structure/dresser{ - desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; - name = "Dresser"; - pixel_y = 7 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/seven) "art" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -8104,11 +8074,8 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "ary" = ( -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) "arz" = ( /obj/item/coin/gold, /obj/item/coin/iron, @@ -8130,13 +8097,8 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "arD" = ( -/obj/item/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) "arE" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/tile/yellow{ @@ -8340,11 +8302,8 @@ /turf/open/floor/plating, /area/maintenance/port/fore) "asd" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, /turf/closed/wall, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/five) "ase" = ( /obj/structure/cable{ icon_state = "2-4" @@ -8406,12 +8365,8 @@ /turf/open/floor/plating, /area/security/vacantoffice/b) "ask" = ( -/obj/machinery/light/small{ - dir = 4; - light_color = "#d8b1b1" - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/six) "asl" = ( /obj/machinery/firealarm{ dir = 4; @@ -8474,25 +8429,27 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "ast" = ( -/obj/machinery/airalarm{ - pixel_y = 23 +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 22 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4; + pixel_y = 5 + }, +/obj/structure/dresser{ + desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; + name = "Dresser"; + pixel_y = 7 }, -/obj/structure/chair/sofa/left, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/six) "asu" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm5"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) "asv" = ( /obj/structure/table, /obj/effect/spawner/lootdrop/maintenance{ @@ -8741,12 +8698,13 @@ /turf/open/floor/plasteel, /area/hallway/primary/fore) "ate" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/structure/closet/secure_closet/personal{ + desc = "Swipe your ID on this locker to claim it. You can drag it around and use it as your own personal storage area. Very useful."; + name = "Personal ID-Locked Locker"; + pixel_y = 10 }, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/three) "atf" = ( /obj/machinery/camera{ c_tag = "Bar Storage" @@ -8757,21 +8715,29 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "atg" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm4"; - name = "Room Three" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) -"ath" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/light/small{ + dir = 1 }, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/three) +"ath" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm4"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "ati" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -8800,15 +8766,19 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "atl" = ( -/obj/machinery/airalarm{ - dir = 4; - pixel_x = -23 +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) "atm" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 + }, /turf/open/floor/wood, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/four) "atn" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 6 @@ -9081,18 +9051,12 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "aua" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm6"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_y = -25; - specialfunctions = 4 +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/structure/chair/comfy/brown{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, /turf/open/floor/wood, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/four) "aub" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/tile/yellow, @@ -9238,11 +9202,12 @@ /turf/closed/wall, /area/security/vacantoffice/b) "aur" = ( -/obj/structure/table/wood/fancy/black, -/obj/machinery/light/small, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/structure/table/wood, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "aus" = ( /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, /obj/effect/turf_decal/tile/neutral{ @@ -9251,22 +9216,18 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "aut" = ( -/obj/machinery/door/airlock{ - id_tag = "Room One"; - name = "Room Six - Luxury Suite" +/obj/item/flashlight/lamp/green{ + pixel_x = -3; + pixel_y = 22 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) -"auu" = ( -/obj/structure/closet/secure_closet/personal/cabinet{ - desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; - name = "Personal ID-Locked Closet"; - pixel_y = 15 +/obj/structure/dresser{ + desc = "There's plenty of clothes here to change into! It has a surprising amount of variety, too."; + name = "Dresser"; + pixel_y = 7 }, /turf/open/floor/wood, -/area/crew_quarters/dorms) -"auv" = ( +/area/crew_quarters/dorms_cabin/five) +"auu" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/structure/closet/secure_closet/personal/cabinet{ desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; @@ -9274,25 +9235,21 @@ pixel_y = 15 }, /turf/open/floor/wood, -/area/crew_quarters/dorms) -"auw" = ( -/obj/structure/bed, +/area/crew_quarters/dorms_cabin/five) +"auv" = ( /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/machinery/button/door{ - id = "Dorm3"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/five) +"auw" = ( +/obj/structure/closet/secure_closet/personal/cabinet{ + desc = "Swipe your ID on the closet to claim it. First come first serve, this one is wooden and fancy. Store your stuff here."; + name = "Personal ID-Locked Closet"; + pixel_y = 15 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/six) "aux" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -9682,15 +9639,9 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "avw" = ( -/obj/machinery/button/door{ - id = "Room One"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, +/obj/structure/fireplace, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/six) "avx" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 @@ -10078,15 +10029,10 @@ /turf/open/floor/plating, /area/maintenance/fore/secondary) "awo" = ( -/obj/structure/chair/comfy/black{ - dir = 4 - }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_y = -29 - }, +/obj/structure/bed, +/obj/item/bedsheet/random, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/six) "awp" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -10165,7 +10111,7 @@ dir = 4 }, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/three) "awz" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -10177,13 +10123,12 @@ /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness) "awA" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm5"; - name = "Room Four" +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "awB" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, @@ -10381,13 +10326,11 @@ /turf/open/floor/plating, /area/hallway/secondary/entry) "awX" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm6"; - name = "Room Five" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "awY" = ( /obj/machinery/light{ dir = 1 @@ -10759,15 +10702,18 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "axN" = ( -/obj/structure/chair/comfy/black{ - dir = 8 +/obj/machinery/door/airlock{ + id_tag = "Dorm4"; + name = "Room Three" }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/three) "axO" = ( -/obj/machinery/light/small, -/turf/open/floor/mineral/titanium/blue, -/area/crew_quarters/dorms) +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "axP" = ( /obj/structure/cable{ icon_state = "4-8" @@ -10837,15 +10783,9 @@ /turf/open/floor/plating, /area/maintenance/port) "axT" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm3"; - name = "Room Two" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "axU" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/structure/sign/warning/fire{ @@ -10879,12 +10819,12 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "axX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" }, -/obj/machinery/light/small, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "axY" = ( /obj/structure/cable{ icon_state = "2-8" @@ -11255,23 +11195,8 @@ /turf/open/floor/plasteel, /area/ai_monitored/storage/eva) "ayV" = ( -/obj/structure/bed, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/button/door{ - id = "Dorm2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/five) "ayW" = ( /turf/closed/wall, /area/ai_monitored/storage/eva) @@ -14097,15 +14022,9 @@ /turf/open/floor/wood, /area/crew_quarters/bar) "aFe" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm2"; - name = "Room One" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/five) "aFf" = ( /obj/structure/piano{ icon_state = "piano" @@ -15226,10 +15145,12 @@ /turf/open/floor/plasteel, /area/gateway) "aHw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/effect/landmark/event_spawn, +/obj/machinery/light/small{ + dir = 4; + light_color = "#d8b1b1" + }, /turf/open/floor/wood, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/five) "aHx" = ( /obj/effect/spawner/structure/window, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -28361,9 +28282,12 @@ /turf/open/floor/plasteel, /area/ai_monitored/security/armory) "blU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/obj/machinery/airalarm{ + dir = 4; + pixel_x = -23 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/six) "blV" = ( /obj/machinery/light/small, /turf/open/floor/plating, @@ -51712,6 +51636,19 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cmM" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm5"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "cmN" = ( /obj/structure/sign/warning/nosmoking{ pixel_y = 32 @@ -51727,6 +51664,56 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cmO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/five) +"cmP" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_y = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/five) +"cmQ" = ( +/obj/machinery/button/door{ + id = "Room One"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/six) +"cmR" = ( +/obj/structure/chair/comfy/black{ + dir = 4 + }, +/obj/item/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -29 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/six) +"cmS" = ( +/obj/structure/table/wood/fancy/black, +/obj/machinery/light/small, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/six) +"cmT" = ( +/obj/structure/chair/comfy/black{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/six) "cmU" = ( /obj/machinery/light/small, /turf/open/floor/engine/n2, @@ -51832,6 +51819,17 @@ /obj/item/clipboard, /turf/open/floor/plating, /area/maintenance/aft) +"cnh" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) +"cni" = ( +/obj/structure/closet/secure_closet/personal{ + desc = "Swipe your ID on this locker to claim it. You can drag it around and use it as your own personal storage area. Very useful."; + name = "Personal ID-Locked Locker"; + pixel_y = 10 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "cnj" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -51883,6 +51881,12 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) +"cno" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "cnp" = ( /obj/structure/cable{ icon_state = "1-8" @@ -51897,6 +51901,24 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/dark, /area/engine/engine_smes) +"cnq" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "cnr" = ( /obj/machinery/door/window/southleft{ name = "Engineering Delivery"; @@ -51905,6 +51927,12 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/engineering) +"cns" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) "cnt" = ( /obj/machinery/camera{ c_tag = "Engineering West"; @@ -51919,11 +51947,23 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"cnu" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm5"; + name = "Room Four" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/four) "cnv" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/engine/engineering) +"cnw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) "cnx" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -51940,6 +51980,14 @@ /obj/effect/landmark/start/station_engineer, /turf/open/floor/plasteel, /area/engine/engineering) +"cnz" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm6"; + name = "Room Five" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/five) "cnA" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -52014,6 +52062,18 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"cnI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/five) +"cnJ" = ( +/obj/machinery/door/airlock{ + id_tag = "Room One"; + name = "Room Six - Luxury Suite" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/six) "cnK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -52115,6 +52175,10 @@ }, /turf/open/floor/plasteel, /area/engine/engine_smes) +"cnT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) "cnU" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52128,6 +52192,18 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, /area/engine/engineering) +"cnV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) +"cnW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "cnX" = ( /obj/structure/cable{ icon_state = "4-8" @@ -52196,6 +52272,79 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"cod" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3"; + name = "Room Two" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/two) +"coe" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) +"cof" = ( +/obj/structure/closet/secure_closet/personal{ + desc = "Swipe your ID on this locker to claim it. You can drag it around and use it as your own personal storage area. Very useful."; + name = "Personal ID-Locked Locker"; + pixel_y = 10 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin) +"cog" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin) +"coh" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin) +"coi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) +"coj" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin) +"cok" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin) +"col" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm2"; + name = "Room One" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin) "cop" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ dir = 1 @@ -89729,16 +89878,16 @@ anT aoA apn aqe -arf -arf -arf -arf -arf -arf -arf -arf -arf -dgz +ary +ary +ary +ary +cnh +cnh +cnh +coe +coe +coe dgz dgz dgz @@ -89986,16 +90135,16 @@ anz aoB aod aqe -arf -aqU +ary +ate awy -arf -aqU -awy -arf -aqU -awy -dgz +ary +cni +cnV +cnh +cof +coj +coe tqg ujF ujF @@ -90243,16 +90392,16 @@ anz aoz aod aqe -arf -ari -ate -arf -ari -ath -arf -ari -ath -dgz +ary +atg +awA +ary +cno +cnW +cnh +cog +cok +coe fvY dvc dzi @@ -90500,16 +90649,16 @@ anz aoD aod aqe -arf -aqn +ary ath -arf -auw -ath -arf -ayV -ath -dgz +awX +ary +cnq +cnW +cnh +coh +cok +coe aCd qIw gfD @@ -90757,16 +90906,16 @@ anz aoC aod aqe -arf -asd -atg -arf -asd -axT -arf -asd -aFe -dgz +ary +atl +axN +ary +cns +cod +cnh +coi +col +coe iVU aDK vHj @@ -91528,11 +91677,11 @@ anU anC cSA aqe -arf -arf -arf -arf -arf +arD +arD +arD +arD +arD auC aKg awr @@ -91785,11 +91934,11 @@ ajp aoG cSA aqe -arf -auu +arD atm -atm -arf +axO +axO +arD aAd auW awr @@ -92042,11 +92191,11 @@ anW aoH cSA aqe -arf -aqC -blU -blU -awA +arD +aua +axT +axT +cnu auy aKh awr @@ -92299,11 +92448,11 @@ anV ajo cSA aqe -arf -aqD -ask -asu -aun +arD +aur +axX +cmM +cnw awv aKg aYI @@ -92556,11 +92705,11 @@ anY ajo apq aqe -arf -arf -arf -arf -arf +asd +asd +asd +asd +asd auC aKN aYP @@ -92813,11 +92962,11 @@ anX ajo app aqi -arf -ars -atm -atm -arf +asd +aut +ayV +ayV +asd aHt aKO aZb @@ -93070,11 +93219,11 @@ amu ajo aps aqk -arf -auv -blU -aHw -awX +asd +auu +aFe +cmO +cnz axR aKq aZZ @@ -93327,11 +93476,11 @@ anV ajo apr aqj -arf -ary -ask -aua -aun +asd +auv +aHw +cmP +cnI axU awr awr @@ -93578,17 +93727,17 @@ ajn trb ajn amr -ajp +acN ajp ajp ajo apt arn -arf -arf -arf -arf -arf +asd +asd +asd +asd +asd asX awr awr @@ -94098,11 +94247,11 @@ anb ahT anZ aqo -arf -arf -arf -arf -arf +anr +anr +anr +anr +anr aDW avl avm @@ -94355,11 +94504,11 @@ aif apw aqH aqI -arf -apu -atl -avw -aut +anr +auw +blU +cmQ +cnJ axM avx avn @@ -94608,15 +94757,15 @@ aod ahn apx ahn -ahn -ahn -ahn -ahn -arf -aoI -aqF -awo -arf +anr +anr +anr +anr +anr +avw +ask +cmR +anr aoY awr awr @@ -94865,15 +95014,15 @@ aod aoK amI aqp -ahn -anc anr -anM -aqF -aqF -aqF -aur -aun +apu +aqD +arj +ask +ask +ask +cmS +cnT aEr awr awr @@ -95122,15 +95271,15 @@ aoe aoL apy aqq -ahn -aql -aqN -arf +anr +apX aqE -ark -aqF -axN -arf +anr +ast +awo +ask +cmT +anr aKi avm aAn @@ -95376,18 +95525,18 @@ aaa ahn khB ahn -ahn -ahn -ahn -ahn -arf -arf -arf -asd -arf -arf -arf -arf +aaK +aaK +aaK +aaK +aaK +aaK +aaK +asu +anr +anr +anr +anr aMJ azn aAo @@ -95633,13 +95782,13 @@ aaa aag aag aag -arf -amJ -axO -arf -apu -acN -amP +aaK +alK +amO +aaK +aql +aqF +ark atz axL atQ @@ -95890,13 +96039,13 @@ aaa aaa aaa aaa -arf -amO -anr -anM -aqF -alK -arf +aaK +amJ +anc +anD +aqm +aqN +aaK axZ amN atZ @@ -96147,13 +96296,13 @@ aaa aaa aaa aaa -arf -arf -arf -arf -aoI -anD -arj +aaK +aaK +aaK +aaK +aqn +aqU +ars art amN amN @@ -96406,11 +96555,11 @@ aaa aaa aaa aaa -arf +aaK +anM aqm -aqF -axX arf +aaK asb asr avu @@ -96663,11 +96812,11 @@ aaa aaa aaa aaa -arf -ast -arD -apX -arf +aaK +aoI +aqC +ari +aaK arO aup atV @@ -96920,11 +97069,11 @@ aaa aae aaa aaa -arf -arf -arf -arf -arf +aaK +aaK +aaK +aaK +aaK asZ att avA diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index ac7d291b2f..885e52c4f8 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -255,10 +255,109 @@ }, /turf/open/floor/plating, /area/security/prison) +"aaC" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) +"aaD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock/maintenance_hatch{ + name = "Maintenance Hatch"; + req_access_txt = "12" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms_cabin) "aaE" = ( /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) +"aaF" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) +"aaG" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) +"aaH" = ( +/obj/structure/dresser, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken6" + }, +/area/crew_quarters/dorms_cabin) +"aaI" = ( +/obj/structure/table_frame/wood, +/obj/item/crowbar/red, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/plating, +/area/crew_quarters/dorms_cabin) +"aaJ" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/structure/sign/nanotrasen{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"aaK" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"aaL" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket/letterman_nanotrasen, +/obj/item/clothing/suit/toggle/lawyer, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_x = 26; + pixel_y = 26 + }, +/obj/item/clothing/under/kilt, +/obj/item/clothing/head/beret, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"aaM" = ( +/obj/structure/dresser, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"aaN" = ( +/obj/structure/bed, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "aaO" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -266,9 +365,124 @@ "aaP" = ( /turf/closed/wall/mineral/plastitanium, /area/hallway/secondary/entry) +"aaQ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket{ + desc = "All the class of a trenchcoat without the security fibers."; + icon_state = "detective"; + name = "trenchcoat" + }, +/obj/item/clothing/suit/toggle/lawyer/purple, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_x = 26; + pixel_y = 26 + }, +/obj/item/clothing/head/fedora{ + icon_state = "detective" + }, +/obj/item/clothing/under/geisha, +/obj/item/clothing/head/fedora{ + icon_state = "curator" + }, +/obj/item/clothing/suit/jacket{ + desc = "This looks awfully familiar..."; + icon_state = "curator" + }, +/obj/item/clothing/under/rank/curator/treasure_hunter, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"aaR" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) "aaS" = ( /turf/closed/wall/mineral/plastitanium, /area/construction/mining/aux_base) +"aaT" = ( +/obj/item/flashlight/seclite, +/turf/open/floor/wood{ + icon_state = "wood-broken3" + }, +/area/crew_quarters/dorms_cabin) +"aaU" = ( +/obj/structure/table/wood, +/obj/item/folder, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/obj/item/razor, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"aaV" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"aaW" = ( +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"aaX" = ( +/obj/structure/table/wood, +/obj/item/folder/red, +/obj/item/pen, +/obj/structure/sign/nanotrasen{ + pixel_x = -32 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"aaY" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"aaZ" = ( +/obj/item/clipboard{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/newspaper{ + pixel_x = 7; + pixel_y = 11 + }, +/obj/item/newspaper, +/obj/item/pen/red, +/turf/open/floor/wood{ + icon_state = "wood-broken2" + }, +/area/crew_quarters/dorms_cabin) +"aba" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) +"abb" = ( +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"abc" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"abd" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "abe" = ( /obj/effect/turf_decal/delivery, /obj/item/twohanded/required/kirbyplants/random, @@ -277,6 +491,27 @@ "abf" = ( /turf/closed/wall, /area/hallway/secondary/entry) +"abg" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"abh" = ( +/obj/machinery/button/door{ + id = "Dorm1"; + name = "Dormitory Door Lock"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) "abi" = ( /turf/closed/wall, /area/construction/mining/aux_base) @@ -284,6 +519,64 @@ /obj/structure/lattice/catwalk, /turf/open/space, /area/space/nearstation) +"abk" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -3; + pixel_y = 15 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -6; + pixel_y = 3 + }, +/obj/item/reagent_containers/food/drinks/beer{ + desc = "Whatever it is, it reeks of foul, putrid froth."; + icon_state = "beer"; + list_reagents = list("bacchus_blessing" = 15); + name = "Delta-Down"; + pixel_x = 5; + pixel_y = 5 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken4" + }, +/area/crew_quarters/dorms_cabin) +"abl" = ( +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Dormitory Door Lock"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"abm" = ( +/obj/structure/dresser, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"abn" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Dormitory Door Lock"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"abo" = ( +/obj/item/twohanded/required/kirbyplants/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "abp" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small{ @@ -307,6 +600,20 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"abr" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "Dorm5"; + name = "Cabin 1" + }, +/obj/effect/decal/cleanable/dirt{ + desc = "A thin layer of dust coating the floor."; + name = "dust" + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/crew_quarters/dorms_cabin) "abs" = ( /obj/docking_port/stationary{ dir = 1; @@ -319,11 +626,50 @@ /obj/structure/fans/tiny/invisible, /turf/open/space/basic, /area/space) +"abt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) +"abu" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "Dorm2"; + name = "Cabin 2" + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) "abv" = ( /obj/item/stack/cable_coil, /obj/structure/lattice/catwalk, /turf/open/space, /area/solar/starboard/fore) +"abw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) +"abx" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) +"aby" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "Dorm3"; + name = "Cabin 3" + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"abz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) +"abA" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) +"abB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) "abC" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -376,6 +722,40 @@ }, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"abI" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "Dorm4"; + name = "Cabin 4" + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"abJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) +"abK" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/five) +"abL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/five) +"abM" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "Dorm5"; + name = "Cabin 5" + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"abN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/five) +"abO" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) "abP" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/door/airlock/external{ @@ -424,6 +804,39 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/construction/mining/aux_base) +"abU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) +"abV" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + id_tag = "Dorm6"; + name = "Cabin 6" + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"abW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) +"abX" = ( +/obj/machinery/button/door{ + id = "Dorm4"; + name = "Dormitory Door Lock"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"abY" = ( +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "abZ" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -487,6 +900,84 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"acg" = ( +/obj/structure/dresser, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_x = 26; + pixel_y = 26 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"ach" = ( +/obj/machinery/button/door{ + id = "Dorm5"; + name = "Dormitory Door Lock"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"aci" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"acj" = ( +/obj/item/twohanded/required/kirbyplants/random, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_x = 26; + pixel_y = 26 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"ack" = ( +/obj/structure/table/wood, +/obj/item/folder/blue, +/obj/item/pen/blue, +/obj/machinery/button/door{ + id = "Dorm6"; + name = "Dormitory Door Lock"; + normaldoorcontrol = 1; + pixel_x = -26; + pixel_y = 7; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"acl" = ( +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"acm" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/item/radio/intercom{ + name = "Station Intercom"; + pixel_x = 26; + pixel_y = 26 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"acn" = ( +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "aco" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -574,6 +1065,74 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"acw" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"acx" = ( +/obj/structure/table/wood, +/obj/item/storage/briefcase{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/briefcase, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/obj/item/cane, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"acy" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"acz" = ( +/obj/structure/chair/office/dark{ + dir = 1 + }, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"acA" = ( +/obj/item/twohanded/required/kirbyplants/random, +/obj/structure/sign/nanotrasen{ + pixel_x = 32; + pixel_y = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"acB" = ( +/obj/structure/table/wood, +/obj/item/paper_bin, +/obj/item/pen, +/obj/machinery/newscaster{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"acC" = ( +/obj/structure/chair/office/dark, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"acD" = ( +/obj/structure/table/wood, +/obj/item/folder/red, +/obj/item/pen, +/obj/structure/sign/nanotrasen{ + pixel_x = -32 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"acE" = ( +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) "acF" = ( /obj/docking_port/stationary{ dir = 2; @@ -740,6 +1299,41 @@ }, /turf/open/space, /area/solar/starboard/fore) +"acR" = ( +/obj/structure/table/wood, +/obj/item/flashlight/lamp, +/obj/structure/sign/nanotrasen{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"acS" = ( +/obj/structure/table/wood, +/obj/item/folder, +/obj/item/pen, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/item/paicard, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"acT" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket/letterman_nanotrasen, +/obj/item/clothing/suit/toggle/lawyer, +/obj/item/clothing/under/maid, +/obj/item/clothing/head/kitty, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) +"acU" = ( +/obj/structure/dresser, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) "acV" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -804,6 +1398,33 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"acZ" = ( +/obj/structure/bed, +/obj/machinery/light, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"ada" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket{ + desc = "All the class of a trenchcoat without the security fibers."; + icon_state = "detective"; + name = "trenchcoat" + }, +/obj/item/clothing/suit/toggle/lawyer/purple, +/obj/item/clothing/head/fedora{ + icon_state = "detective" + }, +/obj/item/clothing/under/lawyer/female, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) "adb" = ( /obj/machinery/status_display{ pixel_x = -32 @@ -923,6 +1544,38 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/fore) +"adk" = ( +/obj/structure/dresser, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"adl" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/light, +/obj/item/clothing/suit/jacket{ + desc = "All the class of a trenchcoat without the security fibers."; + icon_state = "greydet"; + name = "trenchcoat" + }, +/obj/item/clothing/suit/toggle/lawyer/black, +/obj/machinery/status_display{ + pixel_y = -32 + }, +/obj/item/clothing/head/fedora, +/obj/item/clothing/under/redeveninggown, +/obj/item/clothing/head/rabbitears, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) +"adm" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/grown/poppy/lily, +/obj/item/reagent_containers/food/snacks/grown/poppy/lily, +/obj/item/reagent_containers/food/snacks/grown/poppy/lily, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -22 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/six) "adq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -78018,22 +78671,6 @@ "cAw" = ( /turf/closed/wall, /area/crew_quarters/dorms) -"cAx" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/door/airlock/maintenance_hatch{ - name = "Maintenance Hatch"; - req_access_txt = "12" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) "cAy" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 @@ -79074,110 +79711,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) -"cCc" = ( -/obj/structure/dresser, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken6" - }, -/area/crew_quarters/dorms) -"cCd" = ( -/obj/structure/table_frame/wood, -/obj/item/crowbar/red, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/plating, -/area/crew_quarters/dorms) -"cCe" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/structure/sign/nanotrasen{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cCf" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cCg" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket/letterman_nanotrasen, -/obj/item/clothing/suit/toggle/lawyer, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_x = 26; - pixel_y = 26 - }, -/obj/item/clothing/under/kilt, -/obj/item/clothing/head/beret, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cCh" = ( -/obj/structure/dresser, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cCi" = ( -/obj/structure/bed, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cCj" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket{ - desc = "All the class of a trenchcoat without the security fibers."; - icon_state = "detective"; - name = "trenchcoat" - }, -/obj/item/clothing/suit/toggle/lawyer/purple, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_x = 26; - pixel_y = 26 - }, -/obj/item/clothing/head/fedora{ - icon_state = "detective" - }, -/obj/item/clothing/under/geisha, -/obj/item/clothing/head/fedora{ - icon_state = "curator" - }, -/obj/item/clothing/suit/jacket{ - desc = "This looks awfully familiar..."; - icon_state = "curator" - }, -/obj/item/clothing/under/rank/curator/treasure_hunter, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "cCk" = ( /obj/machinery/light{ dir = 8 @@ -80050,50 +80583,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"cDC" = ( -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cDD" = ( -/obj/item/flashlight/seclite, -/turf/open/floor/wood{ - icon_state = "wood-broken3" - }, -/area/crew_quarters/dorms) -"cDE" = ( -/obj/structure/table/wood, -/obj/item/folder, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/obj/item/razor, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cDF" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cDG" = ( -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cDH" = ( -/obj/structure/table/wood, -/obj/item/folder/red, -/obj/item/pen, -/obj/structure/sign/nanotrasen{ - pixel_x = -32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cDI" = ( -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "cDJ" = ( /obj/structure/table, /obj/item/paper_bin, @@ -81135,53 +81624,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"cFw" = ( -/obj/item/clipboard{ - pixel_x = -4; - pixel_y = 3 - }, -/obj/item/newspaper{ - pixel_x = 7; - pixel_y = 11 - }, -/obj/item/newspaper, -/obj/item/pen/red, -/turf/open/floor/wood{ - icon_state = "wood-broken2" - }, -/area/crew_quarters/dorms) -"cFx" = ( -/obj/structure/bed, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cFy" = ( -/obj/item/twohanded/required/kirbyplants/random, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cFz" = ( -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cFA" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cFB" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "cFC" = ( /obj/structure/table, /obj/item/folder, @@ -81931,79 +82373,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/locker) -"cGT" = ( -/obj/machinery/button/door{ - id = "Dorm1"; - name = "Dormitory Door Lock"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 7; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cGU" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = -3; - pixel_y = 15 - }, -/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ - pixel_x = -6; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/drinks/beer{ - desc = "Whatever it is, it reeks of foul, putrid froth."; - icon_state = "beer"; - list_reagents = list("bacchus_blessing" = 15); - name = "Delta-Down"; - pixel_x = 5; - pixel_y = 5 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken4" - }, -/area/crew_quarters/dorms) -"cGV" = ( -/obj/machinery/button/door{ - id = "Dorm2"; - name = "Dormitory Door Lock"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 7; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cGW" = ( -/obj/structure/dresser, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cGX" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/machinery/button/door{ - id = "Dorm3"; - name = "Dormitory Door Lock"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 7; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cGY" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "cGZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/neutral{ @@ -82605,44 +82974,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/locker) -"cIf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "Dorm5"; - name = "Cabin 1" - }, -/obj/effect/decal/cleanable/dirt{ - desc = "A thin layer of dust coating the floor."; - name = "dust" - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/crew_quarters/dorms) -"cIg" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/dorms) -"cIh" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "Dorm2"; - name = "Cabin 2" - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cIi" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/closed/wall, -/area/crew_quarters/dorms) -"cIj" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "Dorm3"; - name = "Cabin 3" - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "cIk" = ( /obj/machinery/firealarm{ dir = 8; @@ -86055,30 +86386,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cNT" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "Dorm4"; - name = "Cabin 4" - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cNU" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "Dorm5"; - name = "Cabin 5" - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cNV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - id_tag = "Dorm6"; - name = "Cabin 6" - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "cNW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/tile/neutral{ @@ -87059,91 +87366,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cPQ" = ( -/obj/machinery/button/door{ - id = "Dorm4"; - name = "Dormitory Door Lock"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 7; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cPR" = ( -/obj/structure/dresser, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_x = 26; - pixel_y = 26 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cPS" = ( -/obj/machinery/button/door{ - id = "Dorm5"; - name = "Dormitory Door Lock"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 7; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cPT" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_x = 26; - pixel_y = 26 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cPU" = ( -/obj/structure/table/wood, -/obj/item/folder/blue, -/obj/item/pen/blue, -/obj/machinery/button/door{ - id = "Dorm6"; - name = "Dormitory Door Lock"; - normaldoorcontrol = 1; - pixel_x = -26; - pixel_y = 7; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"cPV" = ( -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"cPW" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/obj/item/radio/intercom{ - name = "Station Intercom"; - pixel_x = 26; - pixel_y = 26 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "cPX" = ( /obj/machinery/vending/cola/random, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -87957,36 +88179,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cRt" = ( -/obj/structure/table/wood, -/obj/item/storage/briefcase{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/briefcase, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/obj/item/cane, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cRu" = ( -/obj/structure/chair/office/dark{ - dir = 1 - }, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"cRv" = ( -/obj/item/twohanded/required/kirbyplants/random, -/obj/structure/sign/nanotrasen{ - pixel_x = 32; - pixel_y = -32 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "cRw" = ( /obj/machinery/vending/snack/random, /obj/structure/extinguisher_cabinet{ @@ -89020,24 +89212,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cTa" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/machinery/newscaster{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cTb" = ( -/obj/structure/chair/office/dark, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cTc" = ( -/obj/structure/bed, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "cTd" = ( /obj/structure/table, /obj/item/storage/fancy/donut_box, @@ -90214,88 +90388,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"cUV" = ( -/obj/structure/table/wood, -/obj/item/folder, -/obj/item/pen, -/obj/machinery/light, -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/item/paicard, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cUW" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket/letterman_nanotrasen, -/obj/item/clothing/suit/toggle/lawyer, -/obj/item/clothing/under/maid, -/obj/item/clothing/head/kitty, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"cUX" = ( -/obj/structure/bed, -/obj/machinery/light, -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cUY" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket{ - desc = "All the class of a trenchcoat without the security fibers."; - icon_state = "detective"; - name = "trenchcoat" - }, -/obj/item/clothing/suit/toggle/lawyer/purple, -/obj/item/clothing/head/fedora{ - icon_state = "detective" - }, -/obj/item/clothing/under/lawyer/female, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"cUZ" = ( -/obj/structure/dresser, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"cVa" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/light, -/obj/item/clothing/suit/jacket{ - desc = "All the class of a trenchcoat without the security fibers."; - icon_state = "greydet"; - name = "trenchcoat" - }, -/obj/item/clothing/suit/toggle/lawyer/black, -/obj/machinery/status_display{ - pixel_y = -32 - }, -/obj/item/clothing/head/fedora, -/obj/item/clothing/under/redeveninggown, -/obj/item/clothing/head/rabbitears, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"cVb" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/grown/poppy/lily, -/obj/item/reagent_containers/food/snacks/grown/poppy/lily, -/obj/item/reagent_containers/food/snacks/grown/poppy/lily, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -22 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "cVc" = ( /obj/structure/table, /obj/machinery/light{ @@ -178246,12 +178338,12 @@ cqd cJi cKX cMu -cAw -cAw -cAw -cAw -cAw -cAw +abA +abA +abA +abA +abA +abA cYg cZS dbC @@ -178494,21 +178586,21 @@ cuD cqe cqe cyX -cAw -cAw -cAw -cAw -cAw -cAw +aaC +aaC +aaC +aaC +aaC +aaC cJj cKY cMv -cIg -cPQ -cFy -cTa -cCe -cAw +abB +abX +acn +acB +acR +abA cYh cZT dbC @@ -178751,21 +178843,21 @@ cuE cwb cxs coI -cAw -cCc -cDC -cFw -cGT -cIf +aaC +aaH +aaR +aaZ +abh +abr cJk cKZ cMw -cNT -cDG -cDG -cTb -cUV -cAw +abI +abY +abY +acC +acS +abA cYi cZU dbC @@ -179008,21 +179100,21 @@ bHq bHq cne cyY -cAx -cCd -cDD -cFx -cGU -cAw +aaD +aaI +aaT +aba +abk +aaC cJl cLa cMx -cIi -cPR -cFz -cDG -cUW -cAw +abJ +acg +acw +abY +acT +abA cYg cZU dbC @@ -179265,21 +179357,21 @@ cuF cwc cne cyZ -cAw -cAw -cAw -cAw -cAw -cAw +aaC +aaC +aaC +aaC +aaC +aaC cJm cLb cMy -cAw -cAw -cAw -cAw -cAw -cAw +abK +abK +abK +abK +abK +abK cYj cZV dbC @@ -179522,21 +179614,21 @@ cuG bHq cni cza -cAw -cCe -cDE -cFy -cGV -cIg +aaF +aaJ +aaU +abb +abl +abt cJj cLc cMz -cIg -cPS -cRt -cDH -cCh -cAw +abL +ach +acx +acD +acU +abK cYk cZV dbC @@ -179779,21 +179871,21 @@ cuH bHq cxt czb -cAw -cCf -cDF -cDG -cDG -cIh +aaF +aaK +aaV +aaW +aaW +abu cJn cLd cMA -cNU -cDI -cFB -cDI -cUX -cAw +abM +aci +acy +aci +acZ +abK cYj cZV dbC @@ -180036,21 +180128,21 @@ cuI bHq cxt czc -cAw -cCg -cDG -cFz -cGW -cIi +aaF +aaL +aaW +abc +abm +abw cJo cLe cMB -cIi -cPT -cDI -cDI -cUY -cAw +abN +acj +aci +aci +ada +abK cYl cZU dbC @@ -180293,21 +180385,21 @@ cuJ bHq cnf czd -cAw -cAw -cAw -cAw -cAw -cAw +aaF +aaF +aaF +aaF +aaF +aaF cJp cLf cMC -cAw -cAw -cAw -cAw -cAw -cAw +abO +abO +abO +abO +abO +abO cYm cZW dbC @@ -180550,21 +180642,21 @@ cuK bHq cni coF -cAw -cCh -cDH -cFA -cGX -cIg +aaG +aaM +aaX +abd +abn +abx cJq cLg cMD -cIg -cPU -cRu -cPV -cUZ -cAw +abU +ack +acz +acl +adk +abO cYn cZX dbD @@ -180807,21 +180899,21 @@ bHq bHq cxt coI -cAw -cCi -cDI -cFB -cDI -cIj +aaG +aaN +aaY +abg +aaY +aby cJr cLd cMC -cNV -cPV -cPV -cPV -cVa -cAw +abV +acl +acl +acl +adl +abO cYo cZY dbE @@ -181064,21 +181156,21 @@ aad cti cxu cze -cAw -cCj -cDI -cDI -cGY -cIi +aaG +aaQ +aaY +aaY +abo +abz cJo cLi cMB -cIi -cPW -cRv -cTc -cVb -cAw +abW +acm +acA +acE +adm +abO cYp cZZ cIX @@ -181321,21 +181413,21 @@ cuL cuL cxv czf -cAw -cAw -cAw -cAw -cAw -cAw +aaG +aaG +aaG +aaG +aaG +aaG cJs cKX cME -cAw -cAw -cAw -cAw -cAw -cAw +abO +abO +abO +abO +abO +abO cYq daa cuL diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 0e6feb67c6..5f69519f56 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -17,6 +17,12 @@ /obj/effect/landmark/carpspawn, /turf/open/space, /area/space) +"aad" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) +"aae" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/five) "aaf" = ( /obj/structure/lattice, /turf/open/space, @@ -257,6 +263,17 @@ }, /turf/open/floor/plating, /area/security/prison) +"aaM" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/item/lighter, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/six) "aaN" = ( /obj/structure/cable{ icon_state = "0-2" @@ -299,6 +316,53 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"aaU" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/clothing/under/assistantformal, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/six) +"aaV" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin3"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/six) +"aaW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/six) +"aaX" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/button/door{ + id = "Cabin4"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/structure/bed, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) "aaY" = ( /obj/structure/cable{ icon_state = "1-2" @@ -333,6 +397,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plating, /area/security/prison) +"abd" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/clothing/under/suit_jacket/burgundy, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) "abe" = ( /turf/closed/wall, /area/security/prison) @@ -388,6 +460,13 @@ /obj/item/canvas/twentythreeXtwentythree, /turf/open/floor/plasteel, /area/security/prison) +"abk" = ( +/obj/structure/dresser, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) "abl" = ( /obj/structure/table, /obj/machinery/computer/libraryconsole/bookmanagement, @@ -457,6 +536,12 @@ }, /turf/open/floor/plasteel/cafeteria, /area/security/prison) +"abt" = ( +/obj/structure/chair/wood/normal{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/six) "abu" = ( /obj/docking_port/stationary{ dir = 1; @@ -534,6 +619,12 @@ /obj/structure/chair/stool, /turf/open/floor/plasteel, /area/security/prison) +"abE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/six) "abF" = ( /obj/structure/table, /obj/structure/cable/yellow{ @@ -555,6 +646,13 @@ /obj/item/toy/cards/deck, /turf/open/floor/plasteel, /area/security/prison) +"abH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/six) "abI" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -737,6 +835,16 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/security/prison) +"acd" = ( +/obj/machinery/door/airlock{ + id_tag = "Cabin3"; + name = "Cabin 6" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/six) "ace" = ( /obj/machinery/vending/sustenance{ desc = "A vending machine normally reserved for work camps."; @@ -1411,6 +1519,23 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) +"adk" = ( +/obj/machinery/door/airlock{ + id_tag = "Cabin4"; + name = "Cabin 5" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/five) +"adl" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) "adm" = ( /obj/structure/table, /obj/item/flashlight/lamp, @@ -1591,6 +1716,16 @@ }, /turf/open/space, /area/space/nearstation) +"adH" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) +"adI" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/five) "adJ" = ( /obj/item/radio/intercom{ freerange = 0; @@ -2062,6 +2197,9 @@ }, /turf/open/floor/plating, /area/crew_quarters/fitness/recreation) +"aeD" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) "aeE" = ( /obj/effect/spawner/structure/window/reinforced, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -2929,6 +3067,12 @@ }, /turf/open/floor/plasteel, /area/security/prison) +"afQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) "afR" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 1 @@ -4146,6 +4290,12 @@ icon_state = "platingdmg1" }, /area/maintenance/fore) +"ahT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) "ahU" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/table, @@ -4669,6 +4819,9 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"aiT" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) "aiU" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on, /obj/effect/turf_decal/tile/neutral{ @@ -4689,6 +4842,19 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"aiW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/structure/dresser, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/four) "aiX" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, @@ -4790,6 +4956,14 @@ /obj/item/restraints/handcuffs/cable/pink, /turf/open/floor/plating, /area/maintenance/port/fore) +"ajk" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/clothing/under/suit_jacket/tan, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/four) "ajl" = ( /obj/item/soap/deluxe, /obj/item/storage/secure/safe{ @@ -4918,6 +5092,21 @@ }, /turf/open/floor/plasteel/dark, /area/security/warden) +"aju" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin2"; + name = "Cabin Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/four) "ajv" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 4 @@ -6794,6 +6983,12 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"amv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) "amw" = ( /obj/structure/window/reinforced, /obj/machinery/door/window/eastright{ @@ -6830,6 +7025,19 @@ /obj/structure/window/reinforced, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"amB" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Cabin5"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) "amC" = ( /obj/structure/chair{ dir = 4 @@ -7010,6 +7218,14 @@ icon_state = "platingdmg2" }, /area/maintenance/port) +"amV" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/item/clothing/under/assistantformal, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) "amW" = ( /obj/structure/table/reinforced, /obj/item/folder, @@ -7290,6 +7506,14 @@ /obj/item/paper, /turf/open/floor/plasteel, /area/security/main) +"anz" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/structure/table/wood, +/obj/item/paper, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) "anA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/structure/disposalpipe/segment, @@ -7751,6 +7975,9 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/security/warden) +"aov" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/four) "aow" = ( /obj/machinery/door/firedoor, /obj/structure/cable/yellow{ @@ -8481,6 +8708,12 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"apP" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/four) "apQ" = ( /obj/structure/reagent_dispensers/peppertank{ pixel_x = 32 @@ -8547,6 +8780,13 @@ /obj/item/assembly/flash/handheld, /turf/open/floor/plasteel, /area/security/main) +"apX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/landmark/xeno_spawn, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/four) "apY" = ( /obj/structure/table, /obj/item/folder/red, @@ -8612,6 +8852,16 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"aqe" = ( +/obj/machinery/door/airlock{ + id_tag = "Cabin2"; + name = "Cabin 4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/four) "aqf" = ( /obj/structure/closet/lasertag/blue, /obj/effect/turf_decal/tile/neutral{ @@ -9119,6 +9369,16 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/warden) +"arh" = ( +/obj/machinery/door/airlock{ + id_tag = "Cabin5"; + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) "ari" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, @@ -9351,6 +9611,13 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) +"arF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) "arG" = ( /obj/structure/closet, /obj/item/storage/box/lights/mixed, @@ -10114,46 +10381,28 @@ /turf/open/floor/plating, /area/maintenance/fore) "asT" = ( -/obj/machinery/light/small{ +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/light/small, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) +"asU" = ( +/obj/structure/chair/wood/normal{ dir = 1 }, -/obj/structure/table/wood, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/item/lighter, /turf/open/floor/wood, -/area/crew_quarters/dorms) -"asU" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/item/clothing/under/assistantformal, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/three) "asV" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin3"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) "asW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, /turf/closed/wall, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/two) "asX" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -10187,37 +10436,36 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "ata" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/effect/decal/cleanable/cobweb, +/obj/structure/bed, /obj/machinery/button/door{ - id = "Cabin4"; - name = "Cabin Bolt Control"; + id = "Cabin6"; + name = "Dorm Bolt Control"; normaldoorcontrol = 1; pixel_x = -25; specialfunctions = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/structure/bed, +/obj/effect/decal/cleanable/cobweb, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, /obj/effect/spawner/lootdrop/bedsheet, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/two) "atb" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/machinery/airalarm{ pixel_y = 23 }, -/obj/item/clothing/under/suit_jacket/burgundy, +/obj/item/clothing/under/suit_jacket/navy, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/two) "atc" = ( /obj/structure/dresser, /obj/machinery/newscaster{ pixel_y = 32 }, /turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin/two) "atd" = ( /turf/open/floor/plating{ icon_state = "panelscorched" @@ -10369,6 +10617,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atw" = ( +/obj/machinery/door/airlock{ + id_tag = "Cabin6"; + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) "atx" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -10439,6 +10697,13 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atC" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "atD" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -10461,6 +10726,12 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "atG" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -10504,6 +10775,10 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"atJ" = ( +/obj/machinery/light/small, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "atK" = ( /obj/machinery/computer/prisoner/gulag_teleporter_computer{ dir = 1 @@ -10652,34 +10927,37 @@ }, /area/maintenance/fore) "aud" = ( -/obj/structure/chair/wood/normal{ +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) +"aue" = ( +/obj/machinery/door/airlock{ + id_tag = "Cabin7"; + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) +"auf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) +"aug" = ( +/obj/effect/landmark/xeno_spawn, +/obj/machinery/airalarm{ + pixel_y = 23 + }, +/obj/machinery/light/small{ dir = 1 }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aue" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, /turf/open/floor/wood, -/area/crew_quarters/dorms) -"auf" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aug" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin3"; - name = "Cabin 6" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin) "auh" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -10709,32 +10987,37 @@ /turf/open/floor/plasteel, /area/crew_quarters/dorms) "auk" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin4"; - name = "Cabin 5" +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/under/assistantformal, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) +"aul" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) +"aum" = ( +/obj/machinery/button/door{ + id = "Cabin7"; + name = "Door Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/obj/structure/bed, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) +"aun" = ( +/obj/structure/chair/wood/normal{ dir = 4 }, /turf/open/floor/wood, -/area/crew_quarters/dorms) -"aul" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aum" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aun" = ( -/turf/open/floor/carpet, -/area/crew_quarters/dorms) +/area/crew_quarters/dorms_cabin) "auo" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -10972,6 +11255,15 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"auQ" = ( +/obj/structure/table/wood, +/obj/machinery/newscaster{ + pixel_x = 29; + pixel_y = 1 + }, +/obj/item/paper, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin) "auU" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -11231,12 +11523,6 @@ }, /turf/closed/wall, /area/crew_quarters/dorms) -"avp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, -/turf/closed/wall, -/area/crew_quarters/dorms) "avq" = ( /obj/item/cigbutt, /obj/effect/turf_decal/stripes/line{ @@ -11862,42 +12148,6 @@ /obj/item/storage/box/lights/mixed, /turf/open/floor/plating, /area/maintenance/fore) -"awC" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 1 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/structure/dresser, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"awD" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/item/clothing/under/suit_jacket/tan, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"awE" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin2"; - name = "Cabin Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "awF" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 @@ -11911,27 +12161,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"awG" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin5"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"awH" = ( -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/structure/table/wood, -/obj/item/paper, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "awI" = ( /obj/machinery/door/airlock/maintenance/abandoned{ name = "Storage Room"; @@ -12388,29 +12617,6 @@ "axC" = ( /turf/closed/wall, /area/crew_quarters/toilet/restrooms) -"axD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"axE" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/landmark/xeno_spawn, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"axF" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin2"; - name = "Cabin 4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "axG" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ @@ -12421,31 +12627,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"axI" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin5"; - name = "Cabin 3" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"axJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"axK" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/obj/machinery/light/small, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "axL" = ( /obj/item/caution, /obj/effect/turf_decal/stripes/line{ @@ -14974,30 +15155,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"aCJ" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Cabin6"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aCK" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/item/clothing/under/suit_jacket/navy, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aCM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -15626,33 +15783,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"aEd" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin6"; - name = "Cabin 2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aEe" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aEf" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"aEg" = ( -/obj/machinery/light/small, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aEh" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/machinery/airalarm{ @@ -17043,39 +17173,11 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"aGM" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin7"; - name = "Cabin 1" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aGN" = ( /turf/open/floor/plating{ icon_state = "platingdmg3" }, /area/maintenance/port) -"aGO" = ( -/obj/effect/landmark/xeno_spawn, -/obj/machinery/airalarm{ - pixel_y = 23 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aGP" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/under/assistantformal, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aGQ" = ( /obj/structure/table, /obj/item/stack/rods/fifty, @@ -17566,36 +17668,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) -"aHS" = ( -/obj/machinery/button/door{ - id = "Cabin7"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/obj/structure/bed, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aHT" = ( -/obj/structure/chair/wood/normal{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aHU" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster{ - pixel_x = 29; - pixel_y = 1 - }, -/obj/item/paper, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "aHV" = ( /obj/structure/closet, /obj/item/storage/box/donkpockets, @@ -34790,12 +34862,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) -"boS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "boT" = ( /obj/machinery/door/window/southleft{ base_state = "left"; @@ -119323,12 +119389,12 @@ afA acP aoS acP -arB -arB -arB -arB -arB -axC +aad +aad +aad +aeD +aeD +aeD axC axC axC @@ -119580,13 +119646,13 @@ alg anF aoT aqc -arB -asT -aud -arB -awC -aun -arB +aad +aaM +abt +aeD +aiW +aov +aeD aAd aBw aCC @@ -119837,13 +119903,13 @@ ahg anG aoU aqd -arB -asU -aue -arB -awD -axD -arB +aad +aaU +abE +aeD +ajk +apP +aeD aAe aBx aCD @@ -120094,13 +120160,13 @@ agz agz aoV dhs -arB -asV -auf -arB -awE -axE -arB +aad +aaV +abH +aeD +aju +apX +aeD dhA aBx aCE @@ -120351,13 +120417,13 @@ amw dCc aoV aqf -arB -asW -aug -arB -asW -axF -arB +aad +aaW +acd +aeD +amv +aqe +aeD arB aBy aCF @@ -121379,20 +121445,20 @@ amA anK aoZ aqj -arB -arB -auk -avo -arB -axI -avo +aae +aae +adk +afQ +aiT +arh +afQ aAi -arB -avo -aEd -arB -aGM -avo +asV +asW +atw +aud +aue +aul aJh aKs aLV @@ -121636,20 +121702,20 @@ alk anK aoZ aqk -arB -ata -aul -avp -awG -axJ -avp +aae +aaX +adl +ahT +amB +arF +ahT aAj -arB -aCJ -aEe -arB -boS -aHS +asV +ata +atC +aud +auf +aum aJh aKt aLW @@ -121893,20 +121959,20 @@ aiX anL aoZ aql -arB -atb -aum -arB -asU -axK -arB +aae +abd +adH +aiT +amV +asT +aiT aAk -arB -aCK -aEf -arB -aGO -aHT +asV +atb +atF +aud +aug +aun aJh aKu aLX @@ -122150,20 +122216,20 @@ amC amC apa aqm -arB -atc -aun -arB -awH -aud -arB +aae +abk +adI +aiT +anz +asU +aiT aAl -arB +asV atc -aEg -arB -aGP -aHU +atJ +aud +auk +auQ aJh aKv aLY @@ -122407,20 +122473,20 @@ amD amD amD aqn -arB -arB -arB -arB -arB -arB -arB +aae +aae +aae +aiT +aiT +aiT +aiT aHQ -arB -arB -arB -arB -arB -arB +asV +asV +asV +aud +aud +aud aJh aJh aJh diff --git a/_maps/map_files/OmegaStation/OmegaStation.dmm b/_maps/map_files/OmegaStation/OmegaStation.dmm index bd3d72dc85..74135af146 100644 --- a/_maps/map_files/OmegaStation/OmegaStation.dmm +++ b/_maps/map_files/OmegaStation/OmegaStation.dmm @@ -1677,6 +1677,25 @@ }, /turf/open/floor/plasteel, /area/maintenance/starboard) +"acz" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) +"acA" = ( +/turf/closed/wall/rust, +/area/crew_quarters/dorms_cabin) +"acB" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) +"acC" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket/letterman_nanotrasen, +/obj/item/clothing/suit/toggle/lawyer, +/obj/item/clothing/under/maid, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) "acD" = ( /obj/item/pickaxe/emergency, /turf/open/floor/plating/asteroid, @@ -2116,6 +2135,40 @@ /obj/structure/sign/warning/vacuum, /turf/open/floor/plating, /area/quartermaster/storage) +"adr" = ( +/obj/structure/dresser, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) +"ads" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket{ + desc = "All the class of a trenchcoat without the security fibers."; + icon_state = "detective"; + name = "trenchcoat" + }, +/obj/item/clothing/suit/toggle/lawyer/purple, +/obj/item/clothing/head/fedora{ + icon_state = "detective" + }, +/obj/item/clothing/under/geisha, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"adt" = ( +/obj/structure/dresser, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) +"adu" = ( +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) "adv" = ( /obj/structure/closet/crate{ icon_state = "crateopen" @@ -2134,6 +2187,14 @@ /obj/item/clothing/head/helmet/space/orange, /turf/open/floor/plating, /area/asteroid/nearstation) +"ady" = ( +/obj/structure/bed, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/item/bedsheet/blue, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) "adz" = ( /obj/structure/sign/warning/vacuum, /turf/closed/wall, @@ -2279,6 +2340,9 @@ /obj/structure/closet/crate/bin, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) +"adM" = ( +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "adN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/item/radio/intercom{ @@ -2380,6 +2444,14 @@ "adX" = ( /turf/closed/wall, /area/crew_quarters/heads/hop) +"adY" = ( +/obj/structure/bed, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/item/bedsheet/red, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/three) "adZ" = ( /obj/item/radio/intercom{ name = "Station Intercom"; @@ -2410,6 +2482,9 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"aeb" = ( +/turf/closed/wall/rust, +/area/crew_quarters/dorms_cabin/three) "aec" = ( /obj/machinery/conveyor{ dir = 8; @@ -2452,6 +2527,19 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"aef" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Cabin" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms_cabin) "aeg" = ( /obj/machinery/conveyor{ dir = 8; @@ -2477,6 +2565,35 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) +"aei" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Cabin" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms_cabin/three) +"aej" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) +"aek" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Cabin" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms_cabin/two) "ael" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance{ @@ -2490,6 +2607,9 @@ icon_state = "platingdmg3" }, /area/asteroid/nearstation) +"aen" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/four) "aeo" = ( /obj/structure/table, /obj/item/extinguisher/mini, @@ -2872,6 +2992,19 @@ /obj/effect/turf_decal/loading_area, /turf/open/floor/plasteel, /area/quartermaster/storage) +"aeR" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Cabin" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 2 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/dorms_cabin/four) "aeS" = ( /obj/structure/closet/crate, /obj/effect/turf_decal/delivery, @@ -2889,6 +3022,13 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"aeV" = ( +/turf/closed/wall/rust, +/area/crew_quarters/dorms_cabin/four) +"aeW" = ( +/obj/effect/landmark/event_spawn, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) "aeX" = ( /obj/machinery/light/small, /obj/effect/turf_decal/stripes/line{ @@ -2896,6 +3036,14 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"aeY" = ( +/obj/structure/bed, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/item/bedsheet/brown, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) "aeZ" = ( /obj/docking_port/stationary{ dir = 4; @@ -2907,6 +3055,9 @@ }, /turf/open/space/basic, /area/space) +"afa" = ( +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/four) "afb" = ( /obj/structure/door_assembly/door_assembly_mhatch, /obj/effect/turf_decal/stripes/line{ @@ -2917,6 +3068,14 @@ }, /turf/open/floor/plating, /area/asteroid/nearstation) +"afc" = ( +/obj/structure/bed, +/obj/machinery/newscaster{ + pixel_x = 32 + }, +/obj/item/bedsheet/black, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/four) "afd" = ( /obj/structure/table/wood, /obj/item/taperecorder, @@ -3380,6 +3539,30 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/storage) +"afJ" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket{ + desc = "All the class of a trenchcoat without the security fibers."; + icon_state = "detective"; + name = "trenchcoat" + }, +/obj/item/clothing/suit/toggle/lawyer/purple, +/obj/item/clothing/head/fedora{ + icon_state = "detective" + }, +/obj/item/clothing/under/lawyer/female, +/obj/machinery/light/small, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/two) +"afK" = ( +/obj/structure/dresser, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/crew_quarters/dorms_cabin/two) "afL" = ( /obj/structure/girder/reinforced, /turf/open/floor/plating, @@ -3395,6 +3578,19 @@ /obj/effect/turf_decal/sand/plating, /turf/open/floor/plating, /area/asteroid/nearstation) +"afO" = ( +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/item/clothing/suit/jacket{ + desc = "All the class of a trenchcoat without the security fibers."; + icon_state = "greydet"; + name = "trenchcoat" + }, +/obj/item/clothing/suit/toggle/lawyer/black, +/obj/item/clothing/head/fedora, +/obj/item/clothing/under/blacktango, +/obj/machinery/light/small, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/four) "afP" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, @@ -3666,6 +3862,13 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) +"agm" = ( +/obj/structure/dresser, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -32 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin/four) "agn" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/white, @@ -3812,6 +4015,9 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"agy" = ( +/turf/closed/wall/rust, +/area/crew_quarters/dorms_cabin/two) "agz" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ @@ -13844,47 +14050,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) -"axH" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket/letterman_nanotrasen, -/obj/item/clothing/suit/toggle/lawyer, -/obj/item/clothing/under/maid, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"axI" = ( -/obj/structure/dresser, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"axJ" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket{ - desc = "All the class of a trenchcoat without the security fibers."; - icon_state = "detective"; - name = "trenchcoat" - }, -/obj/item/clothing/suit/toggle/lawyer/purple, -/obj/item/clothing/head/fedora{ - icon_state = "detective" - }, -/obj/item/clothing/under/geisha, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"axK" = ( -/obj/structure/dresser, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "axM" = ( /obj/structure/table/wood, /obj/item/lipstick/random{ @@ -14211,28 +14376,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"ayz" = ( -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"ayA" = ( -/obj/structure/bed, -/obj/machinery/newscaster{ - pixel_x = 32 - }, -/obj/item/bedsheet/blue, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"ayB" = ( -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"ayC" = ( -/obj/structure/bed, -/obj/machinery/newscaster{ - pixel_x = 32 - }, -/obj/item/bedsheet/red, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "ayE" = ( /obj/structure/table/wood, /obj/item/instrument/violin, @@ -14750,19 +14893,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"azD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Cabin" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 2 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/dorms) "azE" = ( /obj/structure/table/wood, /obj/item/staff/broom, @@ -16817,26 +16947,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/dorms) -"aDG" = ( -/obj/effect/landmark/event_spawn, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aDH" = ( -/obj/structure/bed, -/obj/machinery/newscaster{ - pixel_x = 32 - }, -/obj/item/bedsheet/brown, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aDI" = ( -/obj/structure/bed, -/obj/machinery/newscaster{ - pixel_x = 32 - }, -/obj/item/bedsheet/black, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "aDJ" = ( /obj/structure/table/wood, /obj/item/lipstick/random{ @@ -17519,50 +17629,6 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/dorms) -"aEO" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket{ - desc = "All the class of a trenchcoat without the security fibers."; - icon_state = "detective"; - name = "trenchcoat" - }, -/obj/item/clothing/suit/toggle/lawyer/purple, -/obj/item/clothing/head/fedora{ - icon_state = "detective" - }, -/obj/item/clothing/under/lawyer/female, -/obj/machinery/light/small, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"aEP" = ( -/obj/structure/dresser, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -32 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/crew_quarters/dorms) -"aEQ" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/suit/jacket{ - desc = "All the class of a trenchcoat without the security fibers."; - icon_state = "greydet"; - name = "trenchcoat" - }, -/obj/item/clothing/suit/toggle/lawyer/black, -/obj/item/clothing/head/fedora, -/obj/item/clothing/under/blacktango, -/obj/machinery/light/small, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aER" = ( -/obj/structure/dresser, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -32 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "aES" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/baguette, @@ -81051,16 +81117,16 @@ asW atQ auU avZ -awQ -awQ -awQ -sDl +acz +acz +acz +acA aAH bxK -awQ -awQ -awQ -awQ +aej +aej +aej +aej arY awe sIK @@ -81308,16 +81374,16 @@ asX atR auV awa -sDl -axH -ayz -azD +acA +acC +adu +aef aAH aBQ -azD -aDG -aEO -sDl +aek +aeW +afJ +agy aGD aHM aIE @@ -81565,16 +81631,16 @@ asY atS auW awb -awQ -axI -ayA -awQ +acz +adr +ady +acz aAH aBQ -awQ -aDH -aEP -awQ +aej +aeY +afK +aej aGE aHL aIF @@ -81822,16 +81888,16 @@ asZ atT auX awc -awQ -awQ -awQ -awQ +acB +acB +acB +acB aAI aBR -awQ -awQ -awQ -awQ +aen +aen +aen +aen bxN sIB cfz @@ -82079,16 +82145,16 @@ aHF atU apI apI -awQ -axJ -ayB -azD +acB +ads +adM +aei aAH aBS -azD -ayz -aEQ -sDl +aeR +afa +afO +aeV arY aHM aIG @@ -82336,16 +82402,16 @@ atb atV auY awd -awQ -axK -ayC -awQ +acB +adt +adY +acB abn aBT -awQ -aDI -aER -awQ +aen +afc +agm +aen aGG aHM aIH @@ -82593,16 +82659,16 @@ atc aoM atc awe +acB +acB +aeb +acB awQ awQ -sDl -awQ -awQ -awQ -sDl -awQ -awQ -awQ +aeV +aen +aen +aen arY sIB aII diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 9f1c1824cd..48ad754721 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -59,10 +59,590 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/heads/captain) +"aag" = ( +/turf/closed/wall/mineral/iron, +/area/chapel/main/monastery_cabin) +"aah" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/chaplain/holidaypriest, +/obj/item/clothing/suit/chaplain/nun, +/obj/item/clothing/head/nun_hood, +/obj/machinery/button/door{ + id = "Cell1"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aai" = ( +/obj/structure/dresser, +/obj/structure/sign/plaques/deempisi{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aaj" = ( +/obj/structure/table/wood, +/obj/effect/decal/cleanable/cobweb{ + icon_state = "cobweb2" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/item/flashlight/lantern, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aak" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/chapel/main/monastery_cabin) +"aal" = ( +/obj/machinery/door/airlock{ + id_tag = "Cell1"; + name = "Cell 1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aam" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aan" = ( +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aao" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aap" = ( +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aaq" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/chapel/main/monastery_cabin) +"aar" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/mineral/iron, +/area/chapel/main/monastery_cabin) +"aas" = ( +/obj/structure/table/wood, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/item/instrument/violin, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aat" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aau" = ( +/obj/structure/bed, +/obj/item/bedsheet/green, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin) +"aav" = ( +/obj/machinery/shower{ + dir = 8; + pixel_y = -4 + }, +/obj/item/soap/homemade, +/turf/open/floor/plasteel/showroomfloor, +/area/chapel/main/monastery_cabin) +"aaw" = ( +/turf/closed/wall/mineral/iron, +/area/chapel/main/monastery_cabin/two) +"aax" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/chaplain/holidaypriest, +/obj/item/clothing/suit/chaplain/nun, +/obj/item/clothing/head/nun_hood, +/obj/machinery/button/door{ + id = "Cell2"; + name = "Cell Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -25; + specialfunctions = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aay" = ( +/obj/structure/dresser, +/obj/structure/sign/plaques/deempisi{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaz" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/easel, +/obj/item/canvas/twentythreeXnineteen, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaA" = ( +/obj/structure/toilet{ + pixel_y = 8 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/chapel/main/monastery_cabin/two) +"aaB" = ( +/obj/machinery/door/airlock{ + id_tag = "Cell2"; + name = "Cell 2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaC" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaD" = ( +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaF" = ( +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaG" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/turf/open/floor/plasteel/showroomfloor, +/area/chapel/main/monastery_cabin/two) +"aaH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall/mineral/iron, +/area/chapel/main/monastery_cabin/two) +"aaI" = ( +/obj/structure/table/wood, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/item/storage/crayons, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaJ" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaK" = ( +/obj/structure/bed, +/obj/item/bedsheet/yellow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/grimy, +/area/chapel/main/monastery_cabin/two) +"aaL" = ( +/obj/machinery/shower{ + dir = 8; + pixel_y = -4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/plasteel/showroomfloor, +/area/chapel/main/monastery_cabin/two) +"aaM" = ( +/obj/machinery/door/airlock/command{ + name = "MiniSat Access"; + req_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"aaN" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/obj/machinery/door/airlock/external{ + name = "Bridge External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/bridge) +"aaO" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) +"aaP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) +"aaQ" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Dorm3Shutters"; + name = "Dorm Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/dorms_cabin/three) +"aaR" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm3Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26 + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) +"aaS" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/plaques/deempisi{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) +"aaT" = ( +/obj/machinery/button/door{ + id = "Dorm3"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + specialfunctions = 4 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) +"aaU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/three) +"aaV" = ( +/obj/machinery/door/airlock/command{ + name = "MiniSat Access"; + req_access_txt = "65" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/bridge) +"aaW" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + name = "Bridge External Access"; + req_access_txt = "10;13" + }, +/turf/open/floor/plating, +/area/bridge) +"aaX" = ( +/obj/structure/dresser, +/turf/open/floor/wood, +/area/crew_quarters/dorms_cabin/three) +"aaY" = ( +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/crew_quarters/dorms_cabin/three) +"aaZ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/wood{ + icon_state = "wood-broken7" + }, +/area/crew_quarters/dorms_cabin/three) +"aba" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm3"; + name = "Dorm 3" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/three) +"abb" = ( +/obj/machinery/door/airlock/command{ + name = "External Access"; + req_one_access_txt = "19; 65" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/dark, +/area/bridge) +"abc" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Dorm2Shutters"; + name = "Dorm Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/dorms_cabin/two) +"abd" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm2Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) +"abe" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/plaques/deempisi{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) "abf" = ( /obj/structure/bed, /turf/open/floor/plating, /area/maintenance/department/science) +"abg" = ( +/obj/machinery/button/door{ + id = "Dorm2"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) +"abh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) +"abi" = ( +/obj/structure/table/wood, +/obj/item/storage/book/bible, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) +"abj" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) +"abk" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/dorms_cabin/two) +"abl" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm2"; + name = "Dorm 2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin/two) +"abm" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin/two) +"abn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "Dorm1Shutters"; + name = "Dorm Shutters" + }, +/turf/open/floor/plating, +/area/crew_quarters/dorms_cabin) +"abo" = ( +/obj/structure/bed, +/obj/machinery/button/door{ + id = "Dorm1Shutters"; + name = "Privacy Shutters Control"; + pixel_y = 26; + req_access_txt = "0" + }, +/obj/effect/spawner/lootdrop/bedsheet, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) +"abp" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/sign/plaques/deempisi{ + pixel_y = 28 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) +"abq" = ( +/obj/machinery/button/door{ + id = "Dorm1"; + name = "Dorm Bolt Control"; + normaldoorcontrol = 1; + pixel_x = 25; + req_access_txt = "0"; + specialfunctions = 4 + }, +/obj/structure/closet/secure_closet/personal/cabinet, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) +"abr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) +"abs" = ( +/obj/structure/table/wood, +/obj/item/storage/book/bible, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) +"abt" = ( +/obj/structure/chair/wood/normal{ + dir = 8 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) +"abu" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/grimy, +/area/crew_quarters/dorms_cabin) +"abv" = ( +/obj/machinery/door/airlock{ + id_tag = "Dorm1"; + name = "Dorm 1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/crew_quarters/dorms_cabin) +"abw" = ( +/turf/closed/wall, +/area/crew_quarters/dorms_cabin) "aby" = ( /obj/structure/lattice, /obj/structure/grille, @@ -7981,16 +8561,6 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall, /area/bridge) -"atM" = ( -/obj/machinery/door/airlock/command{ - name = "MiniSat Access"; - req_access_txt = "65" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 10 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/turret_protected/aisat_interior) "atN" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 5 @@ -8109,14 +8679,6 @@ "atY" = ( /turf/closed/wall, /area/bridge) -"atZ" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/obj/machinery/door/airlock/external{ - name = "Bridge External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat_interior) "aua" = ( /obj/structure/closet/secure_closet/freezer/money, /obj/item/reagent_containers/food/drinks/bottle/vodka/badminka, @@ -8233,10 +8795,6 @@ }, /turf/open/floor/plasteel/dark, /area/gateway) -"auj" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, -/turf/closed/wall, -/area/crew_quarters/dorms) "auk" = ( /obj/machinery/door/airlock{ name = "Laundry Room" @@ -8611,48 +9169,6 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/gateway) -"avd" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Dorm3Shutters"; - name = "Dorm Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/dorms) -"ave" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm3Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26 - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"avf" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/sign/plaques/deempisi{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"avg" = ( -/obj/machinery/button/door{ - id = "Dorm3"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - specialfunctions = 4 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden, -/turf/open/floor/wood, -/area/crew_quarters/dorms) "avh" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -9015,28 +9531,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) -"avQ" = ( -/obj/machinery/door/airlock/command{ - name = "MiniSat Access"; - req_access_txt = "65" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/turret_protected/aisat_interior) "avR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 @@ -9133,16 +9627,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) -"awc" = ( -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 1 - }, -/obj/machinery/door/airlock/external{ - name = "Bridge External Access"; - req_access_txt = "10;13" - }, -/turf/open/floor/plating, -/area/ai_monitored/turret_protected/aisat_interior) "awd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -9236,43 +9720,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"awn" = ( -/obj/structure/dresser, -/turf/open/floor/wood, -/area/crew_quarters/dorms) -"awo" = ( -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/crew_quarters/dorms) -"awp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/wood{ - icon_state = "wood-broken7" - }, -/area/crew_quarters/dorms) -"awq" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm3"; - name = "Dorm 3" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) "awr" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ dir = 4 @@ -10019,17 +10466,6 @@ }, /turf/open/floor/plasteel/dark, /area/bridge) -"aye" = ( -/obj/machinery/door/airlock/command{ - name = "External Access"; - req_one_access_txt = "19; 65" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/turret_protected/aisat_interior) "ayf" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -10064,52 +10500,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/stairs, /area/hallway/primary/central) -"ayi" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Dorm2Shutters"; - name = "Dorm Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/dorms) -"ayj" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm2Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26; - req_access_txt = "0" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"ayk" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/sign/plaques/deempisi{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"ayl" = ( -/obj/machinery/button/door{ - id = "Dorm2"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) "aym" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -10601,43 +10991,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/hallway/primary/central) -"azr" = ( -/obj/structure/table/wood, -/obj/item/storage/book/bible, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"azs" = ( -/obj/structure/chair/wood/normal{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"azt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/dorms) -"azu" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm2"; - name = "Dorm 2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) "azv" = ( /obj/structure/chair/comfy{ dir = 4 @@ -11522,52 +11875,6 @@ /obj/item/crowbar, /turf/open/floor/plasteel, /area/hallway/primary/central) -"aBL" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "Dorm1Shutters"; - name = "Dorm Shutters" - }, -/turf/open/floor/plating, -/area/crew_quarters/dorms) -"aBM" = ( -/obj/structure/bed, -/obj/machinery/button/door{ - id = "Dorm1Shutters"; - name = "Privacy Shutters Control"; - pixel_y = 26; - req_access_txt = "0" - }, -/obj/effect/spawner/lootdrop/bedsheet, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aBN" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/sign/plaques/deempisi{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aBO" = ( -/obj/machinery/button/door{ - id = "Dorm1"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = 25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) "aBP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -12188,43 +12495,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"aDb" = ( -/obj/structure/table/wood, -/obj/item/storage/book/bible, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aDc" = ( -/obj/structure/chair/wood/normal{ - dir = 8 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aDd" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/crew_quarters/dorms) -"aDe" = ( -/obj/machinery/door/airlock{ - id_tag = "Dorm1"; - name = "Dorm 1" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/crew_quarters/dorms) "aDf" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, @@ -47448,48 +47718,6 @@ /obj/item/seeds/sugarcane, /turf/open/floor/grass, /area/hydroponics/garden/monastery) -"cgL" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/suit/chaplain/holidaypriest, -/obj/item/clothing/suit/chaplain/nun, -/obj/item/clothing/head/nun_hood, -/obj/machinery/button/door{ - id = "Cell1"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"cgM" = ( -/obj/structure/dresser, -/obj/structure/sign/plaques/deempisi{ - pixel_y = 28 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"cgN" = ( -/obj/structure/table/wood, -/obj/effect/decal/cleanable/cobweb{ - icon_state = "cobweb2" - }, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/flashlight/lantern, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"cgO" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/chapel/main/monastery) "cgP" = ( /obj/structure/transit_tube, /turf/open/floor/plating/airless, @@ -47605,42 +47833,6 @@ }, /turf/open/floor/plasteel/dark, /area/chapel/main/monastery) -"chp" = ( -/obj/machinery/door/airlock{ - id_tag = "Cell1"; - name = "Cell 1" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"chq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"chr" = ( -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"chs" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"cht" = ( -/obj/machinery/door/airlock{ - name = "Bathroom" - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"chu" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/chapel/main/monastery) "chv" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -47716,42 +47908,6 @@ }, /turf/closed/wall, /area/chapel/main/monastery) -"chK" = ( -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/item/instrument/violin, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"chL" = ( -/obj/structure/chair/wood/normal{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"chM" = ( -/obj/structure/bed, -/obj/item/bedsheet/green, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"chN" = ( -/obj/machinery/shower{ - dir = 8; - pixel_y = -4 - }, -/obj/item/soap/homemade, -/turf/open/floor/plasteel/showroomfloor, -/area/chapel/main/monastery) "chU" = ( /obj/structure/sink{ dir = 4; @@ -47816,34 +47972,6 @@ /obj/structure/transit_tube/crossing, /turf/open/floor/plating/airless, /area/space/nearstation) -"cio" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/suit/chaplain/holidaypriest, -/obj/item/clothing/suit/chaplain/nun, -/obj/item/clothing/head/nun_hood, -/obj/machinery/button/door{ - id = "Cell2"; - name = "Cell Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - specialfunctions = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"cip" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/easel, -/obj/item/canvas/twentythreeXnineteen, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"ciq" = ( -/obj/structure/toilet{ - pixel_y = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/chapel/main/monastery) "cit" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 5 @@ -47898,16 +48026,6 @@ }, /turf/open/floor/grass, /area/hydroponics/garden/monastery) -"ciF" = ( -/obj/machinery/door/airlock{ - id_tag = "Cell2"; - name = "Cell 2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) "ciG" = ( /obj/machinery/camera{ c_tag = "Engineering Supermatter Aft"; @@ -47982,37 +48100,6 @@ /obj/structure/flora/ausbushes/pointybush, /turf/open/floor/grass, /area/hydroponics/garden/monastery) -"ciX" = ( -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/item/storage/crayons, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"ciY" = ( -/obj/structure/bed, -/obj/item/bedsheet/yellow, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 9 - }, -/turf/open/floor/plasteel/grimy, -/area/chapel/main/monastery) -"ciZ" = ( -/obj/machinery/shower{ - dir = 8; - pixel_y = -4 - }, -/obj/machinery/light/small{ - brightness = 3; - dir = 8 - }, -/obj/item/bikehorn/rubberducky, -/turf/open/floor/plasteel/showroomfloor, -/area/chapel/main/monastery) "cjf" = ( /obj/machinery/light/small{ dir = 8 @@ -81203,15 +81290,15 @@ cdB cfm cfm cfH -cfm -cfm -chp -cuQ -cfm -cfm -ciF -cuQ -cfm +aag +aag +aal +aar +aaw +aaw +aaB +aaH +aaw cfm fwo cfm @@ -81460,15 +81547,15 @@ cen bWV ctQ cfI -cfm -cgL -chq -chK -cfm -cio -chq -ciX -cfm +aag +aah +aam +aas +aaw +aax +aaC +aaI +aaw cfN cwA cfN @@ -81717,15 +81804,15 @@ bWV bWV bWV cfJ -cfm -cgM -chr -chL -cfm -cgM -chr -chL -cfm +aag +aai +aan +aat +aaw +aay +aaD +aaJ +aaw cfN xyT cfN @@ -81974,15 +82061,15 @@ cdD ceo bOw bQg -cfm -cgN -chs -chM -cfm -cip -chs -ciY -cfm +aag +aaj +aao +aau +aaw +aaz +aaE +aaK +aaw cfN cwA cfN @@ -82231,15 +82318,15 @@ bQg bQg bQg cfL -cfm -cfm -cht -cfm -cfm -cfm -cht -cfm -cfm +aag +aag +aap +aag +aaw +aaw +aaF +aaw +aaw cfN cwA cfN @@ -82488,15 +82575,15 @@ bQe bOw bUC bQg -cfm -cgO -chu -chN -cfm -ciq -chu -ciZ -cfm +aag +aak +aaq +aav +aaw +aaA +aaG +aaL +aaw cfN cwA cfN @@ -82745,15 +82832,15 @@ bNs bNs bNs bNs -cfm -cfm -cfm -cfm -cfm -cfm -cfm -cfm -cfm +aag +aag +aag +aag +aaw +aaw +aaw +aaw +aaw cfN cwA cjm @@ -90363,7 +90450,7 @@ aoz aqG arC asN -atM +aaM auL avO awV @@ -90879,7 +90966,7 @@ arE arA atO auM -avQ +aaV awW axW azc @@ -94736,7 +94823,7 @@ arA arA arA arA -aye +abb arA aAF aAH @@ -95246,9 +95333,9 @@ aaa aaa aaa ahi -atZ +aaN auV -awc +aaW axg ayg azp @@ -99358,16 +99445,16 @@ aiS aiS aiS aiS -apX -avd -avd -apX -ayi -ayi -apX -aBL -aBL -apX +aaO +aaQ +aaQ +aaO +abc +abc +abm +abn +abn +abw aET rYC aET @@ -99615,16 +99702,16 @@ ale ale asb coe -apX -ave -awn -apX -ayj -azr -apX -aBM -aDb -apX +aaO +aaR +aaX +aaO +abd +abi +abm +abo +abs +abw oFo jOB qbZ @@ -99872,16 +99959,16 @@ apX apX asc atf -apX -avf -awo -apX -ayk -azs -apX -aBN -aDc -apX +aaO +aaS +aaY +aaO +abe +abj +abm +abp +abt +abw aET cor aET @@ -100129,16 +100216,16 @@ apX aqT asd atg -auj -avg -awp -apX -ayl -azt -apX -aBO -aDd -apX +aaP +aaT +aaZ +aaO +abg +abk +abm +abq +abu +abw aEU aFE aGA @@ -100386,16 +100473,16 @@ apX aqU ase ath -apX -atf -awq -apX -atf -azu -apX -atf -aDe -apX +aaO +aaU +aba +aaO +abh +abl +abm +abr +abv +abw aFF vuP aGB diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 733a5ace75..44dad718e7 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -404,6 +404,10 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Dormitories" icon_state = "Sleep" +/area/crew_quarters/dorms/Initialize() + sub_areas = typesof(/area/crew_quarters/dorms_cabin) + return ..() + /area/crew_quarters/dorms/male name = "Male Dorm" icon_state = "Sleep" @@ -412,27 +416,27 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Female Dorm" icon_state = "Sleep" -/area/crew_quarters/dorms/cabin +/area/crew_quarters/dorms_cabin name = "Dorms Cabin One" icon_state = "sleep_cabin" safe = TRUE -/area/crew_quarters/dorms/cabin/two +/area/crew_quarters/dorms_cabin/two name = "Dorms Cabin Two" -/area/crew_quarters/dorms/cabin/three +/area/crew_quarters/dorms_cabin/three name = "Dorms Cabin Three" -/area/crew_quarters/dorms/cabin/four +/area/crew_quarters/dorms_cabin/four name = "Dorms Cabin Four" -/area/crew_quarters/dorms/cabin/five +/area/crew_quarters/dorms_cabin/five name = "Dorms Cabin Five" -/area/crew_quarters/dorms/cabin/six +/area/crew_quarters/dorms_cabin/six name = "Dorms Cabin Six" -/area/crew_quarters/dorms/cabin/seven +/area/crew_quarters/dorms_cabin/seven name = "Dorms Cabin Seven" /area/crew_quarters/rehab_dome @@ -563,6 +567,18 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/chapel/main/monastery name = "Monastery" +/area/chapel/main/monastery/Initialize() + sub_areas = typesof(/area/chapel/main/monastery_cabin) + return ..() + +/area/chapel/main/monastery_cabin + name = "Monastery Cabin One" + icon_state = "sleep_cabin" + safe = TRUE + +/area/chapel/main/monastery_cabin/two + name = "Monastery Cabin Two" + /area/chapel/office name = "Chapel Office" icon_state = "chapeloffice" From e35db533fe5deaf314bf71e50d6761f3cc066e33 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 11 Dec 2019 17:48:54 +0100 Subject: [PATCH 04/32] ready. --- code/game/area/areas.dm | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index a24f6211bc..018abc1515 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -257,7 +257,8 @@ GLOBAL_LIST_EMPTY(teleportlocs) atmosalm = danger_level for(var/i in sub_areas) - sub_areas[i].atmosalm = danger_level + var/area/A = i + A.atmosalm = danger_level return TRUE return FALSE @@ -286,9 +287,6 @@ GLOBAL_LIST_EMPTY(teleportlocs) if (!fire) set_fire_alarm_effects(TRUE) ModifyFiredoors(FALSE) - for(var/item in firealarms) - var/obj/machinery/firealarm/F = item - F.update_icon() for (var/item in GLOB.alert_consoles) var/obj/machinery/computer/station_alert/a = item @@ -309,9 +307,6 @@ GLOBAL_LIST_EMPTY(teleportlocs) if (fire) set_fire_alarm_effects(FALSE) ModifyFiredoors(TRUE) - for(var/item in firealarms) - var/obj/machinery/firealarm/F = item - F.update_icon() for (var/item in GLOB.silicon_mobs) var/mob/living/silicon/aiPlayer = item @@ -360,10 +355,12 @@ GLOBAL_LIST_EMPTY(teleportlocs) for(var/alarm in firealarms) var/obj/machinery/firealarm/F = alarm F.update_fire_light(fire) - for(var/obj/machinery/light/L in src) + F.update_icon() + for(var/obj/machinery/light/L in get_sub_areas_contents(src)) L.update() for(var/i in sub_areas) - sub_areas[i].fire = boolean + var/area/A = i + A.fire = boolean /area/proc/updateicon() var/weather_icon @@ -435,7 +432,8 @@ GLOBAL_LIST_EMPTY(teleportlocs) . += static_environ if(sub_areas) for(var/i in sub_areas) - . += sub_areas[i].usage(chan) + var/area/A = i + . += A.usage(chan) /area/proc/addStaticPower(value, powerchannel) switch(powerchannel) @@ -452,7 +450,8 @@ GLOBAL_LIST_EMPTY(teleportlocs) used_environ = 0 if(sub_areas) for(var/i in sub_areas) - sub_areas[i].clear_usage() + var/area/A = i + A.clear_usage() /area/proc/use_power(amount, chan) From 7a3cb3bd58567b1301a4899a3199980445a9c5c3 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Wed, 11 Dec 2019 19:17:44 +0100 Subject: [PATCH 05/32] Oversight. --- code/game/area/areas.dm | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 018abc1515..e1d6cd82cc 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -131,24 +131,28 @@ GLOBAL_LIST_EMPTY(teleportlocs) reg_in_areas_in_z() //so far I'm only implementing it on mapped unique areas, it's easier this way. - if(unique && LAZYLEN(sub_areas)) - var/paths = sub_areas.Copy() + if(unique && sub_areas) + if(type in sub_areas) + WARNING("\"[src]\" typepath found inside its own sub-areas list, please make sure it doesn't share its parent type initial sub-areas value.") + sub_areas = null + else + var/paths = sub_areas.Copy() + sub_areas = null + for(var/type in paths) + var/area/A = GLOB.areas_by_type[type] + if(!A) //By chance an area not loaded in the current world, no warning report. + continue + if(A == src) + WARNING("\"[src]\" area a attempted to link with itself.") + continue + if(A.base_area) + WARNING("[src] attempted to link with [A] while the latter is already linked to another area ([A.base_area]).") + continue + LAZYADD(sub_areas, A) + A.base_area = src + else if(LAZYLEN(sub_areas)) + WARNING("sub-areas are currently not supported for non-unique areas such as [src].") sub_areas = null - for(var/type in paths) - var/area/A = GLOB.areas_by_type[type] - if(!A) - /* By chance an area not loaded in the station, ruin or map, let's not bother for now. - WARNING("No area of type [type] found in GLOB.areas_by_type for [src]'s linked areas.") - */ - continue - if(A == src) - WARNING("\"[src]\" area a attempted to link with itself.") - continue - if(A.base_area) - WARNING("[src] attempted to link with [A] while the latter is already linked to another area ([A.base_area]).") - continue - LAZYADD(sub_areas, A) - A.base_area = src return INITIALIZE_HINT_LATELOAD From e1998e1bab6de5d1104d950f0387134ee317e642 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Thu, 12 Dec 2019 23:16:06 +0100 Subject: [PATCH 06/32] set the sub areas fire var before the fire alarms update their icons. --- code/game/area/areas.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index e1d6cd82cc..43a35b9b51 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -355,6 +355,9 @@ GLOBAL_LIST_EMPTY(teleportlocs) /area/proc/set_fire_alarm_effects(boolean) fire = boolean + for(var/i in sub_areas) + var/area/A = i + A.fire = boolean mouse_opacity = MOUSE_OPACITY_TRANSPARENT for(var/alarm in firealarms) var/obj/machinery/firealarm/F = alarm @@ -362,9 +365,6 @@ GLOBAL_LIST_EMPTY(teleportlocs) F.update_icon() for(var/obj/machinery/light/L in get_sub_areas_contents(src)) L.update() - for(var/i in sub_areas) - var/area/A = i - A.fire = boolean /area/proc/updateicon() var/weather_icon From 05c903e4a31c9e23240437e9c1ad6ca1e8b85d1d Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 6 Jan 2020 23:44:33 -0800 Subject: [PATCH 07/32] Update life.dm --- code/modules/mob/living/carbon/monkey/life.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 906e138b0a..77f5a2591e 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -30,6 +30,9 @@ /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) + if(prob(max(0, radiation - RAD_MOB_MUTATE) / 100)) + gorillize() + return if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!IsKnockdown()) emote("collapse") @@ -41,10 +44,6 @@ randmutb() emote("gasp") domutcheck() - - if(radiation > RAD_MOB_MUTATE * 2 && prob(50)) - gorillize() - return if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) vomit(10, TRUE) return ..() From d461e70a9b7ff143ab25c7b25cdca3bd048f8da3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Mon, 6 Jan 2020 23:45:39 -0800 Subject: [PATCH 08/32] Update life.dm --- code/modules/mob/living/carbon/monkey/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 77f5a2591e..ca6f5db5ca 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -30,7 +30,7 @@ /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) - if(prob(max(0, radiation - RAD_MOB_MUTATE) / 100)) + if(prob(max(0, radiation - RAD_MOB_MUTATE) / 25)) gorillize() return if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) From b1a4cc0406868fe2b516354796a2ffc1d7ac35db Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 20 Jan 2020 21:17:06 +0100 Subject: [PATCH 09/32] renormalize --- code/game/area/Space_Station_13_areas.dm | 2776 +++++++++++----------- code/game/machinery/firealarm.dm | 680 +++--- 2 files changed, 1709 insertions(+), 1747 deletions(-) diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 3b586ac317..ad4c0c232d 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -1,1407 +1,1369 @@ -/* - -### This file contains a list of all the areas in your station. Format is as follows: - -/area/CATEGORY/OR/DESCRIPTOR/NAME (you can make as many subdivisions as you want) - name = "NICE NAME" (not required but makes things really nice) - icon = 'ICON FILENAME' (defaults to 'icons/turf/areas.dmi') - icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) - requires_power = FALSE (defaults to true) - music = null (defaults to nothing, look in sound/ambience for music) - -NOTE: there are two lists of areas in the end of this file: centcom and station itself. Please maintain these lists valid. --rastaf0 - -*/ - - -/*-----------------------------------------------------------------------------*/ - -/area/ai_monitored //stub defined ai_monitored.dm - -/area/ai_monitored/turret_protected - -/area/arrival - requires_power = FALSE - -/area/arrival/start - name = "Arrival Area" - icon_state = "start" - -/area/admin - name = "Admin room" - icon_state = "start" - -/area/space - icon_state = "space" - requires_power = TRUE - always_unpowered = TRUE - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - power_light = FALSE - power_equip = FALSE - power_environ = FALSE - valid_territory = FALSE - outdoors = TRUE - ambientsounds = SPACE - blob_allowed = FALSE //Eating up space doesn't count for victory as a blob. - -/area/space/nearstation - icon_state = "space_near" - dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT - -/area/start - name = "start area" - icon_state = "start" - requires_power = FALSE - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - has_gravity = STANDARD_GRAVITY - - -//EXTRA - -/area/asteroid - name = "Asteroid" - icon_state = "asteroid" - requires_power = FALSE - has_gravity = STANDARD_GRAVITY - blob_allowed = FALSE //Nope, no winning on the asteroid as a blob. Gotta eat the station. - valid_territory = FALSE - ambientsounds = MINING - -/area/asteroid/nearstation - dynamic_lighting = DYNAMIC_LIGHTING_FORCED - ambientsounds = RUINS - always_unpowered = FALSE - requires_power = TRUE - blob_allowed = TRUE - -/area/asteroid/nearstation/bomb_site - name = "Bomb Testing Asteroid" - -/area/asteroid/cave - name = "Asteroid - Underground" - icon_state = "cave" - requires_power = FALSE - outdoors = TRUE - -/area/asteroid/cave/space - name = "Asteroid - Space" - -/area/asteroid/artifactroom - name = "Asteroid - Artifact" - icon_state = "cave" - ambientsounds = RUINS - -/area/asteroid/artifactroom/Initialize() - . = ..() - set_dynamic_lighting() - - -//STATION13 - -//Maintenance - -/area/maintenance - ambientsounds = MAINTENANCE - valid_territory = FALSE - - -//Departments - -/area/maintenance/department/chapel - name = "Chapel Maintenance" - icon_state = "maint_chapel" - -/area/maintenance/department/chapel/monastery - name = "Monastery Maintenance" - icon_state = "maint_monastery" - -/area/maintenance/department/crew_quarters/bar - name = "Bar Maintenance" - icon_state = "maint_bar" - -/area/maintenance/department/crew_quarters/dorms - name = "Dormitory Maintenance" - icon_state = "maint_dorms" - -/area/maintenance/department/crew_quarters/locker - name = "Locker Room Maintenance" - icon_state = "maint_locker" - -/area/maintenance/department/eva - name = "EVA Maintenance" - icon_state = "maint_eva" - -/area/maintenance/department/electrical - name = "Electrical Maintenance" - icon_state = "maint_electrical" - -/area/maintenance/department/engine/atmos - name = "Atmospherics Maintenance" - icon_state = "maint_atmos" - -/area/maintenance/department/security - name = "Security Maintenance" - icon_state = "maint_sec" - -/area/maintenance/department/security/brig - name = "Brig Maintenance" - icon_state = "maint_brig" - -/area/maintenance/department/medical - name = "Medbay Maintenance" - icon_state = "medbay_maint" - -/area/maintenance/department/medical/morgue - name = "Morgue Maintenance" - icon_state = "morgue_maint" - -/area/maintenance/department/science - name = "Science Maintenance" - icon_state = "maint_sci" - -/area/maintenance/department/cargo - name = "Cargo Maintenance" - icon_state = "maint_cargo" - -/area/maintenance/department/bridge - name = "Bridge Maintenance" - icon_state = "maint_bridge" - -/area/maintenance/department/engine - name = "Engineering Maintenance" - icon_state = "maint_engi" - -/area/maintenance/department/science/xenobiology - name = "Xenobiology Maintenance" - icon_state = "xenomaint" - xenobiology_compatible = TRUE - - -//Maintenance - Generic - -/area/maintenance/arrivals/north - name = "Arrivals North Maintenance" - icon_state = "fpmaint" - -/area/maintenance/arrivals/north_2 - name = "Arrivals North Maintenance" - icon_state = "fpmaint" - -/area/maintenance/aft - name = "Aft Maintenance" - icon_state = "amaint" - -/area/maintenance/aft/secondary - name = "Aft Maintenance" - icon_state = "amaint_2" - -/area/maintenance/central - name = "Central Maintenance" - icon_state = "maintcentral" - -/area/maintenance/central/secondary - name = "Central Maintenance" - icon_state = "maintcentral" - -/area/maintenance/fore - name = "Fore Maintenance" - icon_state = "fmaint" - -/area/maintenance/fore/secondary - name = "Fore Maintenance" - icon_state = "fmaint_2" - -/area/maintenance/starboard - name = "Starboard Maintenance" - icon_state = "smaint" - -/area/maintenance/starboard/central - name = "Central Starboard Maintenance" - icon_state = "smaint" - -/area/maintenance/starboard/aft - name = "Starboard Quarter Maintenance" - icon_state = "asmaint" - -/area/maintenance/starboard/fore - name = "Starboard Bow Maintenance" - icon_state = "fsmaint" - -/area/maintenance/port - name = "Port Maintenance" - icon_state = "pmaint" - -/area/maintenance/port/central - name = "Central Port Maintenance" - icon_state = "maintcentral" - -/area/maintenance/port/aft - name = "Port Quarter Maintenance" - icon_state = "apmaint" - -/area/maintenance/port/fore - name = "Port Bow Maintenance" - icon_state = "fpmaint" - -/area/maintenance/disposal - name = "Waste Disposal" - icon_state = "disposal" - -/area/maintenance/disposal/incinerator - name = "Incinerator" - icon_state = "disposal" -/area/maintenance/bar - name = "Maintenance Bar" - icon_state = "maintbar" - -/area/maintenance/bar/cafe - name = "Abandoned Cafe" - -//Hallway - -/area/hallway - nightshift_public_area = NIGHTSHIFT_AREA_PUBLIC - -/area/hallway/primary/aft - name = "Aft Primary Hallway" - icon_state = "hallA" - -/area/hallway/primary/fore - name = "Fore Primary Hallway" - icon_state = "hallF" - -/area/hallway/primary/starboard - name = "Starboard Primary Hallway" - icon_state = "hallS" - -/area/hallway/primary/starboard/aft - name = "Starboard Quarter Primary Hallway" - icon_state = "hallAS" - -/area/hallway/primary/starboard/fore - name = "Starboard Bow Primary Hallway" - icon_state = "hallFS" - -/area/hallway/primary/port - name = "Port Primary Hallway" - icon_state = "hallP" - -/area/hallway/primary/port/aft - name = "Port Quarter Primary Hallway" - icon_state = "hallAP" - -/area/hallway/primary/port/fore - name = "Port Bow Primary Hallway" - icon_state = "hallFP" - -/area/hallway/primary/central - name = "Central Primary Hallway" - icon_state = "hallC" - -/area/hallway/secondary/command - name = "Command Hallway" - icon_state = "bridge_hallway" - -/area/hallway/secondary/construction - name = "Construction Area" - icon_state = "construction" - -/area/hallway/secondary/exit - name = "Escape Shuttle Hallway" - icon_state = "escape" - -/area/hallway/secondary/exit/departure_lounge - name = "Departure Lounge" - icon_state = "escape_lounge" - -/area/hallway/secondary/entry - name = "Arrival Shuttle Hallway" - icon_state = "entry" - -/area/hallway/secondary/service - name = "Service Hallway" - icon_state = "hall_service" - -//Command - -/area/bridge - name = "Bridge" - icon_state = "bridge" - music = "signal" - -/area/bridge/meeting_room - name = "Heads of Staff Meeting Room" - icon_state = "meeting" - music = null - -/area/bridge/meeting_room/council - name = "Council Chamber" - icon_state = "meeting" - music = null - -/area/bridge/showroom/corporate - name = "Corporate Showroom" - icon_state = "showroom" - music = null - -/area/crew_quarters/heads/captain - name = "Captain's Office" - icon_state = "captain" - clockwork_warp_allowed = FALSE - -/area/crew_quarters/heads/captain/private - name = "Captain's Quarters" - icon_state = "captain" - -/area/crew_quarters/heads/chief - name = "Chief Engineer's Office" - icon_state = "ce_office" - -/area/crew_quarters/heads/chief/private - name = "Chief Engineer's Private Quarters" - icon_state = "ce_private" - -/area/crew_quarters/heads/cmo - name = "Chief Medical Officer's Office" - icon_state = "cmo_office" - -/area/crew_quarters/heads/cmo/private - name = "Chief Medical Officer's Private Quarters" - icon_state = "cmo_private" - -/area/crew_quarters/heads/hop - name = "Head of Personnel's Office" - icon_state = "hop_office" - -/area/crew_quarters/heads/hop/private - name = "Head of Personnel's Private Quarters" - icon_state = "hop_private" - -/area/crew_quarters/heads/hos - name = "Head of Security's Office" - icon_state = "hos_office" - -/area/crew_quarters/heads/hos/private - name = "Head of Security's Private Quarters" - icon_state = "hos_private" - -/area/crew_quarters/heads/hor - name = "Research Director's Office" - icon_state = "rd_office" - -/area/crew_quarters/heads/hor/private - name = "Research Director's Private Quarters" - icon_state = "rd_private" - -/area/comms - name = "Communications Relay" - icon_state = "tcomsatcham" - -/area/server - name = "Messaging Server Room" - icon_state = "server" - -//Crew - -/area/crew_quarters/dorms - name = "Dormitories" - icon_state = "Sleep" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/dorms/Initialize() - sub_areas = typesof(/area/crew_quarters/dorms_cabin) - return ..() - -/area/crew_quarters/dorms/male - name = "Male Dorm" - icon_state = "Sleep" - nightshift_public_area = NIGHTSHIFT_AREA_NONE - -/area/crew_quarters/dorms/female - name = "Female Dorm" - icon_state = "Sleep" - nightshift_public_area = NIGHTSHIFT_AREA_NONE - -/area/crew_quarters/dorms_cabin - name = "Dorms Cabin One" - icon_state = "sleep_cabin" - safe = TRUE - -/area/crew_quarters/dorms_cabin/two - name = "Dorms Cabin Two" - -/area/crew_quarters/dorms_cabin/three - name = "Dorms Cabin Three" - -/area/crew_quarters/dorms_cabin/four - name = "Dorms Cabin Four" - -/area/crew_quarters/dorms_cabin/five - name = "Dorms Cabin Five" - -/area/crew_quarters/dorms_cabin/six - name = "Dorms Cabin Six" - -/area/crew_quarters/dorms_cabin/seven - name = "Dorms Cabin Seven" - -/area/crew_quarters/rehab_dome - name = "Rehabilitation Dome" - icon_state = "Sleep" - -/area/crew_quarters/toilet - name = "Dormitory Toilets" - icon_state = "toilet" - -/area/crew_quarters/toilet/auxiliary - name = "Auxiliary Restrooms" - icon_state = "toilet" - -/area/crew_quarters/toilet/locker - name = "Locker Toilets" - icon_state = "toilet" - -/area/crew_quarters/toilet/fitness - name = "Fitness Toilets" - icon_state = "toilet" - -/area/crew_quarters/toilet/female - name = "Female Toilets" - icon_state = "toilet" - -/area/crew_quarters/toilet/male - name = "Male Toilets" - icon_state = "toilet" - -/area/crew_quarters/toilet/restrooms - name = "Restrooms" - icon_state = "toilet" - -/area/crew_quarters/locker - name = "Locker Room" - icon_state = "locker" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/lounge - name = "Lounge" - icon_state = "yellow" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/fitness - name = "Fitness Room" - icon_state = "fitness" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/fitness/recreation - name = "Recreation Area" - icon_state = "fitness" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/cafeteria - name = "Cafeteria" - icon_state = "cafeteria" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/cafeteria/lunchroom - name = "Lunchroom" - icon_state = "cafeteria" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/kitchen - name = "Kitchen" - icon_state = "kitchen" - -/area/crew_quarters/kitchen/backroom - name = "Kitchen Coldroom" - icon_state = "kitchen" - -/area/crew_quarters/bar - name = "Bar" - icon_state = "bar" - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/crew_quarters/bar/atrium - name = "Atrium" - icon_state = "bar" - -/area/crew_quarters/electronic_marketing_den - name = "Electronic Marketing Den" - icon_state = "bar" - -/area/crew_quarters/abandoned_gambling_den - name = "Abandoned Gambling Den" - icon_state = "abandoned_g_den" - -/area/crew_quarters/abandoned_gambling_den/secondary - icon_state = "abandoned_g_den_2" - -/area/crew_quarters/theatre - name = "Theatre" - icon_state = "Theatre" - -/area/crew_quarters/theatre/abandoned - name = "Abandoned Theatre" - icon_state = "Theatre" - -/area/crew_quarters/theatre/clown - name = "Clown's Office" - -/area/crew_quarters/theatre/mime - name = "Mime's Office" - -/area/crew_quarters/cryopod - name = "Cryogenics" - icon_state = "cryosleep" - -/area/library - name = "Library" - icon_state = "library" - flags_1 = NONE - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/library/lounge - name = "Library Lounge" - icon_state = "library" - -/area/library/abandoned - name = "Abandoned Library" - icon_state = "library" - flags_1 = NONE - nightshift_public_area = NIGHTSHIFT_AREA_NONE - -/area/chapel - icon_state = "chapel" - ambientsounds = HOLY - flags_1 = NONE - clockwork_warp_allowed = FALSE - clockwork_warp_fail = "The consecration here prevents you from warping in." - nightshift_public_area = NIGHTSHIFT_AREA_RECREATION - -/area/chapel/main - name = "Chapel" - -/area/chapel/main/monastery - name = "Monastery" - nightshift_public_area = NIGHTSHIFT_AREA_NONE - -/area/chapel/main/monastery/Initialize() - sub_areas = typesof(/area/chapel/main/monastery_cabin) - return ..() - -/area/chapel/main/monastery_cabin - name = "Monastery Cabin One" - icon_state = "sleep_cabin" - safe = TRUE - -/area/chapel/main/monastery_cabin/two - name = "Monastery Cabin Two" - -/area/chapel/office - name = "Chapel Office" - icon_state = "chapeloffice" - -/area/chapel/asteroid - name = "Chapel Asteroid" - icon_state = "explored" - -/area/chapel/asteroid/monastery - name = "Monastery Asteroid" - -/area/chapel/dock - name = "Chapel Dock" - icon_state = "construction" - -/area/lawoffice - name = "Law Office" - icon_state = "law" - - -//Engineering - -/area/engine - ambientsounds = ENGINEERING - -/area/engine/engine_smes - name = "Engineering SMES" - icon_state = "engine_smes" - -/area/engine/engineering - name = "Engineering" - icon_state = "engine" - -/area/engine/atmos - name = "Atmospherics" - icon_state = "atmos" - flags_1 = NONE - -/area/engine/atmospherics_engine - name = "Atmospherics Engine" - icon_state = "atmos_engine" - -/area/engine/supermatter - name = "Supermatter Engine" - icon_state = "engine_sm" - -/area/engine/break_room - name = "Engineering Foyer" - icon_state = "engine_foyer" - -/area/engine/gravity_generator - name = "Gravity Generator Room" - icon_state = "grav_gen" - clockwork_warp_allowed = FALSE - clockwork_warp_fail = "The gravitons generated here could throw off your warp's destination and possibly throw you into deep space." - -/area/engine/secure_construction - name = "Secure Construction Area" - icon_state = "engine" - -/area/engine/storage - name = "Engineering Storage" - icon_state = "engi_storage" - -/area/engine/storage_shared - name = "Shared Engineering Storage" - icon_state = "engi_storage" - -/area/engine/transit_tube - name = "Transit Tube" - icon_state = "transit_tube" - - -//Solars - -/area/solar - requires_power = FALSE - dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT - valid_territory = FALSE - blob_allowed = FALSE - flags_1 = NONE - ambientsounds = ENGINEERING - -/area/solar/fore - name = "Fore Solar Array" - icon_state = "yellow" - -/area/solar/aft - name = "Aft Solar Array" - icon_state = "yellow" - -/area/solar/aux/port - name = "Port Bow Auxiliary Solar Array" - icon_state = "panelsA" - -/area/solar/aux/starboard - name = "Starboard Bow Auxiliary Solar Array" - icon_state = "panelsA" - -/area/solar/starboard - name = "Starboard Solar Array" - icon_state = "panelsS" - -/area/solar/starboard/aft - name = "Starboard Quarter Solar Array" - icon_state = "panelsAS" - -/area/solar/starboard/fore - name = "Starboard Bow Solar Array" - icon_state = "panelsFS" - -/area/solar/port - name = "Port Solar Array" - icon_state = "panelsP" - -/area/solar/port/aft - name = "Port Quarter Solar Array" - icon_state = "panelsAP" - -/area/solar/port/fore - name = "Port Bow Solar Array" - icon_state = "panelsFP" - - -//Solar Maint - -/area/maintenance/solars - name = "Solar Maintenance" - icon_state = "yellow" - -/area/maintenance/solars/port - name = "Port Solar Maintenance" - icon_state = "SolarcontrolP" - -/area/maintenance/solars/port/aft - name = "Port Quarter Solar Maintenance" - icon_state = "SolarcontrolAP" - -/area/maintenance/solars/port/fore - name = "Port Bow Solar Maintenance" - icon_state = "SolarcontrolFP" - -/area/maintenance/solars/starboard - name = "Starboard Solar Maintenance" - icon_state = "SolarcontrolS" - -/area/maintenance/solars/starboard/aft - name = "Starboard Quarter Solar Maintenance" - icon_state = "SolarcontrolAS" - -/area/maintenance/solars/starboard/fore - name = "Starboard Bow Solar Maintenance" - icon_state = "SolarcontrolFS" - -/area/maintenance/solars/aux/port - name = "Port Auxiliary Solar Maintenance" - icon_state = "SolarcontrolA" - -/area/maintenance/solars/aux/port/aft - name = "Port Quarter Auxiliary Solar Maintenance" - icon_state = "SolarcontrolAP" - -/area/maintenance/solars/aux/port/fore - name = "Port Bow Auxiliary Solar Maintenance" - icon_state = "SolarcontrolA" - -/area/maintenance/solars/aux/starboard - name = "Starboard Auxiliary Solar Maintenance" - icon_state = "SolarcontrolA" - -/area/maintenance/solars/aux/starboard/aft - name = "Starboard Quarter Auxiliary Solar Maintenance" - icon_state = "SolarcontrolA" - -/area/maintenance/solars/aux/starboard/fore - name = "Starboard Bow Auxiliary Solar Maintenance" - icon_state = "SolarcontrolA" - -//Teleporter - -/area/teleporter - name = "Teleporter Room" - icon_state = "teleporter" - music = "signal" - ambientsounds = ENGINEERING - -/area/gateway - name = "Gateway" - icon_state = "gateway" - music = "signal" - ambientsounds = ENGINEERING - -//MedBay - -/area/medical - name = "Medical" - icon_state = "medbay3" - ambientsounds = MEDICAL - -/area/medical/abandoned - name = "Abandoned Medbay" - icon_state = "medbay3" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay/central - name = "Medbay Central" - icon_state = "medbay" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay/front_office - name = "Medbay Front Office" - icon_state = "medbay" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay/lobby - name = "Medbay Lobby" - icon_state = "medbay" - music = 'sound/ambience/signal.ogg' - - //Medbay is a large area, these additional areas help level out APC load. - -/area/medical/medbay/zone2 - name = "Medbay" - icon_state = "medbay2" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay/zone3 - name = "Medbay" - icon_state = "medbay3" - music = 'sound/ambience/signal.ogg' - -/area/medical/medbay/aft - name = "Medbay Aft" - icon_state = "medbay3" - music = 'sound/ambience/signal.ogg' - -/area/medical/storage - name = "Medbay Storage" - icon_state = "medbay2" - music = 'sound/ambience/signal.ogg' - -/area/medical/patients_rooms - name = "Patients' Rooms" - icon_state = "patients" - -/area/medical/patients_rooms/room_a - name = "Patient Room A" - icon_state = "patients" - -/area/medical/patients_rooms/room_b - name = "Patient Room B" - icon_state = "patients" - -/area/medical/virology - name = "Virology" - icon_state = "virology" - flags_1 = NONE - -/area/medical/morgue - name = "Morgue" - icon_state = "morgue" - ambientsounds = SPOOKY - -/area/medical/chemistry - name = "Chemistry" - icon_state = "chem" - -/area/medical/surgery - name = "Surgery" - icon_state = "surgery" - -/area/medical/cryo - name = "Cryogenics" - icon_state = "cryo" - -/area/medical/exam_room - name = "Exam Room" - icon_state = "exam_room" - -/area/medical/genetics - name = "Genetics Lab" - icon_state = "genetics" - -/area/medical/genetics/cloning - name = "Cloning Lab" - icon_state = "cloning" - -/area/medical/sleeper - name = "Medbay Treatment Center" - icon_state = "exam_room" - - -//Security - -/area/security - name = "Security" - icon_state = "security" - ambientsounds = HIGHSEC - -/area/security/main - name = "Security Office" - icon_state = "security" - -/area/security/brig - name = "Brig" - icon_state = "brig" - -/area/security/courtroom - name = "Courtroom" - icon_state = "courtroom" - -/area/security/prison - name = "Prison Wing" - icon_state = "sec_prison" - -/area/security/processing - name = "Labor Shuttle Dock" - icon_state = "sec_prison" - -/area/security/processing/cremation - name = "Security Crematorium" - icon_state = "sec_prison" - -/area/security/warden - name = "Brig Control" - icon_state = "Warden" - -/area/security/armory - name = "Armory" - icon_state = "armory" - -/area/security/detectives_office - name = "Detective's Office" - icon_state = "detective" - ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg') - -/area/security/detectives_office/private_investigators_office - name = "Private Investigator's Office" - icon_state = "detective" - -/area/security/range - name = "Firing Range" - icon_state = "firingrange" - -/area/security/execution - icon_state = "execution_room" - -/area/security/execution/transfer - name = "Transfer Centre" - -/area/security/execution/education - name = "Prisoner Education Chamber" - -/area/security/nuke_storage - name = "Vault" - icon_state = "nuke_storage" - -/area/ai_monitored/nuke_storage - name = "Vault" - icon_state = "nuke_storage" - -/area/security/checkpoint - name = "Security Checkpoint" - icon_state = "checkpoint1" - -/area/security/checkpoint/auxiliary - icon_state = "checkpoint_aux" - -/area/security/checkpoint/tertiary - icon_state = "checkpoint_tert" - -/area/security/checkpoint/escape - icon_state = "checkpoint_esc" - -/area/security/checkpoint/supply - name = "Security Post - Cargo Bay" - icon_state = "checkpoint_supp" - -/area/security/checkpoint/engineering - name = "Security Post - Engineering" - icon_state = "checkpoint_engi" - -/area/security/checkpoint/medical - name = "Security Post - Medbay" - icon_state = "checkpoint_med" - -/area/security/checkpoint/science - name = "Security Post - Science" - icon_state = "checkpoint_sci" - -/area/security/checkpoint/science/research - name = "Security Post - Research Division" - icon_state = "checkpoint_res" - -/area/security/checkpoint/customs - name = "Customs" - icon_state = "customs_point" - -/area/security/checkpoint/customs/auxiliary - icon_state = "customs_point_aux" - -/area/security/vacantoffice - name = "Vacant Office" - icon_state = "security" - -/area/security/vacantoffice/a - name = "Vacant Office A" - icon_state = "security" - -/area/security/vacantoffice/b - name = "Vacant Office B" - icon_state = "security" - -/area/quartermaster - name = "Quartermasters" - icon_state = "quart" - -///////////WORK IN PROGRESS////////// - -/area/quartermaster/sorting - name = "Delivery Office" - icon_state = "cargo_delivery" - -/area/quartermaster/warehouse - name = "Warehouse" - icon_state = "cargo_warehouse" - -////////////WORK IN PROGRESS////////// - -/area/quartermaster/office - name = "Cargo Office" - icon_state = "quartoffice" - -/area/quartermaster/storage - name = "Cargo Bay" - icon_state = "cargo_bay" - -/area/quartermaster/qm - name = "Quartermaster's Office" - icon_state = "quart" - -/area/quartermaster/qm/private - name = "Quartermaster's Private Quarters" - icon_state = "quart" - -/area/quartermaster/miningdock - name = "Mining Dock" - icon_state = "mining" - -/area/quartermaster/miningdock/abandoned - name = "Abandoned Mining Dock" - icon_state = "mining" - -/area/quartermaster/miningoffice - name = "Mining Office" - icon_state = "mining" - -/area/quartermaster/miningstorage - name = "Mining Storage" - icon_state = "mining" - -/area/janitor - name = "Custodial Closet" - icon_state = "janitor" - flags_1 = NONE - -/area/hydroponics - name = "Hydroponics" - icon_state = "hydro" - -/area/hydroponics/garden - name = "Garden" - icon_state = "garden" - -/area/hydroponics/garden/abandoned - name = "Abandoned Garden" - icon_state = "abandoned_garden" - -/area/hydroponics/garden/monastery - name = "Monastery Garden" - icon_state = "hydro" - - -//Science - -/area/science - name = "Science Division" - icon_state = "toxlab" - -/area/science/lab - name = "Research and Development" - icon_state = "toxlab" - -/area/science/xenobiology - name = "Xenobiology Lab" - icon_state = "toxlab" - -/area/science/storage - name = "Toxins Storage" - icon_state = "toxstorage" - -/area/science/mineral_storeroom - name = "Mineral Storeroom" - icon_state = "toxmisc" - -/area/science/test_area - valid_territory = FALSE - name = "Toxins Test Area" - icon_state = "toxtest" - -/area/science/mixing - name = "Toxins Mixing Lab" - icon_state = "toxmix" - -/area/science/mixing/chamber - name = "Toxins Mixing Chamber" - icon_state = "toxmix" - valid_territory = FALSE - -/area/science/misc_lab - name = "Testing Lab" - icon_state = "toxmisc" - -/area/science/misc_lab/range - name = "Research Testing Range" - icon_state = "toxmisc" - -/area/science/server - name = "Research Division Server Room" - icon_state = "server" - -/area/science/explab - name = "Experimentation Lab" - icon_state = "toxmisc" - -/area/science/robotics - name = "Robotics" - icon_state = "medresearch" - -/area/science/robotics/mechbay - name = "Mech Bay" - icon_state = "mechbay" - -/area/science/robotics/mechbay_cargo - name = "Mech Bay" - icon_state = "yellow" - -/area/science/robotics/showroom - name = "Robotics Showroom" - icon_state = "showroom" - -/area/science/robotics/lab - name = "Robotics Lab" - icon_state = "ass_line" - -/area/science/research - name = "Research Division" - icon_state = "medresearch" - -/area/science/circuit - name = "Circuitry Lab" - icon_state = "cir_lab" - -/area/science/research/lobby - name = "Research Division Lobby" - icon_state = "medresearch" - -/area/science/research/abandoned - name = "Abandoned Research Lab" - icon_state = "medresearch" - -/area/science/nanite - name = "Nanite Lab" - icon_state = "toxmisc" - -//Storage - -/area/storage/tools - name = "Auxiliary Tool Storage" - icon_state = "storage" - -/area/storage/primary - name = "Primary Tool Storage" - icon_state = "primarystorage" - -/area/storage/autolathe - name = "Autolathe Storage" - icon_state = "storage" - -/area/storage/art - name = "Art Supply Storage" - icon_state = "storage" - -/area/storage/auxiliary - name = "Auxiliary Storage" - icon_state = "auxstorage" - -/area/storage/atmos - name = "Atmospherics Storage" - icon_state = "atmos" - valid_territory = FALSE - -/area/storage/tcom - name = "Telecomms Storage" - icon_state = "green" - valid_territory = FALSE - -/area/storage/eva - name = "EVA Storage" - icon_state = "eva" - clockwork_warp_allowed = FALSE - -/area/storage/secure - name = "Secure Storage" - icon_state = "storage" - clockwork_warp_allowed = FALSE - -/area/storage/emergency/starboard - name = "Starboard Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/emergency/port - name = "Port Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/tech - name = "Technical Storage" - icon_state = "auxstorage" - -/area/storage/testroom - requires_power = FALSE - name = "Test Room" - icon_state = "storage" - - -//Construction - -/area/construction - name = "Construction Area" - icon_state = "yellow" - ambientsounds = ENGINEERING - -/area/construction/minisat_exterior - name = "Minisat Exterior" - icon_state = "yellow" - -/area/construction/mining/aux_base - name = "Auxiliary Base Construction" - icon_state = "yellow" - -/area/construction/mining/aux_base/closet - name = "Auxiliary Closet Construction" - icon_state = "yellow" - -/area/construction/supplyshuttle - name = "Supply Shuttle" - icon_state = "yellow" - -/area/construction/quarters - name = "Engineers' Quarters" - icon_state = "yellow" - -/area/construction/qmaint - name = "Maintenance" - icon_state = "yellow" - -/area/construction/hallway - name = "Hallway" - icon_state = "yellow" - -/area/construction/solars - name = "Solar Panels" - icon_state = "yellow" - -/area/construction/solarscontrol - name = "Solar Panel Control" - icon_state = "yellow" - -/area/construction/storage - name = "Construction Site Storage" - icon_state = "yellow" - -/area/construction/storage/wing - name = "Storage Wing" - icon_state = "storage_wing" - - -//AI - -/area/ai_monitored/security/armory - name = "Armory" - icon_state = "armory" - ambientsounds = HIGHSEC - -/area/ai_monitored/storage/eva - name = "EVA Storage" - icon_state = "eva" - ambientsounds = HIGHSEC - -/area/ai_monitored/storage/satellite - name = "AI Satellite Maint" - icon_state = "storage" - ambientsounds = HIGHSEC - - //Turret_protected - -/area/ai_monitored/turret_protected - ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg') - -/area/ai_monitored/turret_protected/ai_upload - name = "AI Upload Chamber" - icon_state = "ai_upload" - -/area/ai_monitored/turret_protected/ai_upload_foyer - name = "AI Upload Access" - icon_state = "ai_foyer" - -/area/ai_monitored/turret_protected/ai - name = "AI Chamber" - icon_state = "ai_chamber" - -/area/ai_monitored/turret_protected/aisat - name = "AI Satellite" - icon_state = "ai" - -/area/ai_monitored/turret_protected/aisat/atmos - name = "AI Satellite Atmos" - icon_state = "ai" - -/area/ai_monitored/turret_protected/aisat/foyer - name = "AI Satellite Foyer" - icon_state = "ai" - -/area/ai_monitored/turret_protected/aisat/service - name = "AI Satellite Service" - icon_state = "ai" - -/area/ai_monitored/turret_protected/aisat/hallway - name = "AI Satellite Hallway" - icon_state = "ai" - -/area/aisat - name = "AI Satellite Exterior" - icon_state = "yellow" - -/area/ai_monitored/turret_protected/aisat_interior - name = "AI Satellite Antechamber" - icon_state = "ai" - -/area/ai_monitored/turret_protected/AIsatextFP - name = "AI Sat Ext" - icon_state = "storage" - -/area/ai_monitored/turret_protected/AIsatextFS - name = "AI Sat Ext" - icon_state = "storage" - -/area/ai_monitored/turret_protected/AIsatextAS - name = "AI Sat Ext" - icon_state = "storage" - -/area/ai_monitored/turret_protected/AIsatextAP - name = "AI Sat Ext" - icon_state = "storage" - - -// Telecommunications Satellite - -/area/tcommsat - clockwork_warp_allowed = FALSE - clockwork_warp_fail = "For safety reasons, warping here is disallowed; the radio and bluespace noise could cause catastrophic results." - ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg', 'sound/ambience/ambitech.ogg',\ - 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg', 'sound/ambience/ambimystery.ogg') - -/area/tcommsat/entrance - name = "Telecomms Teleporter" - icon_state = "tcomsatentrance" - -/area/tcommsat/chamber - name = "Abandoned Satellite" - icon_state = "tcomsatcham" - -/area/ai_monitored/turret_protected/tcomsat - name = "Telecomms Satellite" - icon_state = "tcomsatlob" - -/area/ai_monitored/turret_protected/tcomfoyer - name = "Telecomms Foyer" - icon_state = "tcomsatentrance" - -/area/ai_monitored/turret_protected/tcomwest - name = "Telecommunications Satellite West Wing" - icon_state = "tcomsatwest" - -/area/ai_monitored/turret_protected/tcomeast - name = "Telecommunications Satellite East Wing" - icon_state = "tcomsateast" - -/area/tcommsat/computer - name = "Telecomms Control Room" - icon_state = "tcomsatcomp" - -/area/tcommsat/server - name = "Telecomms Server Room" - icon_state = "tcomsatcham" - -/area/tcommsat/lounge - name = "Telecommunications Satellite Lounge" - icon_state = "tcomsatlounge" +/* + +### This file contains a list of all the areas in your station. Format is as follows: + +/area/CATEGORY/OR/DESCRIPTOR/NAME (you can make as many subdivisions as you want) + name = "NICE NAME" (not required but makes things really nice) + icon = 'ICON FILENAME' (defaults to 'icons/turf/areas.dmi') + icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) + requires_power = FALSE (defaults to true) + music = null (defaults to nothing, look in sound/ambience for music) + +NOTE: there are two lists of areas in the end of this file: centcom and station itself. Please maintain these lists valid. --rastaf0 + +*/ + + +/*-----------------------------------------------------------------------------*/ + +/area/ai_monitored //stub defined ai_monitored.dm + +/area/ai_monitored/turret_protected + +/area/arrival + requires_power = FALSE + +/area/arrival/start + name = "Arrival Area" + icon_state = "start" + +/area/admin + name = "Admin room" + icon_state = "start" + +/area/space + icon_state = "space" + requires_power = TRUE + always_unpowered = TRUE + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + power_light = FALSE + power_equip = FALSE + power_environ = FALSE + valid_territory = FALSE + outdoors = TRUE + ambientsounds = SPACE + blob_allowed = FALSE //Eating up space doesn't count for victory as a blob. + +/area/space/nearstation + icon_state = "space_near" + dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT + +/area/start + name = "start area" + icon_state = "start" + requires_power = FALSE + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + has_gravity = STANDARD_GRAVITY + + +//EXTRA + +/area/asteroid + name = "Asteroid" + icon_state = "asteroid" + requires_power = FALSE + has_gravity = STANDARD_GRAVITY + blob_allowed = FALSE //Nope, no winning on the asteroid as a blob. Gotta eat the station. + valid_territory = FALSE + ambientsounds = MINING + +/area/asteroid/nearstation + dynamic_lighting = DYNAMIC_LIGHTING_FORCED + ambientsounds = RUINS + always_unpowered = FALSE + requires_power = TRUE + blob_allowed = TRUE + +/area/asteroid/nearstation/bomb_site + name = "Bomb Testing Asteroid" + +/area/asteroid/cave + name = "Asteroid - Underground" + icon_state = "cave" + requires_power = FALSE + outdoors = TRUE + +/area/asteroid/cave/space + name = "Asteroid - Space" + +/area/asteroid/artifactroom + name = "Asteroid - Artifact" + icon_state = "cave" + ambientsounds = RUINS + +/area/asteroid/artifactroom/Initialize() + . = ..() + set_dynamic_lighting() + + +//STATION13 + +//Maintenance + +/area/maintenance + ambientsounds = MAINTENANCE + valid_territory = FALSE + + +//Departments + +/area/maintenance/department/chapel + name = "Chapel Maintenance" + icon_state = "maint_chapel" + +/area/maintenance/department/chapel/monastery + name = "Monastery Maintenance" + icon_state = "maint_monastery" + +/area/maintenance/department/crew_quarters/bar + name = "Bar Maintenance" + icon_state = "maint_bar" + +/area/maintenance/department/crew_quarters/dorms + name = "Dormitory Maintenance" + icon_state = "maint_dorms" + +/area/maintenance/department/crew_quarters/locker + name = "Locker Room Maintenance" + icon_state = "maint_locker" + +/area/maintenance/department/eva + name = "EVA Maintenance" + icon_state = "maint_eva" + +/area/maintenance/department/electrical + name = "Electrical Maintenance" + icon_state = "maint_electrical" + +/area/maintenance/department/engine/atmos + name = "Atmospherics Maintenance" + icon_state = "maint_atmos" + +/area/maintenance/department/security + name = "Security Maintenance" + icon_state = "maint_sec" + +/area/maintenance/department/security/brig + name = "Brig Maintenance" + icon_state = "maint_brig" + +/area/maintenance/department/medical + name = "Medbay Maintenance" + icon_state = "medbay_maint" + +/area/maintenance/department/medical/morgue + name = "Morgue Maintenance" + icon_state = "morgue_maint" + +/area/maintenance/department/science + name = "Science Maintenance" + icon_state = "maint_sci" + +/area/maintenance/department/cargo + name = "Cargo Maintenance" + icon_state = "maint_cargo" + +/area/maintenance/department/bridge + name = "Bridge Maintenance" + icon_state = "maint_bridge" + +/area/maintenance/department/engine + name = "Engineering Maintenance" + icon_state = "maint_engi" + +/area/maintenance/department/science/xenobiology + name = "Xenobiology Maintenance" + icon_state = "xenomaint" + xenobiology_compatible = TRUE + + +//Maintenance - Generic + +/area/maintenance/arrivals/north + name = "Arrivals North Maintenance" + icon_state = "fpmaint" + +/area/maintenance/arrivals/north_2 + name = "Arrivals North Maintenance" + icon_state = "fpmaint" + +/area/maintenance/aft + name = "Aft Maintenance" + icon_state = "amaint" + +/area/maintenance/aft/secondary + name = "Aft Maintenance" + icon_state = "amaint_2" + +/area/maintenance/central + name = "Central Maintenance" + icon_state = "maintcentral" + +/area/maintenance/central/secondary + name = "Central Maintenance" + icon_state = "maintcentral" + +/area/maintenance/fore + name = "Fore Maintenance" + icon_state = "fmaint" + +/area/maintenance/fore/secondary + name = "Fore Maintenance" + icon_state = "fmaint_2" + +/area/maintenance/starboard + name = "Starboard Maintenance" + icon_state = "smaint" + +/area/maintenance/starboard/central + name = "Central Starboard Maintenance" + icon_state = "smaint" + +/area/maintenance/starboard/aft + name = "Starboard Quarter Maintenance" + icon_state = "asmaint" + +/area/maintenance/starboard/fore + name = "Starboard Bow Maintenance" + icon_state = "fsmaint" + +/area/maintenance/port + name = "Port Maintenance" + icon_state = "pmaint" + +/area/maintenance/port/central + name = "Central Port Maintenance" + icon_state = "maintcentral" + +/area/maintenance/port/aft + name = "Port Quarter Maintenance" + icon_state = "apmaint" + +/area/maintenance/port/fore + name = "Port Bow Maintenance" + icon_state = "fpmaint" + +/area/maintenance/disposal + name = "Waste Disposal" + icon_state = "disposal" + +/area/maintenance/disposal/incinerator + name = "Incinerator" + icon_state = "disposal" +/area/maintenance/bar + name = "Maintenance Bar" + icon_state = "maintbar" + +/area/maintenance/bar/cafe + name = "Abandoned Cafe" + +//Hallway + +/area/hallway + nightshift_public_area = NIGHTSHIFT_AREA_PUBLIC + +/area/hallway/primary/aft + name = "Aft Primary Hallway" + icon_state = "hallA" + +/area/hallway/primary/fore + name = "Fore Primary Hallway" + icon_state = "hallF" + +/area/hallway/primary/starboard + name = "Starboard Primary Hallway" + icon_state = "hallS" + +/area/hallway/primary/starboard/aft + name = "Starboard Quarter Primary Hallway" + icon_state = "hallAS" + +/area/hallway/primary/starboard/fore + name = "Starboard Bow Primary Hallway" + icon_state = "hallFS" + +/area/hallway/primary/port + name = "Port Primary Hallway" + icon_state = "hallP" + +/area/hallway/primary/port/aft + name = "Port Quarter Primary Hallway" + icon_state = "hallAP" + +/area/hallway/primary/port/fore + name = "Port Bow Primary Hallway" + icon_state = "hallFP" + +/area/hallway/primary/central + name = "Central Primary Hallway" + icon_state = "hallC" + +/area/hallway/secondary/command + name = "Command Hallway" + icon_state = "bridge_hallway" + +/area/hallway/secondary/construction + name = "Construction Area" + icon_state = "construction" + +/area/hallway/secondary/exit + name = "Escape Shuttle Hallway" + icon_state = "escape" + +/area/hallway/secondary/exit/departure_lounge + name = "Departure Lounge" + icon_state = "escape_lounge" + +/area/hallway/secondary/entry + name = "Arrival Shuttle Hallway" + icon_state = "entry" + +/area/hallway/secondary/service + name = "Service Hallway" + icon_state = "hall_service" + +//Command + +/area/bridge + name = "Bridge" + icon_state = "bridge" + music = "signal" + +/area/bridge/meeting_room + name = "Heads of Staff Meeting Room" + icon_state = "meeting" + music = null + +/area/bridge/meeting_room/council + name = "Council Chamber" + icon_state = "meeting" + music = null + +/area/bridge/showroom/corporate + name = "Corporate Showroom" + icon_state = "showroom" + music = null + +/area/crew_quarters/heads/captain + name = "Captain's Office" + icon_state = "captain" + clockwork_warp_allowed = FALSE + +/area/crew_quarters/heads/captain/private + name = "Captain's Quarters" + icon_state = "captain" + +/area/crew_quarters/heads/chief + name = "Chief Engineer's Office" + icon_state = "ce_office" + +/area/crew_quarters/heads/chief/private + name = "Chief Engineer's Private Quarters" + icon_state = "ce_private" + +/area/crew_quarters/heads/cmo + name = "Chief Medical Officer's Office" + icon_state = "cmo_office" + +/area/crew_quarters/heads/cmo/private + name = "Chief Medical Officer's Private Quarters" + icon_state = "cmo_private" + +/area/crew_quarters/heads/hop + name = "Head of Personnel's Office" + icon_state = "hop_office" + +/area/crew_quarters/heads/hop/private + name = "Head of Personnel's Private Quarters" + icon_state = "hop_private" + +/area/crew_quarters/heads/hos + name = "Head of Security's Office" + icon_state = "hos_office" + +/area/crew_quarters/heads/hos/private + name = "Head of Security's Private Quarters" + icon_state = "hos_private" + +/area/crew_quarters/heads/hor + name = "Research Director's Office" + icon_state = "rd_office" + +/area/crew_quarters/heads/hor/private + name = "Research Director's Private Quarters" + icon_state = "rd_private" + +/area/comms + name = "Communications Relay" + icon_state = "tcomsatcham" + +/area/server + name = "Messaging Server Room" + icon_state = "server" + +//Crew + +/area/crew_quarters/dorms + name = "Dormitories" + icon_state = "Sleep" + safe = TRUE + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/dorms/male + name = "Male Dorm" + icon_state = "Sleep" + nightshift_public_area = NIGHTSHIFT_AREA_NONE + +/area/crew_quarters/dorms/female + name = "Female Dorm" + icon_state = "Sleep" + nightshift_public_area = NIGHTSHIFT_AREA_NONE + +/area/crew_quarters/rehab_dome + name = "Rehabilitation Dome" + icon_state = "Sleep" + +/area/crew_quarters/toilet + name = "Dormitory Toilets" + icon_state = "toilet" + +/area/crew_quarters/toilet/auxiliary + name = "Auxiliary Restrooms" + icon_state = "toilet" + +/area/crew_quarters/toilet/locker + name = "Locker Toilets" + icon_state = "toilet" + +/area/crew_quarters/toilet/fitness + name = "Fitness Toilets" + icon_state = "toilet" + +/area/crew_quarters/toilet/female + name = "Female Toilets" + icon_state = "toilet" + +/area/crew_quarters/toilet/male + name = "Male Toilets" + icon_state = "toilet" + +/area/crew_quarters/toilet/restrooms + name = "Restrooms" + icon_state = "toilet" + +/area/crew_quarters/locker + name = "Locker Room" + icon_state = "locker" + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/lounge + name = "Lounge" + icon_state = "yellow" + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/fitness + name = "Fitness Room" + icon_state = "fitness" + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/fitness/recreation + name = "Recreation Area" + icon_state = "fitness" + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/cafeteria + name = "Cafeteria" + icon_state = "cafeteria" + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/cafeteria/lunchroom + name = "Lunchroom" + icon_state = "cafeteria" + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/kitchen + name = "Kitchen" + icon_state = "kitchen" + +/area/crew_quarters/kitchen/backroom + name = "Kitchen Coldroom" + icon_state = "kitchen" + +/area/crew_quarters/bar + name = "Bar" + icon_state = "bar" + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/crew_quarters/bar/atrium + name = "Atrium" + icon_state = "bar" + +/area/crew_quarters/electronic_marketing_den + name = "Electronic Marketing Den" + icon_state = "bar" + +/area/crew_quarters/abandoned_gambling_den + name = "Abandoned Gambling Den" + icon_state = "abandoned_g_den" + +/area/crew_quarters/abandoned_gambling_den/secondary + icon_state = "abandoned_g_den_2" + +/area/crew_quarters/theatre + name = "Theatre" + icon_state = "Theatre" + +/area/crew_quarters/theatre/abandoned + name = "Abandoned Theatre" + icon_state = "Theatre" + +/area/crew_quarters/theatre/clown + name = "Clown's Office" + +/area/crew_quarters/theatre/mime + name = "Mime's Office" + +/area/crew_quarters/cryopod + name = "Cryogenics" + icon_state = "cryosleep" + +/area/library + name = "Library" + icon_state = "library" + flags_1 = NONE + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/library/lounge + name = "Library Lounge" + icon_state = "library" + +/area/library/abandoned + name = "Abandoned Library" + icon_state = "library" + flags_1 = NONE + nightshift_public_area = NIGHTSHIFT_AREA_NONE + +/area/chapel + icon_state = "chapel" + ambientsounds = HOLY + flags_1 = NONE + clockwork_warp_allowed = FALSE + clockwork_warp_fail = "The consecration here prevents you from warping in." + nightshift_public_area = NIGHTSHIFT_AREA_RECREATION + +/area/chapel/main + name = "Chapel" + +/area/chapel/main/monastery + name = "Monastery" + nightshift_public_area = NIGHTSHIFT_AREA_NONE + +/area/chapel/office + name = "Chapel Office" + icon_state = "chapeloffice" + +/area/chapel/asteroid + name = "Chapel Asteroid" + icon_state = "explored" + +/area/chapel/asteroid/monastery + name = "Monastery Asteroid" + +/area/chapel/dock + name = "Chapel Dock" + icon_state = "construction" + +/area/lawoffice + name = "Law Office" + icon_state = "law" + + +//Engineering + +/area/engine + ambientsounds = ENGINEERING + +/area/engine/engine_smes + name = "Engineering SMES" + icon_state = "engine_smes" + +/area/engine/engineering + name = "Engineering" + icon_state = "engine" + +/area/engine/atmos + name = "Atmospherics" + icon_state = "atmos" + flags_1 = NONE + +/area/engine/atmospherics_engine + name = "Atmospherics Engine" + icon_state = "atmos_engine" + +/area/engine/supermatter + name = "Supermatter Engine" + icon_state = "engine_sm" + +/area/engine/break_room + name = "Engineering Foyer" + icon_state = "engine_foyer" + +/area/engine/gravity_generator + name = "Gravity Generator Room" + icon_state = "grav_gen" + clockwork_warp_allowed = FALSE + clockwork_warp_fail = "The gravitons generated here could throw off your warp's destination and possibly throw you into deep space." + +/area/engine/secure_construction + name = "Secure Construction Area" + icon_state = "engine" + +/area/engine/storage + name = "Engineering Storage" + icon_state = "engi_storage" + +/area/engine/storage_shared + name = "Shared Engineering Storage" + icon_state = "engi_storage" + +/area/engine/transit_tube + name = "Transit Tube" + icon_state = "transit_tube" + + +//Solars + +/area/solar + requires_power = FALSE + dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT + valid_territory = FALSE + blob_allowed = FALSE + flags_1 = NONE + ambientsounds = ENGINEERING + +/area/solar/fore + name = "Fore Solar Array" + icon_state = "yellow" + +/area/solar/aft + name = "Aft Solar Array" + icon_state = "yellow" + +/area/solar/aux/port + name = "Port Bow Auxiliary Solar Array" + icon_state = "panelsA" + +/area/solar/aux/starboard + name = "Starboard Bow Auxiliary Solar Array" + icon_state = "panelsA" + +/area/solar/starboard + name = "Starboard Solar Array" + icon_state = "panelsS" + +/area/solar/starboard/aft + name = "Starboard Quarter Solar Array" + icon_state = "panelsAS" + +/area/solar/starboard/fore + name = "Starboard Bow Solar Array" + icon_state = "panelsFS" + +/area/solar/port + name = "Port Solar Array" + icon_state = "panelsP" + +/area/solar/port/aft + name = "Port Quarter Solar Array" + icon_state = "panelsAP" + +/area/solar/port/fore + name = "Port Bow Solar Array" + icon_state = "panelsFP" + + +//Solar Maint + +/area/maintenance/solars + name = "Solar Maintenance" + icon_state = "yellow" + +/area/maintenance/solars/port + name = "Port Solar Maintenance" + icon_state = "SolarcontrolP" + +/area/maintenance/solars/port/aft + name = "Port Quarter Solar Maintenance" + icon_state = "SolarcontrolAP" + +/area/maintenance/solars/port/fore + name = "Port Bow Solar Maintenance" + icon_state = "SolarcontrolFP" + +/area/maintenance/solars/starboard + name = "Starboard Solar Maintenance" + icon_state = "SolarcontrolS" + +/area/maintenance/solars/starboard/aft + name = "Starboard Quarter Solar Maintenance" + icon_state = "SolarcontrolAS" + +/area/maintenance/solars/starboard/fore + name = "Starboard Bow Solar Maintenance" + icon_state = "SolarcontrolFS" + +/area/maintenance/solars/aux/port + name = "Port Auxiliary Solar Maintenance" + icon_state = "SolarcontrolA" + +/area/maintenance/solars/aux/port/aft + name = "Port Quarter Auxiliary Solar Maintenance" + icon_state = "SolarcontrolAP" + +/area/maintenance/solars/aux/port/fore + name = "Port Bow Auxiliary Solar Maintenance" + icon_state = "SolarcontrolA" + +/area/maintenance/solars/aux/starboard + name = "Starboard Auxiliary Solar Maintenance" + icon_state = "SolarcontrolA" + +/area/maintenance/solars/aux/starboard/aft + name = "Starboard Quarter Auxiliary Solar Maintenance" + icon_state = "SolarcontrolA" + +/area/maintenance/solars/aux/starboard/fore + name = "Starboard Bow Auxiliary Solar Maintenance" + icon_state = "SolarcontrolA" + +//Teleporter + +/area/teleporter + name = "Teleporter Room" + icon_state = "teleporter" + music = "signal" + ambientsounds = ENGINEERING + +/area/gateway + name = "Gateway" + icon_state = "gateway" + music = "signal" + ambientsounds = ENGINEERING + +//MedBay + +/area/medical + name = "Medical" + icon_state = "medbay3" + ambientsounds = MEDICAL + +/area/medical/abandoned + name = "Abandoned Medbay" + icon_state = "medbay3" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay/central + name = "Medbay Central" + icon_state = "medbay" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay/front_office + name = "Medbay Front Office" + icon_state = "medbay" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay/lobby + name = "Medbay Lobby" + icon_state = "medbay" + music = 'sound/ambience/signal.ogg' + + //Medbay is a large area, these additional areas help level out APC load. + +/area/medical/medbay/zone2 + name = "Medbay" + icon_state = "medbay2" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay/zone3 + name = "Medbay" + icon_state = "medbay3" + music = 'sound/ambience/signal.ogg' + +/area/medical/medbay/aft + name = "Medbay Aft" + icon_state = "medbay3" + music = 'sound/ambience/signal.ogg' + +/area/medical/storage + name = "Medbay Storage" + icon_state = "medbay2" + music = 'sound/ambience/signal.ogg' + +/area/medical/patients_rooms + name = "Patients' Rooms" + icon_state = "patients" + +/area/medical/patients_rooms/room_a + name = "Patient Room A" + icon_state = "patients" + +/area/medical/patients_rooms/room_b + name = "Patient Room B" + icon_state = "patients" + +/area/medical/virology + name = "Virology" + icon_state = "virology" + flags_1 = NONE + +/area/medical/morgue + name = "Morgue" + icon_state = "morgue" + ambientsounds = SPOOKY + +/area/medical/chemistry + name = "Chemistry" + icon_state = "chem" + +/area/medical/surgery + name = "Surgery" + icon_state = "surgery" + +/area/medical/cryo + name = "Cryogenics" + icon_state = "cryo" + +/area/medical/exam_room + name = "Exam Room" + icon_state = "exam_room" + +/area/medical/genetics + name = "Genetics Lab" + icon_state = "genetics" + +/area/medical/genetics/cloning + name = "Cloning Lab" + icon_state = "cloning" + +/area/medical/sleeper + name = "Medbay Treatment Center" + icon_state = "exam_room" + + +//Security + +/area/security + name = "Security" + icon_state = "security" + ambientsounds = HIGHSEC + +/area/security/main + name = "Security Office" + icon_state = "security" + +/area/security/brig + name = "Brig" + icon_state = "brig" + +/area/security/courtroom + name = "Courtroom" + icon_state = "courtroom" + +/area/security/prison + name = "Prison Wing" + icon_state = "sec_prison" + +/area/security/processing + name = "Labor Shuttle Dock" + icon_state = "sec_prison" + +/area/security/processing/cremation + name = "Security Crematorium" + icon_state = "sec_prison" + +/area/security/warden + name = "Brig Control" + icon_state = "Warden" + +/area/security/armory + name = "Armory" + icon_state = "armory" + +/area/security/detectives_office + name = "Detective's Office" + icon_state = "detective" + ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg') + +/area/security/detectives_office/private_investigators_office + name = "Private Investigator's Office" + icon_state = "detective" + +/area/security/range + name = "Firing Range" + icon_state = "firingrange" + +/area/security/execution + icon_state = "execution_room" + +/area/security/execution/transfer + name = "Transfer Centre" + +/area/security/execution/education + name = "Prisoner Education Chamber" + +/area/security/nuke_storage + name = "Vault" + icon_state = "nuke_storage" + +/area/ai_monitored/nuke_storage + name = "Vault" + icon_state = "nuke_storage" + +/area/security/checkpoint + name = "Security Checkpoint" + icon_state = "checkpoint1" + +/area/security/checkpoint/auxiliary + icon_state = "checkpoint_aux" + +/area/security/checkpoint/tertiary + icon_state = "checkpoint_tert" + +/area/security/checkpoint/escape + icon_state = "checkpoint_esc" + +/area/security/checkpoint/supply + name = "Security Post - Cargo Bay" + icon_state = "checkpoint_supp" + +/area/security/checkpoint/engineering + name = "Security Post - Engineering" + icon_state = "checkpoint_engi" + +/area/security/checkpoint/medical + name = "Security Post - Medbay" + icon_state = "checkpoint_med" + +/area/security/checkpoint/science + name = "Security Post - Science" + icon_state = "checkpoint_sci" + +/area/security/checkpoint/science/research + name = "Security Post - Research Division" + icon_state = "checkpoint_res" + +/area/security/checkpoint/customs + name = "Customs" + icon_state = "customs_point" + +/area/security/checkpoint/customs/auxiliary + icon_state = "customs_point_aux" + +/area/security/vacantoffice + name = "Vacant Office" + icon_state = "security" + +/area/security/vacantoffice/a + name = "Vacant Office A" + icon_state = "security" + +/area/security/vacantoffice/b + name = "Vacant Office B" + icon_state = "security" + +/area/quartermaster + name = "Quartermasters" + icon_state = "quart" + +///////////WORK IN PROGRESS////////// + +/area/quartermaster/sorting + name = "Delivery Office" + icon_state = "cargo_delivery" + +/area/quartermaster/warehouse + name = "Warehouse" + icon_state = "cargo_warehouse" + +////////////WORK IN PROGRESS////////// + +/area/quartermaster/office + name = "Cargo Office" + icon_state = "quartoffice" + +/area/quartermaster/storage + name = "Cargo Bay" + icon_state = "cargo_bay" + +/area/quartermaster/qm + name = "Quartermaster's Office" + icon_state = "quart" + +/area/quartermaster/qm/private + name = "Quartermaster's Private Quarters" + icon_state = "quart" + +/area/quartermaster/miningdock + name = "Mining Dock" + icon_state = "mining" + +/area/quartermaster/miningdock/abandoned + name = "Abandoned Mining Dock" + icon_state = "mining" + +/area/quartermaster/miningoffice + name = "Mining Office" + icon_state = "mining" + +/area/quartermaster/miningstorage + name = "Mining Storage" + icon_state = "mining" + +/area/janitor + name = "Custodial Closet" + icon_state = "janitor" + flags_1 = NONE + +/area/hydroponics + name = "Hydroponics" + icon_state = "hydro" + +/area/hydroponics/garden + name = "Garden" + icon_state = "garden" + +/area/hydroponics/garden/abandoned + name = "Abandoned Garden" + icon_state = "abandoned_garden" + +/area/hydroponics/garden/monastery + name = "Monastery Garden" + icon_state = "hydro" + + +//Science + +/area/science + name = "Science Division" + icon_state = "toxlab" + +/area/science/lab + name = "Research and Development" + icon_state = "toxlab" + +/area/science/xenobiology + name = "Xenobiology Lab" + icon_state = "toxlab" + +/area/science/storage + name = "Toxins Storage" + icon_state = "toxstorage" + +/area/science/mineral_storeroom + name = "Mineral Storeroom" + icon_state = "toxmisc" + +/area/science/test_area + valid_territory = FALSE + name = "Toxins Test Area" + icon_state = "toxtest" + +/area/science/mixing + name = "Toxins Mixing Lab" + icon_state = "toxmix" + +/area/science/mixing/chamber + name = "Toxins Mixing Chamber" + icon_state = "toxmix" + valid_territory = FALSE + +/area/science/misc_lab + name = "Testing Lab" + icon_state = "toxmisc" + +/area/science/misc_lab/range + name = "Research Testing Range" + icon_state = "toxmisc" + +/area/science/server + name = "Research Division Server Room" + icon_state = "server" + +/area/science/explab + name = "Experimentation Lab" + icon_state = "toxmisc" + +/area/science/robotics + name = "Robotics" + icon_state = "medresearch" + +/area/science/robotics/mechbay + name = "Mech Bay" + icon_state = "mechbay" + +/area/science/robotics/mechbay_cargo + name = "Mech Bay" + icon_state = "yellow" + +/area/science/robotics/showroom + name = "Robotics Showroom" + icon_state = "showroom" + +/area/science/robotics/lab + name = "Robotics Lab" + icon_state = "ass_line" + +/area/science/research + name = "Research Division" + icon_state = "medresearch" + +/area/science/circuit + name = "Circuitry Lab" + icon_state = "cir_lab" + +/area/science/research/lobby + name = "Research Division Lobby" + icon_state = "medresearch" + +/area/science/research/abandoned + name = "Abandoned Research Lab" + icon_state = "medresearch" + +/area/science/nanite + name = "Nanite Lab" + icon_state = "toxmisc" + +//Storage + +/area/storage/tools + name = "Auxiliary Tool Storage" + icon_state = "storage" + +/area/storage/primary + name = "Primary Tool Storage" + icon_state = "primarystorage" + +/area/storage/autolathe + name = "Autolathe Storage" + icon_state = "storage" + +/area/storage/art + name = "Art Supply Storage" + icon_state = "storage" + +/area/storage/auxiliary + name = "Auxiliary Storage" + icon_state = "auxstorage" + +/area/storage/atmos + name = "Atmospherics Storage" + icon_state = "atmos" + valid_territory = FALSE + +/area/storage/tcom + name = "Telecomms Storage" + icon_state = "green" + valid_territory = FALSE + +/area/storage/eva + name = "EVA Storage" + icon_state = "eva" + clockwork_warp_allowed = FALSE + +/area/storage/secure + name = "Secure Storage" + icon_state = "storage" + clockwork_warp_allowed = FALSE + +/area/storage/emergency/starboard + name = "Starboard Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/emergency/port + name = "Port Emergency Storage" + icon_state = "emergencystorage" + +/area/storage/tech + name = "Technical Storage" + icon_state = "auxstorage" + +/area/storage/testroom + requires_power = FALSE + name = "Test Room" + icon_state = "storage" + + +//Construction + +/area/construction + name = "Construction Area" + icon_state = "yellow" + ambientsounds = ENGINEERING + +/area/construction/minisat_exterior + name = "Minisat Exterior" + icon_state = "yellow" + +/area/construction/mining/aux_base + name = "Auxiliary Base Construction" + icon_state = "yellow" + +/area/construction/mining/aux_base/closet + name = "Auxiliary Closet Construction" + icon_state = "yellow" + +/area/construction/supplyshuttle + name = "Supply Shuttle" + icon_state = "yellow" + +/area/construction/quarters + name = "Engineers' Quarters" + icon_state = "yellow" + +/area/construction/qmaint + name = "Maintenance" + icon_state = "yellow" + +/area/construction/hallway + name = "Hallway" + icon_state = "yellow" + +/area/construction/solars + name = "Solar Panels" + icon_state = "yellow" + +/area/construction/solarscontrol + name = "Solar Panel Control" + icon_state = "yellow" + +/area/construction/storage + name = "Construction Site Storage" + icon_state = "yellow" + +/area/construction/storage/wing + name = "Storage Wing" + icon_state = "storage_wing" + + +//AI + +/area/ai_monitored/security/armory + name = "Armory" + icon_state = "armory" + ambientsounds = HIGHSEC + +/area/ai_monitored/storage/eva + name = "EVA Storage" + icon_state = "eva" + ambientsounds = HIGHSEC + +/area/ai_monitored/storage/satellite + name = "AI Satellite Maint" + icon_state = "storage" + ambientsounds = HIGHSEC + + //Turret_protected + +/area/ai_monitored/turret_protected + ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg') + +/area/ai_monitored/turret_protected/ai_upload + name = "AI Upload Chamber" + icon_state = "ai_upload" + +/area/ai_monitored/turret_protected/ai_upload_foyer + name = "AI Upload Access" + icon_state = "ai_foyer" + +/area/ai_monitored/turret_protected/ai + name = "AI Chamber" + icon_state = "ai_chamber" + +/area/ai_monitored/turret_protected/aisat + name = "AI Satellite" + icon_state = "ai" + +/area/ai_monitored/turret_protected/aisat/atmos + name = "AI Satellite Atmos" + icon_state = "ai" + +/area/ai_monitored/turret_protected/aisat/foyer + name = "AI Satellite Foyer" + icon_state = "ai" + +/area/ai_monitored/turret_protected/aisat/service + name = "AI Satellite Service" + icon_state = "ai" + +/area/ai_monitored/turret_protected/aisat/hallway + name = "AI Satellite Hallway" + icon_state = "ai" + +/area/aisat + name = "AI Satellite Exterior" + icon_state = "yellow" + +/area/ai_monitored/turret_protected/aisat_interior + name = "AI Satellite Antechamber" + icon_state = "ai" + +/area/ai_monitored/turret_protected/AIsatextFP + name = "AI Sat Ext" + icon_state = "storage" + +/area/ai_monitored/turret_protected/AIsatextFS + name = "AI Sat Ext" + icon_state = "storage" + +/area/ai_monitored/turret_protected/AIsatextAS + name = "AI Sat Ext" + icon_state = "storage" + +/area/ai_monitored/turret_protected/AIsatextAP + name = "AI Sat Ext" + icon_state = "storage" + + +// Telecommunications Satellite + +/area/tcommsat + clockwork_warp_allowed = FALSE + clockwork_warp_fail = "For safety reasons, warping here is disallowed; the radio and bluespace noise could cause catastrophic results." + ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg', 'sound/ambience/ambitech.ogg',\ + 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg', 'sound/ambience/ambimystery.ogg') + +/area/tcommsat/entrance + name = "Telecomms Teleporter" + icon_state = "tcomsatentrance" + +/area/tcommsat/chamber + name = "Abandoned Satellite" + icon_state = "tcomsatcham" + +/area/ai_monitored/turret_protected/tcomsat + name = "Telecomms Satellite" + icon_state = "tcomsatlob" + +/area/ai_monitored/turret_protected/tcomfoyer + name = "Telecomms Foyer" + icon_state = "tcomsatentrance" + +/area/ai_monitored/turret_protected/tcomwest + name = "Telecommunications Satellite West Wing" + icon_state = "tcomsatwest" + +/area/ai_monitored/turret_protected/tcomeast + name = "Telecommunications Satellite East Wing" + icon_state = "tcomsateast" + +/area/tcommsat/computer + name = "Telecomms Control Room" + icon_state = "tcomsatcomp" + +/area/tcommsat/server + name = "Telecomms Server Room" + icon_state = "tcomsatcham" + +/area/tcommsat/lounge + name = "Telecommunications Satellite Lounge" + icon_state = "tcomsatlounge" diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index fb4204891e..0e2363cb6a 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -1,340 +1,340 @@ -#define FIREALARM_COOLDOWN 67 // Chosen fairly arbitrarily, it is the length of the audio in FireAlarm.ogg. The actual track length is 7 seconds 8ms but but the audio stops at 6s 700ms - -/obj/item/electronics/firealarm - name = "fire alarm electronics" - desc = "A fire alarm circuit. Can handle heat levels up to 40 degrees celsius." - -/obj/item/wallframe/firealarm - name = "fire alarm frame" - desc = "Used for building fire alarms." - icon = 'icons/obj/monitors.dmi' - icon_state = "fire_bitem" - result_path = /obj/machinery/firealarm - -/obj/machinery/firealarm - name = "fire alarm" - desc = "\"Pull this in case of emergency\". Thus, keep pulling it forever." - icon = 'icons/obj/monitors.dmi' - icon_state = "fire0" - max_integrity = 250 - integrity_failure = 100 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) - use_power = IDLE_POWER_USE - idle_power_usage = 2 - active_power_usage = 6 - power_channel = ENVIRON - resistance_flags = FIRE_PROOF - - light_power = 0 - light_range = 7 - light_color = "#ff3232" - - var/detecting = 1 - var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone - var/last_alarm = 0 - var/area/myarea = null - -/obj/machinery/firealarm/Initialize(mapload, dir, building) - . = ..() - if(dir) - src.setDir(dir) - if(building) - buildstage = 0 - panel_open = TRUE - pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) - pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 - update_icon() - myarea = get_base_area(src) - LAZYADD(myarea.firealarms, src) - -/obj/machinery/firealarm/Destroy() - LAZYREMOVE(myarea.firealarms, src) - return ..() - -/obj/machinery/firealarm/power_change() - ..() - update_icon() - -/obj/machinery/firealarm/update_icon() - cut_overlays() - SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) - - if(panel_open) - icon_state = "fire_b[buildstage]" - return - - if(stat & BROKEN) - icon_state = "firex" - return - - icon_state = "fire0" - - if(stat & NOPOWER) - return - - add_overlay("fire_overlay") - - if(is_station_level(z)) - add_overlay("fire_[GLOB.security_level]") - SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - else - add_overlay("fire_[SEC_LEVEL_GREEN]") - SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - - var/area/A = src.loc - A = A.loc - - if(!detecting || !A.fire) - add_overlay("fire_off") - SSvis_overlays.add_vis_overlay(src, icon, "fire_off", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - else if(obj_flags & EMAGGED) - add_overlay("fire_emagged") - SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - else - add_overlay("fire_on") - SSvis_overlays.add_vis_overlay(src, icon, "fire_on", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) - -/obj/machinery/firealarm/emp_act(severity) - . = ..() - - if (. & EMP_PROTECT_SELF) - return - - if(prob(50 / severity)) - alarm() - -/obj/machinery/firealarm/emag_act(mob/user) - . = ..() - if(obj_flags & EMAGGED) - return - obj_flags |= EMAGGED - update_icon() - if(user) - user.visible_message("Sparks fly out of [src]!", - "You emag [src], disabling its thermal sensors.") - playsound(src, "sparks", 50, 1) - return TRUE - -/obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) - if((temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT) && (last_alarm+FIREALARM_COOLDOWN < world.time) && !(obj_flags & EMAGGED) && detecting && !stat) - alarm() - ..() - -/obj/machinery/firealarm/proc/alarm(mob/user) - if(!is_operational() || (last_alarm+FIREALARM_COOLDOWN > world.time)) - return - last_alarm = world.time - var/area/A = get_base_area(src) - A.firealert(src) - playsound(loc, 'goon/sound/machinery/FireAlarm.ogg', 75) - if(user) - log_game("[user] triggered a fire alarm at [COORD(src)]") - -/obj/machinery/firealarm/proc/reset(mob/user) - if(!is_operational()) - return - var/area/A = get_base_area(src) - A.firereset(src) - if(user) - log_game("[user] reset a fire alarm at [COORD(src)]") - -/obj/machinery/firealarm/attack_hand(mob/user) - if(buildstage != 2) - return ..() - add_fingerprint(user) - var/area/A = get_base_area(src) - if(A.fire) - reset(user) - else - alarm(user) - -/obj/machinery/firealarm/attack_ai(mob/user) - return attack_hand(user) - -/obj/machinery/firealarm/attack_robot(mob/user) - return attack_hand(user) - -/obj/machinery/firealarm/attackby(obj/item/W, mob/user, params) - add_fingerprint(user) - - if(istype(W, /obj/item/screwdriver) && buildstage == 2) - W.play_tool_sound(src) - panel_open = !panel_open - to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"].") - update_icon() - return - - if(panel_open) - - if(istype(W, /obj/item/weldingtool) && user.a_intent == INTENT_HELP) - if(obj_integrity < max_integrity) - if(!W.tool_start_check(user, amount=0)) - return - - to_chat(user, "You begin repairing [src]...") - if(W.use_tool(src, user, 40, volume=50)) - obj_integrity = max_integrity - to_chat(user, "You repair [src].") - else - to_chat(user, "[src] is already in good condition!") - return - - switch(buildstage) - if(2) - if(istype(W, /obj/item/multitool)) - detecting = !detecting - if (src.detecting) - user.visible_message("[user] has reconnected [src]'s detecting unit!", "You reconnect [src]'s detecting unit.") - else - user.visible_message("[user] has disconnected [src]'s detecting unit!", "You disconnect [src]'s detecting unit.") - return - - else if (istype(W, /obj/item/wirecutters)) - buildstage = 1 - W.play_tool_sound(src) - new /obj/item/stack/cable_coil(user.loc, 5) - to_chat(user, "You cut the wires from \the [src].") - update_icon() - return - else if(W.force) //hit and turn it on - ..() - var/area/A = get_area(src) - if(!A.fire) - alarm() - return - if(1) - if(istype(W, /obj/item/stack/cable_coil)) - var/obj/item/stack/cable_coil/coil = W - if(coil.get_amount() < 5) - to_chat(user, "You need more cable for this!") - else - coil.use(5) - buildstage = 2 - to_chat(user, "You wire \the [src].") - update_icon() - return - - else if(istype(W, /obj/item/crowbar)) - user.visible_message("[user.name] removes the electronics from [src.name].", \ - "You start prying out the circuit...") - if(W.use_tool(src, user, 20, volume=50)) - if(buildstage == 1) - if(stat & BROKEN) - to_chat(user, "You remove the destroyed circuit.") - stat &= ~BROKEN - else - to_chat(user, "You pry out the circuit.") - new /obj/item/electronics/firealarm(user.loc) - buildstage = 0 - update_icon() - return - if(0) - if(istype(W, /obj/item/electronics/firealarm)) - to_chat(user, "You insert the circuit.") - qdel(W) - buildstage = 1 - update_icon() - return - - else if(istype(W, /obj/item/electroadaptive_pseudocircuit)) - var/obj/item/electroadaptive_pseudocircuit/P = W - if(!P.adapt_circuit(user, 15)) - return - user.visible_message("[user] fabricates a circuit and places it into [src].", \ - "You adapt a fire alarm circuit and slot it into the assembly.") - buildstage = 1 - update_icon() - return - - else if(istype(W, /obj/item/wrench)) - user.visible_message("[user] removes the fire alarm assembly from the wall.", \ - "You remove the fire alarm assembly from the wall.") - var/obj/item/wallframe/firealarm/frame = new /obj/item/wallframe/firealarm() - frame.forceMove(user.drop_location()) - W.play_tool_sound(src) - qdel(src) - return - return ..() - -/obj/machinery/firealarm/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) - if((buildstage == 0) && (the_rcd.upgrade & RCD_UPGRADE_SIMPLE_CIRCUITS)) - return list("mode" = RCD_UPGRADE_SIMPLE_CIRCUITS, "delay" = 20, "cost" = 1) - return FALSE - -/obj/machinery/firealarm/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) - switch(passed_mode) - if(RCD_UPGRADE_SIMPLE_CIRCUITS) - user.visible_message("[user] fabricates a circuit and places it into [src].", \ - "You adapt a fire alarm circuit and slot it into the assembly.") - buildstage = 1 - update_icon() - return TRUE - return FALSE - -/obj/machinery/firealarm/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) - . = ..() - if(.) //damage received - if(obj_integrity > 0 && !(stat & BROKEN) && buildstage != 0) - if(prob(33)) - alarm() - -/obj/machinery/firealarm/singularity_pull(S, current_size) - if (current_size >= STAGE_FIVE) // If the singulo is strong enough to pull anchored objects, the fire alarm experiences integrity failure - deconstruct() - ..() - -/obj/machinery/firealarm/obj_break(damage_flag) - if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1) && buildstage != 0) //can't break the electronics if there isn't any inside. - LAZYREMOVE(myarea.firealarms, src) - stat |= BROKEN - update_icon() - -/obj/machinery/firealarm/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - new /obj/item/stack/sheet/metal(loc, 1) - if(!(stat & BROKEN)) - var/obj/item/I = new /obj/item/electronics/firealarm(loc) - if(!disassembled) - I.obj_integrity = I.max_integrity * 0.5 - new /obj/item/stack/cable_coil(loc, 3) - qdel(src) - -/obj/machinery/firealarm/proc/update_fire_light(fire) - if(fire == !!light_power) - return // do nothing if we're already active - if(fire) - set_light(l_power = 0.8) - else - set_light(l_power = 0) - -/* - * Return of Party button - */ - -/area - var/party = FALSE - -/obj/machinery/firealarm/partyalarm - name = "\improper PARTY BUTTON" - desc = "Cuban Pete is in the house!" - var/static/party_overlay - -/obj/machinery/firealarm/partyalarm/reset() - if (stat & (NOPOWER|BROKEN)) - return - var/area/A = get_base_area(src) - if (!A || !A.party) - return - A.party = FALSE - A.cut_overlay(party_overlay) - -/obj/machinery/firealarm/partyalarm/alarm() - if (stat & (NOPOWER|BROKEN)) - return - var/area/A = get_base_area(src) - if (!A || A.party || A.name == "Space") - return - A.party = TRUE - if (!party_overlay) - party_overlay = iconstate2appearance('icons/turf/areas.dmi', "party") - A.add_overlay(party_overlay) +#define FIREALARM_COOLDOWN 67 // Chosen fairly arbitrarily, it is the length of the audio in FireAlarm.ogg. The actual track length is 7 seconds 8ms but but the audio stops at 6s 700ms + +/obj/item/electronics/firealarm + name = "fire alarm electronics" + desc = "A fire alarm circuit. Can handle heat levels up to 40 degrees celsius." + +/obj/item/wallframe/firealarm + name = "fire alarm frame" + desc = "Used for building fire alarms." + icon = 'icons/obj/monitors.dmi' + icon_state = "fire_bitem" + result_path = /obj/machinery/firealarm + +/obj/machinery/firealarm + name = "fire alarm" + desc = "\"Pull this in case of emergency\". Thus, keep pulling it forever." + icon = 'icons/obj/monitors.dmi' + icon_state = "fire0" + max_integrity = 250 + integrity_failure = 100 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 30) + use_power = IDLE_POWER_USE + idle_power_usage = 2 + active_power_usage = 6 + power_channel = ENVIRON + resistance_flags = FIRE_PROOF + + light_power = 0 + light_range = 7 + light_color = "#ff3232" + + var/detecting = 1 + var/buildstage = 2 // 2 = complete, 1 = no wires, 0 = circuit gone + var/last_alarm = 0 + var/area/myarea = null + +/obj/machinery/firealarm/Initialize(mapload, dir, building) + . = ..() + if(dir) + src.setDir(dir) + if(building) + buildstage = 0 + panel_open = TRUE + pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) + pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 + update_icon() + myarea = get_base_area(src) + LAZYADD(myarea.firealarms, src) + +/obj/machinery/firealarm/Destroy() + LAZYREMOVE(myarea.firealarms, src) + return ..() + +/obj/machinery/firealarm/power_change() + ..() + update_icon() + +/obj/machinery/firealarm/update_icon() + cut_overlays() + SSvis_overlays.remove_vis_overlay(src, managed_vis_overlays) + + if(panel_open) + icon_state = "fire_b[buildstage]" + return + + if(stat & BROKEN) + icon_state = "firex" + return + + icon_state = "fire0" + + if(stat & NOPOWER) + return + + add_overlay("fire_overlay") + + if(is_station_level(z)) + add_overlay("fire_[GLOB.security_level]") + SSvis_overlays.add_vis_overlay(src, icon, "fire_[GLOB.security_level]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + else + add_overlay("fire_[SEC_LEVEL_GREEN]") + SSvis_overlays.add_vis_overlay(src, icon, "fire_[SEC_LEVEL_GREEN]", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + + var/area/A = src.loc + A = A.loc + + if(!detecting || !A.fire) + add_overlay("fire_off") + SSvis_overlays.add_vis_overlay(src, icon, "fire_off", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + else if(obj_flags & EMAGGED) + add_overlay("fire_emagged") + SSvis_overlays.add_vis_overlay(src, icon, "fire_emagged", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + else + add_overlay("fire_on") + SSvis_overlays.add_vis_overlay(src, icon, "fire_on", ABOVE_LIGHTING_LAYER, ABOVE_LIGHTING_PLANE, dir) + +/obj/machinery/firealarm/emp_act(severity) + . = ..() + + if (. & EMP_PROTECT_SELF) + return + + if(prob(50 / severity)) + alarm() + +/obj/machinery/firealarm/emag_act(mob/user) + . = ..() + if(obj_flags & EMAGGED) + return + obj_flags |= EMAGGED + update_icon() + if(user) + user.visible_message("Sparks fly out of [src]!", + "You emag [src], disabling its thermal sensors.") + playsound(src, "sparks", 50, 1) + return TRUE + +/obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) + if((temperature > T0C + 200 || temperature < BODYTEMP_COLD_DAMAGE_LIMIT) && (last_alarm+FIREALARM_COOLDOWN < world.time) && !(obj_flags & EMAGGED) && detecting && !stat) + alarm() + ..() + +/obj/machinery/firealarm/proc/alarm(mob/user) + if(!is_operational() || (last_alarm+FIREALARM_COOLDOWN > world.time)) + return + last_alarm = world.time + var/area/A = get_base_area(src) + A.firealert(src) + playsound(loc, 'goon/sound/machinery/FireAlarm.ogg', 75) + if(user) + log_game("[user] triggered a fire alarm at [COORD(src)]") + +/obj/machinery/firealarm/proc/reset(mob/user) + if(!is_operational()) + return + var/area/A = get_base_area(src) + A.firereset(src) + if(user) + log_game("[user] reset a fire alarm at [COORD(src)]") + +/obj/machinery/firealarm/attack_hand(mob/user) + if(buildstage != 2) + return ..() + add_fingerprint(user) + var/area/A = get_base_area(src) + if(A.fire) + reset(user) + else + alarm(user) + +/obj/machinery/firealarm/attack_ai(mob/user) + return attack_hand(user) + +/obj/machinery/firealarm/attack_robot(mob/user) + return attack_hand(user) + +/obj/machinery/firealarm/attackby(obj/item/W, mob/user, params) + add_fingerprint(user) + + if(istype(W, /obj/item/screwdriver) && buildstage == 2) + W.play_tool_sound(src) + panel_open = !panel_open + to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"].") + update_icon() + return + + if(panel_open) + + if(istype(W, /obj/item/weldingtool) && user.a_intent == INTENT_HELP) + if(obj_integrity < max_integrity) + if(!W.tool_start_check(user, amount=0)) + return + + to_chat(user, "You begin repairing [src]...") + if(W.use_tool(src, user, 40, volume=50)) + obj_integrity = max_integrity + to_chat(user, "You repair [src].") + else + to_chat(user, "[src] is already in good condition!") + return + + switch(buildstage) + if(2) + if(istype(W, /obj/item/multitool)) + detecting = !detecting + if (src.detecting) + user.visible_message("[user] has reconnected [src]'s detecting unit!", "You reconnect [src]'s detecting unit.") + else + user.visible_message("[user] has disconnected [src]'s detecting unit!", "You disconnect [src]'s detecting unit.") + return + + else if (istype(W, /obj/item/wirecutters)) + buildstage = 1 + W.play_tool_sound(src) + new /obj/item/stack/cable_coil(user.loc, 5) + to_chat(user, "You cut the wires from \the [src].") + update_icon() + return + else if(W.force) //hit and turn it on + ..() + var/area/A = get_area(src) + if(!A.fire) + alarm() + return + if(1) + if(istype(W, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/coil = W + if(coil.get_amount() < 5) + to_chat(user, "You need more cable for this!") + else + coil.use(5) + buildstage = 2 + to_chat(user, "You wire \the [src].") + update_icon() + return + + else if(istype(W, /obj/item/crowbar)) + user.visible_message("[user.name] removes the electronics from [src.name].", \ + "You start prying out the circuit...") + if(W.use_tool(src, user, 20, volume=50)) + if(buildstage == 1) + if(stat & BROKEN) + to_chat(user, "You remove the destroyed circuit.") + stat &= ~BROKEN + else + to_chat(user, "You pry out the circuit.") + new /obj/item/electronics/firealarm(user.loc) + buildstage = 0 + update_icon() + return + if(0) + if(istype(W, /obj/item/electronics/firealarm)) + to_chat(user, "You insert the circuit.") + qdel(W) + buildstage = 1 + update_icon() + return + + else if(istype(W, /obj/item/electroadaptive_pseudocircuit)) + var/obj/item/electroadaptive_pseudocircuit/P = W + if(!P.adapt_circuit(user, 15)) + return + user.visible_message("[user] fabricates a circuit and places it into [src].", \ + "You adapt a fire alarm circuit and slot it into the assembly.") + buildstage = 1 + update_icon() + return + + else if(istype(W, /obj/item/wrench)) + user.visible_message("[user] removes the fire alarm assembly from the wall.", \ + "You remove the fire alarm assembly from the wall.") + var/obj/item/wallframe/firealarm/frame = new /obj/item/wallframe/firealarm() + frame.forceMove(user.drop_location()) + W.play_tool_sound(src) + qdel(src) + return + return ..() + +/obj/machinery/firealarm/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) + if((buildstage == 0) && (the_rcd.upgrade & RCD_UPGRADE_SIMPLE_CIRCUITS)) + return list("mode" = RCD_UPGRADE_SIMPLE_CIRCUITS, "delay" = 20, "cost" = 1) + return FALSE + +/obj/machinery/firealarm/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) + switch(passed_mode) + if(RCD_UPGRADE_SIMPLE_CIRCUITS) + user.visible_message("[user] fabricates a circuit and places it into [src].", \ + "You adapt a fire alarm circuit and slot it into the assembly.") + buildstage = 1 + update_icon() + return TRUE + return FALSE + +/obj/machinery/firealarm/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) + . = ..() + if(.) //damage received + if(obj_integrity > 0 && !(stat & BROKEN) && buildstage != 0) + if(prob(33)) + alarm() + +/obj/machinery/firealarm/singularity_pull(S, current_size) + if (current_size >= STAGE_FIVE) // If the singulo is strong enough to pull anchored objects, the fire alarm experiences integrity failure + deconstruct() + ..() + +/obj/machinery/firealarm/obj_break(damage_flag) + if(!(stat & BROKEN) && !(flags_1 & NODECONSTRUCT_1) && buildstage != 0) //can't break the electronics if there isn't any inside. + LAZYREMOVE(myarea.firealarms, src) + stat |= BROKEN + update_icon() + +/obj/machinery/firealarm/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + new /obj/item/stack/sheet/metal(loc, 1) + if(!(stat & BROKEN)) + var/obj/item/I = new /obj/item/electronics/firealarm(loc) + if(!disassembled) + I.obj_integrity = I.max_integrity * 0.5 + new /obj/item/stack/cable_coil(loc, 3) + qdel(src) + +/obj/machinery/firealarm/proc/update_fire_light(fire) + if(fire == !!light_power) + return // do nothing if we're already active + if(fire) + set_light(l_power = 0.8) + else + set_light(l_power = 0) + +/* + * Return of Party button + */ + +/area + var/party = FALSE + +/obj/machinery/firealarm/partyalarm + name = "\improper PARTY BUTTON" + desc = "Cuban Pete is in the house!" + var/static/party_overlay + +/obj/machinery/firealarm/partyalarm/reset() + if (stat & (NOPOWER|BROKEN)) + return + var/area/A = get_base_area(src) + if (!A || !A.party) + return + A.party = FALSE + A.cut_overlay(party_overlay) + +/obj/machinery/firealarm/partyalarm/alarm() + if (stat & (NOPOWER|BROKEN)) + return + var/area/A = get_base_area(src) + if (!A || A.party || A.name == "Space") + return + A.party = TRUE + if (!party_overlay) + party_overlay = iconstate2appearance('icons/turf/areas.dmi', "party") + A.add_overlay(party_overlay) From 9ea6e896fbe9d024c47504ae963e333e8c370e41 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Mon, 20 Jan 2020 21:43:00 +0100 Subject: [PATCH 10/32] Kevinz, please. --- code/modules/mob/living/carbon/monkey/life.dm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index ca6f5db5ca..a90c2c33f3 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -30,8 +30,9 @@ /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) - if(prob(max(0, radiation - RAD_MOB_MUTATE) / 25)) - gorillize() + var/ooga_chance = (radiation - RAD_MOB_MUTATE) / 25 + if(ooga_chance > 0 && prob(ooga_chance)) + gorillize() return if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!IsKnockdown()) From 9604b274828ada1d59367bf05fd554034a33e703 Mon Sep 17 00:00:00 2001 From: Ghommie <42542238+Ghommie@users.noreply.github.com> Date: Mon, 20 Jan 2020 21:55:02 +0100 Subject: [PATCH 11/32] github web editor is so bad --- code/modules/mob/living/carbon/monkey/life.dm | 344 +++++++++--------- 1 file changed, 172 insertions(+), 172 deletions(-) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index a90c2c33f3..93f31a6451 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -1,172 +1,172 @@ - - -/mob/living/carbon/monkey - - -/mob/living/carbon/monkey/Life() - set invisibility = 0 - - if (notransform) - return - - if(..()) - - if(!client) - if(stat == CONSCIOUS) - if(on_fire || buckled || restrained() || (resting && canmove)) //CIT CHANGE - makes it so monkeys attempt to resist if they're resting) - if(!resisting && prob(MONKEY_RESIST_PROB)) - resisting = TRUE - walk_to(src,0) - resist() - else if(resisting) - resisting = FALSE - else if((mode == MONKEY_IDLE && !pickupTarget && !prob(MONKEY_SHENANIGAN_PROB)) || !handle_combat()) - if(prob(25) && canmove && isturf(loc) && !pulledby) - step(src, pick(GLOB.cardinals)) - else if(prob(1)) - emote(pick("scratch","jump","roll","tail")) - else - walk_to(src,0) - -/mob/living/carbon/monkey/handle_mutations_and_radiation() - if(radiation) - var/ooga_chance = (radiation - RAD_MOB_MUTATE) / 25 - if(ooga_chance > 0 && prob(ooga_chance)) - gorillize() - return - if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) - if(!IsKnockdown()) - emote("collapse") - Knockdown(RAD_MOB_KNOCKDOWN_AMOUNT) - to_chat(src, "You feel weak.") - if(radiation > RAD_MOB_MUTATE) - if(prob(1)) - to_chat(src, "You mutate!") - randmutb() - emote("gasp") - domutcheck() - if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) - vomit(10, TRUE) - return ..() - -/mob/living/carbon/monkey/handle_breath_temperature(datum/gas_mixture/breath) - if(abs(BODYTEMP_NORMAL - breath.temperature) > 50) - switch(breath.temperature) - if(-INFINITY to 120) - adjustFireLoss(3) - if(120 to 200) - adjustFireLoss(1.5) - if(200 to 260) - adjustFireLoss(0.5) - if(360 to 400) - adjustFireLoss(2) - if(400 to 1000) - adjustFireLoss(3) - if(1000 to INFINITY) - adjustFireLoss(8) - -/mob/living/carbon/monkey/handle_environment(datum/gas_mixture/environment) - if(!environment) - return - - var/loc_temp = get_temperature(environment) - - if(stat != DEAD) - adjust_bodytemperature(natural_bodytemperature_stabilization()) - - if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases - if(loc_temp < bodytemperature) - adjust_bodytemperature(max((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR, BODYTEMP_COOLING_MAX)) - else - adjust_bodytemperature(min((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX)) - - - if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !HAS_TRAIT(src, TRAIT_RESISTHEAT)) - switch(bodytemperature) - if(360 to 400) - throw_alert("temp", /obj/screen/alert/hot, 1) - apply_damage(HEAT_DAMAGE_LEVEL_1, BURN) - if(400 to 460) - throw_alert("temp", /obj/screen/alert/hot, 2) - apply_damage(HEAT_DAMAGE_LEVEL_2, BURN) - if(460 to INFINITY) - throw_alert("temp", /obj/screen/alert/hot, 3) - if(on_fire) - apply_damage(HEAT_DAMAGE_LEVEL_3, BURN) - else - apply_damage(HEAT_DAMAGE_LEVEL_2, BURN) - - else if(bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(src, TRAIT_RESISTCOLD)) - if(!istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) - switch(bodytemperature) - if(200 to 260) - throw_alert("temp", /obj/screen/alert/cold, 1) - apply_damage(COLD_DAMAGE_LEVEL_1, BURN) - if(120 to 200) - throw_alert("temp", /obj/screen/alert/cold, 2) - apply_damage(COLD_DAMAGE_LEVEL_2, BURN) - if(-INFINITY to 120) - throw_alert("temp", /obj/screen/alert/cold, 3) - apply_damage(COLD_DAMAGE_LEVEL_3, BURN) - else - clear_alert("temp") - - else - clear_alert("temp") - - //Account for massive pressure differences - - var/pressure = environment.return_pressure() - var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. - switch(adjusted_pressure) - if(HAZARD_HIGH_PRESSURE to INFINITY) - adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) - throw_alert("pressure", /obj/screen/alert/highpressure, 2) - if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE) - throw_alert("pressure", /obj/screen/alert/highpressure, 1) - if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE) - clear_alert("pressure") - if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) - throw_alert("pressure", /obj/screen/alert/lowpressure, 1) - else - adjustBruteLoss( LOW_PRESSURE_DAMAGE ) - throw_alert("pressure", /obj/screen/alert/lowpressure, 2) - - return - -/mob/living/carbon/monkey/handle_random_events() - if (prob(1) && prob(2)) - emote("scratch") - -/mob/living/carbon/monkey/has_smoke_protection() - if(wear_mask) - if(wear_mask.clothing_flags & BLOCK_GAS_SMOKE_EFFECT) - return 1 - -/mob/living/carbon/monkey/handle_fire() - . = ..() - if(on_fire) - - //the fire tries to damage the exposed clothes and items - var/list/burning_items = list() - //HEAD// - var/obj/item/clothing/head_clothes = null - if(wear_mask) - head_clothes = wear_mask - if(wear_neck) - head_clothes = wear_neck - if(head) - head_clothes = head - if(head_clothes) - burning_items += head_clothes - - if(back) - burning_items += back - - for(var/X in burning_items) - var/obj/item/I = X - if(!(I.resistance_flags & FIRE_PROOF)) - I.take_damage(fire_stacks, BURN, "fire", 0) - - adjust_bodytemperature(BODYTEMP_HEATING_MAX) - SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) + + +/mob/living/carbon/monkey + + +/mob/living/carbon/monkey/Life() + set invisibility = 0 + + if (notransform) + return + + if(..()) + + if(!client) + if(stat == CONSCIOUS) + if(on_fire || buckled || restrained() || (resting && canmove)) //CIT CHANGE - makes it so monkeys attempt to resist if they're resting) + if(!resisting && prob(MONKEY_RESIST_PROB)) + resisting = TRUE + walk_to(src,0) + resist() + else if(resisting) + resisting = FALSE + else if((mode == MONKEY_IDLE && !pickupTarget && !prob(MONKEY_SHENANIGAN_PROB)) || !handle_combat()) + if(prob(25) && canmove && isturf(loc) && !pulledby) + step(src, pick(GLOB.cardinals)) + else if(prob(1)) + emote(pick("scratch","jump","roll","tail")) + else + walk_to(src,0) + +/mob/living/carbon/monkey/handle_mutations_and_radiation() + if(radiation) + var/ooga_chance = (radiation - RAD_MOB_MUTATE) / 25 + if(ooga_chance > 0 && prob(ooga_chance)) + gorillize() + return + if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) + if(!IsKnockdown()) + emote("collapse") + Knockdown(RAD_MOB_KNOCKDOWN_AMOUNT) + to_chat(src, "You feel weak.") + if(radiation > RAD_MOB_MUTATE) + if(prob(1)) + to_chat(src, "You mutate!") + randmutb() + emote("gasp") + domutcheck() + if(radiation > RAD_MOB_VOMIT && prob(RAD_MOB_VOMIT_PROB)) + vomit(10, TRUE) + return ..() + +/mob/living/carbon/monkey/handle_breath_temperature(datum/gas_mixture/breath) + if(abs(BODYTEMP_NORMAL - breath.temperature) > 50) + switch(breath.temperature) + if(-INFINITY to 120) + adjustFireLoss(3) + if(120 to 200) + adjustFireLoss(1.5) + if(200 to 260) + adjustFireLoss(0.5) + if(360 to 400) + adjustFireLoss(2) + if(400 to 1000) + adjustFireLoss(3) + if(1000 to INFINITY) + adjustFireLoss(8) + +/mob/living/carbon/monkey/handle_environment(datum/gas_mixture/environment) + if(!environment) + return + + var/loc_temp = get_temperature(environment) + + if(stat != DEAD) + adjust_bodytemperature(natural_bodytemperature_stabilization()) + + if(!on_fire) //If you're on fire, you do not heat up or cool down based on surrounding gases + if(loc_temp < bodytemperature) + adjust_bodytemperature(max((loc_temp - bodytemperature) / BODYTEMP_COLD_DIVISOR, BODYTEMP_COOLING_MAX)) + else + adjust_bodytemperature(min((loc_temp - bodytemperature) / BODYTEMP_HEAT_DIVISOR, BODYTEMP_HEATING_MAX)) + + + if(bodytemperature > BODYTEMP_HEAT_DAMAGE_LIMIT && !HAS_TRAIT(src, TRAIT_RESISTHEAT)) + switch(bodytemperature) + if(360 to 400) + throw_alert("temp", /obj/screen/alert/hot, 1) + apply_damage(HEAT_DAMAGE_LEVEL_1, BURN) + if(400 to 460) + throw_alert("temp", /obj/screen/alert/hot, 2) + apply_damage(HEAT_DAMAGE_LEVEL_2, BURN) + if(460 to INFINITY) + throw_alert("temp", /obj/screen/alert/hot, 3) + if(on_fire) + apply_damage(HEAT_DAMAGE_LEVEL_3, BURN) + else + apply_damage(HEAT_DAMAGE_LEVEL_2, BURN) + + else if(bodytemperature < BODYTEMP_COLD_DAMAGE_LIMIT && !HAS_TRAIT(src, TRAIT_RESISTCOLD)) + if(!istype(loc, /obj/machinery/atmospherics/components/unary/cryo_cell)) + switch(bodytemperature) + if(200 to 260) + throw_alert("temp", /obj/screen/alert/cold, 1) + apply_damage(COLD_DAMAGE_LEVEL_1, BURN) + if(120 to 200) + throw_alert("temp", /obj/screen/alert/cold, 2) + apply_damage(COLD_DAMAGE_LEVEL_2, BURN) + if(-INFINITY to 120) + throw_alert("temp", /obj/screen/alert/cold, 3) + apply_damage(COLD_DAMAGE_LEVEL_3, BURN) + else + clear_alert("temp") + + else + clear_alert("temp") + + //Account for massive pressure differences + + var/pressure = environment.return_pressure() + var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob. + switch(adjusted_pressure) + if(HAZARD_HIGH_PRESSURE to INFINITY) + adjustBruteLoss( min( ( (adjusted_pressure / HAZARD_HIGH_PRESSURE) -1 )*PRESSURE_DAMAGE_COEFFICIENT , MAX_HIGH_PRESSURE_DAMAGE) ) + throw_alert("pressure", /obj/screen/alert/highpressure, 2) + if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE) + throw_alert("pressure", /obj/screen/alert/highpressure, 1) + if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE) + clear_alert("pressure") + if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE) + throw_alert("pressure", /obj/screen/alert/lowpressure, 1) + else + adjustBruteLoss( LOW_PRESSURE_DAMAGE ) + throw_alert("pressure", /obj/screen/alert/lowpressure, 2) + + return + +/mob/living/carbon/monkey/handle_random_events() + if (prob(1) && prob(2)) + emote("scratch") + +/mob/living/carbon/monkey/has_smoke_protection() + if(wear_mask) + if(wear_mask.clothing_flags & BLOCK_GAS_SMOKE_EFFECT) + return 1 + +/mob/living/carbon/monkey/handle_fire() + . = ..() + if(on_fire) + + //the fire tries to damage the exposed clothes and items + var/list/burning_items = list() + //HEAD// + var/obj/item/clothing/head_clothes = null + if(wear_mask) + head_clothes = wear_mask + if(wear_neck) + head_clothes = wear_neck + if(head) + head_clothes = head + if(head_clothes) + burning_items += head_clothes + + if(back) + burning_items += back + + for(var/X in burning_items) + var/obj/item/I = X + if(!(I.resistance_flags & FIRE_PROOF)) + I.take_damage(fire_stacks, BURN, "fire", 0) + + adjust_bodytemperature(BODYTEMP_HEATING_MAX) + SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "on_fire", /datum/mood_event/on_fire) From a921b27c630e4c5a7669e79562d57c679dade532 Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Mon, 20 Jan 2020 21:58:21 +0100 Subject: [PATCH 12/32] I want a different maintainer to merge this now. --- code/modules/mob/living/carbon/monkey/life.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 93f31a6451..e2dae7095b 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -30,10 +30,10 @@ /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) - var/ooga_chance = (radiation - RAD_MOB_MUTATE) / 25 - if(ooga_chance > 0 && prob(ooga_chance)) - gorillize() - return + if(radiation > RAD_MOB_MUTATE) + if(prob((radiation - RAD_MOB_MUTATE) / 25)) + gorillize() + return if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!IsKnockdown()) emote("collapse") From 038f5e4b0e19f69d50a52dbe832508e358e550ab Mon Sep 17 00:00:00 2001 From: Ghom <42542238+Ghommie@users.noreply.github.com> Date: Mon, 20 Jan 2020 21:59:12 +0100 Subject: [PATCH 13/32] Yea, sorry for being so naive right now. --- code/modules/mob/living/carbon/monkey/life.dm | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index e2dae7095b..e83f67f796 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -30,10 +30,9 @@ /mob/living/carbon/monkey/handle_mutations_and_radiation() if(radiation) - if(radiation > RAD_MOB_MUTATE) - if(prob((radiation - RAD_MOB_MUTATE) / 25)) - gorillize() - return + if(radiation > RAD_MOB_MUTATE && prob((radiation - RAD_MOB_MUTATE) / 25)) + gorillize() + return if(radiation > RAD_MOB_KNOCKDOWN && prob(RAD_MOB_KNOCKDOWN_PROB)) if(!IsKnockdown()) emote("collapse") From b0b90d4d2869a68a4a51597cb5355225d4863028 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 00:45:17 -0700 Subject: [PATCH 14/32] Update game_options.dm --- code/controllers/configuration/entries/game_options.dm | 3 +++ 1 file changed, 3 insertions(+) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 6efc9eab12..52307262ff 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -249,6 +249,9 @@ /datum/config_entry/number/movedelay/walk_delay +/datum/config_entry/number/movedelay/sprint_speed_increase + config_entry_value = 1 + /////////////////////////////////////////////////Outdated move delay /datum/config_entry/number/outdated_movedelay deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed From 4a40090061717363e58607b557ae8c1a2192ec34 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:00:29 -0700 Subject: [PATCH 15/32] Update human_movement.dm --- .../code/modules/mob/living/carbon/human/human_movement.dm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index 0b6903c9fe..cafd86ac26 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -12,8 +12,11 @@ /mob/living/carbon/human/movement_delay() . = 0 - if(!resting && m_intent == MOVE_INTENT_RUN && !sprinting) - . += 1 + if(!resting && m_intent == MOVE_INTENT_RUN && sprinting) + var/static/datum/config_entry/number/movespeed/sprint_speed_increase/SSI + if(!SSI) + SSI = CONFIG_GET_ENTRY(number/movespeed/sprint_speed_increase) + . -= SSI.config_entry_value if(wrongdirmovedelay) . += 1 . += ..() From ea5f35a457b55145859217bac1b85b155ed82467 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:06:50 -0700 Subject: [PATCH 16/32] Update game_options.dm --- .../controllers/configuration/entries/game_options.dm | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 52307262ff..b3668bc728 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -249,9 +249,18 @@ /datum/config_entry/number/movedelay/walk_delay -/datum/config_entry/number/movedelay/sprint_speed_increase +/datum/config_entry/number/sprint_speed_increase config_entry_value = 1 +/datum/config_entry/number/sprint_buffer_max + config_entry_value = 42 + +/datum/config_entry/number/sprint_stamina_cost + config_entry_value = 0.7 + +/datum/config_entry/number/sprint_buffer_regen_per_ds + config_entry_value = 0.3 + /////////////////////////////////////////////////Outdated move delay /datum/config_entry/number/outdated_movedelay deprecated_by = /datum/config_entry/keyed_list/multiplicative_movespeed From b47f92716e330d47451bfb987143a3136234d504 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:07:06 -0700 Subject: [PATCH 17/32] Update human_movement.dm --- .../code/modules/mob/living/carbon/human/human_movement.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index cafd86ac26..4d8c7a4b25 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -13,9 +13,9 @@ /mob/living/carbon/human/movement_delay() . = 0 if(!resting && m_intent == MOVE_INTENT_RUN && sprinting) - var/static/datum/config_entry/number/movespeed/sprint_speed_increase/SSI + var/static/datum/config_entry/movespeed/sprint_speed_increase/SSI if(!SSI) - SSI = CONFIG_GET_ENTRY(number/movespeed/sprint_speed_increase) + SSI = CONFIG_GET_ENTRY(movespeed/sprint_speed_increase) . -= SSI.config_entry_value if(wrongdirmovedelay) . += 1 From 871ae491927c05c6df6c7b60ac095c44bf5e89dc Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:12:44 -0700 Subject: [PATCH 18/32] Update living.dm --- modular_citadel/code/modules/mob/living/living.dm | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index 513a80cae0..536b7ece50 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -17,6 +17,12 @@ var/sprint_stamina_cost = 0.70 //stamina loss per tile while insufficient sprint buffer. //---End +/mob/living/update_config_movespeed() + . = ..() + sprint_buffer_max = CONFIG_GET(number/movespeed/sprint_buffer_max) + sprint_buffer_regen_ds = CONFIG_GET(number/movespeed/sprint_buffer_regen_per_ds) + sprint_stamina_cost = CONFIG_GET(number/movespeed/sprint_stamina_cost) + /mob/living/movement_delay(ignorewalk = 0) . = ..() if(resting) From afe9498ebe2ae4cba05144fa3340c3430cfac337 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:51:56 -0700 Subject: [PATCH 19/32] Update living.dm --- modular_citadel/code/modules/mob/living/living.dm | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modular_citadel/code/modules/mob/living/living.dm b/modular_citadel/code/modules/mob/living/living.dm index 536b7ece50..0caf548196 100644 --- a/modular_citadel/code/modules/mob/living/living.dm +++ b/modular_citadel/code/modules/mob/living/living.dm @@ -19,9 +19,9 @@ /mob/living/update_config_movespeed() . = ..() - sprint_buffer_max = CONFIG_GET(number/movespeed/sprint_buffer_max) - sprint_buffer_regen_ds = CONFIG_GET(number/movespeed/sprint_buffer_regen_per_ds) - sprint_stamina_cost = CONFIG_GET(number/movespeed/sprint_stamina_cost) + sprint_buffer_max = CONFIG_GET(number/movedelay/sprint_buffer_max) + sprint_buffer_regen_ds = CONFIG_GET(number/movedelay/sprint_buffer_regen_per_ds) + sprint_stamina_cost = CONFIG_GET(number/movedelay/sprint_stamina_cost) /mob/living/movement_delay(ignorewalk = 0) . = ..() From e5759f21e3e5dc1f9ce1c7e661e9434a6e841104 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:52:20 -0700 Subject: [PATCH 20/32] Update human_movement.dm --- .../code/modules/mob/living/carbon/human/human_movement.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index 4d8c7a4b25..cafd86ac26 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -13,9 +13,9 @@ /mob/living/carbon/human/movement_delay() . = 0 if(!resting && m_intent == MOVE_INTENT_RUN && sprinting) - var/static/datum/config_entry/movespeed/sprint_speed_increase/SSI + var/static/datum/config_entry/number/movespeed/sprint_speed_increase/SSI if(!SSI) - SSI = CONFIG_GET_ENTRY(movespeed/sprint_speed_increase) + SSI = CONFIG_GET_ENTRY(number/movespeed/sprint_speed_increase) . -= SSI.config_entry_value if(wrongdirmovedelay) . += 1 From 16c14b55ae930a2bda40a9667d3e7a959dadb69f Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:52:43 -0700 Subject: [PATCH 21/32] Update game_options.dm --- code/controllers/configuration/entries/game_options.dm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index b3668bc728..a3bc47ac91 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -249,16 +249,16 @@ /datum/config_entry/number/movedelay/walk_delay -/datum/config_entry/number/sprint_speed_increase +/datum/config_entry/number/movedelay/sprint_speed_increase config_entry_value = 1 -/datum/config_entry/number/sprint_buffer_max +/datum/config_entry/number/movedelay/sprint_buffer_max config_entry_value = 42 -/datum/config_entry/number/sprint_stamina_cost +/datum/config_entry/number/movedelay/sprint_stamina_cost config_entry_value = 0.7 -/datum/config_entry/number/sprint_buffer_regen_per_ds +/datum/config_entry/number/movedelay/sprint_buffer_regen_per_ds config_entry_value = 0.3 /////////////////////////////////////////////////Outdated move delay From c345852abb978b17faaecff99678706073f26d72 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 01:53:53 -0700 Subject: [PATCH 22/32] Update human_movement.dm --- .../code/modules/mob/living/carbon/human/human_movement.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm index cafd86ac26..bd43d96ba4 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/human_movement.dm @@ -13,9 +13,9 @@ /mob/living/carbon/human/movement_delay() . = 0 if(!resting && m_intent == MOVE_INTENT_RUN && sprinting) - var/static/datum/config_entry/number/movespeed/sprint_speed_increase/SSI + var/static/datum/config_entry/number/movedelay/sprint_speed_increase/SSI if(!SSI) - SSI = CONFIG_GET_ENTRY(number/movespeed/sprint_speed_increase) + SSI = CONFIG_GET_ENTRY(number/movedelay/sprint_speed_increase) . -= SSI.config_entry_value if(wrongdirmovedelay) . += 1 From 10e8d383acd7b4f4eaab43948d5c9d464bf1a4f3 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 02:25:00 -0700 Subject: [PATCH 23/32] Update configuration.dm --- code/__DEFINES/configuration.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/__DEFINES/configuration.dm b/code/__DEFINES/configuration.dm index 3034876e36..6b70eb1e0f 100644 --- a/code/__DEFINES/configuration.dm +++ b/code/__DEFINES/configuration.dm @@ -1,6 +1,7 @@ //config files #define CONFIG_GET(X) global.config.Get(/datum/config_entry/##X) #define CONFIG_SET(X, Y) global.config.Set(/datum/config_entry/##X, ##Y) +#define CONFIG_GET_ENTRY(X) global.config.GetEntryDatum(/datum/config_entry/##X) #define CONFIG_MAPS_FILE "maps.txt" From 3dcd2a75cf020e4f81f6f44abb3b9ca7309d66d6 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Wed, 22 Jan 2020 02:27:51 -0700 Subject: [PATCH 24/32] Update configuration.dm --- code/controllers/configuration/configuration.dm | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm index 4ce0ccf361..ad1f869057 100644 --- a/code/controllers/configuration/configuration.dm +++ b/code/controllers/configuration/configuration.dm @@ -193,6 +193,13 @@ stat("[name]:", statclick) /datum/controller/configuration/proc/Get(entry_type) + var/datum/config_entry/E = GetEntryDatum(entry_type) + if((E.protection & CONFIG_ENTRY_HIDDEN) && IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") + log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") + return + return E.config_entry_value + +/datum/controller/configuration/proc/GetEntryDatum(entry_type) var/datum/config_entry/E = entry_type var/entry_is_abstract = initial(E.abstract_type) == entry_type if(entry_is_abstract) @@ -200,10 +207,7 @@ E = entries_by_type[entry_type] if(!E) CRASH("Missing config entry for [entry_type]!") - if((E.protection & CONFIG_ENTRY_HIDDEN) && IsAdminAdvancedProcCall() && GLOB.LastAdminCalledProc == "Get" && GLOB.LastAdminCalledTargetRef == "[REF(src)]") - log_admin_private("Config access of [entry_type] attempted by [key_name(usr)]") - return - return E.config_entry_value + return E /datum/controller/configuration/proc/Set(entry_type, new_val) var/datum/config_entry/E = entry_type From 30188359c69562f61c949e453d2246052cfaca49 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Fri, 24 Jan 2020 21:51:26 -0700 Subject: [PATCH 25/32] Update combat.dm --- code/__DEFINES/combat.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index cc1b474c49..4304af77f3 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -184,7 +184,7 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define BODY_ZONE_PRECISE_R_FOOT "r_foot" //We will round to this value in damage calculations. -#define DAMAGE_PRECISION 0.1 +#define DAMAGE_PRECISION 0.01 //items total mass, used to calculate their attacks' stamina costs. If not defined, the cost will be (w_class * 1.25) #define TOTAL_MASS_TINY_ITEM 1.25 @@ -202,4 +202,4 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define BULLET_ACT_HIT "HIT" //It's a successful hit, whatever that means in the context of the thing it's hitting. #define BULLET_ACT_BLOCK "BLOCK" //It's a blocked hit, whatever that means in the context of the thing it's hitting. #define BULLET_ACT_FORCE_PIERCE "PIERCE" //It pierces through the object regardless of the bullet being piercing by default. -#define BULLET_ACT_TURF "TURF" //It hit us but it should hit something on the same turf too. Usually used for turfs. \ No newline at end of file +#define BULLET_ACT_TURF "TURF" //It hit us but it should hit something on the same turf too. Usually used for turfs. From c74a6eaf4ccf7cd540eade2022e420985310de35 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sat, 25 Jan 2020 09:20:41 -0700 Subject: [PATCH 26/32] Update capture_the_flag.dm --- code/modules/awaymissions/capture_the_flag.dm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index bd4e716357..6bf85cb6dc 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -7,8 +7,6 @@ #define AMMO_DROP_LIFETIME 300 #define CTF_REQUIRED_PLAYERS 4 - - /obj/item/twohanded/ctf name = "banner" icon = 'icons/obj/items_and_weapons.dmi' @@ -210,7 +208,6 @@ toggle_all_ctf(user) return - people_who_want_to_play |= user.ckey var/num = people_who_want_to_play.len var/remaining = CTF_REQUIRED_PLAYERS - num @@ -440,7 +437,7 @@ . = TRUE if(ishuman(target)) var/mob/living/carbon/human/H = target - if(istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit/shielded/ctf)) + if((RED_TEAM in H.faction) || (BLUE_TEAM in H.faction)) . = TRUE // RED TEAM GUNS From b36d2dc277be51c0121df465f67f28e99968112c Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 25 Jan 2020 13:56:25 -0800 Subject: [PATCH 27/32] Makes "Meow Mix" bar sign actually appear --- code/game/objects/structures/barsigns.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm index 053512a256..b72a4b816e 100644 --- a/code/game/objects/structures/barsigns.dm +++ b/code/game/objects/structures/barsigns.dm @@ -305,7 +305,7 @@ /datum/barsign/meow_mix name = "Meow Mix" - icon = "meow_mix" + icon = "Meow Mix" desc = "No, we don't serve catnip, officer!" /datum/barsign/hiddensigns From 52e473ba07458b060dec3901cae4eed724464254 Mon Sep 17 00:00:00 2001 From: Putnam Date: Sat, 25 Jan 2020 19:42:36 -0800 Subject: [PATCH 28/32] argh --- code/game/objects/effects/landmarks.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm index 8f09827bd2..3d63f4a553 100644 --- a/code/game/objects/effects/landmarks.dm +++ b/code/game/objects/effects/landmarks.dm @@ -456,7 +456,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) if(!SSmapping.station_room_templates[t]) log_world("Station room spawner placed at ([T.x], [T.y], [T.z]) has invalid ruin name of \"[t]\" in its list") templates -= t - template_name = pickweight(templates) + template_name = pickweightAllowZero(templates) if(!template_name) GLOB.stationroom_landmarks -= src qdel(src) @@ -485,4 +485,4 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player) // Landmark for the mining station /obj/effect/landmark/stationroom/lavaland/station templates = list("Public Mining Base" = 3) - icon = 'icons/rooms/Lavaland/Mining.dmi' \ No newline at end of file + icon = 'icons/rooms/Lavaland/Mining.dmi' From cd2863febd8f8e2c809bb4c51b342a4f061b9350 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Jan 2020 22:45:57 -0600 Subject: [PATCH 29/32] Automatic changelog generation for PR #10717 [ci skip] --- html/changelogs/AutoChangeLog-pr-10717.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10717.yml diff --git a/html/changelogs/AutoChangeLog-pr-10717.yml b/html/changelogs/AutoChangeLog-pr-10717.yml new file mode 100644 index 0000000000..fd9fea8d52 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10717.yml @@ -0,0 +1,4 @@ +author: "Putnam3145" +delete-after: True +changes: + - bugfix: "Meow Mix bar sign works" From 016c46c8a4a0923b024110179d2f6b742f9d73db Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sat, 25 Jan 2020 22:50:17 -0600 Subject: [PATCH 30/32] Automatic changelog generation for PR #10466 [ci skip] --- html/changelogs/AutoChangeLog-pr-10466.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-10466.yml diff --git a/html/changelogs/AutoChangeLog-pr-10466.yml b/html/changelogs/AutoChangeLog-pr-10466.yml new file mode 100644 index 0000000000..ac9d94a677 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-10466.yml @@ -0,0 +1,4 @@ +author: "kevinz000" +delete-after: True +changes: + - balance: "monkies gorrilize easier now" From 97c65aac89f0db2e2a144c3290d44b06c072b0fd Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 26 Jan 2020 03:06:31 -0700 Subject: [PATCH 31/32] Update kinetic_accelerator.dm --- .../projectiles/guns/energy/kinetic_accelerator.dm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm index ecd906f2a9..1495ff61ba 100644 --- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm +++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm @@ -374,14 +374,18 @@ desc = "Decreases the cooldown of a kinetic accelerator. Not rated for minebot use." modifier = 2.5 minebot_upgrade = FALSE + var/decreased /obj/item/borg/upgrade/modkit/cooldown/install(obj/item/gun/energy/kinetic_accelerator/KA, mob/user) . = ..() if(.) - KA.overheat_time -= modifier + var/old = KA.overheat_time + KA.overheat_time = max(0, KA.overheat_time - modifier) + decreased = old - KA.overheat_time + /obj/item/borg/upgrade/modkit/cooldown/uninstall(obj/item/gun/energy/kinetic_accelerator/KA) - KA.overheat_time += modifier + KA.overheat_time += decreased ..() /obj/item/borg/upgrade/modkit/cooldown/minebot From f59a9d0009b9fb40c4ce92dc5974f9fc8f324dc5 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Sun, 26 Jan 2020 14:05:15 -0700 Subject: [PATCH 32/32] aight bet --- code/modules/awaymissions/capture_the_flag.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm index 6bf85cb6dc..8ceef76a06 100644 --- a/code/modules/awaymissions/capture_the_flag.dm +++ b/code/modules/awaymissions/capture_the_flag.dm @@ -435,8 +435,8 @@ . = FALSE if(istype(target, /obj/structure/barricade/security/ctf)) . = TRUE - if(ishuman(target)) - var/mob/living/carbon/human/H = target + if(isliving(target)) + var/mob/living/H = target if((RED_TEAM in H.faction) || (BLUE_TEAM in H.faction)) . = TRUE