diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4dcbd75275..e73367bf7b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,6 +64,7 @@ jobs: unit_tests: name: Integration Tests + # needs: ['file_tests', 'dreamchecker'] runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v3 @@ -105,3 +106,12 @@ jobs: TEST_DEFINE: "AWAY_MISSION_TEST" TEST_FILE: "code/_away_mission_tests.dm" RUN: "0" + + tests_successful: + name: Integration Tests + needs: ['file_tests', 'dreamchecker', 'unit_tests'] + runs-on: ubuntu-20.04 + steps: + - name: Report Success + run: | + echo "Jobs Successful!" diff --git a/_build_dependencies.sh b/_build_dependencies.sh index eba3501bf3..b251bfbe32 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -6,6 +6,6 @@ export NODE_VERSION=16 # Byond Major export BYOND_MAJOR=514 # Byond Minor -export BYOND_MINOR=1571 +export BYOND_MINOR=1589 # Macro Count export MACRO_COUNT=4 diff --git a/code/ZAS/Atom.dm b/code/ZAS/Atom.dm index 0057d18ca0..bfe6fa2ad4 100644 --- a/code/ZAS/Atom.dm +++ b/code/ZAS/Atom.dm @@ -3,14 +3,6 @@ /atom/var/pressure_resistance = ONE_ATMOSPHERE /atom/var/can_atmos_pass = ATMOS_PASS_YES -// Purpose: Determines if the object can pass this atom. -// Called by: Movement. -// Inputs: The moving atom, target turf. -// Outputs: Boolean if can pass. -// Airflow and ZAS zones now uses CanZASPass() instead of this proc. -/atom/proc/CanPass(atom/movable/mover, turf/target) - return !density - // Purpose: Determines if airflow is allowed between T and loc. // Called by: Airflow. // Inputs: The turf the airflow is from, which may not be the same as loc. is_zone is for conditionally disallowing merging. diff --git a/code/ZAS/Fire.dm b/code/ZAS/Fire.dm index 73ce3f01e8..015ffa36a9 100644 --- a/code/ZAS/Fire.dm +++ b/code/ZAS/Fire.dm @@ -170,7 +170,7 @@ If it gains pressure too slowly, it may leak or just rupture instead of explodin continue //Spread the fire. - if(prob( 50 + 50 * (firelevel/vsc.fire_firelevel_multiplier) ) && my_tile.CanPass(src, enemy_tile, 0,0) && enemy_tile.CanPass(src, my_tile, 0,0)) + if(prob( 50 + 50 * (firelevel/vsc.fire_firelevel_multiplier) ) && my_tile.CanPass(src, enemy_tile) && enemy_tile.CanPass(src, my_tile)) enemy_tile.create_fire(firelevel) else diff --git a/code/ZAS/Variable Settings.dm b/code/ZAS/Variable Settings.dm index c4643632dc..d55bcc64de 100644 --- a/code/ZAS/Variable Settings.dm +++ b/code/ZAS/Variable Settings.dm @@ -110,7 +110,7 @@ var/global/vs_control/vsc = new vw = vars[ch] if("[ch]_DESC" in vars) vw_desc = vars["[ch]_DESC"] if("[ch]_NAME" in vars) vw_name = vars["[ch]_NAME"] - dat += "[vw_name] = [vw] \[Change\]
" + dat += "[vw_name] = [vw] \[Change\]
" dat += "[vw_desc]

" user << browse(dat,"window=settings") diff --git a/code/__defines/admin.dm b/code/__defines/admin.dm index 84e0656c97..0e8730bae8 100644 --- a/code/__defines/admin.dm +++ b/code/__defines/admin.dm @@ -46,26 +46,26 @@ #define SMITE_SPONTANEOUSCOMBUSTION "Spontaneous Combustion" #define SMITE_LIGHTNINGBOLT "Lightning Bolt" -#define ADMIN_QUE(user) "(?)" -#define ADMIN_FLW(user) "(FLW)" -#define ADMIN_PP(user) "(PP)" -#define ADMIN_VV(atom) "(VV)" -#define ADMIN_SM(user) "(SM)" -#define ADMIN_TP(user) "(TP)" -#define ADMIN_BSA(user) "(BSA)" -#define ADMIN_KICK(user) "(KICK)" -#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" -#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" -#define ADMIN_SC(user) "(SC)" -#define ADMIN_SMITE(user) "(SMITE)" +#define ADMIN_QUE(user) "(?)" +#define ADMIN_FLW(user) "(FLW)" +#define ADMIN_PP(user) "(PP)" +#define ADMIN_VV(atom) "(VV)" +#define ADMIN_SM(user) "(SM)" +#define ADMIN_TP(user) "(TP)" +#define ADMIN_BSA(user) "(BSA)" +#define ADMIN_KICK(user) "(KICK)" +#define ADMIN_CENTCOM_REPLY(user) "(RPLY)" +#define ADMIN_SYNDICATE_REPLY(user) "(RPLY)" +#define ADMIN_SC(user) "(SC)" +#define ADMIN_SMITE(user) "(SMITE)" #define ADMIN_LOOKUP(user) "[key_name_admin(user)][ADMIN_QUE(user)]" #define ADMIN_LOOKUPFLW(user) "[key_name_admin(user)][ADMIN_QUE(user)] [ADMIN_FLW(user)]" #define ADMIN_FULLMONTY_NONAME(user) "[ADMIN_QUE(user)] [ADMIN_PP(user)] [ADMIN_VV(user)] [ADMIN_SM(user)] [ADMIN_FLW(user)] [ADMIN_TP(user)]" #define ADMIN_FULLMONTY(user) "[key_name_admin(user)] [ADMIN_FULLMONTY_NONAME(user)]" -#define ADMIN_JMP(src) "(JMP)" +#define ADMIN_JMP(src) "(JMP)" #define COORD(src) "[src ? "([src.x],[src.y],[src.z])" : "nonexistent location"]" #define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 -#define AHELP_RESOLVED 3 \ No newline at end of file +#define AHELP_RESOLVED 3 diff --git a/code/__defines/procpath.dm b/code/__defines/procpath.dm new file mode 100644 index 0000000000..e58a2a48b2 --- /dev/null +++ b/code/__defines/procpath.dm @@ -0,0 +1,25 @@ +/// Represents a proc or verb path. +/// +/// Despite having no DM-defined static type, proc paths have some variables, +/// listed below. These are not modifiable, but for a given procpath P, +/// `new P(null, "Name", "Desc")` can be used to create a new procpath with the +/// same code but new `name` and `desc` values. The other variables cannot be +/// changed in this way. +/// +/// This type exists only to act as an annotation, providing reasonable static +/// typing for procpaths. Previously, types like `/atom/verb` were used, with +/// the `name` and `desc` vars of `/atom` thus being accessible. Proc and verb +/// paths will fail `istype` and `ispath` checks against `/procpath`. +/procpath + // Although these variables are effectively const, if they are marked const + // below, their accesses are optimized away. + /// A text string of the verb's name. + var/name as text + /// The verb's help text or description. + var/desc as text + /// The category or tab the verb will appear in. + var/category as text + /// Only clients/mobs with `see_invisibility` higher can use the verb. + var/invisibility as num + /// Whether or not the verb appears in statpanel and commandbar when you press space + var/hidden as num diff --git a/code/_helpers/files.dm b/code/_helpers/files.dm index d6603e4275..9468becf8b 100644 --- a/code/_helpers/files.dm +++ b/code/_helpers/files.dm @@ -58,3 +58,18 @@ fileaccess_timer = world.time + FTPDELAY return 0 #undef FTPDELAY + +/// Returns the md5 of a file at a given path. +/proc/md5filepath(path) + . = md5(file(path)) + +/// Save file as an external file then md5 it. +/// Used because md5ing files stored in the rsc sometimes gives incorrect md5 results. +/proc/md5asfile(file) + var/static/notch = 0 + // its importaint this code can handle md5filepath sleeping instead of hard blocking, if it's converted to use rust_g. + var/filename = "tmp/md5asfile.[world.realtime].[world.timeofday].[world.time].[world.tick_usage].[notch]" + notch = WRAP(notch+1, 0, 2**15) + fcopy(file, filename) + . = md5filepath(filename) + fdel(filename) diff --git a/code/_helpers/icons.dm b/code/_helpers/icons.dm index 24f398c8ec..2cb3ef5c69 100644 --- a/code/_helpers/icons.dm +++ b/code/_helpers/icons.dm @@ -502,3 +502,184 @@ GLOBAL_LIST_EMPTY(cached_examine_icons) //Animate it growing animate(img, alpha = 0, transform = matrix()*grow_to, time = anim_duration, loop = loops) + +/// generates a filename for a given asset. +/// like generate_asset_name(), except returns the rsc reference and the rsc file hash as well as the asset name (sans extension) +/// used so that certain asset files dont have to be hashed twice +/proc/generate_and_hash_rsc_file(file, dmi_file_path) + var/rsc_ref = fcopy_rsc(file) + var/hash + //if we have a valid dmi file path we can trust md5'ing the rsc file because we know it doesnt have the bug described in http://www.byond.com/forum/post/2611357 + if(dmi_file_path) + hash = md5(rsc_ref) + else //otherwise, we need to do the expensive fcopy() workaround + hash = md5asfile(rsc_ref) + + return list(rsc_ref, hash, "asset.[hash]") + +///given a text string, returns whether it is a valid dmi icons folder path +/proc/is_valid_dmi_file(icon_path) + if(!istext(icon_path) || !length(icon_path)) + return FALSE + + var/is_in_icon_folder = findtextEx(icon_path, "icons/") + var/is_dmi_file = findtextEx(icon_path, ".dmi") + + if(is_in_icon_folder && is_dmi_file) + return TRUE + return FALSE + +/// given an icon object, dmi file path, or atom/image/mutable_appearance, attempts to find and return an associated dmi file path. +/// a weird quirk about dm is that /icon objects represent both compile-time or dynamic icons in the rsc, +/// but stringifying rsc references returns a dmi file path +/// ONLY if that icon represents a completely unchanged dmi file from when the game was compiled. +/// so if the given object is associated with an icon that was in the rsc when the game was compiled, this returns a path. otherwise it returns "" +/proc/get_icon_dmi_path(icon/icon) + /// the dmi file path we attempt to return if the given object argument is associated with a stringifiable icon + /// if successful, this looks like "icons/path/to/dmi_file.dmi" + var/icon_path = "" + + if(isatom(icon) || istype(icon, /image) || istype(icon, /mutable_appearance)) + var/atom/atom_icon = icon + icon = atom_icon.icon + //atom icons compiled in from 'icons/path/to/dmi_file.dmi' are weird and not really icon objects that you generate with icon(). + //if theyre unchanged dmi's then they're stringifiable to "icons/path/to/dmi_file.dmi" + + if(isicon(icon) && isfile(icon)) + //icons compiled in from 'icons/path/to/dmi_file.dmi' at compile time are weird and arent really /icon objects, + ///but they pass both isicon() and isfile() checks. theyre the easiest case since stringifying them gives us the path we want + var/icon_ref = "\ref[icon]" + var/locate_icon_string = "[locate(icon_ref)]" + + icon_path = locate_icon_string + + else if(isicon(icon) && "[icon]" == "/icon") + // icon objects generated from icon() at runtime are icons, but they ARENT files themselves, they represent icon files. + // if the files they represent are compile time dmi files in the rsc, then + // the rsc reference returned by fcopy_rsc() will be stringifiable to "icons/path/to/dmi_file.dmi" + var/rsc_ref = fcopy_rsc(icon) + + var/icon_ref = "\ref[rsc_ref]" + + var/icon_path_string = "[locate(icon_ref)]" + + icon_path = icon_path_string + + else if(istext(icon)) + var/rsc_ref = fcopy_rsc(icon) + //if its the text path of an existing dmi file, the rsc reference returned by fcopy_rsc() will be stringifiable to a dmi path + + var/rsc_ref_ref = "\ref[rsc_ref]" + var/rsc_ref_string = "[locate(rsc_ref_ref)]" + + icon_path = rsc_ref_string + + if(is_valid_dmi_file(icon_path)) + return icon_path + + return FALSE + +/** + * generate an asset for the given icon or the icon of the given appearance for [thing], and send it to any clients in target. + * Arguments: + * * thing - either a /icon object, or an object that has an appearance (atom, image, mutable_appearance). + * * target - either a reference to or a list of references to /client's or mobs with clients + * * icon_state - string to force a particular icon_state for the icon to be used + * * dir - dir number to force a particular direction for the icon to be used + * * frame - what frame of the icon_state's animation for the icon being used + * * moving - whether or not to use a moving state for the given icon + * * sourceonly - if TRUE, only generate the asset and send back the asset url, instead of tags that display the icon to players + * * extra_clases - string of extra css classes to use when returning the icon string + */ +/proc/icon2html(atom/thing, client/target, icon_state, dir = SOUTH, frame = 1, moving = FALSE, sourceonly = FALSE, extra_classes = null) + if (!thing) + return + //if(SSlag_switch.measures[DISABLE_USR_ICON2HTML] && usr && !HAS_TRAIT(usr, TRAIT_BYPASS_MEASURES)) + //return + + var/key + var/icon/icon2collapse = thing + + if (!target) + return + if (target == world) + target = GLOB.clients + + var/list/targets + if (!islist(target)) + targets = list(target) + else + targets = target + if(!length(targets)) + return + + //check if the given object is associated with a dmi file in the icons folder. if it is then we dont need to do a lot of work + //for asset generation to get around byond limitations + var/icon_path = get_icon_dmi_path(thing) + + if (!isicon(icon2collapse)) + if (isfile(thing)) //special snowflake + //var/name = SANITIZE_FILENAME("[generate_asset_name(thing)].png") + var/name = "[generate_asset_name(thing)].png" + if (!SSassets.cache[name]) + register_asset(name, thing) + for (var/thing2 in targets) + send_asset(thing2, name) + if(sourceonly) + return get_asset_url(name) + return "" + + //its either an atom, image, or mutable_appearance, we want its icon var + icon2collapse = thing.icon + + if (isnull(icon_state)) + icon_state = thing.icon_state + //Despite casting to atom, this code path supports mutable appearances, so let's be nice to them + //if(isnull(icon_state) || (isatom(thing) && thing.flags_1 & HTML_USE_INITAL_ICON_1)) + if(isnull(icon_state) || isatom(thing)) + icon_state = initial(thing.icon_state) + if (isnull(dir)) + dir = initial(thing.dir) + + if (isnull(dir)) + dir = thing.dir + + if (ishuman(thing)) // Shitty workaround for a BYOND issue. + var/icon/temp = icon2collapse + icon2collapse = icon() + icon2collapse.Insert(temp, dir = SOUTH) + dir = SOUTH + else + if (isnull(dir)) + dir = SOUTH + if (isnull(icon_state)) + icon_state = "" + + icon2collapse = icon(icon2collapse, icon_state, dir, frame, moving) + + var/list/name_and_ref = generate_and_hash_rsc_file(icon2collapse, icon_path)//pretend that tuples exist + + var/rsc_ref = name_and_ref[1] //weird object thats not even readable to the debugger, represents a reference to the icons rsc entry + var/file_hash = name_and_ref[2] + key = "[name_and_ref[3]].png" + + if(!SSassets.cache[key]) + register_asset(key, rsc_ref, file_hash, icon_path) + for (var/client_target in targets) + send_asset(client_target, key) + if(sourceonly) + return get_asset_url(key) + return "" + +//Costlier version of icon2html() that uses getFlatIcon() to account for overlays, underlays, etc. Use with extreme moderation, ESPECIALLY on mobs. +/proc/costly_icon2html(thing, target, sourceonly = FALSE) + if (!thing) + return + //if(SSlag_switch.measures[DISABLE_USR_ICON2HTML] && usr && !HAS_TRAIT(usr, TRAIT_BYPASS_MEASURES)) + //return + + if (isicon(thing)) + return icon2html(thing, target) + + var/icon/I = getFlatIcon(thing) + return icon2html(I, target, sourceonly = sourceonly) diff --git a/code/controllers/subsystems/inactivity.dm b/code/controllers/subsystems/inactivity.dm index e4ab73fcab..ab1b7209ca 100644 --- a/code/controllers/subsystems/inactivity.dm +++ b/code/controllers/subsystems/inactivity.dm @@ -46,7 +46,7 @@ SUBSYSTEM_DEF(inactivity) information = " while an AI." var/adminlinks - adminlinks = " (JMP|CRYO)" + adminlinks = " (JMP|CRYO)" log_and_message_admins("being kicked for AFK[information][adminlinks]", C.mob) diff --git a/code/controllers/subsystems/machines.dm b/code/controllers/subsystems/machines.dm index f61b94856c..100811f5c0 100644 --- a/code/controllers/subsystems/machines.dm +++ b/code/controllers/subsystems/machines.dm @@ -6,9 +6,6 @@ // // SSmachines subsystem - Processing machines, pipenets, and powernets! // -// Implementation Plan: -// PHASE 1 - Add subsystem using the existing global list vars -// PHASE 2 - Move the global list vars into the subsystem. SUBSYSTEM_DEF(machines) name = "Machines" @@ -24,12 +21,6 @@ SUBSYSTEM_DEF(machines) var/cost_powernets = 0 var/cost_power_objects = 0 - // TODO - PHASE 2 - Switch these from globals to instance vars - // var/list/pipenets = list() - // var/list/machinery = list() - // var/list/powernets = list() - // var/list/power_objects = list() - var/list/current_run = list() /datum/controller/subsystem/machines/Initialize(timeofday) @@ -51,28 +42,31 @@ SUBSYSTEM_DEF(machines) // The above is a lie. Turbolifts also call this proc. /datum/controller/subsystem/machines/proc/makepowernets() // TODO - check to not run while in the middle of a tick! - for(var/datum/powernet/PN in powernets) + for(var/datum/powernet/PN as anything in powernets) qdel(PN) powernets.Cut() setup_powernets_for_cables(cable_list) /datum/controller/subsystem/machines/proc/setup_powernets_for_cables(list/cables) - for(var/obj/structure/cable/PC in cables) + for(var/obj/structure/cable/PC as anything in cables) if(!PC.powernet) var/datum/powernet/NewPN = new() NewPN.add_cable(PC) propagate_network(PC,PC.powernet) /datum/controller/subsystem/machines/proc/setup_atmos_machinery(list/atmos_machines) + var/list/actual_atmos_machines = list() + for(var/obj/machinery/atmospherics/machine in atmos_machines) machine.atmos_init() + actual_atmos_machines += machine CHECK_TICK - for(var/obj/machinery/atmospherics/machine in atmos_machines) + for(var/obj/machinery/atmospherics/machine as anything in actual_atmos_machines) machine.build_network() CHECK_TICK - for(var/obj/machinery/atmospherics/unary/U in atmos_machines) + for(var/obj/machinery/atmospherics/unary/U as anything in actual_atmos_machines) if(istype(U, /obj/machinery/atmospherics/unary/vent_pump)) var/obj/machinery/atmospherics/unary/vent_pump/T = U T.broadcast_status() @@ -163,16 +157,24 @@ SUBSYSTEM_DEF(machines) return /datum/controller/subsystem/machines/Recover() - // TODO - PHASE 2 - // if (istype(SSmachines.pipenets)) - // pipenets = SSmachines.pipenets - // if (istype(SSmachines.machinery)) - // machinery = SSmachines.machinery - // if (istype(SSmachines.powernets)) - // powernets = SSmachines.powernets - // if (istype(SSmachines.power_objects)) - // power_objects = SSmachines.power_objects + for(var/datum/D as anything in global.pipe_networks) + if(!istype(D, /datum/pipe_network)) + error("Found wrong type during SSmachinery recovery: list=global.pipe_networks, item=[D], type=[D?.type]") + global.pipe_networks -= D + for(var/datum/D as anything in global.processing_machines) + if(!istype(D, /obj/machinery)) + error("Found wrong type during SSmachinery recovery: list=global.processing_machines, item=[D], type=[D?.type]") + global.processing_machines -= D + for(var/datum/D as anything in global.powernets) + if(!istype(D, /datum/powernet)) + error("Found wrong type during SSmachinery recovery: list=global.powernets, item=[D], type=[D?.type]") + global.powernets -= D + for(var/datum/D as anything in global.processing_power_items) + if(!istype(D, /obj/item)) + error("Found wrong type during SSmachinery recovery: list=global.processing_power_items, item=[D], type=[D?.type]") + global.processing_power_items -= D #undef SSMACHINES_PIPENETS #undef SSMACHINES_MACHINERY +#undef SSMACHINES_POWERNETS #undef SSMACHINES_POWER_OBJECTS diff --git a/code/controllers/subsystems/mobs.dm b/code/controllers/subsystems/mobs.dm index c124b5573e..66352c9c9e 100644 --- a/code/controllers/subsystems/mobs.dm +++ b/code/controllers/subsystems/mobs.dm @@ -43,6 +43,11 @@ SUBSYSTEM_DEF(mobs) else if(M.low_priority && !(M.loc && get_z(M) && process_z[get_z(M)])) slept_mobs++ continue + //CHOMPEdit Start - Enable pausing mobs (For transformation, holding until reformation, etc.) + else if(!M.enabled) + slept_mobs++ + continue + //CHOMPEdit End M.Life(times_fired) @@ -90,4 +95,4 @@ SUBSYSTEM_DEF(mobs) /datum/controller/subsystem/mobs/critfail() ..() - log_recent() \ No newline at end of file + log_recent() diff --git a/code/controllers/subsystems/vote.dm b/code/controllers/subsystems/vote.dm index 44076a407b..24f7e33d37 100644 --- a/code/controllers/subsystems/vote.dm +++ b/code/controllers/subsystems/vote.dm @@ -315,7 +315,7 @@ SUBSYSTEM_DEF(vote) . += "
" if(admin) - . += "(Cancel Vote) " + . += "(Cancel Vote) " else . += "

Start a vote:



" . += "Close" diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index 2b0c74e269..75aee4b7d9 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -140,7 +140,12 @@ return // Cache this since S may go away after use() - var/list/sheet_matter = S.matter + var/list/sheet_matter + if(istype(S, /obj/item/stack/material)) + var/obj/item/stack/material/MS = S + sheet_matter = list(MS.material.name = 2000) + else + sheet_matter = S.matter // Calculate total amount of material for one sheet var/matter_per_sheet = 0 diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index fef1bcd25d..aa92979d5a 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -45,7 +45,7 @@ var/prompt = tgui_alert(usr, "Do you want to grant [C] access to view this VV window? (they will not be able to edit or change anysrc nor open nested vv windows unless they themselves are an admin)", "Confirm", list("Yes", "No")) if (prompt != "Yes" || !usr.client) return - message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") + message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [src]") to_chat(C, "[usr.client.holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window") C.debug_variables(src) diff --git a/code/datums/mind.dm b/code/datums/mind.dm index eaeb54b152..ab2532614b 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -119,7 +119,7 @@ var/out = "[name][(current&&(current.real_name!=name))?" (as [current.real_name])":""]
" out += "Mind currently owned by key: [key] [active?"(synced)":"(not synced)"]
" - out += "Assigned role: [assigned_role]. Edit
" + out += "Assigned role: [assigned_role]. Edit
" out += "
" out += "Factions and special roles:
" for(var/antag_type in all_antag_types) @@ -136,15 +136,15 @@ out += "(complete)" else out += "(incomplete)" - out += " \[toggle\]" - out += " \[remove\]
" + out += " \[toggle\]" + out += " \[remove\]
" num++ - out += "
\[announce objectives\]" + out += "
\[announce objectives\]" else out += "None." - out += "
\[add\]

" - out += "Ambitions: [ambitions ? ambitions : "None"] \[edit\]
" + out += "
\[add\]

" + out += "Ambitions: [ambitions ? ambitions : "None"] \[edit\]
" usr << browse(out, "window=edit_memory[src]") /datum/mind/Topic(href, href_list) diff --git a/code/game/antagonist/alien/borer.dm b/code/game/antagonist/alien/borer.dm index 2673774d1c..f3465f5c66 100644 --- a/code/game/antagonist/alien/borer.dm +++ b/code/game/antagonist/alien/borer.dm @@ -30,7 +30,7 @@ var/datum/antagonist/borer/borers borers = src /datum/antagonist/xenos/borer/get_extra_panel_options(var/datum/mind/player) - return "\[put in host\]" + return "\[put in host\]" /datum/antagonist/borer/create_objectives(var/datum/mind/player) if(!..()) @@ -71,4 +71,4 @@ var/datum/antagonist/borer/borers if(!temp_vent.welded && temp_vent.network && (temp_vent.loc.z in using_map.station_levels)) if(temp_vent.network.normal_members.len > 50) vents += temp_vent - return vents \ No newline at end of file + return vents diff --git a/code/game/antagonist/antagonist_panel.dm b/code/game/antagonist/antagonist_panel.dm index c8c754113f..0a165ce8ee 100644 --- a/code/game/antagonist/antagonist_panel.dm +++ b/code/game/antagonist/antagonist_panel.dm @@ -3,13 +3,13 @@ var/dat = "" return dat @@ -27,11 +27,11 @@ var/mob/M = player.current dat += "" if(M) - dat += "" - dat += "" + dat += "" else dat += "" dat += "" @@ -45,7 +45,7 @@ while(!istype(disk_loc, /turf)) if(istype(disk_loc, /mob)) var/mob/M = disk_loc - dat += "carried by [M.real_name] " + dat += "carried by [M.real_name] " if(istype(disk_loc, /obj)) var/obj/O = disk_loc dat += "in \a [O.name] " diff --git a/code/game/antagonist/station/traitor.dm b/code/game/antagonist/station/traitor.dm index f01784c048..41b9793330 100644 --- a/code/game/antagonist/station/traitor.dm +++ b/code/game/antagonist/station/traitor.dm @@ -19,7 +19,7 @@ var/datum/antagonist/traitor/traitors traitors = src /datum/antagonist/traitor/get_extra_panel_options(var/datum/mind/player) - return "\[set crystals\]\[spawn uplink\]" + return "\[set crystals\]\[spawn uplink\]" /datum/antagonist/traitor/Topic(href, href_list) if (..()) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index d1640d64cd..d3207d0293 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -636,13 +636,13 @@ . = ..() var/custom_edit_name if(!isliving(src)) - custom_edit_name = "[src]" + custom_edit_name = "[src]" . += {" [custom_edit_name]
- << - [dir2text(dir)] - >> + << + [dir2text(dir)] + >> "} var/turf/T = get_turf(src) @@ -721,3 +721,11 @@ /atom/proc/interact(mob/user) return + +// Purpose: Determines if the object can pass this atom. +// Called by: Movement. +// Inputs: The moving atom, target turf. +// Outputs: Boolean if can pass. +// Airflow and ZAS zones now uses CanZASPass() instead of this proc. +/atom/proc/CanPass(atom/movable/mover, turf/target) + return !density diff --git a/code/game/machinery/atm_ret_field.dm b/code/game/machinery/atm_ret_field.dm index bcf78539a7..603e6615be 100644 --- a/code/game/machinery/atm_ret_field.dm +++ b/code/game/machinery/atm_ret_field.dm @@ -14,11 +14,11 @@ var/isactive = FALSE var/wasactive = FALSE //controls automatic reboot after power-loss var/alwaysactive = FALSE //for a special subtype - + //how long it takes us to reboot if we're shut down by an EMP var/reboot_delay_min = 50 var/reboot_delay_max = 75 - + var/hatch_open = FALSE var/wires_intact = TRUE var/list/areas_added @@ -98,26 +98,30 @@ /obj/machinery/atmospheric_field_generator/power_change() var/oldstat ..() - if(!(stat & NOPOWER)) - ispowered = 1 + if(!(stat & (BROKEN|NOPOWER|EMPED))) + ispowered = TRUE update_icon() if(alwaysactive || wasactive) //reboot our field if we were on or are supposed to be always-on generate_field() - if(stat != oldstat && isactive && (stat & NOPOWER)) - ispowered = 0 + if(stat != oldstat && isactive && (stat & (BROKEN|NOPOWER|EMPED))) + ispowered = FALSE disable_field() update_icon() /obj/machinery/atmospheric_field_generator/emp_act() - . = ..() - disable_field() //shutting dowwwwwwn - if(alwaysactive || wasactive) //reboot after a short delay if we were online before + if(!(stat & EMPED)) + stat |= EMPED + disable_field() //shutting dowwwwwwn spawn(rand(reboot_delay_min,reboot_delay_max)) - generate_field() + stat &= ~EMPED + if(alwaysactive || wasactive) //reboot after a short delay if we were online before + generate_field() + ..() /obj/machinery/atmospheric_field_generator/ex_act(severity) switch(severity) if(1) + stat |= BROKEN //ensures that always on generators are set as broken prior to being deleted, thus, off. disable_field() qdel(src) return @@ -134,23 +138,26 @@ if(!ispowered || hatch_open || !wires_intact || isactive) //if it's not powered, the hatch is open, the wires are busted, or it's already on, don't do anything return else - isactive = 1 + isactive = TRUE icon_state = "arfg_on" new field_type (src.loc) src.visible_message("The ARF-G crackles to life!","You hear an ARF-G coming online!") update_use_power(USE_POWER_ACTIVE) return - + /obj/machinery/atmospheric_field_generator/proc/disable_field() if(isactive) - icon_state = "arfg_off" - for(var/obj/structure/atmospheric_retention_field/F in loc) - qdel(F) - src.visible_message("The ARF-G shuts down with a low hum.","You hear an ARF-G powering down.") - update_use_power(USE_POWER_IDLE) - isactive = 0 + if(alwaysactive == TRUE && !(stat & (BROKEN|NOPOWER|EMPED))) //If we're not damaged, don't turn off if we're always on. + return + else + icon_state = "arfg_off" + for(var/obj/structure/atmospheric_retention_field/F in loc) + qdel(F) + src.visible_message("The ARF-G shuts down with a low hum.","You hear an ARF-G powering down.") + update_use_power(USE_POWER_IDLE) + isactive = FALSE return - + /obj/machinery/atmospheric_field_generator/Initialize() . = ..() //Delete ourselves if we find extra mapped in arfgs @@ -158,7 +165,7 @@ if(F != src) log_debug("Duplicate ARFGS at [x],[y],[z]") return INITIALIZE_HINT_QDEL - + var/area/A = get_area(src) ASSERT(istype(A)) @@ -202,11 +209,11 @@ for(var/i = 1 to 4) var/image/I = image(icon, "[basestate][connections[i]]", dir = 1<<(i-1)) add_overlay(I) - + return /obj/structure/atmospheric_retention_field/Initialize() - . = ..() + . = ..() update_nearby_tiles() //Force ZAS update update_connections(1) update_icon() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 3ae04b718b..91abfffe51 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -734,7 +734,7 @@ // Book keeping! var/turf/location = get_turf(src) - log_admin("[key_name_admin(M)] has entered a stasis pod. (JMP)") + log_admin("[key_name_admin(M)] has entered a stasis pod. (JMP)") message_admins("[key_name_admin(M)] has entered a stasis pod.") //Despawning occurs when process() is called with an occupant without a client. diff --git a/code/game/magic/archived_book.dm b/code/game/magic/archived_book.dm index 1aab354815..b0595ec589 100644 --- a/code/game/magic/archived_book.dm +++ b/code/game/magic/archived_book.dm @@ -39,17 +39,23 @@ var/global/datum/book_manager/book_mgr = new() if(!src.holder) to_chat(src, "Only administrators may use this command.") return +//VOREStation Edit Start + var/obj/machinery/librarycomp/our_comp + for(var/obj/machinery/librarycomp/l in world) + if(istype(l, /obj/machinery/librarycomp)) + our_comp = l + break - var/isbn = tgui_input_number(usr, "ISBN number?", "Delete Book") - if(!isbn) + if(!our_comp) + to_chat(usr, "Unable to locate a library computer to use for book deleting.") return - if(BOOKS_USE_SQL && config.sql_enabled) - var/DBConnection/dbcon = new() - dbcon.Connect("dbi:mysql:[sqldb]:[sqladdress]:[sqlport]","[sqllogin]","[sqlpass]") - if(!dbcon.IsConnected()) - tgui_alert_async(usr, "Connection to Archive has been severed. Aborting.") - return + var/dat = "Book Inventory Management\n" // + dat += "

ADMINISTRATIVE MANAGEMENT

" + establish_old_db_connection() + + if(!SSdbcore.IsConnected()) //CHOMP Edit + dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." else var/DBQuery/query = dbcon.NewQuery("DELETE FROM library WHERE id=[isbn]") if(!query.Execute()) @@ -58,6 +64,24 @@ var/global/datum/book_manager/book_mgr = new() else book_mgr.remove(isbn) log_admin("[usr.key] has deleted the book [isbn]") + query.Execute() + + var/show_admin_options = check_rights(R_ADMIN, show_msg = FALSE) + + while(query.NextRow()) + var/id = query.item[1] + var/author = query.item[2] + var/title = query.item[3] + var/category = query.item[4] + dat += "" + dat += "
[role_text]:" var/extra = get_extra_panel_options(player) if(is_antagonist(player)) - dat += "\[-\]" - dat += "\[equip\]" + dat += "\[-\]" + dat += "\[equip\]" if(starting_locations && starting_locations.len) - dat += "\[move to spawn\]" + dat += "\[move to spawn\]" if(extra) dat += "[extra]" else - dat += "\[+\]" + dat += "\[+\]" dat += "
[M.real_name]/([player.key])" + dat += "[M.real_name]/([player.key])" if(!M.client) dat += " (logged out)" if(M.stat == DEAD) dat += " (DEAD)" dat += "\[PP]\[PM\]\[TP\]\[PP]\[PM\]\[TP\][player.key] Mob not found!
[author][title][category]" + if(show_admin_options) // This isn't the only check, since you can just href-spoof press this button. Just to tidy things up. + dat += "\[Del\]" + dat += "
" + + usr << browse(dat, "window=library") + onclose(usr, "library") +//VOREStation Edit End // delete a book /datum/book_manager/proc/remove(var/id) diff --git a/code/game/objects/effects/chem/chemsmoke.dm b/code/game/objects/effects/chem/chemsmoke.dm index 5538755d24..4ba0770ce3 100644 --- a/code/game/objects/effects/chem/chemsmoke.dm +++ b/code/game/objects/effects/chem/chemsmoke.dm @@ -83,14 +83,14 @@ var/area/A = get_area(location) var/where = "[A.name] | [location.x], [location.y]" - var/whereLink = "[where]" + var/whereLink = "[where]" if(show_log) if(carry.my_atom.fingerprintslast) var/mob/M = get_mob_by_key(carry.my_atom.fingerprintslast) var/more = "" if(M) - more = "(?)" + more = "(?)" message_admins("A chemical smoke reaction has taken place in ([whereLink])[contained]. Last associated key is [carry.my_atom.fingerprintslast][more].", 0, 1) log_game("A chemical smoke reaction has taken place in ([where])[contained]. Last associated key is [carry.my_atom.fingerprintslast].") else diff --git a/code/game/objects/effects/decals/Cleanable/fuel.dm b/code/game/objects/effects/decals/Cleanable/fuel.dm index ff9a68fd34..e9a7548e19 100644 --- a/code/game/objects/effects/decals/Cleanable/fuel.dm +++ b/code/game/objects/effects/decals/Cleanable/fuel.dm @@ -11,7 +11,7 @@ /obj/effect/decal/cleanable/liquid_fuel/New(turf/newLoc,amt=1,nologs=1) if(!nologs) - message_admins("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z]) (JMP)") + message_admins("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z]) (JMP)") log_game("Liquid fuel has spilled in [newLoc.loc.name] ([newLoc.x],[newLoc.y],[newLoc.z])") src.amount = amt @@ -38,7 +38,7 @@ for(var/d in cardinal) var/turf/simulated/target = get_step(src,d) var/turf/simulated/origin = get_turf(src) - if(origin.CanPass(src, target, 0, 0) && target.CanPass(src, origin, 0, 0)) + if(origin.CanPass(src, target) && target.CanPass(src, origin)) var/obj/effect/decal/cleanable/liquid_fuel/other_fuel = locate() in target if(other_fuel) other_fuel.amount += amount*0.25 @@ -73,7 +73,7 @@ var/turf/simulated/O = get_step(S,d) if(locate(/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel) in O) continue - if(O.CanPass(null, S, 0, 0) && S.CanPass(null, O, 0, 0)) + if(O.CanPass(src, S) && S.CanPass(src, O)) var/new_pool_amount = amount * 0.25 if(new_pool_amount > 0.1) var/obj/effect/decal/cleanable/liquid_fuel/flamethrower_fuel/F = new(O, new_pool_amount, d) diff --git a/code/game/objects/explosion.dm b/code/game/objects/explosion.dm index 7aaf73bedb..fd439dd222 100644 --- a/code/game/objects/explosion.dm +++ b/code/game/objects/explosion.dm @@ -54,7 +54,7 @@ M << 'sound/effects/explosionfar.ogg' if(adminlog) - message_admins("Explosion with [shaped ? "shaped" : "non-shaped"] size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (JMP)") + message_admins("Explosion with [shaped ? "shaped" : "non-shaped"] size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z]) (JMP)") log_game("Explosion with [shaped ? "shaped" : "non-shaped"] size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ") var/approximate_intensity = (devastation_range * 3) + (heavy_impact_range * 2) + light_impact_range diff --git a/code/game/objects/items/blueprints_vr.dm b/code/game/objects/items/blueprints_vr.dm index accae37f6b..92231894d9 100644 --- a/code/game/objects/items/blueprints_vr.dm +++ b/code/game/objects/items/blueprints_vr.dm @@ -534,7 +534,7 @@ oldA.power_check() //Simply makes the area turn the power off if you nicked an APC from it. to_chat(creator, span_notice("You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.")) if(annoy_admins) - message_admins("[key_name(creator, creator.client)] just made a new area called [newA.name] ](?) at ([creator.x],[creator.y],[creator.z] - JMP)",0,1) + message_admins("[key_name(creator, creator.client)] just made a new area called [newA.name] ](?) at ([creator.x],[creator.y],[creator.z] - JMP)",0,1) log_game("[key_name(creator, creator.client)] just made a new area called [newA.name]") if(AO && istype(AO,/obj/item/areaeditor)) if(AO.uses_charges) @@ -654,7 +654,7 @@ set_area_machinery(newA, newA.name, oldA.name) oldA.power_check() //Simply makes the area turn the power off if you nicked an APC from it. to_chat(creator, span_notice("You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.")) - message_admins("[key_name(creator, creator.client)] just made a new area called [newA.name] ](?) at ([creator.x],[creator.y],[creator.z] - JMP)",0,1) + message_admins("[key_name(creator, creator.client)] just made a new area called [newA.name] ](?) at ([creator.x],[creator.y],[creator.z] - JMP)",0,1) log_game("[key_name(creator, creator.client)] just made a new area called [newA.name]") charges -= 5 @@ -931,7 +931,7 @@ set_area_machinery(newA, newA.name, oldA.name) oldA.power_check() //Simply makes the area turn the power off if you nicked an APC from it. to_chat(creator, span_notice("You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.")) - message_admins("[key_name(creator, creator.client)] just made a new area called [newA.name] ](?) at ([creator.x],[creator.y],[creator.z] - JMP)",0,1) + message_admins("[key_name(creator, creator.client)] just made a new area called [newA.name] ](?) at ([creator.x],[creator.y],[creator.z] - JMP)",0,1) log_game("[key_name(creator, creator.client)] just made a new area called [newA.name]") return diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm index 75fddde40e..4fa7e7d983 100644 --- a/code/game/objects/items/devices/defib.dm +++ b/code/game/objects/items/devices/defib.dm @@ -291,7 +291,7 @@ /obj/item/weapon/shockpaddles/proc/can_revive(mob/living/carbon/human/H) //This is checked right before attempting to revive var/obj/item/organ/internal/brain/brain = H.internal_organs_by_name[O_BRAIN] - if(H.should_have_organ(O_BRAIN) && (!brain || brain.defib_timer <= 0 ) ) + if(H.should_have_organ(O_BRAIN) && (!brain || (istype(brain) && brain.defib_timer <= 0 ) ) ) //CHOMPEdit - Fix a runtime when brain is an MMI return "buzzes, \"Resuscitation failed - Excessive neural degeneration. Further attempts futile.\"" H.updatehealth() diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index dc27b39fce..ace1cbc2cd 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -27,7 +27,7 @@ user.drop_item() item.forceMove(src) to_chat(user, "You attach the tank to the transfer valve.") - message_admins("[key_name_admin(user)] attached both tanks to a transfer valve. (JMP)") + message_admins("[key_name_admin(user)] attached both tanks to a transfer valve. (JMP)") log_game("[key_name_admin(user)] attached both tanks to a transfer valve.") update_icon() @@ -49,7 +49,7 @@ A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). bombers += "[key_name(user)] attached a [item] to a transfer valve." - message_admins("[key_name_admin(user)] attached a [item] to a transfer valve. (JMP)") + message_admins("[key_name_admin(user)] attached a [item] to a transfer valve. (JMP)") log_game("[key_name_admin(user)] attached a [item] to a transfer valve.") attacher = user SStgui.update_uis(src) // update all UIs attached to src @@ -190,16 +190,16 @@ else attacher_name = "[attacher.name]([attacher.ckey])" - var/log_str = "Bomb valve opened in [A.name] " + var/log_str = "Bomb valve opened in [A.name] " log_str += "with [attached_device ? attached_device : "no device"] attacher: [attacher_name]" if(attacher) - log_str += "(?)" + log_str += "(?)" var/mob/mob = get_mob_by_key(src.fingerprintslast) var/last_touch_info = "" if(mob) - last_touch_info = "(?)" + last_touch_info = "(?)" log_str += " Last touched by: [src.fingerprintslast][last_touch_info]" bombers += log_str diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm index 5e1d700602..0e9250611e 100644 --- a/code/game/objects/items/weapons/explosives.dm +++ b/code/game/objects/items/weapons/explosives.dm @@ -62,7 +62,7 @@ add_attack_logs(user, target, "planted [name] on with [timer] second fuse") user.visible_message("[user.name] finished planting an explosive on [target.name]!") else - message_admins("[key_name(user, user.client)](?) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [timer] second fuse",0,1) + message_admins("[key_name(user, user.client)](?) planted [src.name] on [target.name] at ([target.x],[target.y],[target.z] - JMP) with [timer] second fuse",0,1) log_game("[key_name(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z]) with [timer] second fuse") target.add_overlay(image_overlay, TRUE) @@ -116,4 +116,4 @@ blast_flash = blast_light + round(new_blast_power * 0.75) else to_chat(user, "The [I] is not any better than the component already installed into this charge!") - return . \ No newline at end of file + return . diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm index 52ebd29e7c..a710df388b 100644 --- a/code/game/objects/items/weapons/implants/implant.dm +++ b/code/game/objects/items/weapons/implants/implant.dm @@ -252,7 +252,7 @@ Implant Specifics:
"} if(istype(imp_in, /mob/)) var/mob/T = imp_in - message_admins("Explosive implant triggered in [T] ([T.key]). (JMP) ") + message_admins("Explosive implant triggered in [T] ([T.key]). (JMP) ") log_game("Explosive implant triggered in [T] ([T.key]).") if(ishuman(imp_in)) diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm index 64d2c0d9cb..59cc5f3edd 100644 --- a/code/game/objects/items/weapons/material/shards.dm +++ b/code/game/objects/items/weapons/material/shards.dm @@ -55,7 +55,9 @@ return return ..() -/obj/item/weapon/material/shard/afterattack(var/atom/target, mob/living/carbon/human/user as mob) +/obj/item/weapon/material/shard/afterattack(var/atom/target, mob/living/carbon/human/user as mob, proximity) + if(!proximity) + return var/active_hand //hand the shard is in var/will_break = FALSE var/protected_hands = FALSE //this is a fucking mess diff --git a/code/game/objects/structures/trash_pile_vr.dm b/code/game/objects/structures/trash_pile_vr.dm index dbcbe447b3..fe4cee1da3 100644 --- a/code/game/objects/structures/trash_pile_vr.dm +++ b/code/game/objects/structures/trash_pile_vr.dm @@ -22,8 +22,7 @@ /obj/item/weapon/bluespace_harpoon, /obj/item/clothing/glasses/thermal/syndi, /obj/item/weapon/gun/energy/netgun, - /obj/item/weapon/gun/projectile/pirate, - /obj/item/clothing/accessory/permit/gun, + /obj/item/weapon/gun/projectile/pirate, //CHOMP Add /obj/item/weapon/gun/projectile/dartgun, /obj/item/clothing/gloves/black/bloodletter, /obj/item/weapon/gun/energy/mouseray/metamorphosis @@ -270,7 +269,8 @@ prob(1);/obj/item/device/flashlight/glowstick/yellow, prob(1);/obj/item/device/flashlight/pen, prob(1);/obj/item/device/paicard, - prob(1);/obj/item/weapon/card/emag, + prob(1);/obj/item/weapon/card/emag, //CHOMP Add + prob(1);/obj/item/clothing/accessory/permit/gun, prob(1);/obj/item/clothing/mask/gas/voice, prob(1);/obj/item/weapon/spacecash/c100, prob(1);/obj/item/weapon/spacecash/c50, @@ -302,6 +302,7 @@ prob(2);/obj/item/clothing/under/hyperfiber/bluespace, prob(2);/obj/item/selectable_item/chemistrykit/size, prob(2);/obj/item/selectable_item/chemistrykit/gender, + prob(2);/obj/item/clothing/gloves/bluespace/emagged, prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc, prob(1);/obj/item/device/nif/bad, prob(1);/obj/item/device/radio_jammer, @@ -317,6 +318,8 @@ prob(1);/obj/item/device/survivalcapsule/popcabin, prob(1);/obj/item/weapon/reagent_containers/syringe/steroid, prob(1);/obj/item/capture_crystal, + prob(1);/obj/item/device/perfect_tele/one_beacon, + prob(1);/obj/item/clothing/gloves/bluespace, prob(1);/obj/item/weapon/gun/energy/mouseray) var/obj/item/I = new path() diff --git a/code/game/sound.dm b/code/game/sound.dm index 29e985a305..18b969a2ac 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -51,7 +51,7 @@ vol *= client.get_preference_volume_channel(VOLUME_CHANNEL_MASTER) S.volume = vol - if(vary) + if(vary || frequency) //CHOMPEdit if(frequency) S.frequency = frequency else diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/DB ban/functions.dm index 9c25b4f1e5..19e1bc5093 100644 --- a/code/modules/admin/DB ban/functions.dm +++ b/code/modules/admin/DB ban/functions.dm @@ -444,7 +444,7 @@ if("PERMABAN") typedesc = "PERMABAN" if("TEMPBAN") - typedesc = "TEMPBAN
([duration] minutes) [(unbanned || auto) ? "" : "(Edit)"]
Expires [expiration]
" + typedesc = "TEMPBAN
([duration] minutes) [(unbanned || auto) ? "" : "(Edit)"]
Expires [expiration]
" if("JOB_PERMABAN") typedesc = "JOBBAN
([job])" if("JOB_TEMPBAN") @@ -455,14 +455,14 @@ output += "[ckey]" output += "[bantime]" output += "[ackey]" - output += "[(unbanned || auto) ? "" : "Unban"]" + output += "[(unbanned || auto) ? "" : "Unban"]" output += "" output += "" output += "IP: [ip]" output += "CIP: [cid]" output += "" output += "" - output += "Reason: [(unbanned || auto) ? "" : "(Edit)"] \"[reason]\"" + output += "Reason: [(unbanned || auto) ? "" : "(Edit)"] \"[reason]\"" output += "" if(edits) output += "" diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index 15d29eb1f0..38639e917f 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -186,7 +186,7 @@ var/savefile/Banlist if(!expiry) expiry = "Removal Pending" else expiry = "Permaban" - dat += text("(U)(E) Key: [key]ComputerID: [id]IP: [ip] [expiry](By: [by])(Reason: [reason])") + dat += text("(U)(E) Key: [key]ComputerID: [id]IP: [ip] [expiry](By: [by])(Reason: [reason])") dat += "" dat = "
Bans: (U) = Unban , (E) = Edit Ban - ([count] Bans)
[dat]" @@ -227,4 +227,3 @@ var/savefile/Banlist Banlist.cd = "/base" for (var/A in Banlist.dir) RemoveBan(A) - diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index ebbece968d..d78897e85c 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -43,12 +43,12 @@ var/global/floorIsLava = 0 body += "Options panel for [M]" if(M.client) body += " played by [M.client] " - body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" + body += "\[[M.client.holder ? M.client.holder.rank : "Player"]\]" if(istype(M, /mob/new_player)) body += " Hasn't Entered Game " else - body += " \[Heal\] " + body += " \[Heal\] " if(M.client) body += "
First connection: [M.client.player_age] days ago" @@ -57,41 +57,41 @@ var/global/floorIsLava = 0 body += {"

\[ - VV - - TP - - PM - - SM - + VV - + TP - + PM - + SM - [admin_jump_link(M, src)]\]
Mob type: [M.type]
Inactivity time: [M.client ? "[M.client.inactivity/600] minutes" : "Logged out"]

- Kick | - Warn | - Ban | - Jobban | - Notes + Kick | + Warn | + Ban | + Jobban | + Notes "} if(M.client) - body += "| Prison | " - body += "\ Send back to Lobby | " + body += "| Prison | " + body += "\ Send back to Lobby | " var/muted = M.client.prefs.muted body += {"
Mute: - \[IC | - OOC | - PRAY | - ADMINHELP | - DEADCHAT\] - (toggle all) + \[IC | + OOC | + PRAY | + ADMINHELP | + DEADCHAT\] + (toggle all) "} body += {"

- Jump to | - Get | - Send To + Jump to | + Get | + Send To

- [check_rights(R_ADMIN|R_MOD|R_EVENT,0) ? "Traitor panel | " : "" ] - Narrate to | - Subtle message + [check_rights(R_ADMIN|R_MOD|R_EVENT,0) ? "Traitor panel | " : "" ] + Narrate to | + Subtle message "} if (M.client) @@ -104,30 +104,30 @@ var/global/floorIsLava = 0 if(issmall(M)) body += "Monkeyized | " else - body += "Monkeyize | " + body += "Monkeyize | " //Corgi if(iscorgi(M)) body += "Corgized | " else - body += "Corgize | " + body += "Corgize | " //AI / Cyborg if(isAI(M)) body += "Is an AI " else if(ishuman(M)) - body += {"Make AI | - Make Robot | - Make Alien + body += {"Make AI | + Make Robot | + Make Alien "} //Simple Animals if(isanimal(M)) - body += "Re-Animalize | " + body += "Re-Animalize | " else - body += "Animalize | " + body += "Animalize | " - body += "Respawn | " + body += "Respawn | " // DNA2 - Admin Hax if(M.dna && iscarbon(M)) @@ -142,7 +142,7 @@ var/global/floorIsLava = 0 if(bname) var/bstate=M.dna.GetSEState(block) var/bcolor="[(bstate)?"#006600":"#ff0000"]" - body += "[bname][block]" + body += "[bname][block]" else body += "[block]" body+="" @@ -150,45 +150,45 @@ var/global/floorIsLava = 0 body += {"

Rudimentary transformation:
These transformations only create a new mob type and copy stuff over. They do not take into account MMIs and similar mob-specific things. The buttons in 'Transformations' are preferred, when possible.

- Observer | - \[ Xenos: Larva - Drone - Hunter - Sentinel - Queen \] | - \[ Crew: Human - Unathi - Tajaran - Skrell \] | \[ - Nymph - Diona \] | - \[ slime: Baby, - Adult \] - Monkey | - Cyborg | - Cat | - Runtime | - Corgi | - Ian | - Crab | - Coffee | - \[ Construct: Armoured , - Builder , - Wraith \] - Shade + Observer | + \[ Xenos: Larva + Drone + Hunter + Sentinel + Queen \] | + \[ Crew: Human + Unathi + Tajaran + Skrell \] | \[ + Nymph + Diona \] | + \[ slime: Baby, + Adult \] + Monkey | + Cyborg | + Cat | + Runtime | + Corgi | + Ian | + Crab | + Coffee | + \[ Construct: Armoured , + Builder , + Wraith \] + Shade
"} body += {"

Other actions:
- Forcesay + Forcesay "} if (M.client) body += {" | - Thunderdome 1 | - Thunderdome 2 | - Thunderdome Admin | - Thunderdome Observer | + Thunderdome 1 | + Thunderdome 2 | + Thunderdome Admin | + Thunderdome Observer | "} // language toggles body += "

Languages:
" @@ -199,9 +199,9 @@ var/global/floorIsLava = 0 if(!f) body += " | " else f = 0 if(L in M.languages) - body += "[k]" + body += "[k]" else - body += "[k]" + body += "[k]" body += {"
@@ -290,12 +290,12 @@ var/global/floorIsLava = 0
Note that this panel allows full freedom over the news network, there are no constrictions except the few basic ones. Don't break things! "} if(news_network.wanted_issue) - dat+= "
Read Wanted Issue" + dat+= "
Read Wanted Issue" - dat+= {"

Create Feed Channel -
View Feed Channels -
Submit new Feed story -

Exit + dat+= {"

Create Feed Channel +
View Feed Channels +
Submit new Feed story +

Exit "} var/wanted_already = 0 @@ -303,10 +303,10 @@ var/global/floorIsLava = 0 wanted_already = 1 dat+={"
Feed Security functions:
-
[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue -
Censor Feed Stories -
Mark Feed Channel with [using_map.company_name] D-Notice (disables and locks the channel. -

The newscaster recognises you as:
[src.admincaster_signature]
+
[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue +
Censor Feed Stories +
Mark Feed Channel with [using_map.company_name] D-Notice (disables and locks the channel. +

The newscaster recognises you as:
[src.admincaster_signature]
"} if(1) dat+= "Station Feed Channels
" @@ -315,38 +315,38 @@ var/global/floorIsLava = 0 else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) if(CHANNEL.is_admin_channel) - dat+="[CHANNEL.channel_name]
" + dat+="[CHANNEL.channel_name]
" else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" - dat+={"

Refresh -
Back + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" + dat+={"

Refresh +
Back "} if(2) dat+={" Creating new Feed Channel... -
Channel Name: [src.admincaster_feed_channel.channel_name]
- Channel Author:[src.admincaster_signature]
- Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

-
Submit

Cancel
+
Channel Name: [src.admincaster_feed_channel.channel_name]
+ Channel Author:[src.admincaster_signature]
+ Will Accept Public Feeds: [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]

+
Submit

Cancel
"} if(3) dat+={" Creating new Feed Message... -
Receiving Channel: [src.admincaster_feed_channel.channel_name]
+
Receiving Channel: [src.admincaster_feed_channel.channel_name]
Message Author:[src.admincaster_signature]
- Message Body: [src.admincaster_feed_message.body]
-
Submit

Cancel
+ Message Body: [src.admincaster_feed_message.body]
+
Submit

Cancel
"} if(4) dat+={" Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].

-
Return
+
Return
"} if(5) dat+={" Feed Channel [src.admincaster_feed_channel.channel_name] created successfully.

-
Return
+
Return
"} if(6) dat+="ERROR: Could not submit Feed story to Network.

" @@ -354,7 +354,7 @@ var/global/floorIsLava = 0 dat+="•Invalid receiving channel name.
" if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]" || admincaster_feed_message.title == "") dat+="•Invalid message body.
" - dat+="
Return
" + dat+="
Return
" if(7) dat+="ERROR: Could not submit Feed Channel to Network.

" if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]") @@ -366,7 +366,7 @@ var/global/floorIsLava = 0 break if(check) dat+="•Channel name already in use.
" - dat+="
Return
" + dat+="
Return
" if(9) dat+="[src.admincaster_feed_channel.channel_name]: \[created by: [src.admincaster_feed_channel.author]\]
" if(src.admincaster_feed_channel.censored) @@ -390,8 +390,8 @@ var/global/floorIsLava = 0 dat+="
" dat+="\[Story by [MESSAGE.author] - [MESSAGE.time_stamp]\]
" dat+={" -

Refresh -
Back +

Refresh +
Back "} if(10) dat+={" @@ -404,8 +404,8 @@ var/global/floorIsLava = 0 dat+="No feed channels found active...
" else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" - dat+="
Cancel" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" + dat+="
Cancel" if(11) dat+={" [using_map.company_name] D-Notice Handler
@@ -417,13 +417,13 @@ var/global/floorIsLava = 0 dat+="No feed channels found active...
" else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" - dat+="
Back" + dat+="
Back" if(12) dat+={" [src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.author] \]
- [(src.admincaster_feed_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
+ [(src.admincaster_feed_channel.author=="\[REDACTED\]") ? ("Undo Author censorship") : ("Censor channel Author")]
"} if( isemptylist(src.admincaster_feed_channel.messages) ) dat+="No feed messages found in channel...
" @@ -431,13 +431,13 @@ var/global/floorIsLava = 0 for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+={" -[MESSAGE.body]
\[Story by [MESSAGE.author]\]
- [(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
+ [(MESSAGE.body == "\[REDACTED\]") ? ("Undo story censorship") : ("Censor story")] - [(MESSAGE.author == "\[REDACTED\]") ? ("Undo Author Censorship") : ("Censor message Author")]
"} - dat+="
Back" + dat+="
Back" if(13) dat+={" [src.admincaster_feed_channel.channel_name]: \[ created by: [src.admincaster_feed_channel.author] \]
- Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
+ Channel messages listed below. If you deem them dangerous to the station, you can Bestow a D-Notice upon the channel.
"} if(src.admincaster_feed_channel.censored) dat+={" @@ -451,7 +451,7 @@ var/global/floorIsLava = 0 for(var/datum/feed_message/MESSAGE in src.admincaster_feed_channel.messages) dat+="-[MESSAGE.body]
\[Story by [MESSAGE.author]\]
" - dat+="
Back" + dat+="
Back" if(14) dat+="Wanted Issue Handler:" var/wanted_already = 0 @@ -463,21 +463,21 @@ var/global/floorIsLava = 0 dat+="
A wanted issue is already in Feed Circulation. You can edit or cancel it below.
" dat+={"
- Criminal Name: [src.admincaster_feed_message.author]
- Description: [src.admincaster_feed_message.body]
+ Criminal Name: [src.admincaster_feed_message.author]
+ Description: [src.admincaster_feed_message.body]
"} if(wanted_already) dat+="Wanted Issue created by: [news_network.wanted_issue.backup_author]
" else dat+="Wanted Issue will be created under prosecutor: [src.admincaster_signature]
" - dat+="
[(wanted_already) ? ("Edit Issue") : ("Submit")]" + dat+="
[(wanted_already) ? ("Edit Issue") : ("Submit")]" if(wanted_already) - dat+="
Take down Issue" - dat+="
Cancel" + dat+="
Take down Issue" + dat+="
Cancel" if(15) dat+={" Wanted issue for [src.admincaster_feed_message.author] is now in Network Circulation.

-
Return
+
Return
"} if(16) dat+="ERROR: Wanted Issue rejected by Network.

" @@ -485,11 +485,11 @@ var/global/floorIsLava = 0 dat+="•Invalid name for person wanted.
" if(src.admincaster_feed_message.body == "" || src.admincaster_feed_message.body == "\[REDACTED\]") dat+="•Invalid description.
" - dat+="
Return
" + dat+="
Return
" if(17) dat+={" Wanted Issue successfully deleted from Circulation
-
Return
+
Return
"} if(18) dat+={" @@ -503,11 +503,11 @@ var/global/floorIsLava = 0 dat+="
" else dat+="None" - dat+="
Back
" + dat+="
Back
" if(19) dat+={" Wanted issue for [src.admincaster_feed_message.author] successfully edited.

-
Return
+
Return
"} else dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com" @@ -527,7 +527,7 @@ var/global/floorIsLava = 0 var/r = t if( findtext(r,"##") ) r = copytext( r, 1, findtext(r,"##") )//removes the description - dat += text("") + dat += text("") dat += "
[t] (unban)
[t] (unban)
" usr << browse(dat, "window=ban;size=400x400") @@ -536,20 +536,20 @@ var/global/floorIsLava = 0 var/dat = {"
Game Panel

\n - Change Game Mode
+ Change Game Mode
"} if(master_mode == "secret") - dat += "(Force Secret Mode)
" + dat += "(Force Secret Mode)
" dat += {"
- Create Object
- Quick Create Object
- Create Turf
- Create Mob
-
Edit Airflow Settings
- Edit Phoron Settings
- Choose a default ZAS setting
+ Create Object
+ Quick Create Object
+ Create Turf
+ Create Mob
+
Edit Airflow Settings
+ Edit Phoron Settings
+ Choose a default ZAS setting
"} usr << browse(dat, "window=admin2;size=210x280") @@ -563,7 +563,7 @@ var/global/floorIsLava = 0 for(var/datum/admin_secret_category/category in admin_secrets.categories) if(!category.can_view(usr)) continue - dat += "[category.name] " + dat += "[category.name] " dat += "
" // If a category is selected, print its description and then options @@ -574,7 +574,7 @@ var/global/floorIsLava = 0 for(var/datum/admin_secret_item/item in active_category.items) if(!item.can_view(usr)) continue - dat += "[item.name()]
" + dat += "[item.name()]
" dat += "
" var/datum/browser/popup = new(usr, "secrets", "Secrets", 500, 500) @@ -1164,66 +1164,66 @@ var/datum/announcement/minor/admin_min_announcer = new tgui_alert_async(usr, "Not before roundstart!", "Alert") return - var/out = "Current mode: [ticker.mode.name] ([ticker.mode.config_tag])
" + var/out = "Current mode: [ticker.mode.name] ([ticker.mode.config_tag])
" out += "
" if(ticker.mode.ert_disabled) - out += "Emergency Response Teams: disabled" + out += "Emergency Response Teams: disabled" else - out += "Emergency Response Teams: enabled" + out += "Emergency Response Teams: enabled" out += "
" if(ticker.mode.deny_respawn) - out += "Respawning: disallowed" + out += "Respawning: disallowed" else - out += "Respawning: allowed" + out += "Respawning: allowed" out += "
" - out += "Shuttle delay multiplier: [ticker.mode.shuttle_delay]
" + out += "Shuttle delay multiplier: [ticker.mode.shuttle_delay]
" if(ticker.mode.auto_recall_shuttle) - out += "Shuttle auto-recall: enabled" + out += "Shuttle auto-recall: enabled" else - out += "Shuttle auto-recall: disabled" + out += "Shuttle auto-recall: disabled" out += "

" if(ticker.mode.event_delay_mod_moderate) - out += "Moderate event time modifier: [ticker.mode.event_delay_mod_moderate]
" + out += "Moderate event time modifier: [ticker.mode.event_delay_mod_moderate]
" else - out += "Moderate event time modifier: unset
" + out += "Moderate event time modifier: unset
" if(ticker.mode.event_delay_mod_major) - out += "Major event time modifier: [ticker.mode.event_delay_mod_major]
" + out += "Major event time modifier: [ticker.mode.event_delay_mod_major]
" else - out += "Major event time modifier: unset
" + out += "Major event time modifier: unset
" out += "
" if(ticker.mode.antag_tags && ticker.mode.antag_tags.len) out += "Core antag templates:
" for(var/antag_tag in ticker.mode.antag_tags) - out += "[antag_tag].
" + out += "[antag_tag].
" if(ticker.mode.round_autoantag) - out += "Autotraitor enabled." + out += "Autotraitor enabled." if(ticker.mode.antag_scaling_coeff > 0) - out += " (scaling with [ticker.mode.antag_scaling_coeff])" + out += " (scaling with [ticker.mode.antag_scaling_coeff])" else - out += " (not currently scaling, set a coefficient)" + out += " (not currently scaling, set a coefficient)" out += "
" else - out += "Autotraitor disabled.
" + out += "Autotraitor disabled.
" out += "All antag ids:" if(ticker.mode.antag_templates && ticker.mode.antag_templates.len) for(var/datum/antagonist/antag in ticker.mode.antag_templates) antag.update_current_antag_max() - out += " [antag.id]" + out += " [antag.id]" out += " ([antag.get_antag_count()]/[antag.cur_max]) " - out += " \[-\]
" + out += " \[-\]
" else out += " None." - out += " \[+\]
" + out += " \[+\]
" usr << browse(out, "window=edit_mode[src]") feedback_add_details("admin_verb","SGM") @@ -1323,19 +1323,19 @@ var/datum/announcement/minor/admin_min_announcer = new return "[key_name(C, link, name, highlight_special)]" if(1) //Private Messages - return "[key_name(C, link, name, highlight_special)](?)" + return "[key_name(C, link, name, highlight_special)](?)" if(2) //Admins var/ref_mob = "\ref[M]" - return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M)]) (CA) (TAKE)" + return "[key_name(C, link, name, highlight_special)](?) (PP) (VV) (SM) ([admin_jump_link(M)]) (CA) (TAKE)" if(3) //Devs var/ref_mob = "\ref[M]" - return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M)]) (TAKE)" + return "[key_name(C, link, name, highlight_special)](VV)([admin_jump_link(M)]) (TAKE)" if(4) //Event Managers var/ref_mob = "\ref[M]" - return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M)]) (TAKE)" + return "[key_name(C, link, name, highlight_special)] (?) (PP) (VV) (SM) ([admin_jump_link(M)]) (TAKE)" /proc/ishost(whom) @@ -1559,12 +1559,12 @@ var/datum/announcement/minor/admin_min_announcer = new log_admin("[key_name(src.owner)] replied to a fax message from [key_name(P.sender)]") for(var/client/C in GLOB.admins) if((R_ADMIN | R_MOD | R_EVENT) & C.holder.rights) - to_chat(C, "FAX LOG:[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(P.sender)] (VIEW)") + to_chat(C, "FAX LOG:[key_name_admin(src.owner)] replied to a fax message from [key_name_admin(P.sender)] (VIEW)") else log_admin("[key_name(src.owner)] has sent a fax message to [destination.department]") for(var/client/C in GLOB.admins) if((R_ADMIN | R_MOD | R_EVENT) & C.holder.rights) - to_chat(C, "FAX LOG:[key_name_admin(src.owner)] has sent a fax message to [destination.department] (VIEW)") + to_chat(C, "FAX LOG:[key_name_admin(src.owner)] has sent a fax message to [destination.department] (VIEW)") var/plaintext_title = P.sender ? "replied to [key_name(P.sender)]'s fax" : "sent a fax message to [destination.department]" var/fax_text = paper_html_to_plaintext(P.info) diff --git a/code/modules/admin/admin_report.dm b/code/modules/admin/admin_report.dm index bc1adbcfdc..33339429cf 100644 --- a/code/modules/admin/admin_report.dm +++ b/code/modules/admin/admin_report.dm @@ -107,9 +107,9 @@ world/New() output += "Offense:[N.body]
" output += "Occured at [time2text(N.date,"MM/DD hh:mm:ss")]
" output += "authored by [N.author]
" - output += " Flag as Handled" + output += " Flag as Handled" if(src.key == N.author) - output += " Edit" + output += " Edit" output += "
" output += "
" else @@ -149,7 +149,7 @@ world/New() for(var/datum/admin_report/N in reports) if(N.ID == ID) found = N - if(!found) + if(!found) to_chat(src, "* An error occured, sorry.") found.done = 1 @@ -171,7 +171,7 @@ world/New() for(var/datum/admin_report/N in reports) if(N.ID == ID) found = N - if(!found) + if(!found) to_chat(src, "* An error occured, sorry.") var/body = tgui_input_text(src.mob, "Enter a body for the news", "Body", multiline = TRUE, prevent_enter = TRUE) diff --git a/code/modules/admin/admin_verb_lists_vr.dm b/code/modules/admin/admin_verb_lists_vr.dm index 4719c289c1..1ce3f3ade0 100644 --- a/code/modules/admin/admin_verb_lists_vr.dm +++ b/code/modules/admin/admin_verb_lists_vr.dm @@ -129,7 +129,8 @@ var/list/admin_verbs_admin = list( /datum/admins/proc/view_feedback, /client/proc/make_mentor, /client/proc/unmake_mentor, - /client/proc/removetickets + /client/proc/removetickets, + /client/proc/delbook ) var/list/admin_verbs_ban = list( diff --git a/code/modules/admin/admin_verbs_vr.dm b/code/modules/admin/admin_verbs_vr.dm index a96217fb72..0cd74ca1b5 100644 --- a/code/modules/admin/admin_verbs_vr.dm +++ b/code/modules/admin/admin_verbs_vr.dm @@ -73,4 +73,51 @@ log_and_message_admins("removed a security ticket from the global list: \"[input]\"", usr) else - tgui_alert_async(usr, "The ticket list is empty.","Empty") \ No newline at end of file + tgui_alert_async(usr, "The ticket list is empty.","Empty") + +/client/proc/delbook() + set name = "Delete Book" + set desc = "Permamently deletes a book from the database." + set category = "Admin" + if(!src.holder) + to_chat(src, "Only administrators may use this command.") + return + + var/obj/machinery/librarycomp/our_comp + for(var/obj/machinery/librarycomp/l in world) + if(istype(l, /obj/machinery/librarycomp)) + our_comp = l + break + + if(!our_comp) + to_chat(usr, "Unable to locate a library computer to use for book deleting.") + return + + var/dat = "Book Inventory Management\n" + dat += "

ADMINISTRATIVE MANAGEMENT

" + establish_old_db_connection() + + if(!SSdbcore.IsConnected()) + dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." + else + dat += {"(Order book by SS13BN)

+ + ") + dat += text("") dat += "
TITLE" diff --git a/code/modules/admin/newbanjob.dm b/code/modules/admin/newbanjob.dm index c7180d0a49..4915c00594 100644 --- a/code/modules/admin/newbanjob.dm +++ b/code/modules/admin/newbanjob.dm @@ -211,7 +211,7 @@ var/savefile/Banlistjob for (var/A in Banlistjob.dir) count++ Banlistjob.cd = "/base/[A]" - dat += text("
(U) Key: [Banlistjob["key"]] Rank: [Banlistjob["rank"]] ([Banlistjob["temp"] ? "[GetBanExpjob(Banlistjob["minutes"]) ? GetBanExpjob(Banlistjob["minutes"]) : "Removal pending" ]" : "Permaban"])(By: [Banlistjob["bannedby"]])(Reason: [Banlistjob["reason"]])
(U) Key: [Banlistjob["key"]] Rank: [Banlistjob["rank"]] ([Banlistjob["temp"] ? "[GetBanExpjob(Banlistjob["minutes"]) ? GetBanExpjob(Banlistjob["minutes"]) : "Removal pending" ]" : "Permaban"])(By: [Banlistjob["bannedby"]])(Reason: [Banlistjob["reason"]])
" dat = "
Bans: (U) = Unban , - ([count] Bans)
[dat]" diff --git a/code/modules/admin/permissionverbs/permissionedit.dm b/code/modules/admin/permissionverbs/permissionedit.dm index 549f537d67..e688bc666d 100644 --- a/code/modules/admin/permissionverbs/permissionedit.dm +++ b/code/modules/admin/permissionverbs/permissionedit.dm @@ -18,7 +18,7 @@
- + "} @@ -31,9 +31,9 @@ if(!rights) rights = "*none*" output += "" - output += "" - output += "" - output += "" + output += "" + output += "" + output += "" output += "" output += {" @@ -154,4 +154,4 @@ var/DBQuery/log_query = SSdbcore.NewQuery("INSERT INTO `test`.`erro_admin_log` (`id` ,`datetime` ,`adminckey` ,`adminip` ,`log` ) VALUES (NULL , NOW( ) , '[usr.ckey]', '[usr.client.address]', 'Added permission [rights2text(new_permission)] (flag = [new_permission]) to admin [adm_ckey]')") //CHOMPEdit TGSQL log_query.Execute() qdel(log_query) //CHOMPEdit TGSQL - to_chat(usr, "Permission added.") \ No newline at end of file + to_chat(usr, "Permission added.") diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm index cf50b20ee0..56916c8d80 100644 --- a/code/modules/admin/player_panel.dm +++ b/code/modules/admin/player_panel.dm @@ -75,15 +75,15 @@ body += "
CKEY \[+\]CKEY \[+\] RANKPERMISSIONS
[adm_ckey] \[-\][rank][rights][adm_ckey] \[-\][rank][rights]
"; - body += "PP - " - body += "N - " + body += "PP - " + body += "N - " body += "VV - " - body += "TP - " - body += "PM - " - body += "SM - " - body += "JMP
" + body += "TP - " + body += "PM - " + body += "SM - " + body += "JMP
" if(antagonist > 0) - body += "Antagonist"; + body += "Antagonist"; body += "
"; @@ -194,7 +194,7 @@ Player panel
- Hover over a line to see more information - Check antagonists + Hover over a line to see more information - Check antagonists

@@ -359,18 +359,18 @@ dat += {"[M.key ? (M.client ? M.key : "[M.key] (DC)") : "No key"] - X - PM + X + PM "} if(usr.client) switch(is_special_character(M)) if(0) - dat += {"Traitor?"} + dat += {"Traitor?"} if(1) - dat += {"Traitor?"} + dat += {"Traitor?"} if(2) - dat += {"Traitor?"} + dat += {"Traitor?"} else dat += {" N/A "} @@ -389,21 +389,21 @@ dat += "Round Duration: [roundduration2text()]
" dat += "Emergency shuttle
" if (!emergency_shuttle.online()) - dat += "Call Shuttle
" + dat += "Call Shuttle
" else if (emergency_shuttle.wait_for_launch) var/timeleft = emergency_shuttle.estimate_launch_time() - dat += "ETL: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" + dat += "ETL: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" else if (emergency_shuttle.shuttle.has_arrive_time()) var/timeleft = emergency_shuttle.estimate_arrival_time() - dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" - dat += "Send Back
" + dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
" + dat += "Send Back
" if (emergency_shuttle.shuttle.moving_status == SHUTTLE_WARMUP) dat += "Launching now..." - dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
" + dat += "[ticker.delay_end ? "End Round Normally" : "Delay Round End"]
" dat += "


" for(var/antag_type in all_antag_types) var/datum/antagonist/A = all_antag_types[antag_type] diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index d17219e59c..f01d474560 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -1,3 +1,19 @@ +/datum/admins/proc/CheckAdminHref(href, href_list) + var/auth = href_list["admin_token"] + . = auth && (auth == href_token || auth == GLOB.href_token) + if(.) + return + var/msg = !auth ? "no" : "a bad" + message_admins("[key_name_admin(usr)] clicked an href with [msg] authorization key!") + + var/debug_admin_hrefs = TRUE // Remove once everything is converted over + if(debug_admin_hrefs) + message_admins("Debug mode enabled, call not blocked. Please ask your coders to review this round's logs.") + log_world("UAH: [href]") + return TRUE + + log_admin("[key_name(usr)] clicked an href with [msg] authorization key! [href]") + /datum/admins/Topic(href, href_list) ..() @@ -6,6 +22,9 @@ message_admins("[usr.key] has attempted to override the admin panel!") return + if(!CheckAdminHref(href, href_list)) + return + if(ticker.mode && ticker.mode.check_antagonists_topic(href, href_list)) check_antagonists() return @@ -398,16 +417,16 @@ //Regular jobs //Command (Blue) jobs += "" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_COMMAND)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 6) //So things dont get squiiiiished! jobs += "" @@ -418,16 +437,16 @@ //Security (Red) counter = 0 jobs += "
Command Positions
Command Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_SECURITY)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -438,16 +457,16 @@ //Engineering (Yellow) counter = 0 jobs += "
Security Positions
Security Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_ENGINEERING)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -458,16 +477,16 @@ //Cargo (Yellow) counter = 0 jobs += "
Engineering Positions
Engineering Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_CARGO)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -478,16 +497,16 @@ //Medical (White) counter = 0 jobs += "
Cargo Positions
Cargo Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_MEDICAL)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -498,16 +517,16 @@ //Science (Purple) counter = 0 jobs += "
Medical Positions
Medical Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_RESEARCH)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -519,16 +538,16 @@ //Exploration (Purple) counter = 0 jobs += "
Science Positions
Science Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_PLANET)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -543,16 +562,16 @@ for(var/dept in offmap_departments) offmap_jobs += SSjob.get_job_titles_in_department(dept) jobs += "
Exploration Positions
Exploration Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in offmap_jobs) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -564,41 +583,41 @@ //Civilian (Grey) counter = 0 jobs += "
Offmap Positions
Offmap Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_CIVILIAN)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" counter = 0 if(jobban_isbanned(M, "Internal Affairs Agent")) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" jobs += "
Civilian Positions
Civilian Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
Internal Affairs AgentInternal Affairs AgentInternal Affairs AgentInternal Affairs Agent
" //Synthetic (Green) counter = 0 jobs += "" - jobs += "" + jobs += "" for(var/jobPos in SSjob.get_job_titles_in_department(DEPARTMENT_SYNTHETIC)) if(!jobPos) continue var/datum/job/job = job_master.GetJob(jobPos) if(!job) continue if(jobban_isbanned(M, job.title)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -610,7 +629,7 @@ counter = 0 var/isbanned_dept = jobban_isbanned(M, "Syndicate") jobs += "
Synthetic Positions
Synthetic Positions
[replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")][replacetext(job.title, " ", " ")]
" - jobs += "" + jobs += "" // Antagonists. for(var/antag_type in all_antag_types) @@ -619,9 +638,9 @@ continue if(jobban_isbanned(M, "[antag.bantype]") || isbanned_dept) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -636,9 +655,9 @@ jobs += "" for(var/entry in misc_roles) if(jobban_isbanned(M, entry)) - jobs += "" + jobs += "" else - jobs += "" + jobs += "" if(++counter >= 5) //So things dont get squiiiiished! jobs += "" @@ -972,9 +991,9 @@ return tgui_alert_async(usr, "The game has already started.") var/dat = {"What mode do you wish to play?
"} for(var/mode in config.modes) - dat += {"[config.mode_names[mode]]
"} - dat += {"Secret
"} - dat += {"Random
"} + dat += {"[config.mode_names[mode]]
"} + dat += {"Secret
"} + dat += {"Random
"} dat += {"Now: [master_mode]"} usr << browse(dat, "window=c_mode") @@ -987,8 +1006,8 @@ return tgui_alert_async(usr, "The game mode has to be secret!") var/dat = {"What game mode do you want to force secret to be? Use this if you want to change the game mode, but want the players to believe it's secret. This will only work if the current game mode is secret.
"} for(var/mode in config.modes) - dat += {"[config.mode_names[mode]]
"} - dat += {"Random (default)
"} + dat += {"[config.mode_names[mode]]
"} + dat += {"Random (default)
"} dat += {"Now: [secret_force_mode]"} usr << browse(dat, "window=f_secret") @@ -1410,8 +1429,8 @@ Name = [M.name]; Real_name = [M.real_name]; Mind_name = [M.mind?"[M.mind.name]":""]; Key = [M.key];
\ Location = [location_description];
\ [special_role_description]
\ - (PM) (PP) (VV) \ - (SM) ([admin_jump_link(M, src)]) (CA)") + (PM) (PP) (VV) \ + (SM) ([admin_jump_link(M, src)]) (CA)") else if(href_list["adminspawncookie"]) if(!check_rights(R_ADMIN|R_FUN|R_EVENT)) return @@ -2058,11 +2077,11 @@ /mob/extra_admin_link(var/source) if(client && eyeobj) - return "|EYE" + return "|EYE" /mob/observer/dead/extra_admin_link(var/source) if(mind && mind.current) - return "|BDY" + return "|BDY" /proc/admin_jump_link(var/atom/target, var/source) if(!target) return @@ -2072,5 +2091,5 @@ else source = "_src_=holder" - . = "JMP" + . = "JMP" . += target.extra_admin_link(source) diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm index 60542d5a05..baba14563c 100644 --- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm +++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm @@ -670,7 +670,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null /datum/SDQL2_query/proc/SDQL_print(object, list/text_list, print_nulls = TRUE) if(is_proper_datum(object)) - text_list += "\ref[object] : [object]" + text_list += "\ref[object] : [object]" if(istype(object, /atom)) var/atom/A = object var/turf/T = A.loc diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 77ab40adc1..9463026769 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -81,15 +81,16 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(!l2b) return var/list/dat = list("[title]") - dat += "Refresh

" + dat += "Refresh

" for(var/datum/admin_help/AH as anything in l2b) - dat += "Ticket #[AH.id]: [AH.initiator_key_name]: [AH.name]
" + dat += "Ticket #[AH.id]: [AH.initiator_key_name]: [AH.name]
" usr << browse(dat.Join(), "window=ahelp_list[state];size=600x480") //Tickets statpanel /datum/admin_help_tickets/proc/stat_entry() var/num_disconnected = 0 + stat("== Admin Tickets ==") stat("Active Tickets:", astatclick.update("[active_tickets.len]")) for(var/datum/admin_help/AH as anything in active_tickets) if(AH.initiator) @@ -250,23 +251,23 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) /datum/admin_help/proc/ClosureLinks(ref_src) if(!ref_src) ref_src = "\ref[src]" - . = " (REJT)" - . += " (IC)" - . += " (CLOSE)" - . += " (RSLVE)" - . += " (HANDLE)" + . = " (REJT)" + . += " (IC)" + . += " (CLOSE)" + . += " (RSLVE)" + . += " (HANDLE)" //private /datum/admin_help/proc/LinkedReplyName(ref_src) if(!ref_src) ref_src = "\ref[src]" - return "[initiator_key_name]" + return "[initiator_key_name]" //private /datum/admin_help/proc/TicketHref(msg, ref_src, action = "ticket") if(!ref_src) ref_src = "\ref[src]" - return "[msg]" + return "[msg]" //message from the initiator without a target, all admins will see this //won't bug irc @@ -802,7 +803,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) if(found.mind && found.mind.special_role) is_antag = 1 founds += "Name: [found.name]([found.real_name]) Ckey: [found.ckey] [is_antag ? "(Antag)" : null] " - msg += "[original_word](?|F) " + msg += "[original_word](?|F) " continue msg += "[original_word] " if(irc) @@ -811,4 +812,4 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) else return founds - return msg + return msg \ No newline at end of file diff --git a/code/modules/admin/verbs/check_customitem_activity.dm b/code/modules/admin/verbs/check_customitem_activity.dm index eb1879e656..521a49301d 100644 --- a/code/modules/admin/verbs/check_customitem_activity.dm +++ b/code/modules/admin/verbs/check_customitem_activity.dm @@ -19,7 +19,7 @@ var/inactive_keys = "None
" dat += "
" dat += "This system was implemented on March 1 2013, and the database a few days before that. Root server access is required to add or disable access to specific custom items.
" else - dat += "Populate list (requires an active database connection)
" + dat += "Populate list (requires an active database connection)
" usr << browse(dat, "window=inactive_customitems;size=600x480") diff --git a/code/modules/admin/verbs/lightning_strike.dm b/code/modules/admin/verbs/lightning_strike.dm index 6ebcca804d..d977c39b22 100644 --- a/code/modules/admin/verbs/lightning_strike.dm +++ b/code/modules/admin/verbs/lightning_strike.dm @@ -14,7 +14,7 @@ lightning_strike(get_turf(usr), fake_lightning) log_and_message_admins("[key_name(src)] has caused [fake_lightning ? "cosmetic":"harmful"] lightning to strike at their position ([src.mob.x], [src.mob.y], [src.mob.z]). \ - (JMP)") + (JMP)") #define LIGHTNING_REDIRECT_RANGE 28 // How far in tiles certain things draw lightning from. #define LIGHTNING_ZAP_RANGE 1 // How far the tesla effect zaps, as well as the bad effects from a direct strike. diff --git a/code/modules/admin/verbs/pray.dm b/code/modules/admin/verbs/pray.dm index 9fa878ad72..5acd85f8c3 100644 --- a/code/modules/admin/verbs/pray.dm +++ b/code/modules/admin/verbs/pray.dm @@ -17,7 +17,7 @@ return var/icon/cross = icon('icons/obj/storage.dmi',"bible") - msg = "\icon[cross][bicon(cross)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src, src)]) (CA) (SC) (SMITE): [msg]" + msg = "\icon[cross][bicon(cross)] PRAY: [key_name(src, 1)] (?) (PP) (VV) (SM) ([admin_jump_link(src, src)]) (CA) (SC) (SMITE): [msg]" for(var/client/C in GLOB.admins) if(R_ADMIN|R_EVENT & C.holder.rights) @@ -30,15 +30,15 @@ //log_admin("HELP: [key_name(src)]: [msg]") /proc/CentCom_announce(var/msg, var/mob/Sender, var/iamessage) - msg = "[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" + msg = "[uppertext(using_map.boss_short)]M[iamessage ? " IA" : ""]:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins if(R_ADMIN|R_EVENT & C.holder.rights) to_chat(C,msg) C << 'sound/machines/signal.ogg' /proc/Syndicate_announce(var/msg, var/mob/Sender) - msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" + msg = "ILLEGAL:[key_name(Sender, 1)] (PP) (VV) (SM) ([admin_jump_link(Sender)]) (CA) (BSA) (RPLY): [msg]" for(var/client/C in GLOB.admins) //VOREStation Edit - GLOB admins if(R_ADMIN|R_EVENT & C.holder.rights) to_chat(C,msg) - C << 'sound/machines/signal.ogg' \ No newline at end of file + C << 'sound/machines/signal.ogg' diff --git a/code/modules/admin/view_variables/debug_variables.dm b/code/modules/admin/view_variables/debug_variables.dm index 97ce67e61b..73bed3848e 100644 --- a/code/modules/admin/view_variables/debug_variables.dm +++ b/code/modules/admin/view_variables/debug_variables.dm @@ -8,9 +8,9 @@ name = DA[name] //name is really the index until this line else value = DA[name] - header = "
  • (E) (C) (-) " + header = "
  • (E) (C) (-) " else - header = "
  • (E) (C) (M) " + header = "
  • (E) (C) (M) " else header = "
  • " @@ -38,9 +38,9 @@ else if (istype(value, /datum)) var/datum/D = value if ("[D]" != "[D.type]") //if the thing as a name var, lets use it. - item = "[VV_HTML_ENCODE(name)] \ref[value] = [D] [D.type]" + item = "[VV_HTML_ENCODE(name)] \ref[value] = [D] [D.type]" else - item = "[VV_HTML_ENCODE(name)] \ref[value] = [D.type]" + item = "[VV_HTML_ENCODE(name)] \ref[value] = [D.type]" else if (islist(value)) var/list/L = value @@ -58,9 +58,9 @@ items += debug_variable(key, val, level + 1, sanitize = sanitize) - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else - item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" + item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else if (name in GLOB.bitfields) var/list/flags = list() diff --git a/code/modules/admin/view_variables/helpers.dm b/code/modules/admin/view_variables/helpers.dm index e9d9337cf4..bad05eb138 100644 --- a/code/modules/admin/view_variables/helpers.dm +++ b/code/modules/admin/view_variables/helpers.dm @@ -6,26 +6,26 @@ /atom/get_view_variables_header() return {" - [src] + [src]
    - << - [dir2text(dir)] - >> + << + [dir2text(dir)] + >> "} /mob/living/get_view_variables_header() return {" - [src] -
    << [dir2text(dir)] >> -
    [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"] + [src] +
    << [dir2text(dir)] >> +
    [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"]
    - BRUTE:[getBruteLoss()] - FIRE:[getFireLoss()] - TOXIN:[getToxLoss()] - OXY:[getOxyLoss()] - CLONE:[getCloneLoss()] - BRAIN:[getBrainLoss()] + BRUTE:[getBruteLoss()] + FIRE:[getFireLoss()] + TOXIN:[getToxLoss()] + OXY:[getOxyLoss()] + CLONE:[getCloneLoss()] + BRAIN:[getBrainLoss()]
    "} @@ -35,53 +35,53 @@ /mob/get_view_variables_options() return ..() + {" - + - - - - - - + + + + + + - - + + - - + + - - - - - + + + + + - + - - + + - + "} /mob/living/carbon/human/get_view_variables_options() return ..() + {" - - - - - + + + + + "} /obj/get_view_variables_options() return ..() + {" - + "} /turf/get_view_variables_options() return ..() + {" - - + + "} /datum/proc/get_variables() @@ -100,18 +100,18 @@ /datum/proc/make_view_variables_variable_entry(var/varname, var/value, var/hide_watch = 0) return {" - (E) - (C) - (M) - [hide_watch ? "" : "(W)"] + (E) + (C) + (M) + [hide_watch ? "" : "(W)"] "} // No mass editing of clients /client/make_view_variables_variable_entry(var/varname, var/value, var/hide_watch = 0) return {" - (E) - (C) - [hide_watch ? "" : "(W)"] + (E) + (C) + [hide_watch ? "" : "(W)"] "} // These methods are all procs and don't use stored lists to avoid VV exploits @@ -188,4 +188,4 @@ /proc/forbidden_varedit_object_types() return list( /datum/admins //Admins editing their own admin-power object? Yup, sounds like a good idea. - ) \ No newline at end of file + ) diff --git a/code/modules/admin/view_variables/topic.dm b/code/modules/admin/view_variables/topic.dm index 5080b5cdd4..6554626777 100644 --- a/code/modules/admin/view_variables/topic.dm +++ b/code/modules/admin/view_variables/topic.dm @@ -514,7 +514,7 @@ if(!thing) to_chat(usr, "The object you tried to expose to [C] no longer exists (GC'd)") return - message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") + message_admins("[key_name_admin(usr)] Showed [key_name_admin(C)] a VV window") log_admin("Admin [key_name(usr)] Showed [key_name(C)] a VV window of a [src]") to_chat(C, "[holder.fakekey ? "an Administrator" : "[usr.client.key]"] has granted you access to view a View Variables window") C.debug_variables(thing) @@ -523,4 +523,3 @@ var/datum/DAT = locate(href_list["datumrefresh"]) if(istype(DAT, /datum) || istype(DAT, /client) || islist(DAT)) debug_variables(DAT) - diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index 1d52941f47..cd05296959 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -55,12 +55,12 @@ if (islist) dropdownoptions = list( "---", - "Add Item" = "?_src_=vars;[VV_HK_LIST_ADD]=TRUE;target=[refid]", - "Remove Nulls" = "?_src_=vars;[VV_HK_LIST_ERASE_NULLS]=TRUE;target=[refid]", - "Remove Dupes" = "?_src_=vars;[VV_HK_LIST_ERASE_DUPES]=TRUE;target=[refid]", - "Set len" = "?_src_=vars;[VV_HK_LIST_SET_LENGTH]=TRUE;target=[refid]", - "Shuffle" = "?_src_=vars;[VV_HK_LIST_SHUFFLE]=TRUE;target=[refid]", - // "Show VV To Player" = "?_src_=vars;[VV_HK_EXPOSE]=TRUE;target=[refid]" // TODO - Not yet implemented for lists + "Add Item" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ADD]=TRUE;target=[refid]", + "Remove Nulls" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ERASE_NULLS]=TRUE;target=[refid]", + "Remove Dupes" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ERASE_DUPES]=TRUE;target=[refid]", + "Set len" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_SET_LENGTH]=TRUE;target=[refid]", + "Shuffle" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_SHUFFLE]=TRUE;target=[refid]", + // "Show VV To Player" = "?_src_=vars;[HrefToken()];[VV_HK_EXPOSE]=TRUE;target=[refid]" // TODO - Not yet implemented for lists ) autoconvert_dropdown = TRUE else diff --git a/code/modules/admin/view_variables/view_variables_global.dm b/code/modules/admin/view_variables/view_variables_global.dm index 1f6f2d52d6..8e7c1be76d 100644 --- a/code/modules/admin/view_variables/view_variables_global.dm +++ b/code/modules/admin/view_variables/view_variables_global.dm @@ -1,6 +1,6 @@ /proc/readglobal(which) . = global.vars[which] - + /proc/writeglobal(which, newval) global.vars[which] = newval @@ -29,7 +29,7 @@ writeglobal(varname, value) /decl/global_vars/make_view_variables_variable_entry(varname, value) - return "(E) " + return "(E) " /decl/global_vars/VV_locked() return vars @@ -88,4 +88,4 @@ if(!global_vars_) global_vars_ = new() - debug_variables(global_vars_) \ No newline at end of file + debug_variables(global_vars_) diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index f69f0beea9..d877793039 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -579,12 +579,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(has_flag(mob_species, HAS_SKIN_COLOR)) . += "
    Body Color
    " . += "Change Color [color_square(pref.r_skin, pref.g_skin, pref.b_skin)]
    " - - //CHOMPEdit START - if(mob_species.digi_allowed) - . += "
    Digitigrade?: [pref.digitigrade ? "Yes" : "No"]
    " - //CHOMPEdit END - + + . += chomp_custom_additions_body(user, mob_species) //CHOMPEdit - add custom chomp specific body customisation data with this proc. + . += "

    Genetics Settings

    " var/list/ear_styles = pref.get_available_styles(global.ear_styles_list) diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index 489973a92e..4b5e532a51 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -272,9 +272,8 @@ allowed_roles = list("Internal Affairs Agent") /datum/gear/uniform/suit/bartenderskirt - display_name = "suit, bartender skirt (Bartender)" + display_name = "suit, bartender skirt" path = /obj/item/clothing/under/rank/bartender/skirt - allowed_roles = list("Bartender") /datum/gear/uniform/scrub display_name = "scrubs selection" diff --git a/code/modules/client/verbs/advanced_who.dm b/code/modules/client/verbs/advanced_who.dm index 4762280a73..151f4a90f3 100644 --- a/code/modules/client/verbs/advanced_who.dm +++ b/code/modules/client/verbs/advanced_who.dm @@ -68,7 +68,7 @@ entry += "[seconds % 60] seconds)" entry += "
  • " Lines += entry diff --git a/code/modules/client/verbs/who.dm b/code/modules/client/verbs/who.dm index 17c257828a..96bcc5e2f6 100644 --- a/code/modules/client/verbs/who.dm +++ b/code/modules/client/verbs/who.dm @@ -44,7 +44,7 @@ var/seconds = C.last_activity_seconds() entry += " (AFK - [round(seconds / 60)] minutes, [seconds % 60] seconds)" - entry += " (?)" + entry += " (?)" Lines += entry for(var/line in sortList(Lines)) diff --git a/code/modules/clothing/clothing_ch.dm b/code/modules/clothing/clothing_ch.dm deleted file mode 100644 index ff5e820a26..0000000000 --- a/code/modules/clothing/clothing_ch.dm +++ /dev/null @@ -1,62 +0,0 @@ -//CHOMP Overrides for if holder is digitigrade -/obj/item/clothing - var/update_icon_define_orig = null // temp storage for original update_icon_define (if it exists) - var/fit_for_digi = FALSE // flag for if clothing has already been reskinned to digitigrade - -/obj/item/clothing/proc/handle_digitigrade(var/mob/user) - if(ishuman(user)) - var/mob/living/carbon/human/H = user - - // if digitigrade-use flag is set - if(H.digitigrade) - - // figure out what slot we care about - var/update_icon_define_digi = null - - if(istype(src, /obj/item/clothing/shoes)) - update_icon_define_digi = "icons/inventory/feet/mob_digi_ch.dmi" - else if(istype(src, /obj/item/clothing/suit)) //suit - update_icon_define_digi = "icons/inventory/suit/mob_digi_ch.dmi" - else if(istype(src, /obj/item/clothing/under)) //uniform - update_icon_define_digi = "icons/inventory/uniform/mob_digi_ch.dmi" - else - return - - // Don't reset if already set - if(!fit_for_digi) - fit_for_digi = TRUE // set flag even if no icon_state exists, so we don't repeat checks - - //if update_icon_define is already set to something, place it in a var to hold it temporarily - if(update_icon_define) - update_icon_define_orig = update_icon_define - - // only override icon if a corresponding digitigrade replacement icon_state exists - // otherwise, keep the old non-digi icon_define (or nothing) - if(icon_state && icon_states(update_icon_define_digi).Find(icon_state)) - update_icon_define = update_icon_define_digi - - - // if not-digitigrade, only act if the clothing was previously fit for a digitigrade char - else - if(fit_for_digi) - fit_for_digi = FALSE - - //either reset update_icon_define to it's old value - // or reset update_icon_define to null - if(update_icon_define_orig) - update_icon_define = update_icon_define_orig - update_icon_define_orig = null - else - update_icon_define = null - -/obj/item/clothing/shoes/equipped(var/mob/user, var/slot) - . = ..() - handle_digitigrade(user) - -/obj/item/clothing/suit/equipped(var/mob/user, var/slot) - . = ..() - handle_digitigrade(user) - -/obj/item/clothing/under/equipped(var/mob/user, var/slot) - . = ..() - handle_digitigrade(user) \ No newline at end of file diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index e66947796b..90285f561c 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -178,6 +178,15 @@ user.visible_message("\The [user] swipes the [emag_source] over the \the [src].","You swipes the [emag_source] over the \the [src].") return 1 +/obj/item/clothing/gloves/bluespace/emagged + emagged = TRUE + +/obj/item/clothing/gloves/bluespace/emagged/Initialize() + . = ..() + target_size = (rand(1,300)) /100 + if(target_size < 0.1) + target_size = 0.1 + //Same as Nanotrasen Security Uniforms /obj/item/clothing/under/ert armor = list(melee = 5, bullet = 10, laser = 10, energy = 5, bomb = 5, bio = 0, rad = 0) diff --git a/code/modules/economy/trader.dm b/code/modules/economy/trader.dm index b6a8d2732f..0491c17eea 100644 --- a/code/modules/economy/trader.dm +++ b/code/modules/economy/trader.dm @@ -258,7 +258,7 @@ dir = dt.dir log_admin("[src] has been placed at [loc], [x],[y],[z]") else - log_and_message_admins("[src] tried to move itself but its target pick list was empty, so it was not moved. (JMP)") + log_and_message_admins("[src] tried to move itself but its target pick list was empty, so it was not moved. (JMP)") /obj/move_trader_landmark //You need to place the trader somewhere in the world and enable the 'move_trader' var. When the trader initializes, it will make a list of these landmarks and then move itself. name = "trader mover" diff --git a/code/modules/emotes/emote_define.dm b/code/modules/emotes/emote_define.dm index d232da0cba..f6502015de 100644 --- a/code/modules/emotes/emote_define.dm +++ b/code/modules/emotes/emote_define.dm @@ -190,7 +190,7 @@ var/global/list/emotes_by_key //CHOMPEdit Add - Preference for variable pitch if(istype(user, /mob)) var/mob/u = user - playsound(user.loc, sound_to_play, use_sound["vol"], u.is_preference_enabled(/datum/client_preference/random_emote_pitch) && sound_vary, frequency = null, preference = sound_preferences) + playsound(user.loc, sound_to_play, use_sound["vol"], u.is_preference_enabled(/datum/client_preference/random_emote_pitch) && sound_vary, frequency = u.voice_freq, preference = sound_preferences) //CHOMPEdit else playsound(user.loc, sound_to_play, use_sound["vol"], sound_vary, frequency = null, preference = sound_preferences) //VOREStation Add - Preference //CHOMPEdit End - Previous line used to be outside an if/else before the edit. diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index 7e5ad1caf0..7c2a21cf57 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -80,7 +80,7 @@ var/decl/emote/use_emote = get_emote_by_key(act) if(!istype(use_emote)) - to_chat(src, SPAN_WARNING("Unknown emote '[act]'. Type say *help for a list of usable emotes.")) + to_chat(src, SPAN_WARNING("Unknown emote '[act]'. Type say *help for a list of usable emotes. ([act] [message])")) //CHOMPEdit - Add full message in the event you used * instead of ! or something like that return if(!use_emote.mob_can_use(src)) diff --git a/code/modules/error_handler/error_viewer.dm b/code/modules/error_handler/error_viewer.dm index c342a408f0..91bb51eb95 100644 --- a/code/modules/error_handler/error_viewer.dm +++ b/code/modules/error_handler/error_viewer.dm @@ -71,7 +71,7 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null back_to_param = ";viewruntime_backto=\ref[back_to]" if(linear) back_to_param += ";viewruntime_linear=1" - return "[html_encode(linktext)]" + return "[html_encode(linktext)]" /datum/ErrorViewer/Topic(href, href_list) if(..()) @@ -183,20 +183,20 @@ var/global/datum/ErrorViewer/ErrorCache/error_cache = null var/html = buildHeader(back_to, linear) html += "
    [html_encode(name)]
    [desc]
    " if(srcRef) - html += "
    src: VV" + html += "
    src: VV" if(ispath(srcType, /mob)) - html += " PP" - html += " Follow" + html += " PP" + html += " Follow" if(istype(srcLoc)) - html += "
    src.loc: VV" - html += " JMP" + html += "
    src.loc: VV" + html += " JMP" if(usrRef) - html += "
    usr: VV" - html += " PP" - html += " Follow" + html += "
    usr: VV" + html += " PP" + html += " Follow" if(istype(usrLoc)) - html += "
    usr.loc: VV" - html += " JMP" + html += "
    usr.loc: VV" + html += " JMP" browseTo(user, html) /datum/ErrorViewer/ErrorEntry/makeLink(var/linktext, var/datum/ErrorViewer/back_to, var/linear) diff --git a/code/modules/events/viral_infection.dm b/code/modules/events/viral_infection.dm index 5ee99ed5db..d596466585 100644 --- a/code/modules/events/viral_infection.dm +++ b/code/modules/events/viral_infection.dm @@ -61,7 +61,7 @@ var/global/list/event_viruses = list() // so that event viruses are kept around var/list/used_viruses_links = list() var/list/used_viruses_text = list() for(var/datum/disease2/disease/D in used_viruses) - used_viruses_links += "[D.name()]" + used_viruses_links += "[D.name()]" used_viruses_text += D.name() var/list/used_candidates_links = list() diff --git a/code/modules/food/kitchen/cooking_machines/fryer.dm b/code/modules/food/kitchen/cooking_machines/fryer.dm index d9b86ae063..edf1df8882 100644 --- a/code/modules/food/kitchen/cooking_machines/fryer.dm +++ b/code/modules/food/kitchen/cooking_machines/fryer.dm @@ -235,7 +235,7 @@ user.attack_log += text("\[[time_stamp()]\] Has [cook_type] \the [victim] ([victim.ckey]) in \a [src]") victim.attack_log += text("\[[time_stamp()]\] Has been [cook_type] in \a [src] by [user.name] ([user.ckey])") - msg_admin_attack("[key_name_admin(user)] [cook_type] \the [victim] ([victim.ckey]) in \a [src]. (JMP)") + msg_admin_attack("[key_name_admin(user)] [cook_type] \the [victim] ([victim.ckey]) in \a [src]. (JMP)") //Coat the victim in some oil oil.trans_to(victim, 40) diff --git a/code/modules/library/lib_machines.dm b/code/modules/library/lib_machines.dm index ad915f7f9d..5e24efbcf2 100644 --- a/code/modules/library/lib_machines.dm +++ b/code/modules/library/lib_machines.dm @@ -308,6 +308,43 @@ user << browse(dat, "window=library") onclose(user, "library") +//VOREStation Addition Start +/obj/machinery/librarycomp/attack_ghost(mob/user) + + var/show_admin_options = check_rights(R_ADMIN, show_msg = FALSE) + if(!show_admin_options) + . = ..() + + else + usr.set_machine(src) + var/dat = "Book Inventory Management\n" // + + dat += "

    ADMINISTRATIVE MANAGEMENT

    " + establish_old_db_connection() + + if(!SSdbcore.IsConnected()) + dat += "ERROR: Unable to contact External Archive. Please contact your system administrator for assistance." + else + dat += {"(Order book by SS13BN)

    +
    Antagonist Positions
    Antagonist Positions
    [replacetext("[antag.role_text]", " ", " ")][replacetext("[antag.role_text]", " ", " ")][replacetext("[antag.role_text]", " ", " ")][replacetext("[antag.role_text]", " ", " ")]
    Other Roles
    [entry][entry][entry][entry]
    " - entry += " (?)" + entry += " (?)" entry += "
    + " + dat += "
    TITLE\[Del\]" + dat += "
    " + dat += "
    (Return to main menu)
    " + + user << browse(dat, "window=library") + onclose(user, "library") +//VOREStation Addition End + /obj/machinery/librarycomp/emag_act(var/remaining_charges, var/mob/user) if (src.density && !src.emagged) src.emagged = 1 @@ -567,4 +604,4 @@ b.icon_state = "book[rand(1,7)]" qdel(O) else - ..() \ No newline at end of file + ..() diff --git a/code/modules/mentor/mentorhelp.dm b/code/modules/mentor/mentorhelp.dm index e5f7ac49d8..41a760f475 100644 --- a/code/modules/mentor/mentorhelp.dm +++ b/code/modules/mentor/mentorhelp.dm @@ -53,15 +53,16 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) if(!l2b) return var/list/dat = list("[title]") - dat += "Refresh

    " + dat += "Refresh

    " for(var/datum/mentor_help/MH as anything in l2b) - dat += "Ticket #[MH.id]: [MH.initiator_ckey]: [MH.name]
    " + dat += "Ticket #[MH.id]: [MH.initiator_ckey]: [MH.name]
    " usr << browse(dat.Join(), "window=mhelp_list[state];size=600x480") //Tickets statpanel /datum/mentor_help_tickets/proc/stat_entry() var/num_disconnected = 0 + stat("== Mentor Tickets ==") stat("Active Tickets:", astatclick.update("[active_tickets.len]")) for(var/datum/mentor_help/MH as anything in active_tickets) if(MH.initiator) @@ -173,24 +174,24 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) /datum/mentor_help/proc/ClosureLinks(ref_src) if(!ref_src) ref_src = "\ref[src]" - . = " (RSLVE)" + . = " (RSLVE)" //private /datum/mentor_help/proc/LinkedReplyName(ref_src) if(!ref_src) ref_src = "\ref[src]" - return "[initiator_ckey]" + return "[initiator_ckey]" //private /datum/mentor_help/proc/TicketHref(msg, ref_src, action = "ticket") if(!ref_src) ref_src = "\ref[src]" - return "[msg]" + return "[msg]" //message from the initiator without a target, all people with mentor powers will see this /datum/mentor_help/proc/MessageNoRecipient(msg) var/ref_src = "\ref[src]" - var/chat_msg = "(ESCALATE) Ticket [TicketHref("#[id]", ref_src)]: [LinkedReplyName(ref_src)]: [msg]" + var/chat_msg = "(ESCALATE) Ticket [TicketHref("#[id]", ref_src)]: [LinkedReplyName(ref_src)]: [msg]" AddInteraction("[LinkedReplyName(ref_src)]: [msg]") for (var/client/C in GLOB.mentors) if (C.is_preference_enabled(/datum/client_preference/play_mentorhelp_ping)) @@ -259,6 +260,9 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) //Show the ticket panel /datum/mentor_help/proc/TicketPanel() + tgui_interact(usr.client.mob) + +/datum/mentor_help/proc/TicketPanelLegacy() var/list/dat = list("Ticket #[id]") var/ref_src = "\ref[src]" dat += "

    Mentor Help Ticket #[id]: [LinkedReplyName(ref_src)]

    " @@ -287,6 +291,63 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) usr << browse(dat.Join(), "window=mhelp[id];size=620x480") +/datum/mentor_help/tgui_fallback(payload) + if(..()) + return + + TicketPanelLegacy() + +/datum/mentor_help/tgui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "MentorTicketPanel", "Ticket #[id] - [LinkedReplyName("\ref[src]")]") + ui.open() + +/datum/mentor_help/tgui_state(mob/user) + return GLOB.tgui_mentor_state + +/datum/mentor_help/tgui_data(mob/user) + var/list/data = list() + + data["id"] = id + + var/ref_src = "\ref[src]" + data["title"] = name + data["name"] = LinkedReplyName(ref_src) + + switch(state) + if(AHELP_ACTIVE) + data["state"] = "open" + if(AHELP_RESOLVED) + data["state"] = "resolved" + else + data["state"] = "unknown" + + data["opened_at"] = (world.time - opened_at) + data["closed_at"] = (world.time - closed_at) + data["opened_at_date"] = gameTimestamp(wtime = opened_at) + data["closed_at_date"] = gameTimestamp(wtime = closed_at) + + data["actions"] = Context(ref_src) + + data["log"] = _interactions + + return data + +/datum/mentor_help/tgui_act(action, params) + if(..()) + return + switch(action) + if("escalate") + Escalate() + . = TRUE + if("reopen") + Reopen() + . = TRUE + if("legacy") + TicketPanelLegacy() + . = TRUE + //Kick ticket to admins /datum/mentor_help/proc/Escalate() if(tgui_alert(usr, "Really escalate this ticket to admins? No mentors will ever be able to interact with it again if you do.","Escalate",list("Yes","No")) != "Yes") @@ -309,7 +370,7 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) if(state == AHELP_ACTIVE) . += ClosureLinks(ref_src) if(state != AHELP_RESOLVED) - . += " (ESCALATE)" + . += " (ESCALATE)" //Forwarded action from admin/Topic OR mentor/Topic depending on which rank the caller has /datum/mentor_help/proc/Action(action) @@ -412,4 +473,4 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new) for(var/client/C in GLOB.mentors) to_chat(C, msg) for(var/client/C in GLOB.admins) - to_chat(C, msg) \ No newline at end of file + to_chat(C, msg) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index cd6dfd962d..19fa408643 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -237,9 +237,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp var/turf/location = get_turf(src) var/special_role = check_special_role() if(!istype(loc,/obj/machinery/cryopod)) - log_and_message_admins("has ghosted outside cryo[special_role ? " as [special_role]" : ""]. (JMP)",usr) + log_and_message_admins("has ghosted outside cryo[special_role ? " as [special_role]" : ""]. (JMP)",usr) else if(special_role) - log_and_message_admins("has ghosted in cryo as [special_role]. (JMP)",usr) + log_and_message_admins("has ghosted in cryo as [special_role]. (JMP)",usr) var/mob/observer/dead/ghost = ghostize(0) // 0 parameter is so we can never re-enter our body, "Charlie, you can never come baaaack~" :3 if(ghost) ghost.timeofdeath = world.time // Because the living mob won't have a time of death and we want the respawn timer to work properly. diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index f1d2c94226..7c4bbae2da 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -111,7 +111,7 @@ if(is_preference_enabled(/datum/client_preference/ghost_ears) && (speaker in view(src))) message = "[message]" - if(is_deaf()) + if(is_deaf() && stat != DEAD) //CHOMPEdit - Dead people should be able to hear stuff like ghosts can if(speaker == src) to_chat(src, "You cannot hear yourself speak!") else diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index a5230484ed..9e7197cb20 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -21,6 +21,7 @@ var/datum/reagents/metabolism/bloodstream/bloodstr = null var/datum/reagents/metabolism/ingested/ingested = null var/datum/reagents/metabolism/touch/touching = null + var/toxin_gut = FALSE //CHOMPAdd var/pulse = PULSE_NORM //current pulse level diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm index b98d28285b..3f597c4784 100644 --- a/code/modules/mob/living/carbon/human/emote_vr.dm +++ b/code/modules/mob/living/carbon/human/emote_vr.dm @@ -62,15 +62,6 @@ message = "hides their wings." visible_message("[src] [message]") -// Chomp Edit Start -/mob/living/carbon/human/verb/hide_nutrition_vr() - set name = "Show/Hide Nutrition Levels" - set category = "IC" - set desc = "Allow other player to see your current nutrition level or not." - nutrition_hidden = !nutrition_hidden - to_chat(src, "Players will [nutrition_hidden ? "no longer" : "now"] see your nutrition levels.") -// Chomp Edit End - /mob/living/carbon/human/verb/hide_tail_vr() set name = "Show/Hide tail" set category = "IC" diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm index 16b5097e46..69a008029c 100644 --- a/code/modules/mob/living/carbon/human/human_defines_vr.dm +++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm @@ -8,7 +8,6 @@ var/ability_flags = 0 //Shadekin abilities/potentially other species-based? var/sensorpref = 5 //Suit sensor loadout pref var/wings_hidden = FALSE - var/nutrition_hidden = FALSE // Chomp Edit var/tail_hidden = FALSE /mob/living/carbon/human/proc/shadekin_get_energy() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index bbd12e5e97..333d99b5c0 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1233,9 +1233,7 @@ if(nutrition < 4075) belch_prob = ((nutrition-500)/3575)*5 //Scale belch prob with fullness if not already at max. If editing make sure the multiplier matches the max prob above. if(prob(belch_prob)) - var/sound/belchsound = sound(get_sfx("belches")) - playsound(src, belchsound, vol = (20+(belch_prob*8)), vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/belch_noises) - custom_emote(AUDIBLE_MESSAGE, "belches.") //Don't know if this should stay, I'll leave in in for now. + src.emote("belch") //CHOMPEdit End // TODO: stomach and bloodstream organ. diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index a7def59625..f8e7aa157b 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -192,7 +192,7 @@ /mob/living/carbon/human/handle_speech_sound() var/list/returns[2] - if(species.speech_sounds && species.speech_sounds.len && prob(species.speech_chance)) //VOREStation Edit: Sanity Check + if(speech_sound_enabled && species.speech_sounds && species.speech_sounds.len && prob(species.speech_chance)) //VOREStation Edit: Sanity Check //CHOMPStation Edit: add ability to disable speech sounds with a verb returns[1] = sound(pick(species.speech_sounds)) returns[2] = 50 return returns diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm index 7f4c783815..f76555561b 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm @@ -114,6 +114,7 @@ var/kin_type var/energy_light = 0.25 var/energy_dark = 0.75 + var/doing_phase = FALSE //CHOMPEdit - Prevent bugs when spamming phase button /datum/species/shadekin/New() ..() diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm index db48e6787b..d88f670fc3 100644 --- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm +++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin_abilities.dm @@ -62,6 +62,11 @@ else if(stat) to_chat(src, "Can't use that ability in your state!") return FALSE + //CHOMPEdit Start - Prevent bugs when spamming phase button + else if(SK.doing_phase) + to_chat(src, "You are already trying to phase!") + return FALSE + //CHOMPEdit End else if(shadekin_get_energy() < ability_cost && !(ability_flags & AB_PHASE_SHIFTED)) to_chat(src, "Not enough energy for that ability!") @@ -93,6 +98,7 @@ stop_pulling() canmove = FALSE + SK.doing_phase = TRUE //CHOMPEdit - Prevent bugs when spamming phase button //Shifting in if(ability_flags & AB_PHASE_SHIFTED) ability_flags &= ~AB_PHASE_SHIFTED @@ -124,6 +130,7 @@ canmove = original_canmove alpha = initial(alpha) remove_modifiers_of_type(/datum/modifier/shadekin_phase_vision) + remove_modifiers_of_type(/datum/modifier/shadekin_phase) //CHOMPEdit - Shadekin probably shouldn't be hit while phasing //Potential phase-in vore if(can_be_drop_pred) //Toggleable in vore panel @@ -173,6 +180,7 @@ phaseanim.dir = dir alpha = 0 add_modifier(/datum/modifier/shadekin_phase_vision) + add_modifier(/datum/modifier/shadekin_phase) //CHOMPEdit - Shadekin probably shouldn't be hit while phasing sleep(5) invisibility = INVISIBILITY_LEVEL_TWO see_invisible = INVISIBILITY_LEVEL_TWO @@ -185,6 +193,13 @@ incorporeal_move = TRUE density = FALSE force_max_speed = TRUE + SK.doing_phase = FALSE //CHOMPEdit - Prevent bugs when spamming phase button + +//CHOMPEdit Start - Shadekin probably shouldn't be hit while phasing +/datum/modifier/shadekin_phase + name = "Shadekin Phasing" + evasion = 100 +//CHOMPEdit End /datum/modifier/shadekin_phase_vision name = "Shadekin Phase Vision" diff --git a/code/modules/mob/living/carbon/human/species/species_ch.dm b/code/modules/mob/living/carbon/human/species/species_ch.dm deleted file mode 100644 index 178bdb01a8..0000000000 --- a/code/modules/mob/living/carbon/human/species/species_ch.dm +++ /dev/null @@ -1,22 +0,0 @@ -/datum/species - var/list/env_traits = list() - var/dirtslip = FALSE - var/photosynthesizing = FALSE - var/grows = FALSE - var/shrinks = FALSE - var/rad_levels = list("safe" = 2.5, "danger_1" = 50, "danger_2" = 75, "danger_3" = 150) - var/rad_removal_mod = 1 - var/bite_mod = 1 - var/grab_resist_divisor_victims = 1 - var/grab_resist_divisor_self = 1 - var/grab_power_victims = 0 - var/grab_power_self = 0 - var/waking_speed = 1 - var/mudking = FALSE - var/icodigi = 'icons/mob/human_races/r_digi_ch.dmi' - var/digi_allowed = FALSE - -/datum/species/handle_environment_special(var/mob/living/carbon/human/H) - for(var/datum/trait/env_trait in env_traits) - env_trait.handle_environment_special(H) - return \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/station_ch.dm b/code/modules/mob/living/carbon/human/species/station/station_ch.dm deleted file mode 100644 index ae48a445b2..0000000000 --- a/code/modules/mob/living/carbon/human/species/station/station_ch.dm +++ /dev/null @@ -1,72 +0,0 @@ -//Any species commented out here must be made restricted elsewhere. They are kept here for easy reference of what we disabled. -//Note that at the time of this PR we are simply disabling everything new to discuss keeping versus scrapping later. - -///datum/species/zaddat -// spawn_flags = SPECIES_IS_RESTRICTED //Species has been enabled elsewhere. - -///datum/species/crew_shadekin -// spawn_flags = SPECIES_IS_RESTRICTED - -/datum/species/human/gravworlder - spawn_flags = SPECIES_IS_RESTRICTED - -/datum/species/human/spacer - spawn_flags = SPECIES_IS_RESTRICTED - -///datum/species/alraune -// spawn_flags = SPECIES_IS_RESTRICTED //Species has been enabled, keeping this here for reference. - -///datum/species/werebeast -// spawn_flags = SPECIES_IS_RESTRICTED - -/datum/species/shadekin_yw - spawn_flags = SPECIES_IS_RESTRICTED - -/datum/species/shadekin - //spawn_flags = SPECIES_IS_RESTRICTED - -//datum/species/protean -// spawn_flags = SPECIES_IS_RESTRICTED - -//TFF 20/1/20 - More whitelisted species listed here. Unable to force overrides to be enabled here. -/* -/datum/species/xenochimera - spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE - -/datum/species/diona - spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE - -/datum/species/vox - spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE -*/ - -//Can use digitigrade flags -/datum/species/custom - digi_allowed = TRUE - -/datum/species/unathi - digi_allowed = TRUE - -/datum/species/tajaran - digi_allowed = TRUE - -/datum/species/hi_zoxxen - digi_allowed = TRUE - -/datum/species/sergal - digi_allowed = TRUE - -/datum/species/akula - digi_allowed = TRUE - -/datum/species/nevrean - digi_allowed = TRUE - -/datum/species/vulpkanin - digi_allowed = TRUE - -/datum/species/xenohybrid - digi_allowed = TRUE - -/datum/species/xenochimera - digi_allowed = TRUE diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index 15605cead8..056cb83e7b 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -1160,8 +1160,8 @@ if(target.buckled) //how are you buckled in the water?! target.buckled.unbuckle_mob() target.visible_message("\The [target] suddenly disappears, being dragged into the water!",\ - "You are dragged below the water and feel yourself slipping directly into \the [src]'s [vore_selected]!") - to_chat(src, "You successfully drag \the [target] into the water, slipping them into your [vore_selected].") + "You are dragged below the water and feel yourself slipping directly into \the [src]'s [lowertext(vore_selected)]!") + to_chat(src, "You successfully drag \the [target] into the water, slipping them into your [lowertext(vore_selected)].") target.forceMove(src.vore_selected) /mob/living/carbon/human/proc/toggle_pain_module() diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm index 342d768b97..f44566581f 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive_ch.dm @@ -7,16 +7,16 @@ /datum/trait/positive/darksight name = "Darksight" - desc = "Allows you to see a short distance in the dark. (Half the screen)." + desc = "Allows you to see a short distance in the dark. (Half the screen)." cost = 1 var_changes = list("darksight" = 4) //CHOMP Edit /datum/trait/positive/darksight_plus name = "Darksight, Major" - desc = "Allows you to see in the dark for the whole screen." + desc = "Allows you to see in the dark for the whole screen." cost = 2 var_changes = list("darksight" = 8) - + /datum/trait/positive/densebones name = "Dense Bones" desc = "Your bones (or robotic limbs) are more dense or stronger then what is considered normal. It is much harder to fracture your bones, yet pain from fractures is much more intense. Bones require 50% more damage to break, and deal 2x pain on break." @@ -201,7 +201,7 @@ pulse_modifier = 2 //Heart is in overdrive bleeding_rate_percent = 1.25 //Bleed more with higher blood pressure. metabolism_percent = 2.5 //Metabolism in overdrive - + var/original_length var/list/original_values @@ -243,7 +243,7 @@ accuracy_dispersion = 25 incoming_hal_damage_percent = 1.75 incoming_oxy_damage_percent = 1.25 - + /datum/trait/positive/insect_sting name = "Insect Sting" desc = "Allows you to sting your victim with a smalll amount of poison" @@ -252,7 +252,7 @@ /datum/trait/positive/insect_sting/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) H.verbs |= /mob/living/proc/insect_sting - + // TANKINESS LETS GOOOOOOOOO /datum/trait/positive/burn_resist_plus // Equivalent to Burn Weakness Major, cannot be taken at the same time. name = "Burn Resist, Major" @@ -260,14 +260,14 @@ cost = 3 // Exact Opposite of Burn Weakness Major, except Weakness Major is 50% incoming, this is -40% incoming. var_changes = list("burn_mod" = 0.6) excludes = list(/datum/trait/positive/burn_resist, /datum/trait/positive/minor_burn_resist) - + /datum/trait/positive/brute_resist_plus // Equivalent to Brute Weakness Major, cannot be taken at the same time. name = "Brute Resist, Major" desc = "Adds 40% resistance to brute damage sources." cost = 3 // Exact Opposite of Brute Weakness Major, except Weakness Major is 50% incoming, this is -40% incoming. var_changes = list("brute_mod" = 0.6) excludes = list(/datum/trait/positive/brute_resist, /datum/trait/positive/minor_brute_resist) - + /datum/trait/positive/endurance_very_high name = "High Endurance, Major" desc = "Increases your maximum total hitpoints to 150. You require 300 damage in total to die, compared to 200 normally. You will still go into crit after losing 150 HP, compared to crit at 100 HP." @@ -290,15 +290,15 @@ /datum/trait/positive/endurance_extremely_high/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) H.setMaxHealth(S.total_health) - + // CHOMPNote: Reshuffling traits to match our current upstream, VORE. /datum/trait/positive/pain_tolerance_minor // Minor Pain Tolerance, 10% reduced pain name = "Pain Tolerance, Minor" desc = "You are slightly more resistant to pain than most, and experience 10% less pain from all sources." cost = 1 var_changes = list("pain_mod" = 0.9) - -/datum/trait/positive/pain_tolerance + +/datum/trait/positive/pain_tolerance name = "Pain Tolerance" desc = "You are noticeably more resistant to pain than most, and experience 20% less pain from all sources." cost = 2 @@ -309,8 +309,8 @@ desc = "You are extremely resistant to pain sources, and experience 40% less pain from all sources." cost = 3 // Equivalent to High Pain Intolerance, but less pain resisted for balance reasons. var_changes = list("pain_mod" = 0.6) - - + + /datum/trait/positive/improved_biocompat name = "Improved Biocompatibility" desc = "Your body is naturally (or artificially) more receptive to healing chemicals without being vulnerable to the 'bad stuff'. You heal more efficiently from most chemicals, with no other drawbacks. Remember to note this down in your medical records! Chems heal for 20% more." @@ -322,21 +322,21 @@ desc = "Decreases stun duration from flashes and other light-based stuns and disabilities by 50%." cost = 2 var_changes = list("flash_mod" = 0.5) - + /datum/trait/positive/speed_fast_minor name = "Haste, Minor" desc = "Allows you to move a little bit faster on average than baseline." cost = 2 var_changes = list("slowdown" = -0.25) excludes = list(/datum/trait/positive/hardy_extreme,/datum/trait/positive/hardy_plus,/datum/trait/positive/speed_fast) - + /datum/trait/positive/hardy_extreme name = "Hardy, Extreme" desc = "Allows you to carry heavy equipment with no slowdown at all." cost = 3 var_changes = list("item_slowdown_mod" = 0.0) excludes = list(/datum/trait/positive/speed_fast,/datum/trait/positive/speed_fast_minor,/datum/trait/positive/hardy,/datum/trait/positive/hardy_plus) - + /datum/trait/positive/bloodsucker_plus name = "Evolved Bloodsucker" desc = "Makes you able to gain nutrition by draining blood as well as eating food. To compensate, you get fangs that can be used to drain blood from prey." @@ -349,10 +349,19 @@ H.verbs |= /mob/living/carbon/human/proc/bloodsuck /datum/trait/positive/sonar - name="Perceptive Hearing" + name ="Perceptive Hearing" desc = "You can hear slight vibrations in the air very easily, if you focus." cost = 1 - + /datum/trait/positive/sonar/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) H.verbs |= /mob/living/carbon/human/proc/sonar_ping + +/datum/trait/positive/toxin_gut + name ="Robust Gut" + desc = "You are immune to ingested toxins. Does not protect from possible harm caused by other drugs, meds, allergens etc." + cost = 1 + +/datum/trait/positive/toxin_gut/apply(var/datum/species/S,var/mob/living/carbon/human/H) + ..(S,H) + H.toxin_gut = TRUE diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index a029e02b75..2399b489ec 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -726,7 +726,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() remove_layer(GLASSES_LAYER) - if(!glasses) + if(!glasses || hide_glasses) // CHOMPEdit - Add "|| hide_glasses" for glasses hiding return //Not wearing glasses, no need to update anything. overlays_standing[GLASSES_LAYER] = glasses.make_worn_icon(body_type = species.get_bodytype(src), slot_name = slot_gloves_str, default_icon = INV_EYES_DEF_ICON, default_layer = GLASSES_LAYER) @@ -999,7 +999,7 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon() apply_layer(L_HAND_LAYER) /mob/living/carbon/human/proc/get_tail_layer() - var/list/lower_layer_dirs = list(SOUTH) + var/list/lower_layer_dirs = list(SOUTH, EAST, WEST) //ChompEDIT - Tail below clothing on side views too. if(tail_style) lower_layer_dirs = tail_style.lower_layer_dirs.Copy() diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 0364fd8237..8df2a4c789 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1009,7 +1009,7 @@ // Now for the regular stuff. var/matrix/M = matrix() M.Scale(desired_scale_x, desired_scale_y) - M.Translate(0, (vis_height/2)*(desired_scale_y-1)) //VOREStation edit + M.Translate(center_offset * desired_scale_x, (vis_height/2)*(desired_scale_y-1)) //CHOMPEdit src.transform = M //VOREStation edit handle_status_indicators() @@ -1212,15 +1212,15 @@ /mob/living/vv_get_header() . = ..() . += {" - [src] -
    [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"] + [src] +
    [ckey ? ckey : "No ckey"] / [real_name ? real_name : "No real name"]
    - BRUTE:[getBruteLoss()] - FIRE:[getFireLoss()] - TOXIN:[getToxLoss()] - OXY:[getOxyLoss()] - CLONE:[getCloneLoss()] - BRAIN:[getBrainLoss()] + BRUTE:[getBruteLoss()] + FIRE:[getFireLoss()] + TOXIN:[getToxLoss()] + OXY:[getOxyLoss()] + CLONE:[getCloneLoss()] + BRAIN:[getBrainLoss()]
    "} @@ -1291,4 +1291,4 @@ name = "character setup" icon = 'icons/mob/screen/midnight.dmi' icon_state = "character" - screen_loc = ui_smallquad \ No newline at end of file + screen_loc = ui_smallquad diff --git a/code/modules/mob/living/silicon/ai/ai_remote_control.dm b/code/modules/mob/living/silicon/ai/ai_remote_control.dm index ac092ed693..6fdbbbe4a9 100644 --- a/code/modules/mob/living/silicon/ai/ai_remote_control.dm +++ b/code/modules/mob/living/silicon/ai/ai_remote_control.dm @@ -24,10 +24,20 @@ return var/list/possible = list() - for(var/mob/living/silicon/robot/R as anything in GLOB.available_ai_shells) - if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) && !(using_map.ai_shell_restricted && !(R.z in using_map.ai_shell_allowed_levels)) ) //VOREStation Edit: shell restrictions - possible += R + if(R.shell && !R.deployed && (R.stat != DEAD) && (!R.connected_ai || (R.connected_ai == src) ) ) //VOREStation Edit: shell restrictions + if(istype(R.loc, /obj/machinery/recharge_station)) //Check Rechargers + var/obj/machinery/recharge_station/RS = R.loc + if(!(using_map.ai_shell_restricted && !(RS.z in using_map.ai_shell_allowed_levels))) //Allow station borgs to be redeployed from Chargers. + possible += R + + if(isbelly(R.loc)) //check belly space + var/obj/belly/B = R.loc + if(!(using_map.ai_shell_restricted && !(B.owner.z in using_map.ai_shell_allowed_levels))) //No smuggling in borgs + possible += R + + if(!(using_map.ai_shell_restricted && !(R.z in using_map.ai_shell_allowed_levels))) + possible += R if(!LAZYLEN(possible)) to_chat(src, span("warning", "No usable AI shell beacons detected.")) diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index 26ab8389a4..1af857fe40 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -161,7 +161,7 @@ update_patient() START_PROCESSING(SSobj, src) user.visible_message("[hound.name]'s [src.name] lights up as [H.name] slips inside.", "Your [src] lights up as [H] slips inside. Life support functions engaged.") - message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "JMP" : "null"])") + message_admins("[key_name(hound)] has eaten [key_name(patient)] as a dogborg. ([hound ? "JMP" : "null"])") playsound(src, gulpsound, vol = 100, vary = 1, falloff = 0.1, preference = /datum/client_preference/eating_noises) /obj/item/device/dogborg/sleeper/proc/go_out(var/target) @@ -558,7 +558,7 @@ water.add_charge(damage_gain) if(T.stat == DEAD) if(ishuman(T)) - message_admins("[key_name(hound)] has digested [key_name(T)] as a dogborg. ([hound ? "JMP" : "null"])") + message_admins("[key_name(hound)] has digested [key_name(T)] as a dogborg. ([hound ? "JMP" : "null"])") to_chat(hound, "You feel your belly slowly churn around [T], breaking them down into a soft slurry to be used as power for your systems.") to_chat(T, "You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.") var/deathsound = pick( diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9973f8c489..5a6c97b47d 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -694,6 +694,11 @@ for(var/datum/SDQL2_query/Q as anything in GLOB.sdql2_queries) Q.generate_stat() + + if(has_mentor_powers(client)) + if(statpanel("Tickets")) + GLOB.mhelp_tickets.stat_entry() + if(listed_turf && client) if(!TurfAdjacent(listed_turf)) listed_turf = null @@ -1269,4 +1274,4 @@ GLOBAL_LIST_EMPTY_TYPED(living_players_by_zlevel, /list) /mob/proc/grab_ghost(force) if(mind) - return mind.grab_ghost(force = force) + return mind.grab_ghost(force = force) \ No newline at end of file diff --git a/code/modules/mob/new_player/sprite_accessories_ear_ch.dm b/code/modules/mob/new_player/sprite_accessories_ear_ch.dm index 95a41df36a..05533bcc76 100644 --- a/code/modules/mob/new_player/sprite_accessories_ear_ch.dm +++ b/code/modules/mob/new_player/sprite_accessories_ear_ch.dm @@ -139,3 +139,18 @@ icon_state = "chorn_chub" do_colouration = 1 color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/goatflops + name = "Floppy Goat Ears" + icon = 'icons/mob/vore/ears_ch.dmi' + icon_state = "goatflops" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/ears/goatflops_horn + name = "Floppy Goat Ears (with horns)" + icon = 'icons/mob/vore/ears_ch.dmi' + icon_state = "goatflops" + extra_overlay = "goatflops_horn" + do_colouration = 1 + color_blend_mode = ICON_MULTIPLY \ No newline at end of file diff --git a/code/modules/organs/organ_icon_ch.dm b/code/modules/organs/organ_icon_ch.dm deleted file mode 100644 index dacba3d4eb..0000000000 --- a/code/modules/organs/organ_icon_ch.dm +++ /dev/null @@ -1,82 +0,0 @@ -// override the organ icon getting proc if digitigrade and not a synth - -/obj/item/organ/external/get_icon(var/skeletal) - var/digitigrade = 0 - - // preferentially take digitigrade value from owner if available, THEN DNA. - // this allows limbs to be set properly when being printed in the bioprinter without an owner - // this also allows the preview mannequin to update properly because customisation topic calls don't call a DNA check - if(owner) - digitigrade = owner.digitigrade - else if(dna) - digitigrade = dna.digitigrade - - if( !model && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) //All leg icons go through here now. - - var/gender = "m" - if(owner && owner.gender == FEMALE) - gender = "f" - - if(!force_icon_key) - icon_cache_key = "[icon_name]_[species ? species.get_bodytype() : SPECIES_HUMAN]" //VOREStation Edit - else - icon_cache_key = "[icon_name]_[force_icon_key]" - - if(force_icon) - mob_icon = new /icon(force_icon, "[icon_name][gendered_icon ? "_[gender]" : ""]") - else - if(!dna) - mob_icon = new /icon('icons/mob/human_races/r_human.dmi', "[icon_name][gendered_icon ? "_[gender]" : ""]") - else - - if(!gendered_icon) - gender = null - else - if(dna.GetUIState(DNA_UI_GENDER)) - gender = "f" - else - gender = "m" - - if(skeletal) - mob_icon = new /icon('icons/mob/human_races/r_skeleton.dmi', "[icon_name][gender ? "_[gender]" : ""]") - else if (robotic >= ORGAN_ROBOT) - mob_icon = new /icon('icons/mob/human_races/robotic.dmi', "[icon_name][gender ? "_[gender]" : ""]") - apply_colouration(mob_icon) - else - mob_icon = new /icon(digitigrade ? species.icodigi : species.get_icobase(owner, (status & ORGAN_MUTATED)), "[icon_name][gender ? "_[gender]" : ""]") - apply_colouration(mob_icon) - - //Code here is copied from organ_icon.dm line 118 at time of writing (9/20/21), VOREStation edits are left in intentionally, because I think it's worth keeping track of the fact that the code is from Virgo's edits. - //Body markings, actually does not include head this time. Done separately above. - if(!istype(src,/obj/item/organ/external/head)) - for(var/M in markings) - var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] - var/isdigitype = istype(mark_style,/datum/sprite_accessory/marking/digi) - if(!(digitigrade ^ isdigitype)) //Equivalent to XNOR; this code will only run if either both digitigrade and isdigitype are true, or if both are false. - var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") - mark_s.Blend(markings[M]["color"], mark_style.color_blend_mode) // VOREStation edit - add_overlay(mark_s) //So when it's not on your body, it has icons - mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons - icon_cache_key += "[M][markings[M]["color"]]" - if(body_hair && islist(h_col) && h_col.len >= 3) - var/cache_key = "[body_hair]-[icon_name]-[h_col[1]][h_col[2]][h_col[3]]" - if(!limb_icon_cache[cache_key]) - var/icon/I = icon(species.get_icobase(owner), "[icon_name]_[body_hair]") - I.Blend(rgb(h_col[1],h_col[2],h_col[3]), ICON_MULTIPLY) //VOREStation edit - limb_icon_cache[cache_key] = I - mob_icon.Blend(limb_icon_cache[cache_key], ICON_OVERLAY) - - // VOREStation edit start - if(nail_polish) - var/icon/I = new(nail_polish.icon, nail_polish.icon_state) - I.Blend(nail_polish.color, ICON_MULTIPLY) - add_overlay(I) - mob_icon.Blend(I, ICON_OVERLAY) - icon_cache_key += "_[nail_polish.icon]_[nail_polish.icon_state]_[nail_polish.color]" - // VOREStation edit end - dir = EAST - icon = mob_icon - return mob_icon - - else - . = ..() \ No newline at end of file diff --git a/code/modules/paperwork/adminpaper.dm b/code/modules/paperwork/adminpaper.dm index ec906ca3ad..229bcf0869 100644 --- a/code/modules/paperwork/adminpaper.dm +++ b/code/modules/paperwork/adminpaper.dm @@ -27,13 +27,13 @@ //Snapshot is crazy and likes putting each topic hyperlink on a seperate line from any other tags so it's nice and clean. interactions += "
    The fax will transmit everything above this line
    " - interactions += "Send fax " - interactions += "Pen mode: [isCrayon ? "Crayon" : "Pen"] " - interactions += "Cancel fax " + interactions += "Send fax " + interactions += "Pen mode: [isCrayon ? "Crayon" : "Pen"] " + interactions += "Cancel fax " interactions += "
    " - interactions += "Toggle Header " - interactions += "Toggle Footer " - interactions += "Clear page " + interactions += "Toggle Header " + interactions += "Toggle Footer " + interactions += "Clear page " interactions += "
    " /obj/item/weapon/paper/admin/proc/generateHeader() diff --git a/code/modules/paperwork/faxmachine.dm b/code/modules/paperwork/faxmachine.dm index 1b8da0c4c1..290d2d18aa 100644 --- a/code/modules/paperwork/faxmachine.dm +++ b/code/modules/paperwork/faxmachine.dm @@ -249,8 +249,8 @@ var/list/adminfaxes = list() //cache for faxes that have been sent to admins /obj/machinery/photocopier/faxmachine/proc/message_admins(var/mob/sender, var/faxname, var/obj/item/sent, var/reply_type, font_colour="#006100") var/msg = "[faxname]: [get_options_bar(sender, 2,1,1)]" - msg += "(REPLY): " - msg += "Receiving '[sent.name]' via secure connection ... view message" + msg += "(REPLY): " + msg += "Receiving '[sent.name]' via secure connection ... view message" for(var/client/C in GLOB.admins) if(check_rights((R_ADMIN|R_MOD|R_EVENT),0,C)) diff --git a/code/modules/persistence/datum/persistence_datum.dm b/code/modules/persistence/datum/persistence_datum.dm index 955a35377f..fb1cb166b9 100644 --- a/code/modules/persistence/datum/persistence_datum.dm +++ b/code/modules/persistence/datum/persistence_datum.dm @@ -132,7 +132,7 @@ /datum/persistent/proc/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user) if(can_modify) - . = "[thing]Destroy" + . = "[thing]Destroy" else . = "[thing]" diff --git a/code/modules/persistence/effects/graffiti.dm b/code/modules/persistence/effects/graffiti.dm index 369f9156b4..0a17787a65 100644 --- a/code/modules/persistence/effects/graffiti.dm +++ b/code/modules/persistence/effects/graffiti.dm @@ -41,6 +41,6 @@ /datum/persistent/graffiti/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user) var/obj/effect/decal/writing/save_graffiti = thing if(can_modify) - . = "[save_graffiti.message][save_graffiti.author]Destroy" + . = "[save_graffiti.message][save_graffiti.author]Destroy" else - . = "[save_graffiti.message][save_graffiti.author]" \ No newline at end of file + . = "[save_graffiti.message][save_graffiti.author]" diff --git a/code/modules/persistence/effects/paper.dm b/code/modules/persistence/effects/paper.dm index 95968274eb..26cbd83f95 100644 --- a/code/modules/persistence/effects/paper.dm +++ b/code/modules/persistence/effects/paper.dm @@ -39,7 +39,7 @@ /datum/persistent/paper/GetAdminDataStringFor(var/thing, var/can_modify, var/mob/user) var/obj/item/weapon/paper/paper = thing if(can_modify) - . = "[paper.info][paper.name][paper.last_modified_ckey]Destroy" + . = "[paper.info][paper.name][paper.last_modified_ckey]Destroy" else . = "[paper.info][paper.name][paper.last_modified_ckey]" @@ -47,4 +47,4 @@ var/obj/structure/noticeboard/board = value.loc if(istype(board)) board.remove_paper(value) - qdel(value) \ No newline at end of file + qdel(value) diff --git a/code/modules/power/grid_checker.dm b/code/modules/power/grid_checker.dm index 1409be9fef..4c302c2191 100644 --- a/code/modules/power/grid_checker.dm +++ b/code/modules/power/grid_checker.dm @@ -64,8 +64,8 @@ /obj/machinery/power/grid_checker/proc/power_failure(var/announce = TRUE) if(announce) command_announcement.Announce("Abnormal activity detected in [station_name()]'s powernet. As a precautionary measure, \ - the colony's power will be shut off for an indeterminate duration while the powernet monitor restarts automatically, or \ - when Engineering can manually resolve the issue.", + the station's power will be shut off for an indeterminate duration while the powernet monitor restarts automatically, or \ + when Engineering can manually resolve the issue.", //CHOMPEdit "Critical Power Failure", new_sound = 'sound/AI/poweroff.ogg') power_failing = TRUE diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm index 3dd58f6d7d..bdb05918c9 100644 --- a/code/modules/power/singularity/emitter.dm +++ b/code/modules/power/singularity/emitter.dm @@ -48,7 +48,7 @@ connect_to_network() /obj/machinery/power/emitter/Destroy() - message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1) + message_admins("Emitter deleted at ([x],[y],[z] - JMP)",0,1) log_game("EMITTER([x],[y],[z]) Destroyed/deleted.") investigate_log("deleted at ([x],[y],[z])","singulo") ..() @@ -72,7 +72,7 @@ if(src.active==1) src.active = 0 to_chat(user, "You turn off [src].") - message_admins("Emitter turned off by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) + message_admins("Emitter turned off by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("EMITTER([x],[y],[z]) OFF by [key_name(user)]") investigate_log("turned off by [user.key]","singulo") else @@ -80,7 +80,7 @@ to_chat(user, "You turn on [src].") src.shot_number = 0 src.fire_delay = get_initial_fire_delay() - message_admins("Emitter turned on by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) + message_admins("Emitter turned on by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("EMITTER([x],[y],[z]) ON by [key_name(user)]") investigate_log("turned on by [user.key]","singulo") update_icon() @@ -292,4 +292,4 @@ return burst_delay /obj/machinery/power/emitter/proc/get_emitter_beam() - return new /obj/item/projectile/beam/emitter(get_turf(src)) \ No newline at end of file + return new /obj/item/projectile/beam/emitter(get_turf(src)) diff --git a/code/modules/power/singularity/particle_accelerator/particle_control.dm b/code/modules/power/singularity/particle_accelerator/particle_control.dm index 9ccf421b57..0ede5d7e7d 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_control.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_control.dm @@ -88,7 +88,7 @@ if(strength > strength_upper_limit) strength = strength_upper_limit else - message_admins("PA Control Computer increased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1) + message_admins("PA Control Computer increased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("PACCEL([x],[y],[z]) [key_name(usr)] increased to [strength]") investigate_log("increased to [strength] by [usr.key]","singulo") strength_change() @@ -99,7 +99,7 @@ if(strength < 0) strength = 0 else - message_admins("PA Control Computer decreased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1) + message_admins("PA Control Computer decreased to [strength] by [key_name(usr, usr.client)](?) in ([x],[y],[z] - JMP)",0,1) log_game("PACCEL([x],[y],[z]) [key_name(usr)] decreased to [strength]") investigate_log("decreased to [strength] by [usr.key]","singulo") strength_change() @@ -184,7 +184,7 @@ /obj/machinery/particle_accelerator/control_box/proc/toggle_power() active = !active investigate_log("turned [active?"ON":"OFF"] by [usr ? usr.key : "outside forces"]","singulo") - message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? key_name(usr, usr.client) : "outside forces"](?) in ([x],[y],[z] - JMP)",0,1) + message_admins("PA Control Computer turned [active ?"ON":"OFF"] by [usr ? key_name(usr, usr.client) : "outside forces"](?) in ([x],[y],[z] - JMP)",0,1) log_game("PACCEL([x],[y],[z]) [usr ? key_name(usr, usr.client) : "outside forces"] turned [active?"ON":"OFF"].") if(active) update_use_power(USE_POWER_ACTIVE) diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 8af3bbae52..851b8fc30f 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -95,7 +95,7 @@ GLOBAL_LIST_BOILERPLATE(all_singularities, /obj/singularity) var/count = locate(/obj/machinery/containment_field) in orange(30, src) if (!count) - message_admins("A singulo has been created without containment fields active ([x], [y], [z] - JMP).") + message_admins("A singulo has been created without containment fields active ([x], [y], [z] - JMP).") investigate_log("was created. [count ? "" : "No containment fields were active."]", I_SINGULO) diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index 15c2f61f0d..44d3a748b5 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -192,7 +192,7 @@ if(G.siemens_coefficient == 0) user_protected = 1 log_game("SMES FAILURE: [src.x]X [src.y]Y [src.z]Z User: [usr.ckey], Intensity: [intensity]/100") - message_admins("SMES FAILURE: [src.x]X [src.y]Y [src.z]Z User: [usr.ckey], Intensity: [intensity]/100 - JMP") + message_admins("SMES FAILURE: [src.x]X [src.y]Y [src.z]Z User: [usr.ckey], Intensity: [intensity]/100 - JMP") var/used_hand = h_user.hand?"l_hand":"r_hand" diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm index 37568d77b1..4687f79b94 100644 --- a/code/modules/power/supermatter/supermatter.dm +++ b/code/modules/power/supermatter/supermatter.dm @@ -108,8 +108,8 @@ var/config_hallucination_power = 0.1 var/debug = 0 - - /// Cooldown tracker for accent sounds, + + /// Cooldown tracker for accent sounds, var/last_accent_sound = 0 var/datum/looping_sound/supermatter/soundloop @@ -169,7 +169,7 @@ set waitfor = 0 - message_admins("Supermatter exploded at ([x],[y],[z] - JMP)",0,1) + message_admins("Supermatter exploded at ([x],[y],[z] - JMP)",0,1) log_game("SUPERMATTER([x],[y],[z]) Exploded. Power:[power], Oxygen:[oxygen], Damage:[damage], Integrity:[get_integrity()]") anchored = TRUE grav_pulling = 1 @@ -305,7 +305,7 @@ shift_light(4,initial(light_color)) if(grav_pulling) supermatter_pull(src) - + // Vary volume by power produced. if(power) // Volume will be 1 at no power, ~12.5 at ENERGY_NITROGEN, and 20+ at ENERGY_PHORON. @@ -318,7 +318,7 @@ soundloop.mid_sounds = list('sound/machines/sm/loops/delamming.ogg' = 1) else soundloop.mid_sounds = list('sound/machines/sm/loops/calm.ogg' = 1) - + // Play Delam/Neutral sounds at rate determined by power and damage. if(last_accent_sound < world.time && prob(20)) var/aggression = min(((damage / 800) * (power / 2500)), 1.0) * 100 @@ -578,7 +578,7 @@ icon_state = "darkmatter_broken" /obj/item/broken_sm/New() - message_admins("Broken SM shard created at ([x],[y],[z] - JMP)",0,1) + message_admins("Broken SM shard created at ([x],[y],[z] - JMP)",0,1) START_PROCESSING(SSobj, src) return ..() diff --git a/code/modules/reagents/machinery/dispenser/reagent_tank.dm b/code/modules/reagents/machinery/dispenser/reagent_tank.dm index 13dc59c027..7839c7e98e 100644 --- a/code/modules/reagents/machinery/dispenser/reagent_tank.dm +++ b/code/modules/reagents/machinery/dispenser/reagent_tank.dm @@ -200,9 +200,7 @@ modded = modded ? 0 : 1 playsound(src, W.usesound, 75, 1) if (modded) - message_admins("[key_name_admin(user)] opened fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]), leaking fuel. (JMP)") - log_game("[key_name(user)] opened fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]), leaking fuel.") - leak_fuel(amount_per_transfer_from_this) + message_admins("[key_name_admin(user)] opened fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]), leaking fuel. (JMP)") if (istype(W,/obj/item/device/assembly_holder)) if (rig) to_chat(user, "There is another device in the way.") @@ -213,8 +211,7 @@ var/obj/item/device/assembly_holder/H = W if (istype(H.a_left,/obj/item/device/assembly/igniter) || istype(H.a_right,/obj/item/device/assembly/igniter)) - message_admins("[key_name_admin(user)] rigged fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) for explosion. (JMP)") - log_game("[key_name(user)] rigged fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) for explosion.") + message_admins("[key_name_admin(user)] rigged fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) for explosion. (JMP)") rig = W user.drop_item() @@ -231,7 +228,7 @@ /obj/structure/reagent_dispensers/fueltank/bullet_act(var/obj/item/projectile/Proj) if(Proj.get_structure_damage()) if(istype(Proj.firer)) - message_admins("[key_name_admin(Proj.firer)] shot fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) (JMP).") + message_admins("[key_name_admin(Proj.firer)] shot fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]) (JMP).") log_game("[key_name(Proj.firer)] shot fueltank at [loc.loc.name] ([loc.x],[loc.y],[loc.z]).") if(!istype(Proj ,/obj/item/projectile/beam/lasertag) && !istype(Proj ,/obj/item/projectile/beam/practice) ) diff --git a/code/modules/reagents/reactions/instant/instant_ch.dm b/code/modules/reagents/reactions/instant/instant_ch.dm index b3e2ab0cba..586278daef 100644 --- a/code/modules/reagents/reactions/instant/instant_ch.dm +++ b/code/modules/reagents/reactions/instant/instant_ch.dm @@ -97,29 +97,6 @@ required_reagents = list("bicaridine" = 1, "serazine" = 1, "tungsten" = 1) result_amount = 3 -/////GENDER CHANGE RECIPES///// - -/decl/chemical_reaction/instant/change_drug/male - name = "Elixer of Change" - id = "change_drug_male" - result = "change_drug_male" - required_reagents = list("blood" = 1, "mutagen" = 1, "iron" = 1) - result_amount = 1 - -/decl/chemical_reaction/instant/change_drug/female - name = "Elixer of Change" - id = "change_drug_female" - result = "change_drug_female" - required_reagents = list("blood" = 1, "mutagen" = 1, "sugar" = 1) - result_amount = 1 - -/decl/chemical_reaction/instant/change_drug/intersex - name = "Elixer of Change" - id = "change_drug_intersex" - result = "change_drug_intersex" - required_reagents = list("change_drug_male" = 1, "change_drug_female" = 1) - result_amount = 1 - // Frost oil reactions for material sheets /decl/chemical_reaction/instant/solidification/aluminium name = "Solid Aluminium" diff --git a/code/modules/reagents/reactions/instant/instant_vr.dm b/code/modules/reagents/reactions/instant/instant_vr.dm index ca91c19266..3278fdeba4 100644 --- a/code/modules/reagents/reactions/instant/instant_vr.dm +++ b/code/modules/reagents/reactions/instant/instant_vr.dm @@ -60,42 +60,42 @@ /decl/chemical_reaction/instant/androrovir name = "Androrovir" id = "androrovir" - result = "androrovir" + result = "change_drug_male" // CHOMPEdit: using chomp reagents for outputs. required_reagents = list("amorphorovir" = 1, "bicaridine" = 20, "iron" = 20, "ethanol" = 20) result_amount = 1 /decl/chemical_reaction/instant/gynorovir name = "Gynorovir" id = "gynorovir" - result = "gynorovir" + result = "change_drug_female" // CHOMPEdit: using chomp reagents for outputs. required_reagents = list("amorphorovir" = 1, "inaprovaline" = 20, "silicon" = 20, "sugar" = 20) result_amount = 1 /decl/chemical_reaction/instant/androgynorovir name = "Androgynorovir" id = "androgynorovir" - result = "androgynorovir" + result = "change_drug_intersex" // CHOMPEdit: using chomp reagents for outputs. required_reagents = list("amorphorovir" = 1, "anti_toxin" = 20, "fluorine" = 20, "tungsten" = 20) result_amount = 1 /decl/chemical_reaction/instant/androrovir_bootleg name = "Bootleg Androrovir" id = "androrovir_bootleg" - result = "androrovir" + result = "change_drug_male" // CHOMPEdit: using chomp reagents for outputs. required_reagents = list("amorphorovir" = 1, "protein" = 10, "capsaicin" = 10) result_amount = 1 /decl/chemical_reaction/instant/gynorovir_bootleg name = "Bootleg Gynorovir" id = "gynorovir_bootleg" - result = "gynorovir" + result = "change_drug_female" // CHOMPEdit: using chomp reagents for outputs. required_reagents = list("amorphorovir" = 1, "soymilk" = 10, "sugar" = 10) result_amount = 1 /decl/chemical_reaction/instant/androgynorovir_bootleg name = "Bootleg Androgynorovir" id = "androgynorovir_bootleg" - result = "androgynorovir" + result = "change_drug_intersex" // CHOMPEdit: using chomp reagents for outputs. required_reagents = list("amorphorovir" = 1, "cola" = 10, "berryjuice" = 10) result_amount = 1 diff --git a/code/modules/reagents/reagents/_reagents.dm b/code/modules/reagents/reagents/_reagents.dm index 39b75494ca..d7da310d6f 100644 --- a/code/modules/reagents/reagents/_reagents.dm +++ b/code/modules/reagents/reagents/_reagents.dm @@ -165,6 +165,9 @@ if(CHEM_BLOOD) affect_blood(M, alien, removed) if(CHEM_INGEST) + if(istype(src, /datum/reagent/toxin) && M.toxin_gut) //CHOMPAdd + remove_self(removed) + return affect_ingest(M, alien, removed * ingest_abs_mult) if(CHEM_TOUCH) affect_touch(M, alien, removed) @@ -214,7 +217,7 @@ /datum/reagent/Destroy() // This should only be called by the holder, so it's already handled clearing its references holder = null . = ..() - + //YW edit start // Called when reagents are removed from a container, most likely after metabolizing in a mob /datum/reagent/proc/on_remove(var/atom/A) diff --git a/code/modules/reagents/reagents/vore_ch.dm b/code/modules/reagents/reagents/vore_ch.dm index 208d0c30cc..f4e9b1b661 100644 --- a/code/modules/reagents/reagents/vore_ch.dm +++ b/code/modules/reagents/reagents/vore_ch.dm @@ -8,7 +8,7 @@ reagent_state = LIQUID color = "#FF9999" scannable = 1 - + /datum/reagent/aphrodisiac/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) if(!M) return @@ -37,57 +37,6 @@ else if(prob(10)) B.absorb_living(P) - if(B.reagent_mode_flags & DM_FLAG_REAGENTSABSORB && B.reagents.total_volume < B.reagents.maximum_volume) //CHOMPedit: absorption reagent production + //absorption reagent production + if(B.reagent_mode_flags & DM_FLAG_REAGENTSABSORB && B.reagents.total_volume < B.reagents.maximum_volume) B.GenerateBellyReagents_absorbed() - - -///GENDER CHANGE REAGENTS//// - -/datum/reagent/change_drug //base chemical - name = "Elixer of Change" //always the same name - id = "change_drug" - metabolism = 100 //set high enough that it does not process multiple times(delay implemented below) - description = "the bloods DNA in this seems aggressive" - taste_description = "this shouldn't be here" //unobtainable ingame - color = "#7F0000" - var/gender_change = null //set the gender variable here so we can set it to others in varients - -/datum/reagent/change_drug/male //inherits base chemical properties listed above - id = "change_drug_male" //unique ID for each varient - taste_description = "old spice odor blocker body wash" - reagent_state = LIQUID - color = "#428AFF" - gender_change = "male" - scannable = 1 - -/datum/reagent/change_drug/female - id = "change_drug_female" - taste_description = "spiced honey" - reagent_state = LIQUID - color = "#FFA0FA" - gender_change = "female" - scannable = 1 - -/datum/reagent/change_drug/intersex - id = "change_drug_intersex" - taste_description = "something salty and sweet" - reagent_state = LIQUID - color = "#CB9EFF" - gender_change = "herm" - scannable = 1 - -/datum/reagent/change_drug/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) //we need to process the change - if(alien == IS_DIONA) //doesn't work on multiple creature hiveminds - return - if(M.identifying_gender == gender_change) //don't bug them if they're already the same gender - return - if(M.gender_change_cooldown == 1) //if already done, don't bug them - return - else - M.gender_change_cooldown = 1 //set not to bug them because the chem is activating - M << "You lose focus as warmth spreads throughout your chest and abdomen." - spawn(300) //wait 30 seconds, growth takes time yo - M.gender_change_cooldown = 0 //allow it to bug them again now that we've waited - if (alert(M,"This chemical will change your gender, proceed?", "Warning", "Yes", "No") == "Yes") //check if they want this to happen for pref sake - M.change_gender_identity(gender_change) - M << "You feel like a new person" //success diff --git a/code/modules/reagents/reagents/vore_vr.dm b/code/modules/reagents/reagents/vore_vr.dm index 0fb3a74b61..9520878095 100644 --- a/code/modules/reagents/reagents/vore_vr.dm +++ b/code/modules/reagents/reagents/vore_vr.dm @@ -123,7 +123,7 @@ description = "A base medical concoction, capable of rapidly altering genetic and physical structure of the body. Requires extra processing to allow for a targeted transformation." reagent_state = LIQUID color = "#AAAAAA" - +/* CHOMPStation Removal for using Chompstation reagents over upstreams' /datum/reagent/androrovir name = "Androrovir" id = "androrovir" @@ -185,4 +185,5 @@ H.set_gender(PLURAL) H.change_gender_identity(PLURAL) H.visible_message("[H] suddenly twitches as some of their features seem to contort and reshape, adjusting... In the end, it seems they are now of mixed gender.", - "Your body suddenly contorts, feeling very different in various ways... By the time the rushing feeling is over it seems you just became of mixed gender.") \ No newline at end of file + "Your body suddenly contorts, feeling very different in various ways... By the time the rushing feeling is over it seems you just became of mixed gender.") +*/ diff --git a/code/modules/scripting/IDE.dm b/code/modules/scripting/IDE.dm index 5b6ea4daf0..f1eb26c458 100644 --- a/code/modules/scripting/IDE.dm +++ b/code/modules/scripting/IDE.dm @@ -11,7 +11,7 @@ var/tcscode=winget(src, "tcscode", "text") var/msg="[mob.name] is adding script to server [Server]: [tcscode]" log_misc(msg) - message_admins("[mob.name] has uploaded a NTLS script to [Machine.SelectedServer] ([mob.x],[mob.y],[mob.z] - JMP)",0,1) + message_admins("[mob.name] has uploaded a NTLS script to [Machine.SelectedServer] ([mob.x],[mob.y],[mob.z] - JMP)",0,1) Server.setcode( tcscode ) // this actually saves the code from input to the server src << output(null, "tcserror") // clear the errors else diff --git a/code/modules/tgui/modules/admin/player_notes.dm b/code/modules/tgui/modules/admin/player_notes.dm index 678758d7d3..6f20bdc11d 100644 --- a/code/modules/tgui/modules/admin/player_notes.dm +++ b/code/modules/tgui/modules/admin/player_notes.dm @@ -195,7 +195,7 @@ PlayerNotesPageLegacy(1, filter) /datum/admins/proc/PlayerNotesPageLegacy(page, filter) - var/dat = "Player notes - Apply Filter
    " + var/dat = "Player notes - Apply Filter
    " var/savefile/S=new("data/player_notes.sav") var/list/note_keys S >> note_keys @@ -228,7 +228,7 @@ upper_bound = min(upper_bound, note_keys.len) for(var/index = lower_bound, index <= upper_bound, index++) var/t = note_keys[index] - dat += "[t]" + dat += "[t]" dat += "
    " @@ -236,7 +236,7 @@ for(var/index = 1, index <= number_pages, index++) if(index == page) dat += "" - dat += "[index] " + dat += "[index] " if(index == page) dat += "" @@ -283,12 +283,12 @@ update_file = 1 dat += "[I.content] by [I.author] ([I.rank]) on [I.timestamp] " if(I.author == usr.key || I.author == "Adminbot" || ishost(usr)) - dat += "Remove" + dat += "Remove" dat += "

    " if(update_file) info << infos dat += "
    " - dat += "Add Comment
    " + dat += "Add Comment
    " dat += "" usr << browse(dat, "window=adminplayerinfo;size=480x480") diff --git a/code/modules/tgui/states/mentor.dm b/code/modules/tgui/states/mentor.dm new file mode 100644 index 0000000000..cca01f4c9e --- /dev/null +++ b/code/modules/tgui/states/mentor.dm @@ -0,0 +1,12 @@ + /** + * tgui state: mentor_state + * + * Checks that the user is an mentor. + **/ + +GLOBAL_DATUM_INIT(tgui_mentor_state, /datum/tgui_state/mentor_state, new) + +/datum/tgui_state/mentor_state/can_use_topic(src_object, mob/user) + if(has_mentor_powers(user.client)) + return STATUS_INTERACTIVE + return STATUS_CLOSE \ No newline at end of file diff --git a/code/modules/tgui/tgui.dm b/code/modules/tgui/tgui.dm index b09b5ec759..74d16a2e33 100644 --- a/code/modules/tgui/tgui.dm +++ b/code/modules/tgui/tgui.dm @@ -95,6 +95,7 @@ window.acquire_lock(src) if(!window.is_ready()) window.initialize( + strict_mode = TRUE, fancy = user.client.prefs.tgui_fancy, assets = list( get_asset_datum(/datum/asset/simple/tgui), @@ -347,4 +348,4 @@ #ifdef TGUI_DEBUGGING log_tgui(user, "Fallback Triggered: [href_list["payload"]], Window: [window.id], Source: [src_object]") #endif - src_object.tgui_fallback(payload) \ No newline at end of file + src_object.tgui_fallback(payload) diff --git a/code/modules/tgui/tgui_window.dm b/code/modules/tgui/tgui_window.dm index 2e1b64bac1..43e4204127 100644 --- a/code/modules/tgui/tgui_window.dm +++ b/code/modules/tgui/tgui_window.dm @@ -18,6 +18,7 @@ var/message_queue var/sent_assets = list() // Vars passed to initialize proc (and saved for later) + var/initial_strict_mode var/initial_fancy var/initial_assets var/initial_inline_html @@ -48,11 +49,15 @@ * state. You can begin sending messages right after initializing. Messages * will be put into the queue until the window finishes loading. * - * optional assets list List of assets to inline into the html. - * optional inline_html string Custom HTML to inject. - * optional fancy bool If TRUE, will hide the window titlebar. + * optional strict_mode bool - Enables strict error handling and BSOD. + * optional fancy bool - If TRUE and if this is NOT a panel, will hide the window titlebar. + * optional assets list - List of assets to load during initialization. + * optional inline_html string - Custom HTML to inject. + * optional inline_js string - Custom JS to inject. + * optional inline_css string - Custom CSS to inject. */ /datum/tgui_window/proc/initialize( + strict_mode = FALSE, fancy = FALSE, assets = list(), inline_html = "", @@ -80,6 +85,7 @@ // Generate page html var/html = SStgui.basehtml html = replacetextEx(html, "\[tgui:windowId]", id) + html = replacetextEx(html, "\[tgui:strictMode]", strict_mode) // Inject assets var/inline_assets_str = "" for(var/datum/asset/asset in assets) @@ -100,7 +106,7 @@ html = replacetextEx(html, "", inline_html) // Inject inline JS if (inline_js) - inline_js = "" + inline_js = "" html = replacetextEx(html, "", inline_js) // Inject inline CSS if (inline_css) @@ -114,6 +120,20 @@ if(!is_browser) winset(client, id, "on-close=\"uiclose [id]\"") +/** + * public + * + * Reinitializes the panel with previous data used for initialization. + */ +/datum/tgui_window/proc/reinitialize() + initialize( + strict_mode = initial_strict_mode, + fancy = initial_fancy, + assets = initial_assets, + inline_html = initial_inline_html, + inline_js = initial_inline_js, + inline_css = initial_inline_css) + /** * public * @@ -353,12 +373,7 @@ client << link(href_list["url"]) if("cacheReloaded") // Reinitialize - initialize( - fancy = initial_fancy, - assets = initial_assets, - inline_html = initial_inline_html, - inline_js = initial_inline_js, - inline_css = initial_inline_css) + reinitialize() // Resend the assets for(var/asset in sent_assets) - send_asset(asset) \ No newline at end of file + send_asset(asset) diff --git a/code/modules/vehicles/rover_vr.dm b/code/modules/vehicles/rover_vr.dm index 50d7dba8f9..5582508837 100644 --- a/code/modules/vehicles/rover_vr.dm +++ b/code/modules/vehicles/rover_vr.dm @@ -28,12 +28,11 @@ var/obj/item/weapon/key/rover/key var/siren = 0 //This is for eventually getting the siren sprite to work. - dunebuggy - name = "Research Dune Buggy" - desc = "A Dune Buggy developed for asteroid exploration and transportation. It has a sticker that says to wear EVA suits if used in space." - icon = 'icons/vore/rover_vr.dmi' - icon_state = "dunebug" - +/obj/vehicle/train/rover/engine/dunebuggy + name = "Research Dune Buggy" + desc = "A Dune Buggy developed for asteroid exploration and transportation. It has a sticker that says to wear EVA suits if used in space." + icon = 'icons/vore/rover_vr.dmi' + icon_state = "dunebug" /obj/item/weapon/key/rover name = "The Rover key" @@ -100,8 +99,9 @@ //cargo trains are open topped, so there is a chance the projectile will hit the mob ridding the train instead /obj/vehicle/train/rover/bullet_act(var/obj/item/projectile/Proj) - if(buckled_mob && prob(70)) - buckled_mob.bullet_act(Proj) + if(has_buckled_mobs() && prob(70)) + var/mob/living/L = pick(buckled_mobs) + L.bullet_act(Proj) return ..() diff --git a/code/modules/virus2/admin.dm b/code/modules/virus2/admin.dm index 5ca289bd2a..30e673960c 100644 --- a/code/modules/virus2/admin.dm +++ b/code/modules/virus2/admin.dm @@ -75,9 +75,9 @@ for(var/i = 1 to 4) var/datum/disease2/effect/Eff = s[i] H += {" - [initial(Eff.name)] - Chance: [s_chance[i]] - Multiplier: [s_multiplier[i]] + [initial(Eff.name)] + Chance: [s_chance[i]] + Multiplier: [s_multiplier[i]]
    "} H += {" @@ -91,27 +91,27 @@ continue if(!f) H += " | " else f = 0 - H += "[k]" + H += "[k]" H += {" - Reset + Reset
    - Infection Chance: [infectionchance]
    - Spread Type: [spreadtype]
    - Speed: [speed]
    - Resistance: [resistance]
    + Infection Chance: [infectionchance]
    + Spread Type: [spreadtype]
    + Speed: [speed]
    + Resistance: [resistance]

    "} f = 1 for(var/k in ALL_ANTIGENS) if(!f) H += " | " else f = 0 - H += "[k]" + H += "[k]" H += {" - Reset + Reset

    - Initial infectee: [infectee ? infectee : "(choose)"] - RELEASE + Initial infectee: [infectee ? infectee : "(choose)"] + RELEASE "} user << browse(H, "window=virus2edit") @@ -215,7 +215,7 @@ spawned_viruses += D - message_admins("[key_name_admin(usr)] infected [key_name_admin(infectee)] with a virus (Info)") + message_admins("[key_name_admin(usr)] infected [key_name_admin(infectee)] with a virus (Info)") log_admin("[key_name_admin(usr)] infected [key_name_admin(infectee)] with a virus!") infect_virus2(infectee, D, forced=1) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index d6493b3842..a0f977d789 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -57,6 +57,7 @@ var/special_entrance_sound // CHOMPEdit: Mob specific custom entry sound set by mob's init_vore when applicable var/slow_digestion = FALSE // CHOMPEdit: Gradual corpse digestion var/slow_brutal = FALSE // CHOMPEdit: Gradual corpse digestion: Stumpy's Special + var/sound_volume = 100 // CHOMPEdit: Volume knob. // Generally just used by AI var/autotransferchance = 0 // % Chance of prey being autotransferred to transfer location @@ -276,7 +277,8 @@ "autotransfer_min_amount", "autotransfer_max_amount", "slow_digestion", - "slow_brutal", //CHOMP end of variables from CHOMP + "slow_brutal", + "sound_volume", //CHOMP end of variables from CHOMP "egg_type", "save_digest_mode" ) @@ -319,6 +321,10 @@ return if(OldLoc in contents) return //Someone dropping something (or being stripdigested) + //CHOMPEdit Start - Prevent reforming causing a lot of log spam/sounds + if(istype(OldLoc, /mob/observer) || istype(OldLoc, /obj/item/device/mmi)) + return //Someone getting reformed most likely (And if not, uh... shouldn't happen anyways?) + //CHOMPEdit end //Generic entered message if(!owner.mute_entry) //CHOMPEdit @@ -334,7 +340,7 @@ if(special_entrance_sound) //CHOMPEdit: Custom sound set by mob's init_vore or ingame varedits. soundfile = special_entrance_sound if(soundfile) - playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE) + playsound(src, soundfile, vol = sound_volume, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE) //CHOPEdit recent_sound = TRUE //Messages if it's a mob @@ -499,7 +505,7 @@ else soundfile = fancy_release_sounds[release_sound] if(soundfile) - playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE) + playsound(src, soundfile, vol = sound_volume, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE) //CHOPEdit return count @@ -569,7 +575,7 @@ else soundfile = fancy_release_sounds[release_sound] if(soundfile) - playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE) + playsound(src, soundfile, vol = sound_volume, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises, volume_channel = VOLUME_CHANNEL_VORE) //CHOPEdit //Should fix your view not following you out of mobs sometimes! if(ismob(M)) var/mob/ourmob = M @@ -799,10 +805,31 @@ /obj/belly/proc/digestion_death(mob/living/M) add_attack_logs(owner, M, "Digested in [lowertext(name)]") + //CHOMPEdit Start - Reverts TF on death. This fixes a bug with posibrains or similar, and also makes reforming easier. + if(M.tf_mob_holder && M.tf_mob_holder.loc == M) + M.tf_mob_holder.ckey = M.ckey + M.tf_mob_holder.enabled = TRUE + M.tf_mob_holder.loc = M.loc + M.tf_mob_holder.forceMove(M.loc) + QDEL_LIST_NULL(M.tf_mob_holder.vore_organs) + M.tf_mob_holder.vore_organs = list() + for(var/obj/belly/B as anything in M.vore_organs) + B.loc = M.tf_mob_holder + B.forceMove(M.tf_mob_holder) + B.owner = M.tf_mob_holder + M.tf_mob_holder.vore_organs |= B + M.vore_organs -= B + + if(M.tf_mob_holder) + M.tf_mob_holder = null + //CHOMPEdit End + // If digested prey is also a pred... anyone inside their bellies gets moved up. if(is_vore_predator(M)) M.release_vore_contents(include_absorbed = TRUE, silent = TRUE) + var/obj/item/device/mmi/hasMMI // CHOMPEdit - Adjust how MMI's are handled + //Drop all items into the belly. if(config.items_survive_digestion) for(var/obj/item/W in M) @@ -811,6 +838,7 @@ var/obj/item/device/mmi/brainbox = MMI.removed() if(brainbox) items_preserved += brainbox + hasMMI = brainbox // CHOMPEdit - Adjust how MMI's are handled for(var/slot in slots) var/obj/item/I = M.get_equipped_item(slot = slot) if(I) @@ -838,10 +866,42 @@ //Incase they have the loop going, let's double check to stop it. M.stop_sound_channel(CHANNEL_PREYLOOP) // Delete the digested mob - var/mob/observer/G = M.ghostize() //CHOMPEdit start. Make sure they're out, so we can copy attack logs and such. - if(G) - G.forceMove(src) //CHOMPEdit end. - qdel(M) + //CHOMPEdit start - Changed qdel to a forceMove to allow reforming, and... handled robots special. + if(isrobot(M)) + var/mob/living/silicon/robot/R = M + if(R.mmi && R.mind && R.mmi.brainmob) + R.mmi.loc = src + items_preserved += R.mmi + var/obj/item/weapon/robot_module/MB = locate() in R.contents + if(MB) + R.mmi.brainmob.languages = MB.original_languages + else + R.mmi.brainmob.languages = R.languages + R.mmi.brainmob.remove_language("Robot Talk") + hasMMI = R.mmi + M.mind.transfer_to(hasMMI.brainmob) + R.mmi = null + else if(!R.shell) // Shells don't have brainmobs in their MMIs. + to_chat(R, "Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.") + if(R.shell) // Let the standard procedure for shells handle this. + qdel(R) + return + + if(istype(hasMMI)) + hasMMI.body_backup = M + M.enabled = FALSE + M.forceMove(hasMMI) + else + //Another CHOMPEdit started here. I left the comment here, though obviously we're doing a lot more now as well. + var/mob/observer/G = M.ghostize(FALSE) //CHOMPEdit start. Make sure they're out, so we can copy attack logs and such. + if(G) + G.forceMove(src) + G.body_backup = M + M.enabled = FALSE + M.forceMove(G) + else + qdel(M) + //CHOMPEdit End // Handle a mob being absorbed /obj/belly/proc/absorb_living(mob/living/M) @@ -1330,7 +1390,8 @@ dupe.autotransfer_min_amount = autotransfer_min_amount dupe.autotransfer_max_amount = autotransfer_max_amount dupe.slow_digestion = slow_digestion - dupe.slow_brutal = slow_brutal //CHOMP end of variables from CHOMP + dupe.slow_brutal = slow_brutal + dupe.sound_volume = sound_volume //CHOMP end of variables from CHOMP dupe.belly_fullscreen = belly_fullscreen dupe.disable_hud = disable_hud diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 3147b04ffd..490416960b 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -105,9 +105,9 @@ continue if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check if(fancy_vore) - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + M.playsound_local(get_turf(owner), play_sound, vol = sound_volume, vary = 1, falloff = VORE_SOUND_FALLOFF) //CHOMPEdit else - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + M.playsound_local(get_turf(owner), play_sound, vol = sound_volume, vary = 1, falloff = VORE_SOUND_FALLOFF) //CHOMPEdit //these are all external sound triggers now, so it's ok. return @@ -132,9 +132,9 @@ continue if(isturf(M.loc) || (M.loc != src)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check if(fancy_vore) - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + M.playsound_local(get_turf(owner), play_sound, vol = sound_volume, vary = 1, falloff = VORE_SOUND_FALLOFF) //CHOMPEdit else - M.playsound_local(get_turf(owner), play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF) + M.playsound_local(get_turf(owner), play_sound, vol = sound_volume, vary = 1, falloff = VORE_SOUND_FALLOFF) //CHOMPEdit //these are all external sound triggers now, so it's ok. if(emote_active) diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 1be038d66d..3d9ae887fc 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -515,7 +515,7 @@ forceMove(get_turf(src)) //Just move me up to the turf, let's not cascade through bellies, there's been a problem, let's just leave. for(var/mob/living/simple_mob/SA in range(10)) LAZYSET(SA.prey_excludes, src, world.time) - log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(B.owner)] ([B.owner ? "JMP" : "null"])") + log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(B.owner)] ([B.owner ? "JMP" : "null"])") B.owner.update_fullness() //CHOMPEdit - This is run whenever a belly's contents are changed. if(!ishuman(B.owner)) @@ -530,14 +530,14 @@ if(confirm != "Okay" || loc != belly) return //Actual escaping - log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(pred)] (BORG) ([pred ? "JMP" : "null"])") + log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(pred)] (BORG) ([pred ? "JMP" : "null"])") belly.go_out(src) //Just force-ejects from the borg as if they'd clicked the eject button. //You're in an AI hologram! else if(istype(loc, /obj/effect/overlay/aiholo)) var/obj/effect/overlay/aiholo/holo = loc holo.drop_prey() //Easiest way - log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(holo.master)] (AI HOLO) ([holo ? "JMP" : "null"])") + log_and_message_admins("[key_name(src)] used the OOC escape button to get out of [key_name(holo.master)] (AI HOLO) ([holo ? "JMP" : "null"])") //You're in a capture crystal! ((It's not vore but close enough!)) else if(iscapturecrystal(loc)) diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index ce7a438a16..01610d895e 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -200,6 +200,7 @@ "belly_fullscreen_color" = selected.belly_fullscreen_color, "colorization_enabled" = selected.colorization_enabled, "vorespawn_blacklist" = selected.vorespawn_blacklist, //CHOMP Addition: vorespawn blacklist + "sound_volume" = selected.sound_volume, //CHOMPAdd //CHOMP add: vore sprite options "affects_voresprite" = selected.affects_vore_sprites, "absorbed_voresprite" = selected.count_absorbed_prey_for_sprite, @@ -813,6 +814,10 @@ var/list/available_options = list("Examine", "Eject", "Move", "Transfer") if(ishuman(target)) available_options += "Transform" + //CHOMPEdit Begin - Add Reforming + if(isobserver(target) || istype(target,/obj/item/device/mmi)) + available_options += "Reform" + //CHOMPEdit End if(isliving(target)) var/mob/living/datarget = target if(datarget.client) @@ -898,6 +903,154 @@ V.tgui_interact(user) return TRUE + //CHOMPEdit Begin - Add Reforming + if("Reform") + if(host.stat) + to_chat(user,"You can't do that in your state!") + return TRUE + + if(isobserver(target)) + var/mob/observer/T = target + if(!ismob(T.body_backup) || prevent_respawns.Find(T.mind.name) || ispAI(T.body_backup)) + to_chat(user,"They don't seem to be reformable!") + return TRUE + + var/accepted = tgui_alert(T, "[host] is trying to reform your body! Would you like to get reformed inside [host]'s [lowertext(host.vore_selected.name)]?", "Reforming Attempt", list("Yes", "No")) + if(accepted != "Yes") + to_chat(user,"[T] refused to be reformed!") + return TRUE + + if(isliving(T.body_backup)) + var/mob/living/body_backup = T.body_backup + if(ishuman(body_backup)) + var/mob/living/carbon/human/H = body_backup + body_backup.adjustBruteLoss(-6) + body_backup.adjustFireLoss(-6) + body_backup.setOxyLoss(0) + if(H.isSynthetic()) + H.adjustToxLoss(-H.getToxLoss()) + else + H.adjustToxLoss(-6) + body_backup.adjustCloneLoss(-6) + body_backup.updatehealth() + // Now we do the check to see if we should revive... + var/should_proceed_with_revive = TRUE + var/obj/item/organ/internal/brain/brain = H.internal_organs_by_name[O_BRAIN] + should_proceed_with_revive &&= !H.should_have_organ(O_BRAIN) || (brain && (!istype(brain) || brain.defib_timer > 0)) + if(!H.isSynthetic()) + should_proceed_with_revive &&= !(HUSK in H.mutations) && H.can_defib + if(should_proceed_with_revive) + for(var/organ_tag in H.species.has_organ) + var/obj/item/organ/O = H.species.has_organ[organ_tag] + var/vital = initial(O.vital) //check for vital organs + if(vital) + O = H.internal_organs_by_name[organ_tag] + if(!O || O.damage > O.max_damage) + should_proceed_with_revive = FALSE + break + if(should_proceed_with_revive) + dead_mob_list.Remove(H) + if((H in living_mob_list) || (H in dead_mob_list)) + WARNING("Mob [H] was defibbed but already in the living or dead list still!") + living_mob_list += H + + H.timeofdeath = 0 + H.set_stat(UNCONSCIOUS) //Life() can bring them back to consciousness if it needs to. + H.failed_last_breath = 0 //So mobs that died of oxyloss don't revive and have perpetual out of breath. + H.reload_fullscreen() + else + body_backup.revive() + body_backup.forceMove(T.loc) + body_backup.enabled = TRUE + body_backup.ajourn = 0 + body_backup.key = T.key + body_backup.teleop = null + T.body_backup = null + host.vore_selected.release_specific_contents(T, TRUE) + if(istype(body_backup, /mob/living/simple_mob)) + var/mob/living/simple_mob/sm = body_backup + if(sm.icon_rest && sm.resting) + sm.icon_state = sm.icon_rest + else + sm.icon_state = sm.icon_living + T.update_icon() + announce_ghost_joinleave(T.mind, 0, "They now occupy their body again.") + else if(istype(target,/obj/item/device/mmi)) // A good bit of repeated code, sure, but... cleanest way to do this. + var/obj/item/device/mmi/MMI = target + if(!ismob(MMI.body_backup) || !MMI.brainmob.mind || prevent_respawns.Find(MMI.brainmob.mind.name)) + to_chat(user,"They don't seem to be reformable!") + return TRUE + var/accepted = tgui_alert(MMI.brainmob, "[host] is trying to reform your body! Would you like to get reformed inside [host]'s [lowertext(host.vore_selected.name)]?", "Reforming Attempt", list("Yes", "No")) + if(accepted != "Yes") + to_chat(user,"[MMI] refused to be reformed!") + return TRUE + + if(isliving(MMI.body_backup)) + var/mob/living/body_backup = MMI.body_backup + body_backup.enabled = TRUE + body_backup.forceMove(MMI.loc) + body_backup.ajourn = 0 + body_backup.teleop = null + //And now installing the MMI into the body... + if(isrobot(body_backup)) //Just do the reverse of getting the MMI pulled out in /obj/belly/proc/digestion_death + var/mob/living/silicon/robot/R = body_backup + R.revive() + MMI.brainmob.mind.transfer_to(R) + MMI.loc = R + R.mmi = MMI + R.mmi.brainmob.add_language("Robot Talk") + else //reference /datum/surgery_step/robotics/install_mmi/end_step + var/obj/item/organ/internal/mmi_holder/holder + if(istype(MMI, /obj/item/device/mmi/digital/posibrain)) + var/obj/item/organ/internal/mmi_holder/posibrain/holdertmp = new(body_backup, 1) + holder = holdertmp + else if(istype(MMI, /obj/item/device/mmi/digital/robot)) + var/obj/item/organ/internal/mmi_holder/robot/holdertmp = new(body_backup, 1) + holder = holdertmp + else + holder = new(body_backup, 1) + body_backup.internal_organs_by_name["brain"] = holder + MMI.loc = holder + holder.stored_mmi = MMI + holder.update_from_mmi() + + if(MMI.brainmob && MMI.brainmob.mind) + MMI.brainmob.mind.transfer_to(body_backup) + body_backup.languages = MMI.brainmob.languages + //You've hopefully already named yourself, so... not implementing that bit. + var/mob/living/carbon/human/H = body_backup + body_backup.adjustBruteLoss(-6, TRUE) + body_backup.adjustFireLoss(-6, TRUE) + body_backup.setOxyLoss(0) + H.adjustToxLoss(-H.getToxLoss()) + body_backup.adjustCloneLoss(-6) + body_backup.updatehealth() + // Now we do the check to see if we should revive... + var/should_proceed_with_revive = TRUE + var/obj/item/organ/internal/brain/brain = H.internal_organs_by_name[O_BRAIN] + should_proceed_with_revive &&= !H.should_have_organ(O_BRAIN) || (brain && brain.defib_timer > 0 ) + if(should_proceed_with_revive) + for(var/organ_tag in H.species.has_organ) + var/obj/item/organ/O = H.species.has_organ[organ_tag] + var/vital = initial(O.vital) //check for vital organs + if(vital) + O = H.internal_organs_by_name[organ_tag] + if(!O || O.damage > O.max_damage) + should_proceed_with_revive = FALSE + break + if(should_proceed_with_revive) + dead_mob_list.Remove(H) + if((H in living_mob_list) || (H in dead_mob_list)) + WARNING("Mob [H] was defibbed but already in the living or dead list still!") + living_mob_list += H + + H.timeofdeath = 0 + H.set_stat(UNCONSCIOUS) //Life() can bring them back to consciousness if it needs to. + H.failed_last_breath = 0 //So mobs that died of oxyloss don't revive and have perpetual out of breath. + H.reload_fullscreen() + MMI.body_backup = null + return TRUE + //CHOMPEdit End if("Process") var/mob/living/ourtarget = target var/list/process_options = list() @@ -1294,6 +1447,11 @@ if(voretest) SEND_SOUND(user, voretest) . = TRUE + if("b_sound_volume") //CHOMPAdd + var/sound_volume_input = tgui_input_number(user, "Set belly sound volume percentage.", "Sound Volume", null, 100, 0) + if(!isnull(sound_volume_input)) //These have to be 'null' because both cancel and 0 are valid, separate options + host.vore_selected.sound_volume = sanitize_integer(sound_volume_input, 0, 100, initial(host.vore_selected.sound_volume)) + . = TRUE if("b_tastes") host.vore_selected.can_taste = !host.vore_selected.can_taste . = TRUE diff --git a/html/create_object.html b/html/create_object.html index 7ed93d9818..47d7faf5ab 100644 --- a/html/create_object.html +++ b/html/create_object.html @@ -14,8 +14,8 @@ color: #00f; font-family: Georgia, Arial, sans-serif; } - img { - border: 0px; + img { + border: 0px; } p.lic { font-size: 6pt; @@ -26,18 +26,19 @@
    + /* hreftokenfield */ - + Type
    Offset: - + A R
    - + Number: Dir: - Name:
    - Where: + Name:
    + Where:


    - -
    + +
    - +
    - + - \ No newline at end of file + diff --git a/icons/_nanomaps/southern_cross_nanomap_z1.png b/icons/_nanomaps/southern_cross_nanomap_z1.png index fadd28df77..058771e38e 100644 Binary files a/icons/_nanomaps/southern_cross_nanomap_z1.png and b/icons/_nanomaps/southern_cross_nanomap_z1.png differ diff --git a/icons/_nanomaps/southern_cross_nanomap_z2.png b/icons/_nanomaps/southern_cross_nanomap_z2.png index 7545a6559a..c1b2bcd38a 100644 Binary files a/icons/_nanomaps/southern_cross_nanomap_z2.png and b/icons/_nanomaps/southern_cross_nanomap_z2.png differ diff --git a/icons/_nanomaps/southern_cross_nanomap_z3.png b/icons/_nanomaps/southern_cross_nanomap_z3.png index 6e255c9d5b..4a5959a25c 100644 Binary files a/icons/_nanomaps/southern_cross_nanomap_z3.png and b/icons/_nanomaps/southern_cross_nanomap_z3.png differ diff --git a/icons/inventory/eyes/mob_teshari.dmi b/icons/inventory/eyes/mob_teshari.dmi index 019d641d5c..005a87fb59 100644 Binary files a/icons/inventory/eyes/mob_teshari.dmi and b/icons/inventory/eyes/mob_teshari.dmi differ diff --git a/icons/mob/human_races/markings_ch.dmi b/icons/mob/human_races/markings_ch.dmi index 02eac76358..66334e4f82 100644 Binary files a/icons/mob/human_races/markings_ch.dmi and b/icons/mob/human_races/markings_ch.dmi differ diff --git a/icons/mob/vore/ears_ch.dmi b/icons/mob/vore/ears_ch.dmi index 02b20c340e..08497fe609 100644 Binary files a/icons/mob/vore/ears_ch.dmi and b/icons/mob/vore/ears_ch.dmi differ diff --git a/maps/groundbase/gb-centcomm.dmm b/maps/groundbase/gb-centcomm.dmm index 2e9ff9cff0..89864b7f4f 100644 --- a/maps/groundbase/gb-centcomm.dmm +++ b/maps/groundbase/gb-centcomm.dmm @@ -13678,6 +13678,7 @@ /area/centcom/terminal) "SK" = ( /obj/structure/table/reinforced, +/obj/machinery/librarycomp, /turf/simulated/floor/tiled, /area/centcom/control) "SL" = ( diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index 1ff2161fcc..1b6c0ab4e0 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -3,10 +3,17 @@ /turf/space, /area/space) "aab" = ( -/obj/effect/decal/cleanable/blood, -/obj/random/humanoidremains, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/landmark{ + name = "carpspawn" + }, +/obj/effect/landmark{ + name = "carpspawn" + }, +/obj/effect/landmark{ + name = "carpspawn" + }, +/turf/space, +/area/space) "aac" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -74,10 +81,8 @@ /turf/simulated/floor/tiled/monotile, /area/hallway/primary/firstdeck/port) "aaj" = ( -/obj/structure/table/rack, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/border_only, /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "aak" = ( @@ -109,8 +114,8 @@ /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/port) "aam" = ( -/obj/machinery/alarm{ - pixel_y = 22 +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 }, /turf/simulated/floor/tiled, /area/teleporter/firstdeck) @@ -200,14 +205,11 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftport) "aax" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/monotile, -/area/teleporter/firstdeck) -"aay" = ( -/obj/effect/floor_decal/borderfloor/corner, -/obj/effect/floor_decal/corner/green/bordercorner, -/obj/machinery/light{ - dir = 4 +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 }, /turf/simulated/floor/tiled, /area/teleporter/firstdeck) @@ -220,15 +222,13 @@ /turf/simulated/floor, /area/hallway/primary/firstdeck/auxdockaft) "aaA" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/effect/floor_decal/industrial/warning{ - dir = 5 - }, +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/deployable/barrier, /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "aaC" = ( /obj/structure/table/standard, /obj/item/bodybag/cryobag, @@ -254,62 +254,37 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "aaF" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/effect/floor_decal/steeldecal/monofloor{ + dir = 1 }, -/turf/simulated/floor/tiled/monotile, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "aaG" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/floor_decal/industrial/warning{ - dir = 4 - }, -/obj/structure/dispenser/oxygen, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) -"aaH" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/obj/machinery/turretid/stun{ + check_access = 0; + check_anomalies = 0; + check_down = 0; + check_records = 0; + pixel_x = 27; + pixel_y = 6; + req_access = null; + req_one_access = list(1,19) }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) -"aaI" = ( -/obj/structure/table/steel, -/obj/item/weapon/tool/crowbar, -/obj/item/weapon/tool/crowbar, -/obj/item/weapon/storage/toolbox/mechanical, -/obj/item/device/multitool, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - dir = 4; - name = "east bump"; - pixel_x = 24 - }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "aaM" = ( /turf/simulated/shuttle/floor, /area/shuttle/large_escape_pod2/station) @@ -323,47 +298,34 @@ /turf/simulated/floor/tiled/monotile, /area/hangar/two) "aaQ" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/obj/effect/floor_decal/industrial/warning/corner, -/turf/simulated/floor/tiled/dark, +/obj/machinery/door/firedoor/border_only, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, /area/teleporter/firstdeck) "aaR" = ( -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 8 +/obj/structure/flora/pottedplant/smelly, +/obj/effect/floor_decal/spline/fancy{ + dir = 10 }, -/turf/simulated/floor/tiled/dark, +/turf/simulated/floor/carpet/sblucarpet, /area/teleporter/firstdeck) "aaT" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/floor_decal/steeldecal/monofloor, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/effect/floor_decal/borderfloor/corner{ - dir = 4 - }, -/obj/effect/floor_decal/corner/green/bordercorner{ - dir = 4 - }, -/obj/machinery/light{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled, /area/teleporter/firstdeck) "aaU" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/light{ - dir = 8 - }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) "aaX" = ( /obj/structure/bed/chair{ dir = 1 @@ -392,14 +354,16 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "abe" = ( -/obj/structure/closet/secure_closet/guncabinet/phase{ - req_one_access = null +/obj/item/device/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_x = 21 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 }, -/obj/item/clothing/accessory/permit/gun/planetside, -/obj/item/clothing/accessory/permit/gun/planetside, -/obj/item/clothing/accessory/permit/gun/planetside, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "abg" = ( /turf/simulated/shuttle/wall/no_join, /area/shuttle/large_escape_pod2/station) @@ -436,6 +400,10 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "abq" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/structure/table/glass, +/obj/item/weapon/folder/yellow, /obj/machinery/firealarm{ dir = 1; pixel_y = -24 @@ -443,40 +411,25 @@ /turf/simulated/floor/tiled, /area/teleporter/firstdeck) "abs" = ( -/obj/machinery/door/airlock/multi_tile/glass{ - dir = 1; - name = "Outpost Prep" +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/camera/network/security{ + c_tag = "CP - Hallway"; + dir = 8 }, -/obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "abt" = ( /obj/machinery/shield_diffuser, /turf/simulated/floor/airless, /area/hallway/primary/firstdeck/auxdockfore) -"abw" = ( -/obj/machinery/vending/wallmed1{ - name = "NanoMed Wall"; - pixel_y = -30 - }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) "abx" = ( /turf/space, /turf/simulated/wall/r_wall, /area/hangar/two) -"aby" = ( -/obj/structure/closet/secure_closet/guncabinet/phase{ - req_one_access = null - }, -/obj/item/clothing/accessory/permit/gun/planetside, -/obj/item/clothing/accessory/permit/gun/planetside, -/obj/item/clothing/accessory/permit/gun/planetside, -/obj/machinery/light{ - dir = 4 - }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) "abz" = ( /obj/machinery/door/firedoor/border_only, /obj/effect/wingrille_spawn/reinforced, @@ -546,14 +499,7 @@ /turf/simulated/floor/plating, /area/construction/firstdeck/construction1) "acd" = ( -/obj/structure/table/steel, -/obj/item/weapon/tank/emergency/oxygen/engi, -/obj/random/tech_supply, -/obj/random/toolbox, -/obj/machinery/alarm{ - pixel_y = 22 - }, -/turf/simulated/floor, +/turf/simulated/floor/plating, /area/construction/firstdeck/construction1) "acg" = ( /obj/effect/floor_decal/industrial/hatch/yellow, @@ -578,16 +524,9 @@ /turf/simulated/floor/plating, /area/construction/firstdeck) "acm" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -22 - }, -/obj/structure/closet/secure_closet/explorer, -/obj/item/device/cataloguer, -/obj/item/weapon/melee/umbrella/random, -/obj/item/device/binoculars, -/turf/simulated/floor/tiled, -/area/hangar/lockerroomone) +/obj/machinery/vending/entertainer, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "acn" = ( /obj/structure/closet/secure_closet/explorer, /obj/item/device/cataloguer, @@ -742,10 +681,11 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/door/airlock{ - name = "Exploration Locker Room"; - req_access = null; - req_one_access = list(43,67) +/obj/machinery/door/airlock/glass{ + name = "Weapon Storage" + }, +/obj/effect/floor_decal/industrial/warning/corner{ + dir = 1 }, /turf/simulated/floor/tiled, /area/hangar/lockerroomone) @@ -1047,6 +987,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, /turf/simulated/floor/tiled/monotile, /area/hallway/primary/firstdeck/port) "adS" = ( @@ -1709,23 +1655,42 @@ /turf/simulated/shuttle/plating, /area/shuttle/escape_pod1/station) "agq" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/monotile, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "agr" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 6 +/obj/structure/table/glass, +/obj/effect/floor_decal/spline/fancy{ + dir = 8 }, -/turf/simulated/floor/tiled/monotile, -/area/teleporter/firstdeck) -"agt" = ( -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/carpet/sblucarpet, /area/teleporter/firstdeck) "agv" = ( -/obj/structure/table/steel, -/obj/machinery/recharger, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "agy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -1832,38 +1797,29 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralport) "agW" = ( -/obj/structure/cable{ - d2 = 4; - icon_state = "0-4" +/obj/machinery/vending/wallmed1{ + name = "NanoMed Wall"; + pixel_x = -27 }, -/obj/machinery/power/apc{ - dir = 8; - name = "west bump"; - pixel_x = -24 +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 }, /turf/simulated/floor/tiled, /area/teleporter/firstdeck) "agZ" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, /obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck) -"aha" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/turf/simulated/floor/tiled/monotile, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, /area/teleporter/firstdeck) "ahh" = ( /obj/structure/cable{ @@ -1983,17 +1939,28 @@ /turf/simulated/shuttle/floor, /area/shuttle/large_escape_pod2/station) "ahC" = ( -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck) -"ahD" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 6 + }, +/obj/structure/closet/secure_closet/security, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/camera/network/security{ + c_tag = "CP - Office"; dir = 1 }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "ahF" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "ahH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -2151,9 +2118,9 @@ /area/ai_monitored/storage/eva/aux) "ail" = ( /obj/effect/floor_decal/industrial/warning{ - dir = 4 + dir = 1 }, -/turf/simulated/floor/tiled/monotile, +/turf/simulated/floor/holofloor/tiled/dark, /area/teleporter/firstdeck) "ain" = ( /obj/structure/bed/chair{ @@ -2222,23 +2189,24 @@ /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockfore) "aiD" = ( -/obj/machinery/light{ - dir = 8 +/obj/effect/floor_decal/borderfloor{ + dir = 10 }, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 4 +/obj/effect/floor_decal/corner/green/border{ + dir = 10 }, -/turf/simulated/floor/tiled/dark, -/area/teleporter/firstdeck) -"aiE" = ( -/obj/effect/floor_decal/industrial/warning{ +/obj/machinery/vending/cola{ dir = 1 }, -/turf/simulated/floor/tiled/dark, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) -"aiF" = ( -/obj/machinery/light, -/turf/simulated/floor/tiled/monotile, +"aiE" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/machinery/vending/snack{ + dir = 1 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "aiI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -2331,13 +2299,13 @@ /turf/simulated/wall/r_wall, /area/hallway/secondary/escape/firstdeck/ep_port) "aiX" = ( -/obj/machinery/door/airlock/glass_mining{ - id_tag = "hangar_1_door"; - name = "Teleporter Bay Core"; - req_one_access = null +/obj/effect/floor_decal/borderfloor{ + dir = 4 }, -/obj/machinery/door/firedoor/glass, -/turf/simulated/floor/tiled/steel_grid, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "aiY" = ( /turf/simulated/wall/r_wall, @@ -2530,20 +2498,24 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "aki" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 4 +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 }, -/obj/machinery/light{ +/obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/effect/floor_decal/borderfloor/corner{ +/obj/effect/floor_decal/corner/green/border{ dir = 8 }, -/obj/effect/floor_decal/corner/green/bordercorner{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 }, /turf/simulated/floor/tiled, -/area/hallway/primary/firstdeck/port) +/area/teleporter/firstdeck) "akk" = ( /obj/machinery/alarm{ dir = 4; @@ -2605,14 +2577,14 @@ /turf/simulated/wall, /area/construction/firstdeck/construction1) "akP" = ( -/obj/effect/floor_decal/borderfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/effect/floor_decal/corner/green/border{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/hallway/primary/firstdeck/port) +/area/teleporter/firstdeck) "akQ" = ( /turf/simulated/floor/tiled/monotile, /area/hallway/primary/firstdeck/port) @@ -3615,16 +3587,9 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftport) "aqk" = ( -/obj/machinery/alarm{ - dir = 8; - pixel_x = 22 - }, -/obj/structure/closet/secure_closet/explorer, -/obj/item/device/cataloguer, -/obj/item/weapon/melee/umbrella/random, -/obj/item/device/binoculars, -/turf/simulated/floor/tiled, -/area/hangar/lockerroomtwo) +/obj/machinery/computer/arcade/clawmachine, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "aql" = ( /turf/simulated/wall, /area/hangar/lockerroomtwo) @@ -4852,13 +4817,6 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/ascenter) -"axI" = ( -/obj/machinery/camera/network/first_deck{ - c_tag = "First Deck - Teleporter Prep Room"; - dir = 1 - }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) "axK" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9 @@ -5102,8 +5060,17 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftstarboard) "azG" = ( -/turf/simulated/wall/r_wall, -/area/teleporter/firstdeck/prep) +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "azI" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1 @@ -5262,10 +5229,10 @@ dir = 4; icon_state = "pipe-c" }, -/obj/effect/floor_decal/borderfloor/corner{ +/obj/effect/floor_decal/borderfloor{ dir = 1 }, -/obj/effect/floor_decal/corner/green/bordercorner{ +/obj/effect/floor_decal/corner/green/border{ dir = 1 }, /turf/simulated/floor/tiled, @@ -5323,12 +5290,18 @@ /turf/simulated/floor/tiled, /area/hangar/two) "aAK" = ( -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 +/obj/machinery/recharge_station, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "aAL" = ( /obj/machinery/camera/network/cargo{ c_tag = "CRG - Cargo Hallway"; @@ -7230,6 +7203,18 @@ /obj/effect/wingrille_spawn/reinforced, /turf/simulated/floor/plating, /area/hallway/primary/firstdeck/fore) +"aKL" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "aKO" = ( /obj/structure/cable{ d2 = 8; @@ -7680,12 +7665,7 @@ /turf/simulated/shuttle/floor/darkred, /area/shuttle/expoutpost/station) "aMG" = ( -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/structure/closet/crate, -/obj/random/firstaid, -/obj/random/maintenance/medical, -/obj/item/weapon/storage/belt/utility/full, +/obj/random/mob/mouse, /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "aMJ" = ( @@ -7693,40 +7673,36 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "aML" = ( -/obj/structure/closet/crate, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/firstaid, -/obj/random/contraband, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) -"aMM" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 +/obj/effect/floor_decal/industrial/warning{ + dir = 8 }, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) +"aMM" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 9 + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) "aMN" = ( -/obj/structure/closet, -/obj/item/weapon/storage/backpack, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/industrial/warning{ + dir = 5 + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) "aMO" = ( -/obj/structure/closet/crate, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/powercell, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/structure/toilet, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "aMU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ @@ -8600,23 +8576,30 @@ /turf/simulated/floor/tiled/dark, /area/hallway/primary/firstdeck/auxdockaft) "aSi" = ( -/obj/machinery/light/small, -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) -"aSk" = ( -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 +/obj/effect/floor_decal/industrial/warning{ + dir = 4 }, -/obj/structure/catwalk, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) +"aSk" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "aSm" = ( -/obj/machinery/light/small, -/obj/random/mob/mouse, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/machinery/hyperpad/centre{ + map_pad_id = "pad_1_station"; + map_pad_link_id = "pad_1_away" + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) "aSu" = ( /obj/structure/sign/greencross{ name = "Medical Pod" @@ -10038,9 +10021,10 @@ /turf/simulated/shuttle/floor, /area/shuttle/escape_pod5/station) "brx" = ( -/obj/machinery/oxygen_pump/mobile/anesthetic, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/machinery/door/airlock, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "brP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -10054,12 +10038,17 @@ /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/aft) "brQ" = ( -/obj/structure/table/steel, -/obj/item/weapon/surgical/cautery/cyborg, -/obj/item/weapon/surgical/FixOVein, -/obj/item/weapon/handcuffs/cable/white, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "bsm" = ( /obj/structure/closet/crate, /obj/random/maintenance/clean, @@ -10074,10 +10063,14 @@ /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) "bwf" = ( -/obj/structure/table/steel, -/obj/item/weapon/surgical/retractor, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "bwS" = ( /obj/machinery/door/airlock/glass_external{ frequency = 1380; @@ -10136,13 +10129,38 @@ }, /turf/simulated/floor/tiled/steel_dirty, /area/engineering/auxiliary_engineering) +"bBI" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "bBQ" = ( -/obj/structure/table/steel, -/obj/item/weapon/surgical/scalpel, -/obj/item/weapon/surgical/hemostat, -/obj/item/weapon/storage/toolbox/mechanical, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "bCF" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 9 @@ -10407,6 +10425,13 @@ }, /turf/simulated/floor/tiled, /area/engineering/auxiliary_engineering) +"bMq" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "bMw" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -10556,6 +10581,19 @@ }, /turf/simulated/floor/plating, /area/maintenance/firstdeck/forestarboard) +"bVz" = ( +/obj/structure/table/glass, +/obj/item/toy/plushie/white_cat{ + desc = "A rather chubby looking white cat plushy. Oddly enough it looks hungry."; + name = "Frostella Plushie"; + pixel_x = 2; + pixel_y = 5 + }, +/obj/effect/floor_decal/spline/fancy{ + dir = 8 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/teleporter/firstdeck) "bVF" = ( /obj/structure/cable/green{ d1 = 4; @@ -10742,34 +10780,51 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "cfp" = ( -/obj/machinery/microscope, -/obj/structure/table/steel, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) -"cfU" = ( -/obj/machinery/optable, -/obj/random/toy, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) -"chy" = ( -/obj/structure/bed/chair{ +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/obj/effect/floor_decal/borderfloor{ dir = 8 }, -/obj/random/trash, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"cfU" = ( +/obj/effect/floor_decal/industrial/warning{ + dir = 10 + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) +"chy" = ( +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d2 = 2; + icon_state = "0-2" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "qpdld"; + name = "Checkpoint Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "chC" = ( -/obj/structure/closet/crate, -/obj/random/firstaid, -/obj/random/firstaid, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) "chO" = ( /obj/structure/table/standard, /obj/item/device/t_scanner, @@ -11165,6 +11220,23 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/storage/emergency_storage/firstdeck/fs_emergency) +"cys" = ( +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"cyK" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/window/brigdoor/southright{ + dir = 4; + req_access = null; + req_one_access = list(1,19) + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + id = "qpwld"; + name = "Checkpoint Lockdown" + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "cyL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -11303,18 +11375,64 @@ /turf/simulated/floor/tiled, /area/expoutpost/stationshuttle) "cFh" = ( -/obj/structure/table/steel, -/obj/item/weapon/storage/box/bodybags, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 9 + }, +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/obj/item/device/radio/intercom/department/security{ + dir = 8; + icon_override = "secintercom"; + pixel_x = -21 + }, +/obj/structure/table/reinforced, +/obj/machinery/recharger/wallcharger{ + pixel_x = 5; + pixel_y = 33 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"cGE" = ( +/obj/effect/floor_decal/industrial/outline/grey, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/dark, +/area/teleporter/firstdeck) +"cHp" = ( +/obj/structure/bed/chair/sofa{ + dir = 8 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/teleporter/firstdeck) "cIq" = ( -/obj/random/humanoidremains, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/filingcabinet/chestdrawer, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "cIr" = ( -/obj/machinery/light/small, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/green/bordercorner, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "cJx" = ( /obj/machinery/door/firedoor/border_only, /obj/effect/wingrille_spawn/reinforced, @@ -11344,6 +11462,10 @@ /obj/effect/floor_decal/corner/green/bordercorner, /turf/simulated/floor/tiled/monotile, /area/hallway/primary/firstdeck/ascenter) +"cOl" = ( +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "cOQ" = ( /obj/machinery/door/blast/regular{ density = 0; @@ -11365,6 +11487,12 @@ /obj/random/trash_pile, /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftport) +"cRu" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "cSw" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -11388,10 +11516,17 @@ /turf/simulated/floor/tiled, /area/hallway/secondary/escape/firstdeck/ep_starboard) "cSK" = ( -/obj/effect/decal/cleanable/blood, -/obj/machinery/light/small, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "cTd" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/atmospherics/unary/vent_pump/on{ @@ -11465,6 +11600,45 @@ /obj/structure/loot_pile/maint/boxfort, /turf/simulated/floor/plating, /area/storage/emergency_storage/firstdeck/fp_emergency) +"cVJ" = ( +/obj/machinery/button/remote/airlock{ + id = "qpdoorout"; + name = "Outer Door Control"; + pixel_x = -1; + pixel_y = 35; + req_one_access = list(1,19) + }, +/obj/machinery/computer/secure_data{ + pixel_y = 9 + }, +/obj/machinery/button/remote/airlock{ + id = "qpdoorin"; + name = "Inner Door Control"; + pixel_x = 8; + pixel_y = 35; + req_one_access = list(1,19) + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/obj/machinery/button/remote/airlock{ + id = "qpdoorout"; + name = "Outer Door Bolts"; + pixel_x = -1; + pixel_y = 24; + req_one_access = list(1,19); + specialfunctions = 4 + }, +/obj/machinery/button/remote/airlock{ + id = "qpdoorin"; + name = "Inner Door Bolts"; + pixel_x = 8; + pixel_y = 24; + req_one_access = list(1,19); + specialfunctions = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "cWs" = ( /obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 4 @@ -11474,6 +11648,20 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"cXx" = ( +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "cYg" = ( /obj/structure/ladder/up, /obj/effect/floor_decal/industrial/outline/yellow, @@ -11615,6 +11803,12 @@ }, /turf/simulated/floor/plating, /area/maintenance/firstdeck/forestarboard) +"dix" = ( +/obj/structure/bed/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "djy" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/steel_dirty, @@ -11670,6 +11864,21 @@ }, /turf/simulated/floor, /area/hallway/secondary/escape/firstdeck/ep_starboard) +"doa" = ( +/obj/effect/floor_decal/steeldecal/monofloor{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "doi" = ( /obj/effect/floor_decal/borderfloor{ dir = 10 @@ -11786,6 +11995,17 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/aft) +"dtR" = ( +/obj/structure/table/steel, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/random/tech_supply, +/obj/random/toolbox, +/obj/machinery/alarm{ + pixel_y = 22 + }, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) "dtT" = ( /obj/effect/floor_decal/industrial/warning{ dir = 6 @@ -11896,17 +12116,49 @@ /obj/machinery/door/firedoor/border_only, /turf/simulated/floor/tiled/steel_grid, /area/hallway/primary/firstdeck/ascenter) +"dDr" = ( +/obj/machinery/flasher, +/obj/effect/floor_decal/steeldecal/monofloor{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"dEi" = ( +/obj/effect/floor_decal/spline/fancy, +/obj/machinery/camera/network/security{ + c_tag = "CP - Lounge"; + dir = 8 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/teleporter/firstdeck) "dEs" = ( /obj/machinery/camera/network/first_deck{ c_tag = "Hangar Two - Exploration Locker Room Two"; dir = 4 }, /obj/structure/closet/secure_closet/guncabinet{ - req_one_access = list(67,43) + req_one_access = null + }, +/obj/machinery/alarm{ + pixel_y = 22 }, /obj/item/weapon/gun/energy/locked/frontier, -/obj/item/weapon/gun/energy/locked/frontier/carbine, /obj/item/weapon/gun/energy/locked/frontier, +/obj/item/weapon/gun/energy/locked/frontier/carbine, +/obj/item/clothing/accessory/permit/gun/planetside, +/obj/item/clothing/accessory/permit/gun/planetside, +/obj/item/clothing/accessory/permit/gun/planetside, /obj/item/clothing/accessory/permit/gun/planetside, /obj/item/clothing/accessory/permit/gun/planetside, /obj/item/clothing/accessory/permit/gun/planetside, @@ -11920,6 +12172,16 @@ }, /turf/simulated/floor/plating, /area/storage/emergency_storage/firstdeck/fp_emergency) +"dGO" = ( +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "dHq" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, @@ -12256,43 +12518,47 @@ /turf/simulated/floor/tiled/white, /area/rnd/xenobiology/xenoflora_isolation) "dVQ" = ( -/obj/structure/closet/crate, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/maintenance/clean, -/obj/random/contraband, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) -"dVT" = ( -/obj/structure/table/rack, -/obj/random/powercell, -/obj/random/powercell, -/obj/random/powercell, -/obj/item/weapon/storage/toolbox/mechanical, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) -"dVU" = ( -/obj/structure/closet, -/obj/item/weapon/storage/backpack, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/maintenance/medical, -/obj/random/firstaid, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) -"dVV" = ( -/obj/machinery/light/small{ +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ dir = 8 }, -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"dVT" = ( +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"dVU" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Checkpoint Prep Room" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) +"dVV" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) "dVW" = ( /obj/item/device/t_scanner, /obj/item/weapon/storage/box/lights/mixed, @@ -12713,12 +12979,12 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "dXe" = ( -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 +/obj/machinery/light{ + dir = 1 }, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/tiled/techmaint, +/area/teleporter/firstdeck) "dXf" = ( /turf/simulated/wall/r_wall, /area/hallway/primary/firstdeck/fpcenter) @@ -13030,12 +13296,13 @@ /turf/simulated/floor/plating, /area/rnd/xenobiology/xenoflora_isolation) "dXR" = ( -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/airlock/maintenance{ - req_access = null; - req_one_access = null +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 }, -/turf/simulated/floor/plating, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "dXU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -13728,54 +13995,75 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "dZu" = ( -/obj/machinery/light{ - dir = 8 +/obj/machinery/door/airlock/security{ + name = "Checkpoint Office"; + req_one_access = list(1,19) }, -/turf/simulated/floor/tiled/monotile, +/obj/machinery/door/firedoor/glass, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, /area/teleporter/firstdeck) "dZv" = ( -/obj/machinery/camera/network/first_deck{ - c_tag = "First Deck - Teleporter Main Room"; - dir = 6 +/obj/effect/wingrille_spawn/reinforced, +/obj/machinery/door/firedoor/glass, +/turf/simulated/floor/plating, +/area/teleporter/firstdeck) +"dZw" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 }, /turf/simulated/floor/tiled, /area/teleporter/firstdeck) -"dZw" = ( -/obj/structure/extinguisher_cabinet{ - pixel_y = 30 - }, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) "dZx" = ( -/obj/structure/table/steel, -/obj/machinery/alarm{ - pixel_y = 22 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 }, -/obj/item/weapon/storage/firstaid/regular, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "dZy" = ( -/obj/structure/table/steel, -/obj/item/roller, -/obj/item/roller, -/turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) -"dZz" = ( -/obj/structure/table/steel, -/obj/item/weapon/storage/box/backup_kit{ - pixel_x = 5; - pixel_y = 5 +/obj/structure/table/rack/shelf, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/effect/floor_decal/borderfloor{ + dir = 4 }, -/obj/item/weapon/storage/box/cdeathalarm_kit, -/obj/machinery/light{ +/obj/effect/floor_decal/corner/green/border{ dir = 4 }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) +"dZz" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "dZB" = ( -/obj/random/junk, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/industrial/warning, +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) "dZF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -14426,11 +14714,17 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "eew" = ( -/obj/machinery/hyperpad/centre{ - map_pad_id = "pad_1_station"; - map_pad_link_id = "pad_1_away" +/obj/machinery/disposal, +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, -/turf/simulated/floor/tiled/monotile, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/status_display{ + pixel_y = 31 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "eeZ" = ( /obj/structure/grille, @@ -14453,9 +14747,19 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftport) "efm" = ( -/obj/structure/table/steel, +/obj/structure/table/rack/shelf, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/effect/floor_decal/borderfloor{ + dir = 6 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 6 + }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "efN" = ( /obj/structure/closet/crate, /obj/random/action_figure, @@ -14497,6 +14801,12 @@ "ekI" = ( /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/elevator) +"elz" = ( +/obj/structure/sink{ + dir = 1 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "elZ" = ( /obj/effect/floor_decal/borderfloor, /obj/structure/cable/green{ @@ -14786,6 +15096,24 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"ezu" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + id_tag = "qpdoorout"; + name = "Checkpoint Booth" + }, +/obj/machinery/door/firedoor/multi_tile, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "qpdld"; + name = "Checkpoint Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) "eAy" = ( /obj/effect/floor_decal/borderfloor{ dir = 5 @@ -14836,6 +15164,15 @@ /obj/structure/catwalk, /turf/simulated/floor, /area/maintenance/firstdeck/forestarboard) +"eDy" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "eDP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 9 @@ -14925,6 +15262,22 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/elevator) +"eKA" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "eKQ" = ( /obj/structure/table/glass, /obj/item/weapon/storage/box/beakers{ @@ -14985,6 +15338,31 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/storage) +"eSR" = ( +/obj/structure/table/reinforced, +/obj/item/weapon/melee/umbrella{ + color = "#7c0d0d" + }, +/obj/item/weapon/melee/umbrella{ + color = "#7c0d0d" + }, +/obj/item/weapon/melee/umbrella{ + color = "#7c0d0d" + }, +/obj/item/weapon/melee/umbrella{ + color = "#7c0d0d" + }, +/obj/item/weapon/melee/umbrella{ + color = "#7c0d0d" + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "eTN" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 1 @@ -15133,10 +15511,6 @@ /obj/effect/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) -"fdz" = ( -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/turf/simulated/floor/tiled/monotile, -/area/teleporter/firstdeck/prep) "fdW" = ( /obj/item/stack/rods, /turf/space, @@ -15322,6 +15696,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, /turf/simulated/floor/tiled, /area/hangar/lockerroomtwo) "frS" = ( @@ -15388,6 +15766,15 @@ }, /turf/simulated/floor/tiled, /area/hallway/secondary/escape/firstdeck/ep_aftport) +"ftb" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "ftR" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/status_display{ @@ -15629,6 +16016,17 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/aft) +"fID" = ( +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "qpdld"; + name = "Checkpoint Lockdown"; + opacity = 0 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) "fKj" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -15655,6 +16053,21 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/xenobiology/xenoflora) +"fKT" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "fLW" = ( /obj/machinery/vending/hydronutrients{ categories = 3; @@ -15692,6 +16105,24 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/xenobiology) +"fMV" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24 + }, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/structure/cable{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "fNk" = ( /obj/structure/cable/green{ d1 = 4; @@ -15816,6 +16247,12 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 4 }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/starboard) "fWF" = ( @@ -15850,6 +16287,16 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/xenobiology/xenoflora) +"fYU" = ( +/obj/effect/floor_decal/borderfloor/corner, +/obj/effect/floor_decal/corner/red/bordercorner, +/obj/structure/table/reinforced, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "fZp" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 @@ -15976,6 +16423,11 @@ }, /turf/simulated/floor/tiled/steel, /area/quartermaster/storage) +"ggJ" = ( +/obj/structure/table/steel, +/obj/effect/floor_decal/rust, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) "ghB" = ( /obj/structure/grille, /obj/structure/shuttle/window, @@ -16046,66 +16498,37 @@ /turf/simulated/floor/tiled, /area/quartermaster/hallway) "gnl" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 1 +/obj/effect/floor_decal/steeldecal/monofloor, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 - }, -/obj/structure/cable{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/structure/cable{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, -/obj/effect/floor_decal/borderfloor{ - dir = 4 - }, -/obj/effect/floor_decal/corner/green/border{ - dir = 4 + dir = 8 }, /turf/simulated/floor/tiled, /area/teleporter/firstdeck) "gnU" = ( -/obj/effect/wingrille_spawn/reinforced, -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/effect/floor_decal/industrial/warning{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plating, -/area/teleporter/firstdeck/prep) +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) "goA" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/tiled/techmaint, +/area/teleporter/firstdeck) +"gpf" = ( +/obj/machinery/replicator/clothing, +/obj/item/toy/plushie/bigcat{ + desc = "A big, fluffy looking cat that just looks very huggable. Though, there's an odd feeling to them.."; + name = "Odd Cat Plushie" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/turf/simulated/floor/tiled/monotile, -/area/teleporter/firstdeck/prep) +/obj/effect/decal/cleanable/blood/splatter, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "gqi" = ( /obj/effect/shuttle_landmark{ base_area = /area/space; @@ -16129,13 +16552,14 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralport) "gux" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "gwv" = ( /obj/structure/table/rack, /obj/item/clothing/glasses/sunglasses, @@ -16294,10 +16718,8 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/door/airlock{ - name = "Exploration Locker Room"; - req_access = null; - req_one_access = list(43,67) +/obj/machinery/door/airlock/glass{ + name = "Weapon Storage" }, /turf/simulated/floor/tiled, /area/hangar/lockerroomtwo) @@ -16321,6 +16743,24 @@ /obj/effect/floor_decal/corner/purple/bordercorner, /turf/simulated/floor/tiled/white, /area/rnd/research/firstdeck/hallway) +"gEu" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/glass{ + name = "Checkpoint Lounge" + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) "gGZ" = ( /obj/structure/closet/emcloset/legacy, /turf/simulated/floor/tiled/dark, @@ -16367,6 +16807,35 @@ /obj/machinery/smartfridge/produce, /turf/simulated/wall, /area/rnd/xenobiology/xenoflora) +"gLc" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/item/device/radio/phone{ + pixel_y = 3 + }, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + id = "qpwld"; + name = "Checkpoint Lockdown" + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"gMA" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/bordercorner{ + dir = 1 + }, +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "gMT" = ( /obj/machinery/ai_status_display, /turf/simulated/wall, @@ -16553,15 +17022,30 @@ /turf/simulated/shuttle/floor/white, /area/shuttle/large_escape_pod2/station) "hfa" = ( -/obj/effect/floor_decal/industrial/warning, -/turf/simulated/floor/tiled/dark, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "hga" = ( -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 +/obj/machinery/light{ + dir = 4 }, -/turf/simulated/floor/tiled/monotile, -/area/teleporter/firstdeck/prep) +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "hgs" = ( /obj/structure/table/rack{ dir = 8; @@ -17038,6 +17522,21 @@ }, /turf/simulated/floor/tiled, /area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"hLP" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "hMY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -17062,6 +17561,15 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"hND" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled/monotile, +/area/hallway/primary/firstdeck/port) "hOg" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 25 @@ -17130,6 +17638,10 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/research/firstdeck/hallway) +"hSR" = ( +/obj/random/plushie, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "hTg" = ( /obj/structure/table/steel, /obj/item/weapon/storage/bag/circuits/basic, @@ -17361,6 +17873,11 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/research/firstdeck/hallway) +"ijM" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor, +/area/hangar/lockerroomtwo) "ikt" = ( /obj/structure/loot_pile/surface/medicine_cabinet/fresh{ pixel_y = 25 @@ -17411,6 +17928,10 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/rnd/xenobiology) +"ipW" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "iqu" = ( /turf/simulated/floor/tiled, /area/hallway/secondary/escape/firstdeck/ep_aftstarboard) @@ -17572,14 +18093,32 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftstarboard) "iCq" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 4 +/obj/effect/floor_decal/borderfloor{ + dir = 8 }, -/turf/simulated/floor/tiled/dark, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/item/device/radio/intercom{ + dir = 8; + name = "Station Intercom (General)"; + pixel_x = -21 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "iCS" = ( -/obj/machinery/mech_recharger, -/turf/simulated/floor/tiled/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "iDD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -17594,19 +18133,55 @@ /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/aft) "iDI" = ( -/obj/effect/floor_decal/industrial/warning{ - dir = 8 +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/turf/simulated/floor/tiled/dark, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) -"iFn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +"iEp" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + id_tag = "qpdoorin"; + name = "Processing Booth" + }, +/obj/machinery/door/blast/regular{ + density = 0; + dir = 4; + icon_state = "pdoor0"; + id = "qpdld"; + name = "Checkpoint Lockdown"; + opacity = 0 + }, +/obj/machinery/door/firedoor/multi_tile, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) +"iFn" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /turf/simulated/floor/tiled, /area/teleporter/firstdeck) "iFo" = ( @@ -17702,6 +18277,10 @@ temperature = 80 }, /area/tcomm/chamber) +"iOj" = ( +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "iPi" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 4; @@ -17775,6 +18354,11 @@ temperature = 80 }, /area/tcomm/chamber) +"iQH" = ( +/obj/structure/table/steel, +/obj/item/clothing/accessory/collar/spike, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "iRg" = ( /obj/structure/cable/cyan{ d1 = 4; @@ -18427,6 +19011,29 @@ /obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled/white, /area/rnd/research/firstdeck/hallway) +"jDV" = ( +/obj/structure/table/reinforced, +/obj/machinery/light{ + dir = 8 + }, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/item/weapon/tool/crowbar/red, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/item/device/flashlight, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "jFk" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/structure/cable/green{ @@ -18685,12 +19292,24 @@ }, /turf/simulated/floor/plating, /area/rnd/xenobiology) +"jTA" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "jUm" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) +"jUt" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "jUv" = ( /obj/structure/cable{ d1 = 4; @@ -18714,14 +19333,21 @@ /turf/simulated/floor/airless, /area/space) "jWC" = ( -/obj/machinery/camera/network/first_deck{ - c_tag = "First Deck - Teleporter Main Room"; - dir = 1 +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/structure/table/glass, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/item/weapon/pen/blue{ + pixel_x = -5; + pixel_y = -1 }, -/obj/effect/floor_decal/industrial/warning/corner{ - dir = 1 +/obj/item/weapon/pen/red{ + pixel_x = 3; + pixel_y = 5 }, -/turf/simulated/floor/tiled/dark, +/obj/machinery/light, +/turf/simulated/floor/tiled, /area/teleporter/firstdeck) "jXQ" = ( /obj/item/weapon/storage/toolbox/syndicate, @@ -19041,6 +19667,22 @@ /obj/structure/sign/warning/caution, /turf/simulated/wall/r_wall, /area/tcomm/computer) +"krK" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/obj/machinery/camera/network/security{ + c_tag = "CP - Quantum Pad"; + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "ksz" = ( /obj/structure/cable/cyan{ d1 = 1; @@ -19507,6 +20149,15 @@ /obj/machinery/recharge_station, /turf/simulated/floor/tiled/dark, /area/rnd/research/firstdeck/hallway) +"lcw" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "lcJ" = ( /obj/item/device/flashlight, /turf/simulated/floor/plating, @@ -19533,6 +20184,15 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"leD" = ( +/obj/effect/floor_decal/steeldecal/monofloor{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "lfT" = ( /obj/structure/table/glass, /obj/machinery/firealarm{ @@ -19724,19 +20384,13 @@ /turf/simulated/floor/plating, /area/maintenance/firstdeck/foreport) "lvn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/cable{ d1 = 1; d2 = 2; icon_state = "1-2" }, -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/glass_mining{ - id_tag = "hangar_1_door"; - name = "Teleporter Bay Core"; - req_one_access = null - }, /turf/simulated/floor/tiled/steel_grid, /area/teleporter/firstdeck) "lvp" = ( @@ -20524,6 +21178,11 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"muZ" = ( +/obj/effect/floor_decal/industrial/hatch/yellow, +/obj/machinery/deployable/barrier, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "mvz" = ( /obj/structure/cable/green{ d1 = 4; @@ -20794,6 +21453,38 @@ }, /turf/simulated/floor/tiled/steel, /area/construction/firstdeck/construction3) +"mKw" = ( +/obj/machinery/computer/security{ + pixel_x = 5; + pixel_y = 9 + }, +/obj/machinery/button/remote/blast_door{ + id = "qpwld"; + name = "Desk Lockdown"; + pixel_x = -4; + pixel_y = 24; + req_one_access = list(1,19) + }, +/obj/machinery/button/remote/blast_door{ + id = "qpdld"; + name = "Door Lockdown"; + pixel_x = 5; + pixel_y = 24; + req_one_access = list(1,19) + }, +/obj/machinery/button/flasher{ + pixel_x = 17; + pixel_y = 22; + req_one_access = list(1,19) + }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "mKZ" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, @@ -20812,6 +21503,17 @@ }, /turf/simulated/floor/tiled, /area/tcomm/entrance) +"mMT" = ( +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "mNh" = ( /obj/effect/floor_decal/industrial/hatch/yellow, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -21127,6 +21829,15 @@ /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled, /area/tcomm/computer) +"mZr" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "mZN" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -21480,6 +22191,12 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"nyV" = ( +/obj/structure/bed/chair/sofa/left{ + dir = 8 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/teleporter/firstdeck) "nzc" = ( /obj/effect/floor_decal/industrial/warning/corner, /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod_berth{ @@ -21500,6 +22217,14 @@ }, /turf/simulated/shuttle/plating/airless/carry, /area/shuttle/escape_pod5/station) +"nCB" = ( +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "nEc" = ( /obj/structure/cable{ d2 = 2; @@ -21645,6 +22370,18 @@ }, /turf/simulated/floor/tiled, /area/hallway/secondary/firstdeck/research_access) +"nRa" = ( +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "nRi" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -21988,9 +22725,19 @@ /turf/simulated/floor/plating, /area/rnd/xenobiology) "olL" = ( -/obj/machinery/door/firedoor/glass, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, /turf/simulated/floor/tiled, -/area/teleporter/firstdeck/prep) +/area/teleporter/firstdeck) "oma" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -22143,6 +22890,11 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology) +"owF" = ( +/obj/structure/table/steel, +/obj/item/clothing/accessory/cowledvest, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "owI" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/structure/cable{ @@ -22228,11 +22980,28 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralport) +"oBe" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "oBK" = ( -/obj/effect/floor_decal/rust, -/obj/structure/table/steel, -/turf/simulated/floor/tiled/steel_dirty, -/area/construction/firstdeck/construction1) +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "oCD" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -22253,6 +23022,10 @@ d2 = 4; icon_state = "2-4" }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/port) "oDZ" = ( @@ -22267,6 +23040,12 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/hangar/lockerroomone) "oEy" = ( @@ -22682,6 +23461,16 @@ }, /turf/simulated/floor/tiled, /area/tcomm/computer) +"pjl" = ( +/obj/structure/bed/chair/sofa/right, +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/floor_decal/spline/fancy{ + dir = 8 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/teleporter/firstdeck) "pjq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/monotile, @@ -22823,6 +23612,21 @@ }, /turf/simulated/floor/plating, /area/hangar/lockerroomthree) +"psM" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 4; + health = 1e+006 + }, +/obj/item/weapon/paper_bin, +/obj/item/weapon/pen, +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/blast/regular{ + id = "qpwld"; + name = "Checkpoint Lockdown" + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "ptP" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -22988,6 +23792,17 @@ /obj/random/junk, /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftport) +"pAv" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "pAY" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -23033,6 +23848,18 @@ /obj/effect/floor_decal/industrial/outline/grey, /turf/simulated/floor/tiled/dark, /area/hallway/secondary/firstdeck/research_access) +"pCf" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "pDa" = ( /obj/structure/cable{ d1 = 1; @@ -23133,6 +23960,21 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralstarboard) +"pKZ" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "pLh" = ( /obj/machinery/firealarm{ dir = 1; @@ -23179,6 +24021,11 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/research/firstdeck/hallway) +"pOa" = ( +/obj/structure/table/steel, +/obj/item/clothing/accessory/poncho/blue, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "pOw" = ( /obj/machinery/vending/cigarette{ dir = 1 @@ -23530,6 +24377,12 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/ascenter) +"qhA" = ( +/obj/machinery/camera/network/security{ + c_tag = "CP - Prep" + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "qhH" = ( /obj/machinery/alarm{ dir = 8; @@ -23543,15 +24396,32 @@ }, /turf/simulated/floor/tiled, /area/rnd/xenobiology) +"qii" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "qiR" = ( /obj/machinery/space_heater, /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralport) "qjI" = ( -/obj/structure/table/steel, -/turf/simulated/floor/plating, -/area/construction/firstdeck/construction1) +/obj/structure/table/rack/shelf, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "qkX" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/green{ @@ -23568,9 +24438,18 @@ /turf/simulated/floor/tiled/steel_grid, /area/ai_monitored/storage/eva/aux) "qlf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ +/obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 }, +/obj/effect/floor_decal/borderfloor/corner{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 8 + }, +/obj/machinery/light{ + dir = 8 + }, /turf/simulated/floor/tiled/monotile, /area/hallway/primary/firstdeck/port) "qls" = ( @@ -23682,18 +24561,24 @@ /obj/machinery/door/firedoor/border_only, /obj/machinery/door/airlock/maintenance{ name = "Exploration Locker Room Access"; - req_access = null; - req_one_access = list(43,67) + req_one_access = null }, /turf/simulated/floor/plating, /area/hangar/lockerroomtwo) "qrm" = ( /obj/structure/closet/secure_closet/guncabinet{ - req_one_access = list(43,67) + req_one_access = null + }, +/obj/machinery/alarm{ + dir = 8; + pixel_x = 22 }, /obj/item/weapon/gun/energy/locked/frontier, -/obj/item/weapon/gun/energy/locked/frontier/holdout, /obj/item/weapon/gun/energy/locked/frontier, +/obj/item/weapon/gun/energy/locked/frontier/carbine, +/obj/item/clothing/accessory/permit/gun/planetside, +/obj/item/clothing/accessory/permit/gun/planetside, +/obj/item/clothing/accessory/permit/gun/planetside, /obj/item/clothing/accessory/permit/gun/planetside, /obj/item/clothing/accessory/permit/gun/planetside, /obj/item/clothing/accessory/permit/gun/planetside, @@ -23754,6 +24639,13 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/aft) +"qxq" = ( +/obj/structure/bed/chair/sofa/corner, +/obj/machinery/ai_status_display{ + pixel_y = 31 + }, +/turf/simulated/floor/carpet/sblucarpet, +/area/teleporter/firstdeck) "qyi" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/wall/r_wall, @@ -24046,6 +24938,19 @@ "qOB" = ( /turf/simulated/wall, /area/hallway/secondary/firstdeck/research_access) +"qQS" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "qSb" = ( /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralstarboard) @@ -24053,6 +24958,11 @@ /obj/structure/loot_pile/maint/trash, /turf/simulated/floor/plating, /area/maintenance/firstdeck/centralstarboard) +"qSG" = ( +/obj/machinery/door/firedoor/glass, +/obj/effect/wingrille_spawn/reinforced, +/turf/simulated/floor/plating, +/area/hangar/lockerroomone) "qTi" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 9 @@ -24365,6 +25275,10 @@ }, /turf/simulated/floor/tiled, /area/hallway/secondary/escape/firstdeck/ep_starboard) +"riw" = ( +/obj/item/clothing/ears/earring/dangle, +/turf/simulated/floor/plating, +/area/maintenance/firstdeck/foreport) "rlo" = ( /obj/effect/floor_decal/borderfloor{ dir = 1 @@ -24407,6 +25321,12 @@ }, /turf/simulated/wall, /area/maintenance/firstdeck/foreport) +"roG" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 10 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "roU" = ( /obj/structure/sign/directions/security{ dir = 8 @@ -24524,6 +25444,20 @@ /obj/machinery/atmospherics/unary/vent_scrubber/on, /turf/simulated/floor, /area/tcomm/tcomstorage) +"ryn" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "ryB" = ( /obj/structure/loot_pile/maint/junk, /turf/simulated/floor, @@ -24839,10 +25773,39 @@ }, /turf/simulated/wall/r_wall, /area/hallway/primary/firstdeck/ascenter) +"rUK" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + dir = 1; + name = "Checkpoint Locker Room" + }, +/obj/machinery/door/firedoor/multi_tile{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) "rVv" = ( /obj/structure/sign/warning/secure_area, /turf/simulated/wall/r_wall, /area/tcomm/entrance) +"rVE" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "rWn" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -24906,6 +25869,18 @@ "sal" = ( /turf/simulated/shuttle/wall, /area/shuttle/large_escape_pod1/station) +"saC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "sbb" = ( /obj/machinery/alarm{ pixel_y = 23 @@ -24942,9 +25917,17 @@ /turf/simulated/floor/tiled/white, /area/rnd/research/firstdeck/hallway) "sdx" = ( -/obj/effect/decal/cleanable/blood, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/effect/floor_decal/borderfloor{ + dir = 10 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "sdN" = ( /obj/structure/filingcabinet/chestdrawer, /obj/effect/floor_decal/borderfloor{ @@ -25490,10 +26473,16 @@ /turf/simulated/floor/tiled/monotile, /area/hangar/two) "sND" = ( -/obj/structure/table/steel, -/obj/machinery/microwave, -/turf/simulated/floor/plating, -/area/maintenance/firstdeck/foreport) +/obj/item/device/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = 22 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "sNE" = ( /obj/machinery/light{ dir = 1 @@ -25519,6 +26508,13 @@ /obj/effect/floor_decal/corner/green/border, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"sQR" = ( +/obj/machinery/door/airlock/multi_tile/glass{ + name = "Quantum Checkpoint Access" + }, +/obj/machinery/door/firedoor/multi_tile, +/turf/simulated/floor/tiled/steel_grid, +/area/teleporter/firstdeck) "sRn" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 1 @@ -25797,6 +26793,24 @@ }, /turf/simulated/floor/tiled/white, /area/medical/first_aid_station/firstdeck) +"thl" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/structure/cable{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "thp" = ( /obj/structure/window/reinforced{ dir = 8 @@ -25851,6 +26865,15 @@ }, /turf/simulated/floor/tiled/white, /area/medical/first_aid_station/firstdeck) +"tiM" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "tkF" = ( /obj/effect/floor_decal/industrial/warning{ dir = 6 @@ -26499,6 +27522,15 @@ /obj/structure/catwalk, /turf/simulated/floor/plating, /area/maintenance/firstdeck/aftport) +"tUx" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light, +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/tiled/techmaint, +/area/teleporter/firstdeck) "tUz" = ( /obj/effect/floor_decal/borderfloorwhite{ dir = 8 @@ -26986,6 +28018,23 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/hallway) +"uyp" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "uyM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -27550,6 +28599,38 @@ /obj/machinery/shield_diffuser, /turf/space, /area/space) +"uXJ" = ( +/obj/structure/table/rack/shelf, +/obj/machinery/light{ + dir = 4 + }, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"uYj" = ( +/obj/effect/floor_decal/corner_steel_grid{ + dir = 5 + }, +/obj/effect/floor_decal/steeldecal/steel_decals_central5{ + dir = 8 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "uZM" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 @@ -27682,6 +28763,11 @@ /obj/structure/sign/warning/biohazard, /turf/simulated/wall/r_wall, /area/rnd/xenobiology) +"vgG" = ( +/obj/machinery/hologram/holopad, +/obj/effect/floor_decal/industrial/outline/grey, +/turf/simulated/floor/tiled/dark, +/area/teleporter/firstdeck) "vgS" = ( /obj/structure/table/standard, /obj/item/weapon/paper_bin{ @@ -27817,6 +28903,17 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/xenobiology) +"vlU" = ( +/obj/effect/floor_decal/borderfloor/corner{ + dir = 1 + }, +/obj/effect/floor_decal/corner/green/bordercorner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "vmg" = ( /obj/structure/stairs/spawner/east, /turf/simulated/floor/tiled/dark, @@ -27928,6 +29025,20 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/port) +"vpN" = ( +/obj/effect/floor_decal/steeldecal/steel_decals_central5, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/obj/structure/cable{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "vpX" = ( /obj/effect/floor_decal/industrial/warning{ dir = 9 @@ -28153,6 +29264,10 @@ }, /turf/simulated/floor/tiled/white, /area/medical/first_aid_station/firstdeck) +"vGL" = ( +/obj/structure/table/steel, +/turf/simulated/floor/plating, +/area/construction/firstdeck/construction1) "vHb" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 4 @@ -28169,6 +29284,27 @@ }, /turf/simulated/floor/tiled, /area/quartermaster/hallway) +"vHC" = ( +/obj/machinery/disposal, +/obj/effect/floor_decal/borderfloor{ + dir = 9 + }, +/obj/effect/floor_decal/corner/green/border{ + dir = 9 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) +"vIo" = ( +/obj/structure/table/rack/shelf, +/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/weapon/tank/emergency/oxygen/engi, +/obj/item/clothing/mask/gas, +/obj/machinery/light, +/obj/effect/floor_decal/borderfloor, +/obj/effect/floor_decal/corner/green/border, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "vIM" = ( /obj/machinery/computer/crew{ dir = 8 @@ -28227,6 +29363,16 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/elevator) +"vOZ" = ( +/obj/structure/dispenser/oxygen, +/obj/effect/floor_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/light{ + dir = 4 + }, +/turf/simulated/floor/holofloor/tiled/dark, +/area/teleporter/firstdeck) "vPp" = ( /obj/structure/table/standard, /obj/item/weapon/stock_parts/subspace/ansible, @@ -28269,6 +29415,26 @@ /obj/effect/floor_decal/corner/green/border, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/starboard) +"vQw" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 24 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/camera/network/security{ + c_tag = "CP - Booth"; + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "vQU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/effect/floor_decal/borderfloor, @@ -28406,6 +29572,12 @@ /obj/structure/closet/emcloset, /turf/simulated/floor/tiled, /area/hallway/secondary/escape/firstdeck/ep_aftstarboard) +"vYA" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "vYH" = ( /obj/structure/table/steel, /obj/random/tech_supply, @@ -28918,6 +30090,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/auxdockaft) +"wEy" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -22 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "wFd" = ( /obj/machinery/door/airlock/glass_external{ frequency = 1380; @@ -28960,6 +30139,16 @@ }, /turf/simulated/floor/tiled/white, /area/rnd/xenobiology) +"wIA" = ( +/obj/machinery/porta_turret/crescent, +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "wLF" = ( /obj/structure/sink{ dir = 8; @@ -29057,6 +30246,18 @@ }, /turf/space, /area/space) +"wOD" = ( +/obj/effect/floor_decal/borderfloor{ + dir = 8 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "wPy" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -29303,6 +30504,21 @@ }, /turf/simulated/floor/reinforced, /area/rnd/xenobiology) +"xdN" = ( +/obj/machinery/porta_turret/crescent, +/obj/effect/floor_decal/borderfloor{ + dir = 4 + }, +/obj/effect/floor_decal/corner/red/border{ + dir = 4 + }, +/obj/item/device/radio/intercom{ + name = "Station Intercom (General)"; + pixel_y = -22 + }, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "xdS" = ( /obj/turbolift_map_holder/southern_cross/center, /turf/unsimulated/mask, @@ -29468,6 +30684,15 @@ /obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled, /area/hallway/secondary/escape/firstdeck/ep_starboard) +"xrz" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "xrX" = ( /obj/structure/lattice, /obj/structure/grille/broken, @@ -29633,6 +30858,21 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_grid, /area/hallway/secondary/escape/firstdeck/ep_starboard) +"xFC" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 4 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/tiled/white, +/area/teleporter/firstdeck) "xGs" = ( /obj/structure/flora/pottedplant/stoutbush, /obj/structure/extinguisher_cabinet{ @@ -29693,6 +30933,13 @@ }, /turf/simulated/floor/tiled, /area/hallway/primary/firstdeck/apcenter) +"xOi" = ( +/obj/machinery/camera/network/security{ + c_tag = "CP - Locker Room" + }, +/obj/structure/closet/secure_closet/personal, +/turf/simulated/floor/tiled/techmaint, +/area/teleporter/firstdeck) "xPQ" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, @@ -29716,6 +30963,26 @@ }, /turf/simulated/shuttle/floor, /area/shuttle/escape_pod6/station) +"xQs" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 1 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 6 + }, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "xRw" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 1 @@ -29890,6 +31157,24 @@ /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/tiled, /area/rnd/xenobiology) +"xWc" = ( +/obj/effect/floor_decal/steeldecal/steel_decals4{ + dir = 10 + }, +/obj/effect/floor_decal/steeldecal/steel_decals4, +/obj/structure/cable{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/tiled, +/area/teleporter/firstdeck) "xYR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -53418,7 +54703,7 @@ aaf aaf tOo tOo -aau +ajn ajn ajn ajn @@ -53675,13 +54960,13 @@ aaa aaa aaa tOo -aau -aVW -aSf -aVW +acm +ajn +ajn +ajn cfo ajn -ajE +aFf aVW dXb ajE @@ -53932,16 +55217,16 @@ vYi aaa aaa aaa -tOo -aMG +aaj +aqk +hSR ajn -aFf -aFf -aFf -aFf -aFf -ajn -aSi +riw +aiY +aiY +aiY +aiY +aiY aiY aiY aiY @@ -54191,21 +55476,21 @@ aaa aaa aaa aCl -aMJ -aSf -aFf -sND -cfp -cFh -aFf -aTE -aVW +iQH +aMG +ajn +ajn aiY -dZu -agt +cFh +fMV +gMA +aaA +muZ +aiY +eew agq agW -aaQ +fKT iCq aiD aiY @@ -54448,20 +55733,20 @@ aaf aaa aaa aaa -aCl -ajn -aSi -aFf -brx -sdx -cIq -aFf -aMM -dXe +tOo +pOa +gpf +owF +iOj aiY -agt -eew -agq +cIq +mMT +lcw +cSK +dVQ +dZu +bBI +nRa agZ hfa iCS @@ -54706,28 +55991,28 @@ xrX aaa aaa aaa -aCl -ajn -aVW -aFf -sdx -ajn -cIr -aFf -ajn -ajn aiY -ail -ail +aiY +aiY +aiY +aiY +aiY +mKw +aam +vgG +dVT +fYU +aiY +pjl agr -agZ +bVz aaR iDI jWC aiY acd -oBK -qjI +mKZ +mKZ akN asq akV @@ -54964,28 +56249,28 @@ vYi aaa aaa aaa -tOo -aML -aVW -aFf -ajn -aab -ajn -aFf -aau -aVW aiY -dZv -ahC -ahC -agZ -ahC +aiY +aiY +aiY +aiY +aiY +cVJ +dix +cys +aaG ahC +aiY +qxq +cHp +nyV +dEi +xWc abq aiY -akN -akN -akN +dtR +ggJ +vGL akN alC akV @@ -55222,29 +56507,29 @@ vYi aaa aaa aaa -tOo -aTE -aSk -aFf -sdx -cfU -sdx -aFf -akg -aSi aiY -aam -agt -agt -aaF -agt -agt -agt -aiX -acg -acC -aki -akP +agv +aSk +cfp +sdx +aiY +gLc +cyK +psM +aiY +aiY +aiY +aiY +dZv +dZv +aiY +gEu +aiY +aiY +akN +akN +akN +akN aAy aer afd @@ -55480,29 +56765,29 @@ vYi aaf aaf aaf -tOo +aaQ aMM -aVW -aFf -ajn +aML +cfU +krK chy -ajn -aFf -dVQ -ajn -dXR -ahC -agt +uyp +wOD +wIA +chy +ryn +dZz +iCq aax -aha -ahD -agt -aiF -aiY +pCf +dXR +xQs +vYA +sQR acg acC qlf -akQ +hND adR aes akQ @@ -55738,24 +57023,24 @@ aaf aaa aaa aaa -tOo -ajn +aaQ +ail aSm -aFf +dZB brQ -ajn -aTE -aFf -aTE -ajn -aiY -ahC -ahC -aay +ezu +eKA +dDr +vpN +iEp +thl +aaF gnl +agZ +doa aaT iFn -iFn +rVE lvn mNh oCD @@ -55996,28 +57281,28 @@ aaf aaa aaa aaa -tOo +aaQ aMN -ajn -aFf -bwf -ajn -cIr -aFf -ajn -aVW -azG -olL -abs -azG +aSi gnU -azG -olL +bwf +fID +tiM +leD +bMq +fID +ahF +qQS abs azG -amq +dZw +xrz +olL +aiY +aiY +qSG acD -amq +qSG aPa adT akV @@ -56254,26 +57539,26 @@ aaa aaa aaa aaa -aCl -ajn -aTE -aFf +aiY +aiX +aiX +hga bBQ -aTE -sdx -aFf -dVT -aSf -azG -ahF -ahF -aaA -aaG +aiY +oBe +vQw +xdN +aiY +aiY +dVU +aiY +aiY +aiY aaU -ahF -aAK -azG -acm +rUK +aiY +aiY +acn oDZ qlN amq @@ -56512,25 +57797,25 @@ aaa aaa aaa aaa -aCl -ajn -aVW -aFf -aau -ajn -ajn -aFf -dVU -aVW -azG -dZw -ahF -ahF -aaH -ahF -ahF -abw -azG +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY +ftb +pKZ +qjI +aiY +goA +uYj +hLP +goA +aiY acn acE qlQ @@ -56770,25 +58055,25 @@ aaf aaa aaa aaa -aCl -ajn -aVW -aFf -ajn -sdx -ajn -aFf -ajn -aSi -azG +aiY +aAK +brx +saC +wEy +aiY +vHC +jDV +eSR +aki +vlU dZx -ahF -fdz -goA -hga -ahF -abw -azG +vIo +aiY +xOi +gux +eDy +tUx +aiY mNj acK qrm @@ -57028,25 +58313,25 @@ vYi aaa aaa aaa -tOo -aTE -aSi -aFf -aFf -aaj -ajn -aFf -aTE -ajn -azG -dZy -ahF -ahF -gux -ahF -ahF -axI -azG +aiY +aiY +aiY +sND +jUt +aiY +cXx +cys +cys +akP +cys +dVT +mZr +aiY +dXe +oBK +roG +goA +aiY amq amq amq @@ -57286,25 +58571,25 @@ vYi aaa aaa aaa -tOo +aiY aMO -aVW -aSf -aFf +brx +xFC +pAv chC -cSK -aFf -aau -ajn -azG -dZz +qii +jTA +cGE +cIr +dZy +uXJ efm -agv -aaI -agv +aiY +goA +dGO abe -aby -azG +goA +aiY aco acL adk @@ -57544,25 +58829,25 @@ vYi aaf aaf aaf -tOo -tOo -aau -aVW -aFf -aau -ajn -aFf -aFf -ajE -azG -azG -azG -azG -azG -azG -azG -azG -azG +aiY +aiY +aiY +cRu +elz +aiY +qhA +cOl +ipW +nCB +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY ajn ajM adm @@ -57802,18 +59087,18 @@ vYi aaa aaa aaa -aaa -tOo -aFf -ajE -aFf -aFf -aFf -aFf +aiY +aMO +brx +aKL +elz +aiY dVV +vOZ +dVV +aiY +aiY ajn -aFf -dZB afN aMJ gwv @@ -58060,16 +59345,16 @@ aaa ean aaa aaa -aaa -tOo -ajn -ajn -aFf -aFf -ajn -aTE -ajn -ajn +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY +aiY ajn aTE ajn @@ -68893,7 +70178,7 @@ xrX vYi vYi aaa -ean +aab aaa aaa aaa @@ -70731,7 +72016,7 @@ wgS aql nVn fqS -aqk +pII arE asE atJ @@ -70987,9 +72272,9 @@ tsa uMv vQi xva -aql +ijM gDs -aql +ijM aKj mdb atJ diff --git a/maps/southern_cross/southern_cross-2.dmm b/maps/southern_cross/southern_cross-2.dmm index f500b7a75a..610d853afb 100644 --- a/maps/southern_cross/southern_cross-2.dmm +++ b/maps/southern_cross/southern_cross-2.dmm @@ -16153,7 +16153,8 @@ anchored = 1; dir = 8; id = "EngineEmitter"; - state = 2 + state = 2; + icon_state = "emitter2" }, /obj/structure/cable/cyan{ d2 = 4; @@ -66057,6 +66058,9 @@ c_tag = "MED - Autoresleeving Bay"; dir = 4 }, +/obj/machinery/atm{ + pixel_x = -28 + }, /turf/simulated/floor/tiled/white, /area/medical/cryo/autoresleeve) "pfT" = ( @@ -125896,7 +125900,7 @@ bNV bNV bPC bRa -lWH +bSx eEj izw iho diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm index 0105184fc2..3ac09b8cca 100644 --- a/maps/southern_cross/southern_cross-3.dmm +++ b/maps/southern_cross/southern_cross-3.dmm @@ -6501,6 +6501,10 @@ /obj/structure/table/steel, /obj/item/weapon/virusdish/random, /obj/item/weapon/virusdish/random, +/obj/item/weapon/surgical/scalpel, +/obj/item/weapon/surgical/cautery, +/obj/item/weapon/surgical/FixOVein, +/obj/item/weapon/surgical/retractor, /turf/simulated/floor/plating, /area/maintenance/thirddeck/dormsstarboard) "fFq" = ( @@ -12677,6 +12681,9 @@ /obj/structure/table/steel, /obj/item/weapon/implant/sizecontrol, /obj/item/weapon/implant/dud, +/obj/item/clothing/under/rank/geneticist, +/obj/item/weapon/handcuffs/cable/white, +/obj/item/clothing/suit/storage/toggle/labcoat, /turf/simulated/floor/plating, /area/maintenance/thirddeck/dormsstarboard) "mhn" = ( @@ -18101,9 +18108,9 @@ "rnN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/button/windowtint{ + id = "vrroom"; pixel_x = 26; - pixel_y = 11; - id = "vrroom" + pixel_y = 11 }, /obj/machinery/alarm{ dir = 8; @@ -18132,8 +18139,8 @@ }, /obj/item/weapon/pen, /obj/item/weapon/tape_roll{ - pixel_y = 14; - pixel_x = -9 + pixel_x = -9; + pixel_y = 14 }, /turf/simulated/floor/tiled/techmaint, /area/crew_quarters/thirddeck/vrroom) @@ -18170,6 +18177,12 @@ /obj/structure/table, /turf/simulated/floor/plating, /area/maintenance/thirddeck/dormsatmos) +"rqw" = ( +/turf/simulated/wall{ + can_open = 1; + desc = "A huge chunk of metal used to seperate rooms. There are scratch marks along the floor." + }, +/area/maintenance/thirddeck/dormsstarboard) "rqQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -18389,8 +18402,8 @@ "rCL" = ( /obj/structure/cryofeed{ dir = 4; - pixel_y = 0; - pixel_x = -31 + pixel_x = -31; + pixel_y = 0 }, /obj/machinery/vr_sleeper{ icon_state = "body_scanner_0" @@ -19332,8 +19345,8 @@ dir = 9 }, /obj/machinery/vending/wallmed1{ - pixel_x = -25; - dir = 4 + dir = 4; + pixel_x = -25 }, /turf/simulated/floor/wood/alt/parquet, /area/crew_quarters/thirddeck/vrroom) @@ -19757,12 +19770,12 @@ }, /obj/structure/table/rack/shelf, /obj/item/weapon/towel/random{ - pixel_y = -5; - pixel_x = -5 + pixel_x = -5; + pixel_y = -5 }, /obj/item/weapon/towel/random{ - pixel_y = -5; - pixel_x = 6 + pixel_x = 6; + pixel_y = -5 }, /obj/item/weapon/towel/random{ pixel_x = -5 @@ -19780,12 +19793,12 @@ pixel_y = 5 }, /obj/item/weapon/towel/random{ - pixel_y = -5; - pixel_x = -5 + pixel_x = -5; + pixel_y = -5 }, /obj/item/weapon/towel/random{ - pixel_y = -5; - pixel_x = 6 + pixel_x = 6; + pixel_y = -5 }, /obj/item/weapon/towel/random{ pixel_x = -5 @@ -20063,6 +20076,13 @@ }, /turf/simulated/floor/wood, /area/crew_quarters/seconddeck/gym) +"tfU" = ( +/obj/machinery/oxygen_pump/mobile/anesthetic, +/obj/structure/loot_pile/surface/medicine_cabinet/fresh{ + pixel_y = 25 + }, +/turf/simulated/floor, +/area/maintenance/thirddeck/dormsstarboard) "tgc" = ( /obj/structure/sign/warning/high_voltage{ pixel_x = -32 @@ -20136,8 +20156,8 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/sign/securearea{ - icon_state = "atmos_waste"; desc = "VR-Room under construction, not all of it's features have been implemented yet."; + icon_state = "atmos_waste"; name = "A warning sign which reads 'UNDER CONSTRUCTION'."; pixel_x = -32 }, @@ -21087,8 +21107,8 @@ "udn" = ( /obj/machinery/disposal/wall{ dir = 4; - pixel_y = 0; - pixel_x = -37 + pixel_x = -37; + pixel_y = 0 }, /obj/structure/disposalpipe/trunk{ dir = 4 @@ -24037,8 +24057,8 @@ dir = 8 }, /obj/structure/sign/securearea{ - icon_state = "atmos_waste"; desc = "VR-Room under construction, not all of it's features have been implemented yet."; + icon_state = "atmos_waste"; name = "A warning sign which reads 'UNDER CONSTRUCTION'."; pixel_x = -32 }, @@ -24627,8 +24647,8 @@ dir = 10 }, /obj/machinery/vending/wallmed1{ - pixel_x = -25; - dir = 4 + dir = 4; + pixel_x = -25 }, /turf/simulated/floor/wood/alt/parquet, /area/crew_quarters/thirddeck/vrroom) @@ -24996,6 +25016,7 @@ /obj/effect/decal/cleanable/generic, /obj/item/weapon/implanter, /obj/structure/table/steel, +/obj/item/weapon/storage/toolbox/mechanical, /turf/simulated/floor/plating, /area/maintenance/thirddeck/dormsstarboard) "xob" = ( @@ -25036,8 +25057,8 @@ }, /obj/machinery/disposal/wall{ dir = 8; - pixel_y = 0; - pixel_x = 35 + pixel_x = 35; + pixel_y = 0 }, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -25742,13 +25763,7 @@ /turf/simulated/floor/plating, /area/maintenance/thirddeck/dormsstarboard) "xRv" = ( -/obj/item/clothing/under/rank/geneticist, -/obj/item/clothing/under/rank/geneticist, -/obj/item/clothing/under/rank/geneticist_new, -/obj/structure/table/rack, -/obj/structure/loot_pile/surface/medicine_cabinet/fresh{ - pixel_y = 25 - }, +/obj/machinery/optable, /turf/simulated/floor/plating, /area/maintenance/thirddeck/dormsstarboard) "xRV" = ( @@ -64941,7 +64956,7 @@ sJM sJM sJM sJM -sJM +rqw sJM izz qRF @@ -65712,7 +65727,7 @@ jhg jhg jhg qaU -qaU +tfU yeL fFk fZP @@ -65969,7 +65984,7 @@ jhg jhg jhg jhg -jhg +qaU qaU yfn qaU diff --git a/maps/stellar_delight/ship_centcom.dmm b/maps/stellar_delight/ship_centcom.dmm index 18b7e0ce50..54048e59db 100644 --- a/maps/stellar_delight/ship_centcom.dmm +++ b/maps/stellar_delight/ship_centcom.dmm @@ -4501,6 +4501,7 @@ /area/shuttle/ccboat) "qB" = ( /obj/structure/table/reinforced, +/obj/machinery/librarycomp, /turf/simulated/floor/tiled, /area/centcom/control) "qE" = ( diff --git a/maps/submaps/surface_submaps/wilderness/AmbushBase.dmm b/maps/submaps/surface_submaps/wilderness/AmbushBase.dmm index 1fcdb16c2a..7cd7734054 100644 --- a/maps/submaps/surface_submaps/wilderness/AmbushBase.dmm +++ b/maps/submaps/surface_submaps/wilderness/AmbushBase.dmm @@ -93,12 +93,27 @@ /area/submap/DugOutMercs) "dI" = ( /obj/structure/table/rack, +/obj/item/weapon/gun/energy/vepr, +/obj/item/weapon/gun/energy/laser, /obj/random/energy, /obj/random/energy, -/obj/random/energy, -/obj/random/energy, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) +"eg" = ( +/obj/structure/table/standard, +/obj/effect/floor_decal/corner/blue/border{ + dir = 1 + }, +/obj/random/material/precious, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled, +/area/submap/DugOutMercs) "el" = ( /obj/random/mob/merc/all, /obj/effect/floor_decal/corner/paleblue/diagonal, @@ -127,6 +142,7 @@ /obj/structure/table/standard, /obj/item/weapon/gun/magnetic/gasthrower, /obj/item/weapon/strangerock, +/obj/item/weapon/cell/device/weapon/recharge/alien/omni, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "fL" = ( @@ -171,6 +187,7 @@ /obj/structure/table/bench/padded, /mob/living/simple_mob/humanoid/merc/ranged/deagle, /obj/effect/floor_decal/corner/red/diagonal, +/obj/machinery/light, /turf/simulated/floor/tiled, /area/submap/DugOutMercs) "iL" = ( @@ -188,6 +205,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 10 }, +/obj/machinery/light, /turf/simulated/floor/tiled, /area/submap/DugOutMercs) "jz" = ( @@ -242,6 +260,13 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 5 }, +/obj/structure/table/rack, +/obj/item/weapon/card/id/silver{ + access = list(103) + }, +/obj/item/weapon/card/id/silver{ + access = list(103) + }, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "mv" = ( @@ -255,6 +280,7 @@ /obj/random/maintenance/research, /obj/random/maintenance/research, /obj/item/weapon/weldingtool/alien, +/obj/item/weapon/cell/device/weapon/recharge/alien/hybrid, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "mY" = ( @@ -268,6 +294,12 @@ }, /turf/simulated/floor/tiled, /area/submap/DugOutMercs) +"op" = ( +/obj/effect/floor_decal/corner/blue/border, +/obj/machinery/portable_atmospherics/canister/empty/oxygen, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/submap/DugOutMercs) "oq" = ( /obj/structure/ledge/ledge_stairs, /mob/living/simple_mob/humanoid/merc/melee/sword, @@ -282,6 +314,9 @@ /obj/item/clothing/suit/space/syndicate/black/blue, /obj/item/clothing/head/helmet/space/syndicate/black/blue, /obj/item/weapon/tank/oxygen/welded, +/obj/machinery/light{ + dir = 1 + }, /turf/simulated/floor/tiled, /area/submap/DugOutMercs) "oN" = ( @@ -292,7 +327,9 @@ /turf/simulated/floor/water/deep, /area/submap/DugOutMercs) "oU" = ( -/obj/machinery/door/airlock/engineering, +/obj/machinery/door/airlock/engineering{ + locked = 1 + }, /turf/simulated/floor/tiled/techfloor/grid, /area/submap/DugOutMercs) "pf" = ( @@ -310,10 +347,24 @@ "po" = ( /turf/simulated/floor/water/deep, /area/submap/DugOutMercs) +"qN" = ( +/obj/effect/floor_decal/corner/lightgrey/diagonal, +/obj/machinery/light{ + dir = 8 + }, +/turf/simulated/floor/tiled/hydro, +/area/submap/DugOutMercs) "qR" = ( /obj/effect/floor_decal/borderfloorblack{ dir = 6 }, +/obj/structure/table/rack, +/obj/item/weapon/card/id/silver{ + access = list(103) + }, +/obj/item/weapon/card/id/silver{ + access = list(103) + }, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "rd" = ( @@ -338,6 +389,7 @@ /obj/effect/floor_decal/borderfloor{ dir = 6 }, +/obj/machinery/light, /turf/simulated/floor/tiled, /area/submap/DugOutMercs) "rr" = ( @@ -459,6 +511,12 @@ /obj/item/weapon/tank/oxygen/welded, /turf/simulated/floor/tiled, /area/submap/DugOutMercs) +"xy" = ( +/obj/machinery/door/airlock/highsecurity{ + locked = 1 + }, +/turf/simulated/floor/tiled, +/area/submap/DugOutMercs) "xC" = ( /obj/effect/floor_decal/corner/mauve/diagonal, /obj/structure/table/standard, @@ -532,10 +590,14 @@ /area/submap/DugOutMercs) "Ca" = ( /obj/structure/table/rack, -/obj/item/weapon/cell/device/weapon, -/obj/item/weapon/cell/device/weapon, -/obj/item/weapon/cell/device/weapon, -/obj/item/weapon/cell/device/weapon, +/obj/random/projectile/shotgun, +/obj/random/projectile/shotgun, +/obj/item/weapon/gun/projectile/automatic/as24, +/obj/item/ammo_magazine/ammo_box/b12g/flechette, +/obj/item/ammo_magazine/ammo_box/b12g/flechette, +/obj/item/ammo_magazine/ammo_box/b12g/flechette, +/obj/item/ammo_magazine/ammo_box/b12g/flechette, +/obj/item/weapon/gun/projectile/shotgun/compact, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "Cl" = ( @@ -774,6 +836,9 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 9 }, +/obj/structure/table/rack, +/obj/item/weapon/rig/pmc/security, +/obj/item/weapon/rig/pmc/medical, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "Lg" = ( @@ -890,6 +955,11 @@ /obj/effect/floor_decal/corner/red/diagonal, /turf/simulated/floor/tiled, /area/submap/DugOutMercs) +"Sl" = ( +/obj/effect/floor_decal/corner/blue/border, +/obj/machinery/light, +/turf/simulated/floor/tiled, +/area/submap/DugOutMercs) "Sn" = ( /obj/machinery/light{ dir = 1 @@ -984,6 +1054,9 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 10 }, +/obj/structure/table/rack, +/obj/item/weapon/rig/pmc/security, +/obj/item/weapon/rig/pmc/medical, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "Wx" = ( @@ -1021,6 +1094,11 @@ /obj/effect/floor_decal/borderfloorblack{ dir = 8 }, +/obj/structure/table/rack, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145, +/obj/item/ammo_magazine/ammo_box/b145/highvel, /turf/simulated/floor/tiled/techmaint, /area/submap/DugOutMercs) "YD" = ( @@ -1344,7 +1422,7 @@ OP RS Rz sc -sc +qN sc sc uv @@ -1848,7 +1926,7 @@ uv uv uv uv -yc +xy uv uv uv @@ -2100,7 +2178,7 @@ aQ uv uv uv -yc +xy uv uv uv @@ -2182,11 +2260,11 @@ Rz Qf Qf uv -kW +eg fS fS Jh -YD +op uv nZ yG @@ -2438,10 +2516,10 @@ oC NM Zt SN -Fr +Sl uv nZ -Nr +yG Da Qf Qf diff --git a/maps/submaps/surface_submaps/wilderness/CultBar.dmm b/maps/submaps/surface_submaps/wilderness/CultBar.dmm index 0696c6ebc5..b57eea005e 100644 --- a/maps/submaps/surface_submaps/wilderness/CultBar.dmm +++ b/maps/submaps/surface_submaps/wilderness/CultBar.dmm @@ -85,10 +85,6 @@ /obj/effect/floor_decal/corner/red/diagonal, /turf/simulated/floor/tiled/asteroid_steel, /area/submap/CultBar) -"dh" = ( -/obj/structure/flora/lily1, -/turf/simulated/floor/water/ocean, -/area/template_noop) "dt" = ( /turf/simulated/floor/wood/sif/broken, /area/submap/CultBar) @@ -114,9 +110,6 @@ /obj/effect/floor_decal/corner/lightgrey/diagonal, /turf/simulated/floor/tiled/freezer, /area/submap/CultBar) -"ei" = ( -/turf/simulated/floor/outdoors/grass, -/area/template_noop) "ez" = ( /obj/effect/decal/cleanable/blood, /obj/effect/decal/cleanable/dirt, @@ -339,11 +332,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/wood/sif, /area/submap/CultBar) -"mD" = ( -/obj/structure/flora/ausbushes/reedbush, -/obj/structure/flora/ausbushes/sparsegrass, -/turf/simulated/floor/water/ocean, -/area/template_noop) "mQ" = ( /obj/effect/decal/cleanable/blood/gibs, /turf/simulated/floor/carpet, @@ -508,10 +496,6 @@ /obj/structure/loot_pile/surface/bones, /turf/simulated/floor/tiled/freezer, /area/submap/CultBar) -"va" = ( -/obj/structure/flora/lily2, -/turf/simulated/floor/water/ocean, -/area/template_noop) "wr" = ( /mob/living/simple_mob/humanoid/cultist/hunter, /obj/effect/decal/cleanable/dirt, @@ -674,10 +658,6 @@ /obj/effect/floor_decal/corner/red/diagonal, /turf/simulated/floor/tiled/asteroid_steel, /area/submap/CultBar) -"DS" = ( -/obj/structure/flora/ausbushes/reedbush, -/turf/simulated/floor/water/ocean, -/area/template_noop) "DY" = ( /obj/effect/gibspawner/human, /turf/simulated/floor/wood/sif, @@ -1095,10 +1075,6 @@ /obj/effect/floor_decal/corner/lightgrey/diagonal, /turf/simulated/floor/tiled/freezer, /area/submap/CultBar) -"Ww" = ( -/obj/structure/flora/ausbushes/sunnybush, -/turf/simulated/floor/outdoors/grass, -/area/template_noop) "WL" = ( /obj/machinery/light/small/flicker, /obj/effect/decal/cleanable/blood, @@ -1189,7 +1165,7 @@ /turf/simulated/floor/wood/sif/broken, /area/submap/CultBar) "ZZ" = ( -/obj/structure/window/basic, +/obj/structure/window/plastitanium, /obj/structure/curtain, /turf/simulated/floor/wood/sif, /area/submap/CultBar) @@ -1271,36 +1247,36 @@ ok (3,1,1) = {" ok ok -ok -ok -ok -ok -ok -ok -ok -ID -ei -ei -ID -ei -Ww -ei -ID -ID -ok -ok -ok -ok -ID -ID -ID -ID -ok -ok -ok -ok -ok -ok +Ti +Ti +Ti +Ti +Ti +Ti +Ti +wt +fF +fF +wt +fF +jy +fF +wt +wt +Ti +Ti +Ti +Ti +wt +wt +wt +wt +Ti +Ti +Ti +Ti +Ti +Ti ok ok ok @@ -1308,7 +1284,7 @@ ok (4,1,1) = {" ok ok -ok +Ti Wf wt wt @@ -1337,7 +1313,7 @@ wt Ti wt wt -ok +Ti ok ok ok @@ -1345,7 +1321,7 @@ ok (5,1,1) = {" ok ok -ok +Ti wt VZ VZ @@ -1374,7 +1350,7 @@ fF Om wt wt -ID +wt ok ok ok @@ -1382,7 +1358,7 @@ ok (6,1,1) = {" ok ok -ID +wt wt VZ Sn @@ -1411,7 +1387,7 @@ wt wt Cp Cp -ID +wt ID ok ok @@ -1419,7 +1395,7 @@ ok (7,1,1) = {" ok ok -ID +wt fF VZ EJ @@ -1448,7 +1424,7 @@ wt Cp Px Cp -EM +Cp ID ID ok @@ -1456,7 +1432,7 @@ ok (8,1,1) = {" ok ID -Ww +jy fF VZ zU @@ -1485,7 +1461,7 @@ Cp Cp Nw Cp -EM +Cp XI ID ok @@ -1493,7 +1469,7 @@ ok (9,1,1) = {" ok ID -ei +fF fF VZ HK @@ -1522,7 +1498,7 @@ Cp Cp Cp Cp -va +rH EM ID ok @@ -1530,7 +1506,7 @@ ok (10,1,1) = {" ok ok -ID +wt CC VZ yP @@ -1559,7 +1535,7 @@ Cp Cp Cp fs -EM +Cp EM ID ok @@ -1567,7 +1543,7 @@ ok (11,1,1) = {" ok ok -ID +wt fF VZ dt @@ -1596,7 +1572,7 @@ Cp cJ Cp Cp -EM +Cp EM ID ok @@ -1604,7 +1580,7 @@ ok (12,1,1) = {" ok ok -ok +Ti wt VZ zU @@ -1633,7 +1609,7 @@ Cp Cp rH Cp -DS +Nw EM ID ok @@ -1641,7 +1617,7 @@ ok (13,1,1) = {" ok ok -ID +wt fF VZ Fb @@ -1670,7 +1646,7 @@ Cp Cp Cp Cp -EM +Cp EM ID ok @@ -1678,7 +1654,7 @@ ok (14,1,1) = {" ok ID -ei +fF fF VZ Xs @@ -1707,7 +1683,7 @@ wt Cp Cp Px -EM +Cp ID ID ok @@ -1715,7 +1691,7 @@ ok (15,1,1) = {" ok ok -ID +wt zk VZ zU @@ -1744,7 +1720,7 @@ wt Cp Cp Cp -ID +wt ID ok ok @@ -1752,7 +1728,7 @@ ok (16,1,1) = {" ok ok -ID +wt fF VZ Sn @@ -1781,7 +1757,7 @@ wt wt Cp Cp -ID +wt ID ok ok @@ -1789,7 +1765,7 @@ ok (17,1,1) = {" ok ok -ID +wt fF VZ VZ @@ -1818,7 +1794,7 @@ fF wt wt wt -ID +wt ok ok ok @@ -1826,7 +1802,7 @@ ok (18,1,1) = {" ok ok -ok +Ti Wf VZ dO @@ -1855,7 +1831,7 @@ IU cT wt Om -ID +wt ID ok ok @@ -1863,7 +1839,7 @@ ok (19,1,1) = {" ok ok -ok +Ti wt VZ nO @@ -1892,7 +1868,7 @@ fF fF wt wt -EM +Cp ID ID ok @@ -1900,7 +1876,7 @@ ok (20,1,1) = {" ok ok -ok +Ti wt VZ AO @@ -1929,7 +1905,7 @@ fF wt wt Cp -dh +fs EM ID ok @@ -1937,7 +1913,7 @@ ok (21,1,1) = {" ok ok -ok +Ti wt VZ VZ @@ -1966,7 +1942,7 @@ wt wt Cp Cp -EM +Cp EM ID ok @@ -1974,7 +1950,7 @@ ok (22,1,1) = {" ok ok -ok +Ti wt VZ MF @@ -2003,7 +1979,7 @@ wt wt Cp Cp -mD +cJ EM ID ok @@ -2011,7 +1987,7 @@ ok (23,1,1) = {" ok ok -ID +wt fF VZ Gy @@ -2040,7 +2016,7 @@ wt Px Cp Cp -EM +Cp EM ID ok @@ -2048,7 +2024,7 @@ ok (24,1,1) = {" ok ok -ID +wt zk VZ hN @@ -2077,7 +2053,7 @@ wt Cp Nw Cp -EM +Cp ID ID ok @@ -2085,7 +2061,7 @@ ok (25,1,1) = {" ok ID -ei +fF fF VZ ug @@ -2114,7 +2090,7 @@ Cp Cp Cp Cp -ID +wt ID ok ok @@ -2122,7 +2098,7 @@ ok (26,1,1) = {" ok ID -Ww +jy fF QX Gd @@ -2151,7 +2127,7 @@ Cp Cp Cp wt -ID +wt ok ok ok @@ -2159,7 +2135,7 @@ ok (27,1,1) = {" ok ID -ei +fF fF VZ Mx @@ -2188,7 +2164,7 @@ cJ Cp Px wt -ID +wt ok ok ok @@ -2196,7 +2172,7 @@ ok (28,1,1) = {" ok ok -ID +wt zk VZ YU @@ -2225,7 +2201,7 @@ Cp Cp Px wt -ID +wt ok ok ok @@ -2233,7 +2209,7 @@ ok (29,1,1) = {" ok ok -ok +Ti wt VZ ij @@ -2262,7 +2238,7 @@ Cp wt wt wt -ok +Ti ok ok ok @@ -2270,7 +2246,7 @@ ok (30,1,1) = {" ok ok -ok +Ti wt VZ fB @@ -2299,7 +2275,7 @@ wt wt Om Ti -ok +Ti ok ok ok @@ -2307,7 +2283,7 @@ ok (31,1,1) = {" ok ok -ok +Ti wt VZ VZ @@ -2336,7 +2312,7 @@ wt Ti Ti Ti -ok +Ti ok ok ok @@ -2344,7 +2320,7 @@ ok (32,1,1) = {" ok ok -ok +Ti Wf wt wt @@ -2373,7 +2349,7 @@ Ti Ti Ti Ti -ok +Ti ok ok ok @@ -2381,36 +2357,36 @@ ok (33,1,1) = {" ok ok -ok -ok -ok -ok -ID -ID -ID -ID -ok -ok -ok -ok -ok -ok -ok -ok -ok -ok -ok -ok -ok -ID -ID -ID -ok -ok -ok -ok -ok -ok +Ti +Ti +Ti +Ti +wt +wt +wt +wt +Ti +Ti +Ti +Ti +Ti +Ti +Ti +Ti +Ti +Ti +Ti +Ti +Ti +wt +wt +wt +Ti +Ti +Ti +Ti +Ti +Ti ok ok ok diff --git a/maps/submaps/surface_submaps/wilderness/DoomP.dmm b/maps/submaps/surface_submaps/wilderness/DoomP.dmm index a06b674ad8..e780dc90ca 100644 --- a/maps/submaps/surface_submaps/wilderness/DoomP.dmm +++ b/maps/submaps/surface_submaps/wilderness/DoomP.dmm @@ -364,22 +364,29 @@ "bo" = ( /obj/structure/table/rack, /obj/item/weapon/storage/box/smokes, -/turf/simulated/floor/tiled/techfloor, -/area/submap/DoomP) -"bp" = ( -/obj/structure/table/rack, /obj/item/weapon/storage/box/handcuffs, /turf/simulated/floor/tiled/techfloor, /area/submap/DoomP) "bq" = ( /obj/structure/table/rack, -/obj/item/weapon/cell/device/weapon, -/obj/item/weapon/cell/device/weapon, +/obj/item/clothing/gloves/tactical, +/obj/item/clothing/gloves/tactical, +/obj/item/clothing/head/helmet/tactical, +/obj/item/clothing/accessory/armor/armorplate/tactical, +/obj/item/clothing/suit/storage/vest/tactical, +/obj/item/clothing/shoes/boots/tactical, +/obj/item/clothing/shoes/boots/tactical, +/obj/item/clothing/head/helmet/tactical, /turf/simulated/floor/tiled/techfloor, /area/submap/DoomP) "br" = ( /obj/structure/table/rack, /obj/random/energy, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/item/weapon/cell/device/weapon, +/obj/random/energy, /turf/simulated/floor/tiled/techfloor, /area/submap/DoomP) "bs" = ( @@ -387,6 +394,9 @@ /obj/item/weapon/gun/projectile/contender, /obj/item/ammo_magazine/s357, /obj/item/ammo_magazine/s357, +/obj/item/weapon/gun/projectile/contender, +/obj/item/ammo_magazine/s357, +/obj/item/ammo_magazine/s357, /turf/simulated/floor/tiled/techfloor, /area/submap/DoomP) "bt" = ( @@ -2206,7 +2216,7 @@ aN bg be at -bp +bq bL at ac diff --git a/maps/submaps/surface_submaps/wilderness/Manor1.dmm b/maps/submaps/surface_submaps/wilderness/Manor1.dmm index cf4bccf5b9..a9fc9053bd 100644 --- a/maps/submaps/surface_submaps/wilderness/Manor1.dmm +++ b/maps/submaps/surface_submaps/wilderness/Manor1.dmm @@ -19,6 +19,7 @@ "ae" = ( /obj/structure/table/woodentable, /obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle, +/obj/random/medical, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "af" = ( @@ -43,11 +44,15 @@ /obj/structure/table/woodentable, /obj/item/clothing/mask/smokable/cigarette/cigar, /obj/item/weapon/material/ashtray/glass, +/obj/effect/spider/stickyweb, +/obj/random/medical, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "ak" = ( /obj/structure/flora/pottedplant/dead, /obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "al" = ( @@ -57,6 +62,7 @@ "am" = ( /obj/structure/table/woodentable, /obj/item/device/flashlight, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "an" = ( @@ -93,6 +99,8 @@ /obj/structure/bed, /obj/item/weapon/bedsheet, /obj/effect/decal/cleanable/blood/oil, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/pepper, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "av" = ( @@ -107,10 +115,14 @@ /area/submap/Manor1) "ax" = ( /obj/structure/closet/cabinet, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, +/obj/item/clothing/shoes/boots/winter/climbing, +/obj/random/projectile/random, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "ay" = ( /obj/effect/decal/cleanable/blood/gibs/robot/limb, +/obj/effect/decal/cleanable/dirt, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "az" = ( @@ -132,6 +144,7 @@ "aC" = ( /obj/structure/table/woodentable, /obj/item/device/flashlight/maglight, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "aD" = ( @@ -143,13 +156,14 @@ /obj/structure/closet/cabinet, /obj/effect/decal/cleanable/cobweb2, /obj/item/clothing/head/hood/winter, -/obj/item/clothing/shoes/boots/winter, -/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/shoes/boots/winter/climbing, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "aF" = ( /obj/structure/table/woodentable, /obj/effect/decal/cleanable/cobweb, +/obj/item/stack/material/void_opal, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "aG" = ( @@ -185,7 +199,7 @@ /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "aN" = ( -/obj/effect/decal/cleanable/cobweb2, +/mob/living/simple_mob/animal/giant_spider/nurse, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "aO" = ( @@ -212,6 +226,8 @@ "aT" = ( /obj/structure/closet/cabinet, /obj/random/projectile/shotgun, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, +/obj/item/clothing/shoes/boots/winter/climbing, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "aU" = ( @@ -270,14 +286,16 @@ "bf" = ( /obj/structure/closet/cabinet, /obj/item/clothing/head/hood/winter, -/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter/climbing, /obj/item/clothing/suit/storage/hooded/wintercoat, /obj/random/contraband, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bg" = ( /obj/structure/table/woodentable, /obj/item/weapon/paper_bin, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bh" = ( @@ -295,6 +313,7 @@ /area/submap/Manor1) "bj" = ( /obj/effect/decal/cleanable/cobweb, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bk" = ( @@ -344,6 +363,7 @@ icon_state = "wooden_chair" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bu" = ( @@ -357,6 +377,7 @@ "bv" = ( /obj/structure/table/standard, /obj/item/weapon/reagent_containers/food/condiment/small/sugar, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bw" = ( @@ -372,9 +393,9 @@ /area/submap/Manor1) "by" = ( /obj/structure/closet/cabinet, -/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, /obj/item/clothing/head/hood/winter, -/obj/item/clothing/shoes/boots/winter, +/obj/item/clothing/shoes/boots/winter/climbing, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bz" = ( @@ -386,16 +407,19 @@ /obj/structure/table/standard, /obj/item/weapon/material/kitchen/utensil/fork, /obj/item/weapon/material/kitchen/utensil/fork, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bB" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/item/weapon/reagent_containers/food/snacks/stew, /obj/item/weapon/reagent_containers/food/snacks/stew, +/obj/item/weapon/reagent_containers/food/snacks/meat/worm, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bC" = ( /obj/item/weapon/shovel, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bD" = ( @@ -404,6 +428,7 @@ icon_state = "wooden_chair" }, /obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bE" = ( @@ -423,16 +448,20 @@ /obj/structure/closet/secure_closet/freezer/fridge, /obj/item/weapon/reagent_containers/food/snacks/sausage, /obj/item/weapon/reagent_containers/food/snacks/sausage, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bH" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/flora/pottedplant/drooping, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bI" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/flora/pottedplant/dead, +/obj/effect/spider/stickyweb, +/obj/item/weapon/material/sword, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bJ" = ( @@ -444,6 +473,7 @@ "bK" = ( /obj/structure/table/standard, /obj/item/weapon/reagent_containers/glass/bottle/stoxin, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bL" = ( @@ -461,11 +491,16 @@ /area/submap/Manor1) "bO" = ( /obj/machinery/icecream_vat, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bP" = ( -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/carpet/blucarpet, +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bQ" = ( /obj/effect/decal/cleanable/blood, @@ -488,11 +523,6 @@ /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/carpet/purcarpet, /area/submap/Manor1) -"bV" = ( -/turf/simulated/floor/holofloor/wood{ - icon_state = "wood_broken6" - }, -/area/submap/Manor1) "bW" = ( /obj/machinery/washing_machine, /turf/simulated/floor/holofloor/wood, @@ -505,12 +535,19 @@ /area/submap/Manor1) "bY" = ( /obj/structure/table/rack, +/obj/random/carp_plushie, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "bZ" = ( /obj/structure/closet/crate, /obj/item/stack/cable_coil/random_belt, /obj/random/cash, +/obj/random/contraband, +/obj/random/contraband/nofail, +/obj/random/cash/huge, +/obj/item/stack/material/gold{ + amount = 18 + }, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "ca" = ( @@ -521,13 +558,15 @@ "cb" = ( /obj/structure/closet/cabinet, /obj/random/gun/random, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, +/obj/item/clothing/shoes/boots/winter/climbing, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cc" = ( /obj/structure/closet/cabinet, /obj/item/weapon/cell/device/weapon, /obj/item/weapon/cell/device/weapon, -/obj/random/medical, +/obj/item/weapon/storage/firstaid/combat, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cd" = ( @@ -544,11 +583,14 @@ "cf" = ( /obj/structure/table/woodentable, /obj/item/weapon/storage/wallet/random, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cg" = ( /obj/structure/flora/pottedplant/dead, /obj/effect/decal/cleanable/cobweb2, +/mob/living/simple_mob/animal/giant_spider/lurker, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "ch" = ( @@ -560,18 +602,24 @@ /obj/structure/closet/crate, /obj/item/weapon/flame/lighter/random, /obj/random/powercell, +/obj/random/contraband, +/obj/random/contraband/nofail, +/obj/random/cash/huge, +/obj/item/stack/material/durasteel{ + amount = 18 + }, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cj" = ( /obj/structure/closet/cabinet, -/obj/item/clothing/shoes/boots/winter, -/obj/item/clothing/suit/storage/hooded/wintercoat, +/obj/item/clothing/shoes/boots/winter/climbing, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, /obj/item/clothing/head/hood/winter, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "ck" = ( -/obj/effect/decal/cleanable/spiderling_remains, -/turf/simulated/floor/holofloor/wood, +/mob/living/simple_mob/animal/giant_spider/carrier, +/turf/simulated/floor/carpet/turcarpet, /area/submap/Manor1) "cl" = ( /turf/simulated/floor/carpet/turcarpet, @@ -587,6 +635,12 @@ "cn" = ( /obj/structure/closet/crate, /obj/item/weapon/storage/wallet/random, +/obj/random/contraband, +/obj/random/contraband/nofail, +/obj/random/cash/huge, +/obj/item/stack/material/tritium{ + amount = 20 + }, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "co" = ( @@ -612,12 +666,15 @@ /area/submap/Manor1) "cs" = ( /obj/item/weapon/material/twohanded/spear, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "ct" = ( /obj/structure/closet/cabinet{ opened = 1 }, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, +/obj/item/clothing/shoes/boots/winter/climbing, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cu" = ( @@ -637,6 +694,7 @@ "cx" = ( /obj/structure/table/standard, /obj/effect/decal/cleanable/cobweb2, +/obj/effect/spider/stickyweb, /turf/simulated/floor/tiled/hydro, /area/submap/Manor1) "cy" = ( @@ -652,13 +710,9 @@ /area/submap/Manor1) "cA" = ( /obj/item/weapon/paper/crumpled, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) -"cB" = ( -/turf/simulated/floor/holofloor/wood{ - icon_state = "wood_broken3" - }, -/area/submap/Manor1) "cC" = ( /obj/effect/decal/cleanable/spiderling_remains, /obj/effect/spider/stickyweb, @@ -666,11 +720,12 @@ /area/submap/Manor1) "cD" = ( /obj/structure/closet/crate, -/obj/item/clothing/suit/armor/vest, +/obj/item/weapon/gun/energy/locked/frontier/handbow, +/obj/item/weapon/gun/energy/locked/frontier/handbow, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cE" = ( -/obj/structure/closet/crate, +/obj/random/humanoidremains, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cF" = ( @@ -694,6 +749,7 @@ /area/submap/Manor1) "cI" = ( /obj/item/stack/material/wood, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cJ" = ( @@ -719,6 +775,7 @@ "cM" = ( /obj/structure/table/woodentable, /obj/item/modular_computer/laptop/preset/custom_loadout/cheap, +/obj/effect/spider/stickyweb, /turf/simulated/floor/holofloor/wood, /area/submap/Manor1) "cN" = ( @@ -728,6 +785,770 @@ /obj/structure/flora/tree/sif, /turf/template_noop, /area/submap/Manor1) +"cP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"dt" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"eq" = ( +/obj/effect/spider/stickyweb, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ew" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/lurker, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"eA" = ( +/turf/simulated/wall/wood{ + can_open = 1 + }, +/area/submap/Manor1) +"eI" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/sandwich, +/obj/item/weapon/gun/projectile/revolver/cappeacekeeper, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"eL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"eT" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"fo" = ( +/obj/structure/table/rack, +/obj/random/firstaid, +/obj/random/firstaid, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"fx" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"fT" = ( +/obj/structure/loot_pile/surface/bones, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"gc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"gf" = ( +/obj/structure/coatrack, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"gF" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/flame/candle/everburn, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"gY" = ( +/obj/structure/table/woodentable, +/obj/effect/spider/stickyweb, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"hu" = ( +/obj/effect/decal/cleanable/greenglow, +/obj/item/slime_extract/rainbow, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"hM" = ( +/obj/structure/bed/chair/wood{ + dir = 1; + icon_state = "wooden_chair" + }, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"hN" = ( +/obj/structure/table/woodentable, +/obj/item/device/soulstone, +/obj/item/weapon/spellbook/oneuse/smoke, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ie" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/carrier, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"ja" = ( +/obj/effect/spider/stickyweb, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"jc" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/meatsteak, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"jd" = ( +/obj/structure/table/woodentable, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"jl" = ( +/mob/living/simple_mob/animal/giant_spider/frost, +/turf/simulated/floor/tiled/hydro, +/area/submap/Manor1) +"jr" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/sandwich, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"jD" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/obj/item/weapon/material/whip, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"jG" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"jK" = ( +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/blucarpet, +/area/submap/Manor1) +"kb" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/meatsteak, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ks" = ( +/obj/structure/flora/pottedplant/dead, +/mob/living/simple_mob/animal/giant_spider/lurker, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"kv" = ( +/obj/structure/simple_door/wood, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"le" = ( +/obj/random/humanoidremains, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"lz" = ( +/mob/living/simple_mob/animal/giant_spider/electric, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"lU" = ( +/obj/structure/flora/pottedplant/drooping, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"my" = ( +/obj/structure/table, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"nq" = ( +/obj/effect/spider/stickyweb, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"nr" = ( +/obj/structure/table/woodentable, +/obj/effect/spider/stickyweb, +/obj/item/weapon/gun/energy/medigun, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"oM" = ( +/obj/structure/table/woodentable, +/obj/item/trash/candle, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"pf" = ( +/mob/living/simple_mob/animal/giant_spider/ion, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"pl" = ( +/mob/living/simple_mob/animal/giant_spider/broodmother, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"pA" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper{ + info = "I am done with all of you. Father has gone missing, and no one cares. Mother contunies to stay up all day, chanting, and staring into space. Brother keeps going out hunting with his gang of friends. The spiders are watching me and just keep getting bigger. I am done. After the feast tonight, I am leaving, and I am taking our squish butler."; + name = "Goodbye" + }, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"pI" = ( +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"pR" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/mob/living/simple_mob/animal/giant_spider/electric, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"rg" = ( +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"rj" = ( +/obj/structure/loot_pile/surface/bones, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"ro" = ( +/obj/item/weapon/bone/skull/unknown, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"rS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"sD" = ( +/obj/structure/table/woodentable, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"sL" = ( +/obj/effect/spider/stickyweb, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"sV" = ( +/obj/structure/sink{ + pixel_y = 30 + }, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/tiled/hydro, +/area/submap/Manor1) +"tt" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"tM" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/snacks/lasagna, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ua" = ( +/obj/item/weapon/material/knife, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ut" = ( +/obj/structure/bed/chair/wood, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"uA" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/shoes/boots/winter/climbing, +/obj/item/clothing/suit/storage/hooded/wintercoat/kilanocoat, +/obj/item/clothing/head/hood/winter, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"vd" = ( +/obj/structure/table/woodentable, +/obj/item/toy/plushie/carp/void, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"vI" = ( +/mob/living/simple_mob/animal/giant_spider/thermic, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"wp" = ( +/mob/living/simple_mob/animal/giant_spider/electric, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"ws" = ( +/obj/item/weapon/material/kitchen/utensil/spoon, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ww" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/snacks/sausage, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"xH" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/sharkmeatcooked, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"xI" = ( +/obj/item/weapon/bone/ribs, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"yI" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/carrier, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"zV" = ( +/obj/structure/table/standard, +/obj/item/weapon/reagent_containers/food/snacks/jelliedtoast, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Aq" = ( +/mob/living/simple_mob/animal/giant_spider/nurse, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"At" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/thermic, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"AJ" = ( +/obj/structure/bed, +/obj/item/weapon/bedsheet, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"AM" = ( +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"AQ" = ( +/obj/structure/table/woodentable, +/obj/random/explorer_shield, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Bb" = ( +/mob/living/simple_mob/construct/wraith, +/obj/effect/decal/cleanable/blood/splatter, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Bz" = ( +/obj/item/weapon/bone/leg, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Manor1) +"BC" = ( +/obj/random/humanoidremains, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"BE" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"CL" = ( +/obj/effect/rune, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"CO" = ( +/obj/structure/bed/chair/wood{ + dir = 1; + icon_state = "wooden_chair" + }, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"DL" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/meatsteak, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"DW" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/gun/energy/locked/frontier/rifle, +/obj/item/clothing/suit/storage/hooded/techpriest{ + armor = list("melee"=20,"bullet"=10,"laser"=50,"energy"=60,"bomb"=25,"bio"=50,"rad"=25) + }, +/obj/item/weapon/shield/energy/imperial, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Fc" = ( +/obj/effect/decal/cleanable/cobweb2, +/obj/effect/spider/stickyweb, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"FA" = ( +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"FH" = ( +/obj/effect/decal/cleanable/blood/splatter, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"FU" = ( +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/carrier, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Gg" = ( +/obj/structure/loot_pile/surface/bones, +/obj/effect/spider/stickyweb, +/obj/item/weapon/gun/projectile/gyropistol, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"GM" = ( +/mob/living/simple_mob/animal/giant_spider/ion, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"GU" = ( +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/spider/stickyweb/dark, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Hd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Hl" = ( +/mob/living/simple_mob/animal/giant_spider/nurse, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Manor1) +"Hu" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"HJ" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/kitchen/utensil/fork, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Ig" = ( +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb/dark, +/mob/living/simple_mob/animal/giant_spider/electric, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Iz" = ( +/obj/effect/spider/stickyweb, +/mob/living/simple_mob/animal/giant_spider/webslinger, +/turf/simulated/floor/tiled/hydro, +/area/submap/Manor1) +"Jh" = ( +/obj/structure/toilet{ + dir = 8; + icon_state = "toilet00" + }, +/mob/living/simple_mob/animal/giant_spider/lurker, +/turf/simulated/floor/tiled/hydro, +/area/submap/Manor1) +"Jn" = ( +/obj/structure/table/woodentable, +/obj/random/drinksoft, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Js" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"KN" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"LR" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/reagent_containers/food/snacks/sharkmeatcooked, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Md" = ( +/mob/living/simple_mob/animal/giant_spider/carrier, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Ms" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/obj/effect/spider/stickyweb, +/obj/item/weapon/gun/projectile/automatic/advanced_smg, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ML" = ( +/obj/structure/bed/chair/comfy/purp{ + dir = 4; + icon_state = "comfychair_preview" + }, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"MZ" = ( +/obj/effect/spider/stickyweb/dark, +/mob/living/simple_mob/animal/giant_spider/nurse, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"Nc" = ( +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/nurse, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ND" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/material/knife/ritual, +/obj/item/weapon/material/sharpeningkit, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Oo" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ON" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"OZ" = ( +/obj/structure/table/rack, +/obj/random/grenade/lethal, +/obj/random/grenade/lethal, +/obj/random/grenade/lethal, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Pg" = ( +/obj/item/weapon/bone/arm, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Manor1) +"Pi" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/gun/projectile/deagle/gold, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Pw" = ( +/obj/effect/decal/cleanable/dirt, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"PY" = ( +/obj/structure/table/standard, +/obj/effect/spider/stickyweb, +/obj/item/weapon/reagent_containers/food/snacks/slice/meatbread/filled, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Qh" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/mob/living/simple_mob/animal/giant_spider/carrier, +/obj/effect/spider/stickyweb/dark, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"QW" = ( +/obj/structure/table/woodentable, +/obj/item/device/flashlight/lamp, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"RI" = ( +/obj/structure/table/woodentable, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"RX" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/gun/energy/hooklauncher/ring, +/obj/random/medical/pillbottle, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Sl" = ( +/obj/item/weapon/material/kitchen/utensil/fork, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Sx" = ( +/obj/structure/table/woodentable, +/obj/item/weapon/paper, +/obj/effect/spider/stickyweb, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Sy" = ( +/obj/structure/table/woodentable, +/obj/random/drinksoft, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"SC" = ( +/obj/structure/table/woodentable, +/obj/random/drinksoft, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Tv" = ( +/obj/structure/flora/pottedplant/drooping, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Uh" = ( +/mob/living/simple_mob/animal/giant_spider/pepper, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"UD" = ( +/mob/living/simple_mob/animal/giant_spider/webslinger, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"UF" = ( +/mob/living/simple_mob/animal/giant_spider/webslinger, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"VX" = ( +/mob/living/simple_mob/animal/giant_spider/carrier, +/turf/simulated/floor/carpet/bcarpet, +/area/submap/Manor1) +"VY" = ( +/obj/effect/spider/stickyweb, +/turf/simulated/floor/tiled/hydro, +/area/submap/Manor1) +"WS" = ( +/obj/effect/spider/stickyweb, +/turf/simulated/floor/carpet/turcarpet, +/area/submap/Manor1) +"Xc" = ( +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"XE" = ( +/obj/item/weapon/bone/leg, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"YL" = ( +/obj/effect/spider/stickyweb/dark, +/obj/item/weapon/bone, +/obj/item/weapon/bone, +/obj/item/weapon/bone/arm, +/obj/item/weapon/bone/arm, +/obj/item/weapon/bone/leg, +/obj/item/weapon/bone/leg, +/obj/item/weapon/bone/ribs, +/obj/item/weapon/bone/ribs, +/obj/item/weapon/bone/skull, +/obj/item/weapon/gun/energy/pummeler, +/turf/simulated/floor/carpet/purcarpet, +/area/submap/Manor1) +"YY" = ( +/obj/item/weapon/bone, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"Za" = ( +/obj/structure/bed/chair/wood{ + dir = 4; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb, +/obj/random/humanoidremains, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ZG" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ZK" = ( +/obj/structure/bed/chair/wood{ + dir = 8; + icon_state = "wooden_chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/spider/stickyweb/dark, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) +"ZV" = ( +/obj/effect/decal/cleanable/blood/drip, +/mob/living/simple_mob/animal/giant_spider/nurse, +/obj/effect/spider/stickyweb, +/turf/simulated/floor/holofloor/wood, +/area/submap/Manor1) (1,1,1) = {" cN @@ -959,7 +1780,7 @@ aa ab ab ag -ag +xI ab ab aa @@ -1009,9 +1830,9 @@ ab ab ab ab +aN ag -ag -ag +XE ag ab ab @@ -1035,23 +1856,23 @@ ax ab ag as -ag -ag -aD +an +an +Hu ab -aD +QW +aK +YY ag ag -ag -ag -ag -ag -ag -ag -az +aN +aK +aK +aK +oM ab bR -ag +cE ag ag bQ @@ -1073,32 +1894,32 @@ aa ab ab at -ag +an as ag ab ag -ag -al +Pw +bz ab -al -bh +RI +CO ag ag ag ag ag -ag -ag -al +ro +aK +RI ab az ag -ag +xI bq bQ ag -ag +aN al ab ab @@ -1121,10 +1942,10 @@ ag ab aT aM -aO +AJ ab bg -ag +cE bk aO al @@ -1132,7 +1953,7 @@ by ag ag ag -ag +aK ab bS ag @@ -1197,21 +2018,21 @@ aa aa ab ak -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -al -az -al -ag -ag +an +an +an +KN +an +KN +aK +aK +aK +aK +RI +oM +RI +aK +aK an an ag @@ -1222,10 +2043,10 @@ bq ag bq ag -ah +aI ab -cv -cw +sV +VY cw cw cw @@ -1238,21 +2059,21 @@ cN aa aa ab -ag -aq -aq -aq -aq -aq -aq -aq -aq -aq +KN +ar +ar +ar aq aq aq aq +le +AM +AM +AM +AM aq +VX ar ar ar @@ -1262,11 +2083,11 @@ aq aq aq aq +wp aq -aq -aq -as -cw +AM +kv +Iz ab cF ab @@ -1280,18 +2101,18 @@ cN aa aa ab -ag -aq +an +rS aq ag ag ag ag ag +UF ag -ag -ag -ag +aK +aK ag ag an @@ -1305,12 +2126,12 @@ ag ag ag ag -ag -ag +aK +aK ab cx ab -cG +Jh ab cG ab @@ -1322,7 +2143,7 @@ cN aa aa ab -ag +aK aq aq ag @@ -1364,16 +2185,16 @@ cN aa aa ab -al -aq +RI aq +UD az ab aF ag ag -ag -ag +gF +ab ag ag ag @@ -1394,7 +2215,7 @@ bW ab cy cw -cw +jl cw cw ab @@ -1411,11 +2232,11 @@ ar aq al ab -aG +aH +FH +CL ag aU -aU -aU ag aU aU @@ -1448,21 +2269,21 @@ cN aa aa ab -al -ar +RI +eL aq al ab +hN +bh +Bb +DW +ab ag ag -ag -ag -ag -ag -ag -ag -an +cE an +yI an an an @@ -1490,15 +2311,15 @@ cN aa aa ab -ag -ar +aK +eL aq ag ab -al +gF ag -aU -aU +CL +FH aU ag aU @@ -1532,16 +2353,16 @@ cN aa aa ab -an +aA ar ar an ab -aH -ag -ag -ag +ND ag +FH +gF +ab an an an @@ -1553,7 +2374,7 @@ ag ag ai ab -an +aA an ab ab @@ -1574,7 +2395,7 @@ cN aa ab ab -an +aA ar ar an @@ -1595,15 +2416,15 @@ ab ab ab ab -an -an +aA +aA ab bY ag ag ag -bY -bY +fo +OZ ab ab ab @@ -1616,7 +2437,7 @@ cN ab ab ag -ag +cE ar ar an @@ -1626,25 +2447,25 @@ aK ag ag ag +cE ag -ag -ag -ag -an -an -an -an +fT +aK +aA +aA +aA +Ms bH ab ab -an -an +aA +aA ab +lz ag +cE ag -ag -ag -ag +aN cC ab ab @@ -1670,16 +2491,16 @@ ad ad ad ad -ad -ad -ad +bP +bP +bP bt bt -an -an +Nc +aA ab ab -an +aA an ab bZ @@ -1700,7 +2521,7 @@ cN ac ae ag -ag +vI aq ar aB @@ -1708,17 +2529,17 @@ ab aK aP al +Pi +SC al -al -al -al -aG -al -al -al +DL +Sx +Sy +RI +jr al bh -an +aA ab ab as @@ -1751,27 +2572,27 @@ ag aP aV al +kb +sD +Jn +jd +xH al -al -al -al -al -al -al +SC al bh -ag +aK ab al ag ag -al -al -cj +RI +RI +uA ab ab -cz -cE +Fc +cD ab aa aa @@ -1782,7 +2603,7 @@ cN (26,1,1) = {" cN ac -ag +Md ag an ar @@ -1790,16 +2611,16 @@ ar ag ab ag -ag -af -af -af -af -af -af +fT af af af +ZG +Qh +ZK +ZK +Oo +pR af ag ag @@ -1808,9 +2629,9 @@ al ag ag ag -ag -ck -co +Md +cC +gf ab ab ab @@ -1824,25 +2645,25 @@ cN (27,1,1) = {" cN ab -ah -ag +aI +nq an ar ar an ab aL +BC aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ +bU +BE +ie +cP +cP +MZ +cP +bU +rj aQ aQ bN @@ -1852,7 +2673,7 @@ aQ bU bU bU -bU +BE cr bU bU @@ -1866,8 +2687,8 @@ cN (28,1,1) = {" cN ab -ai -ag +Tv +aK an ar ar @@ -1875,18 +2696,18 @@ an ab aL aQ +ja +Gg +jD +BE +BE +pl +ON +YL +ON aQ aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ -aQ +rg bN aQ aQ @@ -1908,30 +2729,30 @@ cN (29,1,1) = {" cN ac -ag -ag +Md +aK an ar ar ag ab ag +eq +bP +bt +Za +bt +FU +pI +Xc +FA +Ig +GU ag -ad -ad -ad -ad -ad -ad -ad -ad -ad -ad -ag -ag +aK ab al -ag +aN ag ag ag @@ -1950,29 +2771,29 @@ cN (30,1,1) = {" cN ac -ad -ag -ag -ar +bP +aK +aK ar +At ag ab -ag -aP -aV -al -al -al -al -al -al -al -al -al -bh -an +aK +ut +HJ +gY +LR +RI +Sy +fx +jc +sD +Jn +sD +hM +aA ab -al +RI ag ag al @@ -1980,8 +2801,8 @@ ca cj ab ab -az -al +oM +RI ab aa aa @@ -1993,26 +2814,26 @@ cN cN ac aj -ag +aK ag ar ar ag ab -ag -aP +aK +ut +nr +RI +Sy al +kb al +SC al -al -al -al -al -al -al -bz +eI +jd bD -an +aA ab ab as @@ -2021,9 +2842,9 @@ ab ab ab ab -ag -af -ag +aK +jG +nq ab aa aa @@ -2034,27 +2855,27 @@ cN (32,1,1) = {" cN ac -af -ag +jG +aK ag aq ar ag ab -ag -ag -af -af -af +aK +Aq +jG +jG af af af af +Js af bu -bu -an -an +dt +ew +aA ab ab ag @@ -2064,8 +2885,8 @@ cb ag ag ag -ag -ag +aK +aK ab aa aa @@ -2083,19 +2904,19 @@ aq aq ag ab -ah +aI +aK +aK +ag +ag +fT ag ag ag ag -ag -ag -ag -ag -ag -an -an -an +aA +aA +Hd bI ab ab @@ -2105,9 +2926,9 @@ ab cc cl cl +Bz cl -cl -ag +aK ab ab aa @@ -2146,11 +2967,11 @@ ag ab ag cl +Hl cl cl -cl -ag -ah +aK +aI ab ab ab @@ -2169,18 +2990,18 @@ ag ab ag aR -aR -aR +tM +zV bb ag ag ag ag ag +Sl ag ag -ag -ag +UF bO ab ag @@ -2192,8 +3013,8 @@ cl cl cl ag -ag -al +aK +RI cM ab aa @@ -2204,10 +3025,10 @@ cN aa aa ab -ag +aK +UD aq -aq -ag +aK ab aM ag @@ -2215,14 +3036,14 @@ ag ag ag ag +aN ag ag ag ag ag ag -ag -ag +aK aK ab ag @@ -2236,7 +3057,7 @@ cl cl cl cl -al +RI ab aa cN @@ -2246,12 +3067,12 @@ cN aa aa ab -ag +aK aq -aq -ag +AM +aK ab -ag +aK aR aW aZ @@ -2261,7 +3082,7 @@ ag ag ag ag -aR +bF bA bE bF @@ -2275,10 +3096,10 @@ cl cl cl cl +ck cl cl -cl -al +RI ab aa cN @@ -2288,32 +3109,32 @@ cN aa aa ab -al -aq -aq -al +RI +AM +AM +RI ab -ag +aK aR aX -aR +ww bc ag -ag +ua ag ag ag bv -aR bF +PY bJ aK ab -ag +aK ag ab -ag -cl +aK +WS cl cl cl @@ -2330,33 +3151,33 @@ cN aa aa ab -al -aq -aq -al +RI +AM +AM +RI ab +aK ag ag ag ag +cE ag ag +aN ag ag -ag -ag -ag -ag -ag -ag +aK +aK +aK +aK +ab +aK ag ab -ag -ag -ab -ag -cl -cl +aK +Pg +WS cl cl cl @@ -2372,34 +3193,34 @@ cN aa aa ab -al -aq +RI +AM aq aC ab -aN +cz aS aY ba bd ag ag -ag +ws ag ag ag bB bG bK -ag +aK ab -ag -ag +aK +aK ab cg -aD -al -al +QW +RI +RI ag cl cl @@ -2414,10 +3235,10 @@ cN aa aa ab -ag +aK +AM aq -aq -ag +aK ab ab ab @@ -2435,16 +3256,16 @@ ab ab ab ab -ag -ag +aK +aK ab ab ab ab ab ag -cl -cl +Bz +Hl cl ag ab @@ -2456,39 +3277,39 @@ cN aa aa ab -ag +aK aq aq -ag -ag -ag +aK +aK +lz ag al +aK +aK +aK +aK +aK ag ag ag ag ag ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag +aK +aK +aK +Md +aK +aK +aK ah ab ag cl cl cl -ag +aK ab aa cN @@ -2507,6 +3328,8 @@ aq aq aq aq +AM +sL aq aq aq @@ -2516,21 +3339,19 @@ aq aq aq aq -aq -aq -aq -aq -aq -aq -aq +AM +AM +AM +AM +pf aq aq as ag cl cl -cl -ag +WS +aK ab aa cN @@ -2540,39 +3361,39 @@ cN aa aa ab -ai -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag +lU +GM +ag +ag +ag +Uh +ag +aK +aK +aK +aK +aK ag ag ag ag ag ag +aK +aK +aK +aK +aK +aK ag ag ah ab ah ag -ag -ag -ah +aK +aK +ks ab aa cN @@ -2641,20 +3462,20 @@ ag ag ag ag -al aD -al -al +ab az +pA +ab al ag ag -bq -ag +tt +aK cs -ag +aK cA -ag +aK cI ab ab @@ -2667,8 +3488,8 @@ aa aa ab ap -ag -ag +aN +hu ab ag ag @@ -2683,19 +3504,19 @@ bl bo bl bl -bl -bl -bl -bw -bl -bl +RI +ab +RX +eT +ab +al bl bp bw bw -bl +jK cA -bq +ZV cI ab ab @@ -2712,32 +3533,32 @@ ab ab aw ab -ag +aN ag as ag as ag -ag +aN ab ag bm bp bw -bl -bl -bl -bl -bP -bP +jK +RI +ab +vd +an +ab +al bT -bl ch bl bl bw -cB ag +aK ab ab aa @@ -2755,7 +3576,7 @@ ab ab ab aE -al +AQ ab ag ab @@ -2765,18 +3586,18 @@ ab ag ag bq -ag -ag -ag -al -al -al +Aq +aA +gc +eA +KN +an +ab al ag -bV -ag ag ag +cE ag ag ab @@ -2807,7 +3628,7 @@ ab ab ag br -bx +ML bC ab ab @@ -2815,7 +3636,7 @@ ab ab ab ab -ag +lz bx cm cp @@ -2849,7 +3670,7 @@ aa ab ab bs -bs +my ab ab aa diff --git a/maps/tether/submaps/tether_centcom.dmm b/maps/tether/submaps/tether_centcom.dmm index 292c438f30..ef54e274f3 100644 --- a/maps/tether/submaps/tether_centcom.dmm +++ b/maps/tether/submaps/tether_centcom.dmm @@ -7043,6 +7043,7 @@ /area/centcom/medical) "DJ" = ( /obj/structure/table/reinforced, +/obj/machinery/librarycomp, /turf/simulated/floor/tiled, /area/centcom/control) "DK" = ( diff --git a/modular_chomp/code/ATMOSPHERICS/atmospherics.dm b/modular_chomp/code/ATMOSPHERICS/atmospherics.dm new file mode 100644 index 0000000000..36e4deaeba --- /dev/null +++ b/modular_chomp/code/ATMOSPHERICS/atmospherics.dm @@ -0,0 +1,62 @@ +//Chomp override, always allow unwrenching (at a cost) +/obj/machinery/atmospherics/can_unwrench() + return 1 + +//Chomp override, handle unwrenching with the yeet code +/obj/machinery/atmospherics/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) + if (istype(src, /obj/machinery/atmospherics/pipe/tank)) + return ..() + + if(istype(W,/obj/item/device/pipe_painter)) + return 0 + + if (!W.is_wrench()) + return ..() + var/turf/T = src.loc + if (level==1 && isturf(T) && !T.is_plating()) + to_chat(user, "You must remove the plating first.") + return 1 + if(!can_unwrench()) + to_chat(user, "You cannot unwrench \the [src], it is too exerted due to internal pressure.") + add_fingerprint(user) + return 1 + + //potential yeet + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + var/unsafe_wrenching = FALSE + var/internal_pressure = int_air.return_pressure()-env_air.return_pressure() + + if (internal_pressure > 2*ONE_ATMOSPHERE) + to_chat(user, "As you begin unwrenching \the [src] a gush of air blows in your face... maybe you should reconsider?") + unsafe_wrenching = TRUE //here we go + else + to_chat(user, "You begin to unfasten \the [src]...") + + playsound(src, W.usesound, 50, 1) + + if (do_after(user, 10 * W.toolspeed)) + user.visible_message( \ + "\The [user] unfastens \the [src].", \ + "You have unfastened \the [src].", \ + "You hear a ratchet.") + if(unsafe_wrenching) + unsafe_pressure_release(user, internal_pressure) + deconstruct() + +// Throws the user when they unwrench a pipe with a major difference between the internal and environmental pressure. +/obj/machinery/atmospherics/proc/unsafe_pressure_release(mob/user, pressures = null) + if(!user) + return + if(!pressures) + var/datum/gas_mixture/int_air = return_air() + var/datum/gas_mixture/env_air = loc.return_air() + pressures = int_air.return_pressure() - env_air.return_pressure() + + user.visible_message("[user] is sent flying by pressure!","The pressure sends you flying!") + + // if get_dir(src, user) is not 0, target is the edge_target_turf on that dir + // otherwise, edge_target_turf uses a random cardinal direction + // range is pressures / 250 + // speed is pressures / 1250 + user.throw_at(get_edge_target_turf(user, get_dir(src, user) || pick(GLOB.cardinal)), pressures / 250, pressures / 1250) \ No newline at end of file diff --git a/code/game/dna/dna2_ch.dm b/modular_chomp/code/game/dna/dna2.dm similarity index 86% rename from code/game/dna/dna2_ch.dm rename to modular_chomp/code/game/dna/dna2.dm index 263a966582..d40433122c 100644 --- a/code/game/dna/dna2_ch.dm +++ b/modular_chomp/code/game/dna/dna2.dm @@ -1,13 +1,15 @@ -/datum/dna - var/digitigrade = 0 //0, Not FALSE, for future use as indicator for digitigrade types (0 = None, 1 = default, 2 = digitigrade birdfeet, ...ect) - -/datum/dna/Clone() - . = ..() - var/datum/dna/D = . - //Data for inclusion of digitigrade leg settings in DNA - D.digitigrade = src.digitigrade - -/datum/dna/ResetUIFrom(var/mob/living/carbon/human/character) - //inclusion of digitigrade - src.digitigrade = character.digitigrade +//DNA entries for digitigrade functionality + +/datum/dna + var/digitigrade = 0 //0, Not FALSE, for future use as indicator for digitigrade types (0 = None, 1 = default, 2 = digitigrade birdfeet, ...ect) + +/datum/dna/Clone() + . = ..() + var/datum/dna/D = . + //Data for inclusion of digitigrade leg settings in DNA + D.digitigrade = src.digitigrade + +/datum/dna/ResetUIFrom(var/mob/living/carbon/human/character) + //inclusion of digitigrade + src.digitigrade = character.digitigrade . = ..() \ No newline at end of file diff --git a/modular_chomp/code/game/objects/items/clockwork/ratvarian_spear.dm b/modular_chomp/code/game/objects/items/clockwork/ratvarian_spear.dm new file mode 100644 index 0000000000..6e34c42939 --- /dev/null +++ b/modular_chomp/code/game/objects/items/clockwork/ratvarian_spear.dm @@ -0,0 +1,17 @@ +//Ratvarian spear: A relatively fragile spear from the Celestial Derelict. Deals extreme damage to silicons and enemy cultists, but doesn't last long when summoned. +/obj/item/weapon/ratvarian_spear + name = "ratvarian spear" + desc = "A razor-sharp spear made of brass. It thrums with barely-contained energy." + icon = 'modular_chomp/icons/obj/clockwork_objects.dmi' + icon_state = "ratvarian_spear" + item_state = "ratvarian_spear" + item_icons = list(slot_l_hand_str = 'modular_chomp/icons/mob/items/clockwork_lefthand.dmi', slot_r_hand_str = 'modular_chomp/icons/mob/items/clockwork_righthand.dmi') + force = 20 + throwforce = 30 + armor_penetration = 10 + sharp = TRUE + edge = TRUE + attack_verb = list("stabbed", "poked", "slashed") + hitsound = 'sound/weapons/bladeslice.ogg' + w_class = ITEMSIZE_HUGE + diff --git a/code/modules/client/preference_setup/general/03_body_ch.dm b/modular_chomp/code/modules/client/preference_setup/general/03_body.dm similarity index 64% rename from code/modules/client/preference_setup/general/03_body_ch.dm rename to modular_chomp/code/modules/client/preference_setup/general/03_body.dm index e92f75da29..85d7df835a 100644 --- a/code/modules/client/preference_setup/general/03_body_ch.dm +++ b/modular_chomp/code/modules/client/preference_setup/general/03_body.dm @@ -1,37 +1,52 @@ -// Chomp additions to character load/save logic -// /datum/category_item/player_setup_item/general/body/content cannot be overridden here easily as the proc creates a list of html data -// perhaps one could get that list here, and sort through sections to rewrite it's content...? that seems inefficent having to loop through the list. - - -/datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character) - . = ..() - if(character.species.digi_allowed) - character.digitigrade = pref.digitigrade - else - character.digitigrade = 0 - - //sanity check - if(character.digitigrade == null) - character.digitigrade = 0 - pref.digitigrade = 0 - -/datum/category_item/player_setup_item/general/body/OnTopic(var/href,var/list/href_list, var/mob/user) - if(href_list["digitigrade"]) - pref.digitigrade = !pref.digitigrade - - return TOPIC_REFRESH_UPDATE_PREVIEW - . = ..() - -// Savefile additions -// Be careful here -/datum/category_item/player_setup_item/general/body/load_character(var/savefile/S) - . = ..() - S["digitigrade"] >> pref.digitigrade //CHOMPEdit - -/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S) - . = ..() - S["digitigrade"] << pref.digitigrade //CHOMPEdit - -/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S) - . = ..() +// Chomp additions to character load/save logic +// /datum/category_item/player_setup_item/general/body/content cannot be overridden here easily as the proc creates a list of html data +// perhaps one could get that list here, and sort through sections to rewrite it's content...? that seems inefficent having to loop through the list. + +//copy_to_mob setup proc for spawning mob from prefs +/datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character) + . = ..() + if(character.species.digi_allowed) + character.digitigrade = pref.digitigrade + else + character.digitigrade = 0 + + //sanity check + if(character.digitigrade == null) + character.digitigrade = 0 + pref.digitigrade = 0 // given above code, if character.digi is null, pref.digi also has to be. + +// ontopic, the proc for clicking an option in the body customisation panel +/datum/category_item/player_setup_item/general/body/OnTopic(var/href,var/list/href_list, var/mob/user) + if(href_list["digitigrade"]) + pref.digitigrade = !pref.digitigrade + + return TOPIC_REFRESH_UPDATE_PREVIEW + . = ..() + +// Savefile additions +// Be careful here + +// This will add chomp-custom data to the body customisaiton page, below 'body color', above 'genetics settings' +/datum/category_item/player_setup_item/general/body/proc/chomp_custom_additions_body(var/mob/user, var/datum/species/mob_species) + . += "

    ChompStation Settings

    " + + if(mob_species.digi_allowed) + . += "
    Digitigrade?: [pref.digitigrade ? "Yes" : "No"]
    " + + return . + + + +/datum/category_item/player_setup_item/general/body/load_character(var/savefile/S) + . = ..() + S["digitigrade"] >> pref.digitigrade //CHOMPEdit + + +/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S) + . = ..() + S["digitigrade"] << pref.digitigrade //CHOMPEdit + + +/datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S) + . = ..() pref.digitigrade = sanitize_integer(pref.digitigrade, 0, 1, initial(pref.digitigrade)) \ No newline at end of file diff --git a/modular_chomp/code/modules/clothing/clothing.dm b/modular_chomp/code/modules/clothing/clothing.dm index 2b5d78bd94..ec4901779f 100644 --- a/modular_chomp/code/modules/clothing/clothing.dm +++ b/modular_chomp/code/modules/clothing/clothing.dm @@ -1,3 +1,17 @@ +/obj/item/clothing + var/update_icon_define_orig = null // temp storage for original update_icon_define (if it exists) + var/update_icon_define_digi = null + var/fit_for_digi = FALSE // flag for if clothing has already been reskinned to digitigrade + +/obj/item/clothing/shoes + update_icon_define_digi = "modular_chomp/icons/inventory/feet/mob_digi.dmi" + +/obj/item/clothing/suit + update_icon_define_digi = "modular_chomp/icons/inventory/suit/mob_digi.dmi" + +/obj/item/clothing/under + update_icon_define_digi = "modular_chomp/icons/inventory/uniform/mob_digi.dmi" + /obj/item/clothing/shoes/MouseDrop_T(mob/living/target, mob/living/user) if(!istype(user)) return ..() // If the user passed in isn't a living mob, exit if(target != user) return ..() // If the user didn't drag themselves, exit @@ -17,3 +31,54 @@ user.forceMove(src) return ..() + + +/obj/item/clothing/proc/handle_digitigrade(var/mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + + // if digitigrade-use flag is set + if(H.digitigrade) + + // figure out what slot we care about + if(!update_icon_define_digi) + return + + // Don't reset if already set + if(!fit_for_digi) + fit_for_digi = TRUE // set flag even if no icon_state exists, so we don't repeat checks + + //if update_icon_define is already set to something, place it in a var to hold it temporarily + if(update_icon_define) + update_icon_define_orig = update_icon_define + + // only override icon if a corresponding digitigrade replacement icon_state exists + // otherwise, keep the old non-digi icon_define (or nothing) + if(icon_state && icon_states(update_icon_define_digi).Find(icon_state)) + update_icon_define = update_icon_define_digi + + + // if not-digitigrade, only act if the clothing was previously fit for a digitigrade char + else + if(fit_for_digi) + fit_for_digi = FALSE + + //either reset update_icon_define to it's old value + // or reset update_icon_define to null + if(update_icon_define_orig) + update_icon_define = update_icon_define_orig + update_icon_define_orig = null + else + update_icon_define = null + +/obj/item/clothing/shoes/equipped(var/mob/user, var/slot) + . = ..() + handle_digitigrade(user) + +/obj/item/clothing/suit/equipped(var/mob/user, var/slot) + . = ..() + handle_digitigrade(user) + +/obj/item/clothing/under/equipped(var/mob/user, var/slot) + . = ..() + handle_digitigrade(user) \ No newline at end of file diff --git a/modular_chomp/code/modules/clothing/spacesuits/rig/clockwork_ch.dm b/modular_chomp/code/modules/clothing/spacesuits/rig/clockwork_ch.dm index 655c6f7bb9..d61d190297 100644 --- a/modular_chomp/code/modules/clothing/spacesuits/rig/clockwork_ch.dm +++ b/modular_chomp/code/modules/clothing/spacesuits/rig/clockwork_ch.dm @@ -20,7 +20,10 @@ boot_type = /obj/item/clothing/shoes/magboots/rig/ch/clockwork cell_type = /obj/item/weapon/cell/clockwork - allowed = list( + allowed = list(/obj/item/device/flashlight, + /obj/item/weapon/tank,/obj/item/device/suit_cooling_unit,/obj/item/weapon/storage/bag/ore, + /obj/item/device/t_scanner,/obj/item/weapon/pickaxe, /obj/item/weapon/rcd,/obj/item/weapon/storage/backpack, + /obj/item/device/bluespaceradio, /obj/item/device/defib_kit, /obj/item/weapon/ratvarian_spear ) initial_modules = list( @@ -57,7 +60,7 @@ name = "hierophant ansible" desc = "A curiously cold brass doodad. It seems as though it really doesn't appreciate being held. Due to it's size and the apparent electrical arc, it might be useful as a battery?" origin_tech = list(TECH_POWER = 8, TECH_ENGINEERING = 6) - icon = 'icons/obj/clockwork_objects.dmi' + icon = 'modular_chomp/icons/obj/clockwork_objects.dmi' icon_state = "hierophant_ansible" maxcharge = 4800 //same stats as a void cell, but slower at recharging itself charge_amount = 120 diff --git a/modular_chomp/code/modules/mining/shelter_atoms_ch.dm b/modular_chomp/code/modules/mining/shelter_atoms_ch.dm index 8c4046ba1e..bcf39dec62 100644 --- a/modular_chomp/code/modules/mining/shelter_atoms_ch.dm +++ b/modular_chomp/code/modules/mining/shelter_atoms_ch.dm @@ -83,6 +83,8 @@ /area/survivalpod/superpose/AnimalHospital +/area/survivalpod/superpose/RestaurationBar + /obj/item/device/survivalcapsule/superpose name = "superposed surfluid shelter capsule" desc = "A proprietary hyperstructure of many three-dimensional spaces superposed around a supermatter nano crystal; use a pen to reach the reset button. There's a license for use printed on the bottom." diff --git a/modular_chomp/code/modules/mining/shelters_ch.dm b/modular_chomp/code/modules/mining/shelters_ch.dm index 111737147e..208b3a4496 100644 --- a/modular_chomp/code/modules/mining/shelters_ch.dm +++ b/modular_chomp/code/modules/mining/shelters_ch.dm @@ -252,4 +252,10 @@ shelter_id = "AnimalHospital" mappath = "modular_chomp/maps/submaps/shelters/AnimalHospital-20x28.dmm" name = "Low-Tech Hospital." - description = "An animal hospital, doesnt not contain high end medical supplies, better then nothing." \ No newline at end of file + description = "An animal hospital, doesnt not contain high end medical supplies, better then nothing." + +/datum/map_template/shelter/superpose/RestaurationBar + shelter_id = "RestaurationBar" + mappath = "modular_chomp/maps/submaps/shelters/RestaurationBar-32x32.dmm" + name = "Resto-Bar" + description = "A large restaurant for food and drink, two overnight rental rooms and a small garden." diff --git a/modular_chomp/code/modules/mob/dead/observer/observer.dm b/modular_chomp/code/modules/mob/dead/observer/observer.dm new file mode 100644 index 0000000000..7928b41556 --- /dev/null +++ b/modular_chomp/code/modules/mob/dead/observer/observer.dm @@ -0,0 +1,7 @@ +/mob/observer + var/mob/living/body_backup = null //add reforming + +/mob/observer/Destroy() + if(body_backup) + qdel(body_backup) + ..() diff --git a/modular_chomp/code/modules/mob/living/carbon/brain/MMI.dm b/modular_chomp/code/modules/mob/living/carbon/brain/MMI.dm new file mode 100644 index 0000000000..ae2da9c9d3 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/brain/MMI.dm @@ -0,0 +1,7 @@ +/obj/item/device/mmi + var/mob/living/body_backup = null //add reforming + +/obj/item/device/mmi/Destroy() + if(body_backup) + qdel(body_backup) + ..() diff --git a/modular_chomp/code/modules/mob/living/carbon/human/emote.dm b/modular_chomp/code/modules/mob/living/carbon/human/emote.dm new file mode 100644 index 0000000000..2dfaf62f66 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/emote.dm @@ -0,0 +1,20 @@ +/mob/living/carbon/human/verb/hide_nutrition() + set name = "Show/Hide Nutrition Levels" + set category = "IC" + set desc = "Allow other player to see your current nutrition level or not." + nutrition_hidden = !nutrition_hidden + to_chat(src, "Players will [nutrition_hidden ? "no longer" : "now"] see your nutrition levels.") + +/mob/living/carbon/human/proc/toggle_speech_sounds() + set name = "Toggle Species Speech Sounds" + set desc = "Toggle if your species defined speech sound has a chance of playing on a Say" + set category = "IC" + + if(stat) + to_chat(src, "You must be awake and standing to perform this action!") + return + + speech_sound_enabled = !speech_sound_enabled + to_chat(src, "You will [speech_sound_enabled ? "now" : "no longer"] have a chance to play your species defined speech sound on a Say.") + + return TRUE diff --git a/modular_chomp/code/modules/mob/living/carbon/human/human.dm b/modular_chomp/code/modules/mob/living/carbon/human/human.dm index 9ff23f5dd6..20603a0aed 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/human.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/human.dm @@ -22,4 +22,11 @@ set category = "IC" set desc = "Toggle headset worn icon visibility." hide_headset = !hide_headset - update_inv_ears() \ No newline at end of file + update_inv_ears() + +/mob/living/carbon/human/verb/hide_glasses() + set name = "Show/Hide Glasses" + set category = "IC" + set desc = "Toggle glasses worn icon visibility." + hide_glasses = !hide_glasses + update_inv_glasses() \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm b/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm index e487bf278b..50362cf49f 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/human_defines.dm @@ -9,4 +9,7 @@ vore_icon_bellies = list("stomach", "taur belly") var/struggle_anim_stomach = FALSE var/struggle_anim_taur = FALSE - var/hide_headset = FALSE \ No newline at end of file + var/hide_headset = FALSE + var/hide_glasses = FALSE + var/speech_sound_enabled = TRUE + var/nutrition_hidden = FALSE diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/outsider/vox.dm new file mode 100644 index 0000000000..36ddf65e96 --- /dev/null +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/outsider/vox.dm @@ -0,0 +1,5 @@ +/datum/species/vox + speech_chance = 50 // As long as we're making the option to disable it, might as well bump up the chances when it is enabled + inherent_verbs = list( + /mob/living/carbon/human/proc/toggle_speech_sounds + ) diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm index 941e91e9f9..70eb1876a6 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm @@ -1,6 +1,22 @@ /datum/species var/crit_mod = 1 var/vore_belly_default_variant = "H" + var/list/env_traits = list() + var/dirtslip = FALSE + var/photosynthesizing = FALSE + var/grows = FALSE + var/shrinks = FALSE + var/rad_levels = list("safe" = 2.5, "danger_1" = 50, "danger_2" = 75, "danger_3" = 150) + var/rad_removal_mod = 1 + var/bite_mod = 1 + var/grab_resist_divisor_victims = 1 + var/grab_resist_divisor_self = 1 + var/grab_power_victims = 0 + var/grab_power_self = 0 + var/waking_speed = 1 + var/mudking = FALSE + var/icodigi = 'modular_chomp/icons/mob/human_races/r_digi.dmi' + var/digi_allowed = FALSE // Handles non-standard eyes when using a species that utilizes a custom base icon set. // Eye data is stored in the head organ, and this needs to be handled specially. @@ -27,4 +43,9 @@ if(!QDELETED(baseHead) && baseHead) qdel(baseHead) + return + +/datum/species/handle_environment_special(var/mob/living/carbon/human/H) + for(var/datum/trait/env_trait in env_traits) + env_trait.handle_environment_special(H) return \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm index 9ae8e26d1f..585b603639 100644 --- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm @@ -1,2 +1,74 @@ -/datum/species/unathi - vore_belly_default_variant = "L" \ No newline at end of file +//Any species commented out here must be made restricted elsewhere. They are kept here for easy reference of what we disabled. +//Note that at the time of this PR we are simply disabling everything new to discuss keeping versus scrapping later. + +///datum/species/zaddat +// spawn_flags = SPECIES_IS_RESTRICTED //Species has been enabled elsewhere. + +///datum/species/crew_shadekin +// spawn_flags = SPECIES_IS_RESTRICTED + +/datum/species/human/gravworlder + spawn_flags = SPECIES_IS_RESTRICTED + +/datum/species/human/spacer + spawn_flags = SPECIES_IS_RESTRICTED + +///datum/species/alraune +// spawn_flags = SPECIES_IS_RESTRICTED //Species has been enabled, keeping this here for reference. + +///datum/species/werebeast +// spawn_flags = SPECIES_IS_RESTRICTED + +/datum/species/shadekin_yw + spawn_flags = SPECIES_IS_RESTRICTED + +/datum/species/shadekin + //spawn_flags = SPECIES_IS_RESTRICTED + +//datum/species/protean +// spawn_flags = SPECIES_IS_RESTRICTED + +//TFF 20/1/20 - More whitelisted species listed here. Unable to force overrides to be enabled here. +/* +/datum/species/xenochimera + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE + +/datum/species/diona + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE + +/datum/species/vox + spawn_flags = SPECIES_CAN_JOIN | SPECIES_IS_WHITELISTED | SPECIES_WHITELIST_SELECTABLE +*/ + +//Can use digitigrade flags +/datum/species/custom + digi_allowed = TRUE + +/datum/species/unathi + digi_allowed = TRUE + vore_belly_default_variant = "L" + +/datum/species/tajaran + digi_allowed = TRUE + +/datum/species/hi_zoxxen + digi_allowed = TRUE + +/datum/species/sergal + digi_allowed = TRUE + +/datum/species/akula + digi_allowed = TRUE + +/datum/species/nevrean + digi_allowed = TRUE + +/datum/species/vulpkanin + digi_allowed = TRUE + +/datum/species/xenohybrid + digi_allowed = TRUE + +/datum/species/xenochimera + digi_allowed = TRUE + diff --git a/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm b/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm index 749d8b9f7c..ea38ce4cf8 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/simple_mob.dm @@ -2,6 +2,7 @@ //speech sounds var/list/speech_sounds = list() var/speech_chance = 75 //mobs can be a bit more emotive than carbon/humans + var/speech_sound_enabled = TRUE //vars for vore_icons toggle control var/vore_icons_cache = null // null by default. Going from ON to OFF should store vore_icons val here, OFF to ON reset as null @@ -34,8 +35,22 @@ update_icon() +/mob/living/simple_mob/verb/toggle_speech_sounds() + set name = "Toggle Species Speech Sounds" + set desc = "Toggle if your species defined speech sound has a chance of playing on a Say" + set category = "IC" + + if(stat) + to_chat(src, "You must be awake and standing to perform this action!") + return + + speech_sound_enabled = !speech_sound_enabled + to_chat(src, "You will [speech_sound_enabled ? "now" : "no longer"] have a chance to play your species defined speech sound on a Say.") + + return TRUE + /mob/living/simple_mob/handle_speech_sound() - if(speech_sounds && speech_sounds.len && prob(speech_chance)) + if(speech_sound_enabled && speech_sounds && speech_sounds.len && prob(speech_chance)) var/list/returns[2] returns[1] = sound(pick(speech_sounds)) returns[2] = 50 @@ -82,6 +97,3 @@ // This from original living.dm update_transforms too handle_status_indicators() - - - diff --git a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph.dm b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph.dm index 2c991b1c54..2f998702e3 100644 --- a/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph.dm +++ b/modular_chomp/code/modules/mob/living/simple_mob/subtypes/xenomorph.dm @@ -87,7 +87,7 @@ var/datum/action/innate/xeno_ch/xeno_corrode/corrode_action = new var/datum/action/innate/xeno_ch/xeno_pounce/pounce_action = new var/datum/action/innate/xeno_ch/xeno_spin/spin_action = new - + can_be_drop_prey = FALSE //CHOMP Add /mob/living/simple_mob/xeno_ch/Initialize() @@ -99,6 +99,7 @@ . = ..() faction = "neutral" verbs |= /mob/living/simple_mob/xeno_ch/proc/xeno_build + verbs |= /mob/living/simple_mob/verb/toggle_speech_sounds build_action.Grant(src) diff --git a/modular_chomp/code/modules/mob/mob.dm b/modular_chomp/code/modules/mob/mob.dm index 56eb7ea782..be6e3daee9 100644 --- a/modular_chomp/code/modules/mob/mob.dm +++ b/modular_chomp/code/modules/mob/mob.dm @@ -1,9 +1,10 @@ /mob var/voice_freq = 42500 // Preference for character voice frequency var/list/voice_sounds_list = list() // The sound list containing our voice sounds! + var/enabled = TRUE //Pauses a mob if disabled (Prevents life ticks from happening) var/died_in_vr = FALSE //For virtual reality sleepers /mob/is_incorporeal() if(incorporeal_move) return 1 - ..() \ No newline at end of file + ..() diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm index e3c294297b..d00e72942d 100644 --- a/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_extra.dm @@ -163,4 +163,22 @@ name = "Thick Throat" icon_state = "thickthroat" body_parts = list(BP_HEAD) + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/marking/ch/fangs2 + name = "Forward Fangs" + icon_state = "fangs2" + body_parts = list(BP_HEAD) + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/marking/ch/fangs3 + name = "Further Forward Fangs" + icon_state = "fangs3" + body_parts = list(BP_HEAD) + color_blend_mode = ICON_MULTIPLY + +/datum/sprite_accessory/marking/ch/normeyes + name = "Normal Eyes" + icon_state = "normeyes" + body_parts = list(BP_HEAD) color_blend_mode = ICON_MULTIPLY \ No newline at end of file diff --git a/modular_chomp/code/modules/mob/new_player/sprite_accessories_tail.dm b/modular_chomp/code/modules/mob/new_player/sprite_accessories_tail.dm index 01f7767d8f..8a2d9f126e 100644 --- a/modular_chomp/code/modules/mob/new_player/sprite_accessories_tail.dm +++ b/modular_chomp/code/modules/mob/new_player/sprite_accessories_tail.dm @@ -1,3 +1,7 @@ +/datum/sprite_accessory/tail + lower_layer_dirs = list(SOUTH, WEST, EAST) + + /datum/sprite_accessory/tail/anthrovirus_tail name = "Anthro Virus Tail" icon = 'icons/mob/vore/tails_ch.dmi' diff --git a/modular_chomp/code/modules/projectiles/clockwork/clockwork_guns_ch.dm b/modular_chomp/code/modules/projectiles/clockwork/clockwork_guns_ch.dm new file mode 100644 index 0000000000..898ff08b6c --- /dev/null +++ b/modular_chomp/code/modules/projectiles/clockwork/clockwork_guns_ch.dm @@ -0,0 +1,91 @@ +//clockcult gun + +/obj/item/weapon/gun/energy/clockwork + name = "clockwork rifle" + desc = "A rifle that looks to be made entirely out of brass. It has a charging handle on the side, but doesn't seem to have a way to eject the magazine underneath." + icon = 'modular_chomp/icons/obj/guns/clockwork/guns_ch.dmi' + icon_state = "clockrifle" + item_state = "clockrifle" + wielded_item_state = "clockrifle-wielded" + slot_flags = SLOT_BACK + item_icons = list(slot_l_hand_str = 'modular_chomp/icons/mob/items/lefthand_guns_ch.dmi', slot_r_hand_str = 'modular_chomp/icons/mob/items/righthand_guns_ch.dmi', "slot_back" = 'modular_chomp/icons/mob/guns_back_ch.dmi') + origin_tech = list(TECH_COMBAT = 4, TECH_MAGNET = 2, TECH_POWER = 4) + projectile_type = /obj/item/projectile/bullet/rifle/clockwork + w_class = ITEMSIZE_HUGE + one_handed_penalty = 90 + accuracy = 45 + charge_cost = 300 + + battery_lock = 1 + unacidable = TRUE + + var/recharging = 0 + var/phase_power = 2400 + firemodes = list( + list(mode_name="burst", burst=3, fire_delay=8, projectile_type=/obj/item/projectile/bullet/rifle/clockwork, charge_cost = 80), + list(mode_name="volt beam", fire_delay=12, projectile_type=/obj/item/projectile/beam/shock/clockwork, charge_cost = 2400), + ) + cell_type = /obj/item/weapon/cell/device/weapon/empproof + +/obj/item/weapon/gun/energy/clockwork/unload_ammo(var/mob/user) + if(recharging) + return + recharging = 1 + update_icon() + playsound(src,'modular_chomp/sound/weapons/clockwork/clockwork_cock.ogg',25,1) + user.visible_message("[user] pulls the charging handle on \the [src] and it whirrs to life!", \ + "You pull the charging handle on \the [src] and begin the reloading sequence.") + playsound(src,'modular_chomp/sound/weapons/clockwork/cwc_rifle_fabricate.ogg',25,5) + while(recharging) + if(!do_after(user, 50, src)) + break + user.hud_used.update_ammo_hud(user, src) + if(power_supply.give(phase_power) < phase_power) + break + + recharging = 0 + update_icon() + user.hud_used.update_ammo_hud(user, src) // Update one last time once we're finished! + +/obj/item/projectile/bullet/rifle/clockwork + fire_sound = 'modular_chomp/sound/weapons/clockwork/cwc_rifle_fire.ogg' + damage = 20 + hud_state = "rifle_heavy" + +/obj/item/projectile/beam/shock/clockwork + name = "shock beam" + fire_sound = 'modular_chomp/sound/weapons/clockwork/voltbeam_fire.ogg' + icon_state = "lightning" + damage_type = ELECTROCUTE + + muzzle_type = /obj/effect/projectile/muzzle/voltbeam + tracer_type = /obj/effect/projectile/tracer/voltbeam + impact_type = /obj/effect/projectile/impact/voltbeam + + damage = 40 + agony = 15 + eyeblur = 2 + hitsound = 'sound/effects/lightningshock.ogg' + hitsound_wall = 'modular_chomp/sound/weapons/clockwork/voltbeamsearwall.ogg' + hud_state = "taser" + +/obj/effect/projectile/muzzle/voltbeam + icon = 'modular_chomp/icons/obj/guns/clockwork/projectiles_tracer_ch.dmi' + icon_state = "muzzle_volt_ray" + light_range = 2 + light_power = 1 + light_color = "#DAAA18" + +/obj/effect/projectile/tracer/voltbeam + icon = 'modular_chomp/icons/obj/guns/clockwork/projectiles_tracer_ch.dmi' + icon_state = "volt_ray" + light_range = 2 + light_power = 1 + light_color = "#DAAA18" + +/obj/effect/projectile/impact/voltbeam + icon = 'modular_chomp/icons/obj/guns/clockwork/projectiles_tracer_ch.dmi' + icon_state = "impact_volt_ray" + light_range = 2 + light_power = 1 + light_color = "#DAAA18" diff --git a/modular_chomp/code/modules/reagents/reactions/instant/instant.dm b/modular_chomp/code/modules/reagents/reactions/instant/instant.dm new file mode 100644 index 0000000000..b3bf92ea38 --- /dev/null +++ b/modular_chomp/code/modules/reagents/reactions/instant/instant.dm @@ -0,0 +1,25 @@ +/decl/chemical_reaction/instant/amorphorovir + name = "Amorphorovir" + id = "amorphorovir" + result = "amorphorovir" + required_reagents = list("cryptobiolin" = 30, "biomass" = 30, "hyperzine" = 20) + catalysts = list("phoron" = 5) + result_amount = 1 + +/decl/chemical_reaction/instant/androrovir + result = "change_drug_male" + +/decl/chemical_reaction/instant/gynorovir + result = "change_drug_female" + +/decl/chemical_reaction/instant/androgynorovir + result = "change_drug_intersex" + +/decl/chemical_reaction/instant/androrovir_bootleg + result = "change_drug_male" + +/decl/chemical_reaction/instant/gynorovir_bootleg + result = "change_drug_female" + +/decl/chemical_reaction/instant/androgynorovir_bootleg + result = "change_drug_intersex" diff --git a/modular_chomp/code/modules/reagents/reagents/medicine.dm b/modular_chomp/code/modules/reagents/reagents/medicine.dm new file mode 100644 index 0000000000..62674cf23b --- /dev/null +++ b/modular_chomp/code/modules/reagents/reagents/medicine.dm @@ -0,0 +1,64 @@ +///GENDER CHANGE REAGENTS//// + +/datum/reagent/change_drug //base chemical + name = "Amorphorovir" //always the same name + id = "change_drug" + metabolism = 100 //set high enough that it does not process multiple times(delay implemented below) + description = "the bloods DNA in this seems aggressive" + taste_description = "this shouldn't be here" //unobtainable ingame + color = "#7F0000" + var/gender_change = null //set the gender variable here so we can set it to others in varients + +/datum/reagent/change_drug/male //inherits base chemical properties listed above + name = "Androrovir" + id = "change_drug_male" //unique ID for each varient + taste_description = "old spice odor blocker and body wash" + reagent_state = LIQUID + description = \ + "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems\ + to realign the target's gender to be male." + color = "#428AFF" + gender_change = "male" + scannable = 1 + +/datum/reagent/change_drug/female + name = "Gynorovir" + id = "change_drug_female" + description = \ + "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems\ + to realign the target's gender to be female." + taste_description = "spiced honey" + reagent_state = LIQUID + color = "#FFA0FA" + gender_change = "female" + scannable = 1 + +/datum/reagent/change_drug/intersex + name = "Androgynorovir" + id = "change_drug_intersex" + description = \ + "A medical concoction, capable of rapidly altering genetic and physical structure of the body. This one seems\ + to realign the target's gender to be mixed." + taste_description = "something salty and sweet" + reagent_state = LIQUID + color = "#CB9EFF" + gender_change = "plural" + scannable = 1 + +/datum/reagent/change_drug/affect_blood(var/mob/living/carbon/human/M, var/alien, var/removed) + if (!(alien == IS_DIONA || M.gender == gender_change || M.gender_change_cooldown == 1) && M.allow_spontaneous_tf) + //set not to bug them because the chem is activating + M.gender_change_cooldown = 1 + M.visible_message( + "[M] suddenly twitches as some of their features seem to contort and reshape.", + "You lose focus as warmth spreads throughout your chest and abdomen." + ) + //wait 30 seconds, growth takes time yo + spawn(300) + //allow it to bug them again now that we've waited + M.gender_change_cooldown = 0 + //check if they want this to happen for pref sake + if (alert(M,"This chemical will change your gender, proceed?", "Warning", "Yes", "No") == "Yes") + M.change_gender_identity(gender_change) + M.change_gender(gender_change) + M << "You feel like a new person." //success diff --git a/code/modules/resleeving/machines_ch.dm b/modular_chomp/code/modules/resleeving/machines.dm similarity index 94% rename from code/modules/resleeving/machines_ch.dm rename to modular_chomp/code/modules/resleeving/machines.dm index 647fe803d6..d4bd621413 100644 --- a/code/modules/resleeving/machines_ch.dm +++ b/modular_chomp/code/modules/resleeving/machines.dm @@ -1,11 +1,11 @@ -/obj/machinery/clonepod/transhuman/growclone(var/datum/transhuman/body_record/current_project) - . = ..() - //Extra clonepod behavior - var/mob/living/carbon/human/H = occupant - var/datum/dna2/record/R = current_project.mydna - - H.digitigrade = R.dna.digitigrade // ensure clone mob has digitigrade var set appropriately - if(H.dna.digitigrade <> R.dna.digitigrade) - H.dna.digitigrade = R.dna.digitigrade // ensure cloned DNA is set appropriately from record??? for some reason it doesn't get set right despite the override to datum/dna/Clone() - +/obj/machinery/clonepod/transhuman/growclone(var/datum/transhuman/body_record/current_project) + . = ..() + //Extra clonepod behavior + var/mob/living/carbon/human/H = occupant + var/datum/dna2/record/R = current_project.mydna + + H.digitigrade = R.dna.digitigrade // ensure clone mob has digitigrade var set appropriately + if(H.dna.digitigrade <> R.dna.digitigrade) + H.dna.digitigrade = R.dna.digitigrade // ensure cloned DNA is set appropriately from record??? for some reason it doesn't get set right despite the override to datum/dna/Clone() + H.update_icons_body() \ No newline at end of file diff --git a/icons/inventory/feet/mob_digi_ch.dmi b/modular_chomp/icons/inventory/feet/mob_digi.dmi similarity index 100% rename from icons/inventory/feet/mob_digi_ch.dmi rename to modular_chomp/icons/inventory/feet/mob_digi.dmi diff --git a/icons/inventory/suit/mob_digi_ch.dmi b/modular_chomp/icons/inventory/suit/mob_digi.dmi similarity index 100% rename from icons/inventory/suit/mob_digi_ch.dmi rename to modular_chomp/icons/inventory/suit/mob_digi.dmi diff --git a/icons/inventory/uniform/mob_digi_ch.dmi b/modular_chomp/icons/inventory/uniform/mob_digi.dmi similarity index 100% rename from icons/inventory/uniform/mob_digi_ch.dmi rename to modular_chomp/icons/inventory/uniform/mob_digi.dmi diff --git a/modular_chomp/icons/mob/catborg/catborg.dmi b/modular_chomp/icons/mob/catborg/catborg.dmi index 4784ff1bf1..a249b25e05 100644 Binary files a/modular_chomp/icons/mob/catborg/catborg.dmi and b/modular_chomp/icons/mob/catborg/catborg.dmi differ diff --git a/modular_chomp/icons/mob/guns_back_ch.dmi b/modular_chomp/icons/mob/guns_back_ch.dmi new file mode 100644 index 0000000000..5507272f76 Binary files /dev/null and b/modular_chomp/icons/mob/guns_back_ch.dmi differ diff --git a/icons/mob/human_races/r_digi_ch.dmi b/modular_chomp/icons/mob/human_races/r_digi.dmi similarity index 100% rename from icons/mob/human_races/r_digi_ch.dmi rename to modular_chomp/icons/mob/human_races/r_digi.dmi diff --git a/modular_chomp/icons/mob/items/clockwork_lefthand.dmi b/modular_chomp/icons/mob/items/clockwork_lefthand.dmi new file mode 100644 index 0000000000..01035530e8 Binary files /dev/null and b/modular_chomp/icons/mob/items/clockwork_lefthand.dmi differ diff --git a/modular_chomp/icons/mob/items/clockwork_righthand.dmi b/modular_chomp/icons/mob/items/clockwork_righthand.dmi new file mode 100644 index 0000000000..fa45471c9f Binary files /dev/null and b/modular_chomp/icons/mob/items/clockwork_righthand.dmi differ diff --git a/modular_chomp/icons/mob/items/lefthand_guns_ch.dmi b/modular_chomp/icons/mob/items/lefthand_guns_ch.dmi new file mode 100644 index 0000000000..4b49088ec0 Binary files /dev/null and b/modular_chomp/icons/mob/items/lefthand_guns_ch.dmi differ diff --git a/modular_chomp/icons/mob/items/righthand_guns_ch.dmi b/modular_chomp/icons/mob/items/righthand_guns_ch.dmi new file mode 100644 index 0000000000..53377447e5 Binary files /dev/null and b/modular_chomp/icons/mob/items/righthand_guns_ch.dmi differ diff --git a/modular_chomp/icons/obj/clockwork_objects.dmi b/modular_chomp/icons/obj/clockwork_objects.dmi new file mode 100644 index 0000000000..2365eec97c Binary files /dev/null and b/modular_chomp/icons/obj/clockwork_objects.dmi differ diff --git a/modular_chomp/icons/obj/guns/clockwork/guns_ch.dmi b/modular_chomp/icons/obj/guns/clockwork/guns_ch.dmi new file mode 100644 index 0000000000..77c4196be7 Binary files /dev/null and b/modular_chomp/icons/obj/guns/clockwork/guns_ch.dmi differ diff --git a/modular_chomp/icons/obj/guns/clockwork/projectiles_tracer_ch.dmi b/modular_chomp/icons/obj/guns/clockwork/projectiles_tracer_ch.dmi new file mode 100644 index 0000000000..c2574b6375 Binary files /dev/null and b/modular_chomp/icons/obj/guns/clockwork/projectiles_tracer_ch.dmi differ diff --git a/modular_chomp/maps/submaps/shelters/RestaurationBar-32x32.dmm b/modular_chomp/maps/submaps/shelters/RestaurationBar-32x32.dmm new file mode 100644 index 0000000000..59ee5cb20f --- /dev/null +++ b/modular_chomp/maps/submaps/shelters/RestaurationBar-32x32.dmm @@ -0,0 +1,359 @@ +"aS" = (/obj/item/weapon/gun/energy/sizegun,/obj/item/device/bodysnatcher,/obj/item/weapon/handcuffs/fuzzy,/obj/item/weapon/handcuffs/legcuffs/fuzzy,/obj/item/clothing/accessory/collar,/obj/item/weapon/tape_roll,/obj/item/device/perfect_tele/one_beacon,/obj/item/weapon/disk/nifsoft/compliance,/obj/item/selectable_item/chemistrykit,/obj/item/selectable_item/chemistrykit,/obj/item/selectable_item/chemistrykit,/obj/item/capture_crystal,/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"aY" = (/obj/structure/table/reinforced,/obj/random/drinksoft,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"bj" = (/obj/machinery/vending/giftvendor,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"bl" = (/obj/machinery/atm{pixel_x = 30},/obj/effect/floor_decal/spline/fancy/wood{dir = 9},/obj/item/weapon/stool/padded,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"bm" = (/obj/structure/bed/chair/oldsofa{dir = 1},/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"bo" = (/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"br" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"bB" = (/obj/machinery/atm{pixel_x = 30},/obj/effect/floor_decal/spline/fancy{dir = 5},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"bH" = (/obj/structure/bookcase,/obj/item/weapon/book/bundle/custom_library/reference/ThermodynamicReactionsandResearch,/obj/item/weapon/book/bundle/custom_library/fiction/ghostship,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"bJ" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/sink/kitchen{dir = 8; pixel_x = -13},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"bN" = (/obj/structure/toilet{dir = 8},/obj/effect/floor_decal/corner/purple/diagonal,/obj/item/toy/plushie/suswhite,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"bU" = (/obj/machinery/newscaster{pixel_y = 30},/obj/structure/bed/chair/office,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"ci" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"cB" = (/obj/structure/bookcase,/obj/item/weapon/book/codex/lore/robutt,/obj/item/weapon/book/bundle/custom_library/fiction/metalglen,/obj/item/weapon/book/bundle/custom_library/fiction/silence,/obj/item/weapon/book/bundle/custom_library/fiction/taleoftherainbowcat,/obj/item/weapon/book/bundle/custom_library/religious/zoroastrianism,/obj/machinery/light{dir = 1; layer = 3},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"cK" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/orangedouble,/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"cL" = (/obj/machinery/button/remote/airlock{id = "awaydorm_restaurationbar1"; name = "Bolt Control"; pixel_y = -29; specialfunctions = 4},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"cT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{health = 1e+006},/turf/space,/area/survivalpod/superpose/RestaurationBar) +"da" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/spline/fancy/wood{dir = 10},/obj/item/weapon/stool/padded,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"ds" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"dN" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"},/obj/structure/closet/crate/bin,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"dP" = (/obj/machinery/honey_extractor,/obj/effect/floor_decal/corner/lime/border{dir = 1},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"ec" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/obj/item/weapon/material/ashtray/glass,/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/obj/item/weapon/flame/lighter/random,/obj/item/weapon/storage/fancy/cigarettes/professionals,/obj/item/weapon/storage/fancy/cigar/havana,/obj/structure/table/hardwoodtable,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"ei" = (/obj/structure/table/gamblingtable,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"el" = (/obj/machinery/light{layer = 3},/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"ep" = (/obj/structure/flora/ausbushes/ppflowers,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"ex" = (/obj/structure/bed/chair/wood{dir = 8},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"eB" = (/obj/machinery/space_heater,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"eD" = (/obj/structure/table/gamblingtable,/obj/item/weapon/storage/pill_bottle/dice,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"eE" = (/obj/structure/table/hardwoodtable,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/obj/item/weapon/flame/candle,/obj/item/device/taperecorder,/obj/random/instrument,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"eF" = (/obj/structure/table/fancyblack,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/obj/item/weapon/cane,/obj/item/device/radio/subspace{desc = "A heavy duty radio that can pick up all manor of shortwave and subspace frequencies. It's a bit bulkier than a normal radio thanks to the extra hardware. An engraving on the frame reads: IF FOUND, RETURN TO THE BAR!"; name = "Bar subspace radio"; pixel_y = 5},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"eK" = (/obj/structure/closet/crate/bin,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"eN" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_y = 32},/obj/effect/floor_decal/corner/yellow/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"fa" = (/obj/machinery/appliance/cooker/oven,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light{dir = 1; layer = 3},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"fc" = (/obj/structure/bed/chair/wood,/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"ff" = (/obj/effect/floor_decal/corner/lime/bordercorner{dir = 4},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"fi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{dir = 8; health = null},/obj/structure/window/reinforced{health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"fq" = (/obj/machinery/light{layer = 3},/obj/effect/floor_decal/corner/yellow/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"ft" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/reagent_containers/food/snacks/mint,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/whetstone,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"fZ" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"go" = (/obj/machinery/chem_master/condimaster,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"gC" = (/obj/machinery/firealarm/alarms_hidden,/turf/simulated/wall,/area/survivalpod/superpose/RestaurationBar) +"gG" = (/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"hk" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"hr" = (/obj/structure/table/bench/glass,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/obj/machinery/light{layer = 3},/obj/structure/flora/pottedplant/thinbush{pixel_y = 10},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"hu" = (/obj/machinery/appliance/cooker/fryer,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"hw" = (/obj/structure/closet/walllocker_double/north{name = "Survival Cabinet"},/obj/item/weapon/storage/backpack/messenger,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/obj/item/weapon/material/knife/tacknife/survival,/obj/item/weapon/reagent_containers/food/snacks/sosjerky,/obj/item/weapon/cell/device/hyper,/obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma,/obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy,/obj/item/weapon/storage/box/survival/space,/obj/item/device/radio,/obj/item/clothing/accessory/storage/black_drop_pouches,/obj/item/weapon/reagent_containers/pill/dylovene,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/random/soap,/obj/item/weapon/gun/energy/locked/frontier/handbow/unlocked,/obj/item/device/fbp_backup_cell,/obj/item/device/pda,/obj/item/device/starcaster_news,/obj/item/device/suit_cooling_unit/emergency,/obj/item/device/gps,/obj/item/weapon/flame/lighter/zippo/royal,/obj/item/weapon/storage/mre/random,/obj/item/weapon/storage/mre/random,/obj/item/clothing/accessory/permit/gun,/obj/item/device/binoculars,/obj/item/bodybag/cryobag,/obj/item/weapon/cell/device/hyper,/obj/item/sticky_pad/random,/obj/item/weapon/card/id/external,/obj/item/weapon/pen/multi,/obj/item/weapon/storage/box/khcrystal,/obj/item/weapon/storage/box/survival/comp,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting,/obj/item/stack/nanopaste,/obj/item/weapon/extinguisher/mini,/obj/item/weapon/reagent_containers/glass/beaker/vial/tricordrazine,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"hE" = (/obj/random/pottedplant,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"hI" = (/obj/structure/grille,/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"ii" = (/obj/structure/simple_door/wood,/obj/structure/simple_door/wood,/turf/simulated/floor/carpet,/area/survivalpod/superpose/RestaurationBar) +"ik" = (/obj/structure/window/reinforced{dir = 8; health = null},/obj/structure/window/reinforced{health = 1e+006},/obj/structure/curtain/black{icon_state = "open"; layer = 2; name = "privacy curtain"; opacity = 0},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"iy" = (/obj/structure/window/basic{dir = 1},/obj/structure/curtain/open/shower,/obj/machinery/shower{dir = 1},/obj/effect/floor_decal/corner/yellow/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"iz" = (/obj/structure/table/marble,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"jv" = (/turf/simulated/wall/r_wall,/area/survivalpod/superpose/RestaurationBar) +"jL" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"jV" = (/obj/effect/floor_decal/corner/lime/border,/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{layer = 3},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"ke" = (/obj/structure/bed/chair/wood{dir = 1},/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"kz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"kD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"ld" = (/obj/structure/bed,/obj/item/weapon/bedsheet/purple,/obj/structure/curtain/open/bed,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"ll" = (/obj/effect/floor_decal/spline/fancy{dir = 1; icon_state = "spline_fancy_corner"},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"ln" = (/obj/machinery/smartfridge/produce,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8; health = null},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"lo" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"ls" = (/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"lN" = (/obj/machinery/light{dir = 1},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/machinery/door/window/eastleft,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"lT" = (/obj/structure/table/gamblingtable,/obj/item/weapon/pen,/obj/item/weapon/paper_bin,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"lZ" = (/obj/machinery/autolathe{hacked = 1},/obj/fiftyspawner/glass,/obj/fiftyspawner/glass,/obj/fiftyspawner/steel,/obj/fiftyspawner/steel,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"mp" = (/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"mx" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 9},/obj/machinery/light{dir = 8; icon_state = "tube1"},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"mz" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -34},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"mU" = (/obj/machinery/door/airlock{id_tag = "awaydorm_restaurationbar1"},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"mZ" = (/obj/structure/casino_table/roulette_table,/obj/structure/casino_table/roulette_chart,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"nj" = (/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{health = 1e+006},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"nm" = (/obj/machinery/door/window/eastleft,/obj/effect/floor_decal/corner/lime/border{dir = 4},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"nz" = (/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/corner/lime/border{dir = 4},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"nB" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/microwave,/obj/effect/map_effect/perma_light,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"nJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"og" = (/obj/effect/floor_decal/spline/fancy{dir = 1},/obj/structure/prop/statue/pillar/dark,/obj/effect/map_effect/perma_light,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"ow" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"oQ" = (/obj/effect/floor_decal/spline/fancy{dir = 8},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"po" = (/obj/structure/casino_table/blackjack_m,/obj/item/weapon/deck/cards,/obj/machinery/light/floortube,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"pv" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"pB" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"pF" = (/obj/structure/flora/ausbushes/ppflowers,/mob/living/simple_mob/vore/alienanimals/teppi/baby,/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"pW" = (/obj/machinery/computer/arcade{dir = 4},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"qp" = (/obj/machinery/space_heater,/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"qt" = (/obj/machinery/light,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"qv" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 9},/obj/effect/floor_decal/spline/fancy/wood{dir = 9},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"qx" = (/obj/structure/table/fancyblack,/obj/random/mug,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"qy" = (/obj/structure/bed,/obj/item/weapon/bedsheet/blue,/obj/structure/curtain/open/bed,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"qD" = (/obj/machinery/space_heater,/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"qO" = (/obj/effect/floor_decal/corner/lime/border{dir = 10},/obj/structure/sink{dir = 8; pixel_x = -12},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"qV" = (/obj/structure/flora/ausbushes/stalkybush,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"qZ" = (/obj/machinery/biogenerator,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"rd" = (/obj/structure/table/reinforced,/obj/item/weapon/deskbell,/turf/simulated/floor/wood/broken,/area/survivalpod/superpose/RestaurationBar) +"rg" = (/obj/structure/table/rack/shelf,/obj/random/soap,/obj/item/weapon/towel/random,/obj/item/weapon/makeover,/obj/effect/floor_decal/corner/yellow/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"rh" = (/obj/machinery/replicator/clothing,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"rO" = (/obj/machinery/vending/dinnerware{req_log_access = null},/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"rS" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"si" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/extinguisher_cabinet{pixel_x = -28},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"sj" = (/obj/structure/flora/ausbushes/leafybush,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"sl" = (/obj/machinery/door/airlock{name = "Toilet"},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"sy" = (/obj/effect/floor_decal/spline/fancy/wood,/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 4},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"sA" = (/obj/structure/bed/double/padded,/obj/item/weapon/bedsheet/purpledouble,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"sC" = (/obj/machinery/appliance/cooker/grill,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"sI" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"sJ" = (/obj/structure/curtain/black,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"sP" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/meta/metapint,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"sY" = (/obj/machinery/vending/hydronutrients{req_log_access = null},/obj/machinery/light{dir = 1; layer = 3},/obj/effect/floor_decal/corner/lime/border{dir = 1},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"sZ" = (/obj/structure/bed/chair/wood{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"tc" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/curtain/black{icon_state = "open"; layer = 2; name = "privacy curtain"; opacity = 0},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"tj" = (/obj/item/weapon/deck/cards,/obj/structure/table/fancyblack,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"tz" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{health = 1e+006},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"tA" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"tC" = (/obj/machinery/vending/snack{dir = 4},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"tQ" = (/obj/structure/casino_table/blackjack_r,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"uo" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"uu" = (/obj/structure/bed/chair/oldsofa/left{dir = 1},/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"uw" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"uJ" = (/obj/structure/closet/walllocker_double/north{name = "Survival Cabinet"},/obj/item/weapon/storage/backpack/messenger,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/obj/item/weapon/reagent_containers/food/drinks/cans/waterbottle,/obj/item/weapon/material/knife/tacknife/survival,/obj/item/weapon/reagent_containers/food/snacks/sosjerky,/obj/item/weapon/cell/device/hyper,/obj/item/weapon/reagent_containers/hypospray/autoinjector/trauma,/obj/item/weapon/reagent_containers/hypospray/autoinjector/oxy,/obj/item/weapon/storage/box/survival/space,/obj/item/device/radio,/obj/item/clothing/accessory/storage/black_drop_pouches,/obj/item/weapon/reagent_containers/pill/dylovene,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/random/soap,/obj/item/weapon/gun/energy/locked/frontier/rifle/unlocked,/obj/item/device/fbp_backup_cell,/obj/item/device/pda,/obj/item/device/starcaster_news,/obj/item/device/suit_cooling_unit/emergency,/obj/item/device/gps,/obj/item/weapon/flame/lighter/zippo/black,/obj/item/weapon/storage/mre/random,/obj/item/weapon/storage/mre/random,/obj/item/clothing/accessory/permit/gun,/obj/item/device/binoculars,/obj/item/bodybag/cryobag,/obj/item/weapon/cell/device/hyper,/obj/item/sticky_pad/random,/obj/item/weapon/card/id/external,/obj/item/weapon/pen/multi,/obj/item/weapon/storage/box/khcrystal,/obj/item/weapon/storage/box/survival/comp,/obj/item/weapon/reagent_containers/hypospray/autoinjector/biginjector/clotting,/obj/item/stack/nanopaste,/obj/item/weapon/extinguisher/mini,/obj/item/weapon/reagent_containers/glass/beaker/vial/tricordrazine,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"uM" = (/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"uO" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"uX" = (/obj/machinery/appliance/mixer/cereal,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"vf" = (/turf/simulated/floor/carpet,/area/survivalpod/superpose/RestaurationBar) +"vq" = (/obj/structure/table/gamblingtable,/obj/item/weapon/storage/dicecup/loaded,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"vs" = (/obj/effect/floor_decal/spline/fancy,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"vz" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"vB" = (/obj/structure/window/basic,/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 16},/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"vG" = (/obj/machinery/media/jukebox/hacked,/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"vM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"wg" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"wm" = (/obj/structure/closet/toolcloset,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/module/id_auth,/obj/item/weapon/module/card_reader,/obj/item/weapon/module/cell_power,/obj/item/weapon/module/power_control,/obj/item/weapon/circuitboard/microwave,/obj/item/weapon/circuitboard/mass_driver,/obj/item/weapon/circuitboard/jukebox,/obj/item/weapon/circuitboard/intercom,/obj/item/weapon/circuitboard/firealarm,/obj/item/weapon/circuitboard/airalarm,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/tape_roll,/obj/item/weapon/tape_roll,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/box/lights/mixed,/obj/item/weapon/storage/belt/utility/full/multitool,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/bag/trash,/obj/item/weapon/storage/backpack/dufflebag/eng,/obj/item/device/geiger,/obj/item/device/mapping_unit,/obj/item/clothing/under/waiter,/obj/item/clothing/under/waiter,/obj/item/clothing/shoes/dress,/obj/item/clothing/shoes/dress,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"wp" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/recharger/wallcharger{pixel_x = 36; pixel_y = 3},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"xj" = (/obj/machinery/button/remote/airlock{id = "awaydorm_restaurationbar"; name = "Bolt Control"; pixel_y = 30; specialfunctions = 4},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"xn" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/effect/map_effect/perma_light,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"xo" = (/obj/machinery/seed_storage/garden,/obj/effect/floor_decal/corner/lime/border{dir = 9},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"xq" = (/obj/structure/table/fancyblack,/obj/item/trash/plate,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/effect/map_effect/perma_light,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"xt" = (/obj/structure/table/rack,/obj/effect/map_effect/perma_light,/turf/simulated/floor/carpet,/area/survivalpod/superpose/RestaurationBar) +"xG" = (/obj/structure/bed/chair/wood{dir = 1},/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"xK" = (/obj/structure/toilet{dir = 4},/obj/effect/floor_decal/corner/yellow/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"xM" = (/obj/effect/floor_decal/spline/fancy{dir = 9},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"xN" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"xO" = (/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"yv" = (/obj/structure/table/marble,/obj/machinery/light{layer = 3},/obj/machinery/chemical_dispenser/bar_soft/full{dir = 1},/obj/item/weapon/reagent_containers/chem_disp_cartridge/gelatin,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"yL" = (/obj/effect/floor_decal/corner/yellow/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"yS" = (/obj/effect/floor_decal/corner/lime/border{dir = 8},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"yT" = (/obj/structure/table/fancyblack,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/obj/random/drinkbottle,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"zA" = (/obj/machinery/vending/boozeomat{req_log_access = null; req_access = null},/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"zG" = (/obj/structure/bed/chair/wood{dir = 4},/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"zN" = (/obj/structure/bed/chair/wood,/obj/effect/floor_decal/spline/fancy/wood{dir = 5},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Ae" = (/turf/simulated/wall,/area/survivalpod/superpose/RestaurationBar) +"Af" = (/obj/structure/table/marble,/obj/item/weapon/material/ashtray/glass,/obj/machinery/recharger,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"Aq" = (/obj/machinery/smartfridge/drinks,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"As" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/obj/structure/window/reinforced/polarized{id = "gamble_restaurationbar_ch"},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"AG" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"AJ" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"AR" = (/obj/structure/table/gamblingtable,/obj/item/weapon/deck/holder,/obj/random/drinksoft,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"AT" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"AW" = (/obj/machinery/vending/hydroseeds{req_log_access = null},/obj/effect/floor_decal/corner/lime/border{dir = 1},/obj/machinery/light{dir = 1; layer = 3},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"Bl" = (/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"Br" = (/obj/structure/bed/chair/wood{dir = 4},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"BC" = (/obj/structure/closet/crate,/obj/item/stack/material/cardboard{amount = 50},/obj/item/stack/material/cardboard{amount = 50},/obj/item/stack/material/cardboard{amount = 50},/obj/item/stack/material/cardboard{amount = 50},/obj/fiftyspawner/blucarpet,/obj/fiftyspawner/oracarpet,/obj/fiftyspawner/purcarpet,/obj/fiftyspawner/sblucarpet,/obj/fiftyspawner/tealcarpet,/obj/fiftyspawner/turcarpet,/obj/item/stack/material/wood{amount = 50; color = "#824B28"},/obj/item/stack/material/wood{amount = 50; color = "#824B28"},/obj/item/stack/material/wood/hard{amount = 50},/obj/item/stack/material/wood/hard{amount = 50},/obj/item/stack/material/wood/sif{amount = 50},/obj/item/stack/material/wood/sif{amount = 50},/obj/item/stack/material/marble{amount = 50},/obj/item/stack/material/marble{amount = 50},/obj/item/stack/material/marble{amount = 50},/obj/item/stack/material/cloth{amount = 50},/obj/item/stack/material/cloth{amount = 50},/obj/item/stack/material/algae{amount = 50},/obj/item/stack/material/sandstone,/obj/item/stack/material/sandstone,/obj/item/stack/material/sandstone,/obj/item/stack/material/lead{amount = 30},/obj/item/stack/material/plasteel{amount = 30; pixel_y = 5},/obj/item/stack/material/resin{amount = 50},/obj/item/stack/material/smolebricks{amount = 50},/obj/item/stack/material/smolebricks{amount = 50},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"BK" = (/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_y = 28},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"BX" = (/obj/structure/extinguisher_cabinet{dir = 1; pixel_y = -30},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/structure/closet/crate/bin,/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"Ci" = (/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"Cj" = (/obj/structure/table/rack,/turf/simulated/floor/carpet,/area/survivalpod/superpose/RestaurationBar) +"CW" = (/obj/structure/grille,/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"Dc" = (/obj/structure/table/fancyblack,/obj/item/weapon/newspaper,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Di" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/structure/closet/secure_closet/freezer/kitchen{req_access = null},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"Do" = (/obj/structure/window/reinforced{dir = 8; health = null},/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/curtain/black{icon_state = "open"; layer = 2; name = "privacy curtain"; opacity = 0},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"DF" = (/obj/structure/table/marble,/obj/structure/reagent_dispensers/beerkeg,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"DU" = (/obj/structure/bed/chair/oldsofa{dir = 1},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"DV" = (/obj/structure/bed/chair/wood{dir = 8},/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/obj/machinery/light{dir = 1; layer = 3},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Ee" = (/obj/structure/closet/secure_closet/freezer/fridge,/obj/item/weapon/storage/fancy/egg_box,/obj/item/weapon/storage/fancy/egg_box,/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,/obj/item/weapon/reagent_containers/food/drinks/bottle/milk,/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,/obj/item/weapon/reagent_containers/food/drinks/bottle/cream,/obj/item/weapon/reagent_containers/food/condiment/carton/sugar,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"Eh" = (/obj/structure/bed/chair/wood{dir = 8},/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Ez" = (/obj/machinery/firealarm/alarms_hidden{dir = 8},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"EA" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"EQ" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"ET" = (/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_y = -30},/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"Ff" = (/obj/structure/table/standard,/obj/random/donkpocketbox,/obj/item/device/starcaster_news,/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"Fi" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/fork,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/obj/item/weapon/material/kitchen/utensil/spoon,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"Fk" = (/obj/machinery/appliance/mixer/candy,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"Fl" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"FE" = (/obj/machinery/vending/cola{dir = 4},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"FI" = (/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"FO" = (/obj/structure/table/hardwoodtable,/obj/effect/floor_decal/spline/fancy/wood{dir = 10},/obj/item/weapon/pen,/obj/item/device/taperecorder,/obj/item/weapon/paper_bin,/obj/effect/map_effect/perma_light,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"FV" = (/obj/machinery/light{dir = 8; icon_state = "tube1"},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"FW" = (/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"Gj" = (/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"Gx" = (/obj/effect/floor_decal/corner/lime/border{dir = 1},/obj/machinery/seed_extractor,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"GB" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/snacks/pancakes,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"GC" = (/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"GD" = (/obj/structure/window/reinforced{health = 1e+006},/obj/effect/floor_decal/corner/lime/border{dir = 6},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"GI" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"GN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8; health = null},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"GU" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"HC" = (/obj/structure/closet/crate,/obj/item/stack/material/plastic{amount = 50},/obj/item/stack/material/plastic{amount = 50},/obj/item/stack/material/plastic{amount = 50},/obj/item/stack/material/plastic{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/rods{amount = 50},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil/green,/obj/item/stack/cable_coil/blue,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/weapon/storage/briefcase/inflatable,/obj/item/weapon/storage/toolbox/syndicate/powertools{pixel_y = 9},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/electrical,/obj/item/weapon/storage/belt/utility/full/multitool,/obj/item/weapon/storage/belt/utility/full/multitool,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"HH" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"HK" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"HL" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"HQ" = (/obj/effect/floor_decal/spline/fancy{dir = 1},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"HV" = (/obj/effect/floor_decal/corner/lime/bordercorner,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"Ix" = (/obj/structure/bed/chair/oldsofa{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/toy/plushie/blue_fox,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"IB" = (/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"II" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"IO" = (/obj/effect/floor_decal/spline/fancy{dir = 6},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/structure/closet/crate/bin,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"IR" = (/obj/effect/map_effect/perma_light,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"Jb" = (/obj/structure/bed/chair/oldsofa/corner{dir = 8},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Jf" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"Jg" = (/obj/structure/table/reinforced,/obj/machinery/recharger,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"Jj" = (/obj/machinery/light{layer = 3},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_y = -30},/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"Jo" = (/obj/structure/table/fancyblack,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"JH" = (/obj/machinery/computer/arcade{dir = 8},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"JQ" = (/obj/effect/floor_decal/corner/lime/border{dir = 5},/obj/machinery/smartfridge/drying_rack,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"JS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"JU" = (/obj/structure/table/hardwoodtable,/obj/effect/floor_decal/spline/fancy/wood{dir = 9},/obj/random/mug,/obj/item/weapon/reagent_containers/food/snacks/croissant,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Kc" = (/turf/template_noop,/area/template_noop) +"Kh" = (/obj/structure/casino_table/blackjack_l,/obj/random/contraband,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Kl" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"Km" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_coffee/full{dir = 1},/obj/item/weapon/reagent_containers/chem_disp_cartridge/nothing,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"Ko" = (/obj/structure/table/marble,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/multi,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"Kw" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/door/airlock/glass,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"KP" = (/obj/effect/floor_decal/spline/fancy/wood/cee{dir = 8},/obj/machinery/light{dir = 8; icon_state = "tube1"},/obj/structure/flora/pottedplant/tall,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"KR" = (/mob/living/simple_mob/vore/alienanimals/teppi/baby,/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"KS" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"La" = (/obj/machinery/door/airlock{id_tag = "awaydorm_restaurationbar"},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"Lc" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/machinery/space_heater,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Lk" = (/obj/structure/grille,/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"Lo" = (/obj/effect/floor_decal/corner/lime/bordercorner{dir = 1},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"Ly" = (/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"LA" = (/obj/structure/bed/chair/oldsofa/corner{dir = 1},/obj/effect/floor_decal/spline/fancy/wood{dir = 10},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"LE" = (/obj/structure/window/basic{dir = 1},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"LG" = (/obj/machinery/beehive,/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"LH" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"LL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced/polarized{id = "gamble_restaurationbar_ch"},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"LR" = (/obj/effect/floor_decal/spline/fancy{dir = 10},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"LV" = (/obj/machinery/newscaster,/turf/simulated/wall,/area/survivalpod/superpose/RestaurationBar) +"LY" = (/obj/structure/table/rack/shelf,/obj/random/soap,/obj/item/weapon/towel/random,/obj/item/weapon/makeover,/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"Mb" = (/obj/machinery/button/windowtint{id = "gamble_restaurationbar_ch"; pixel_x = -12; pixel_y = -24},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Mi" = (/obj/structure/sign/nosmoking_2,/turf/simulated/wall,/area/survivalpod/superpose/RestaurationBar) +"MB" = (/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"MF" = (/obj/structure/grille,/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = null},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"MM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8; health = null},/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"MY" = (/obj/structure/table/standard,/obj/random/soap,/obj/item/weapon/towel/random,/obj/item/weapon/towel/random,/obj/random/soap,/obj/random/soap,/obj/item/weapon/towel/random,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"Nb" = (/obj/structure/table/gamblingtable,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/device/communicator,/obj/item/weapon/lipstick/random,/obj/item/weapon/material/ashtray/glass,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Nd" = (/obj/machinery/door/airlock/maintenance/common{name = "Restricted Area"},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"Ne" = (/obj/machinery/space_heater,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"Nj" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/reagentgrinder,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"Nn" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"NE" = (/obj/item/weapon/stool/padded,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"NR" = (/obj/structure/bed/chair/wood{dir = 4},/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Oj" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"Ok" = (/obj/effect/floor_decal/corner/lime/border,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"Ov" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"OA" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/donut,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"OI" = (/obj/structure/sink/puddle,/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"OP" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/melee/umbrella/random,/obj/item/weapon/melee/umbrella/random,/obj/structure/table/rack,/turf/simulated/floor/carpet,/area/survivalpod/superpose/RestaurationBar) +"OR" = (/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Ps" = (/obj/structure/bed/chair/oldsofa/right{dir = 1},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"PE" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 6},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"PH" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"PJ" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"PO" = (/obj/effect/floor_decal/spline/fancy{dir = 4},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"Qa" = (/obj/structure/sign/directions/exit,/turf/simulated/wall,/area/survivalpod/superpose/RestaurationBar) +"Qh" = (/obj/structure/table/fancyblack,/obj/random/drinksoft,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Qm" = (/obj/effect/floor_decal/spline/fancy{dir = 4; icon_state = "spline_fancy_corner"},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"QD" = (/obj/structure/bed/chair/wood,/obj/effect/floor_decal/spline/fancy/wood{dir = 1},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"QK" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/button/holosign{id = "baropen_restaurationbar_ch"; name = "Open Sign"; pixel_x = 36; pixel_y = 6},/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"QQ" = (/obj/structure/bed/chair/oldsofa/right,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"QS" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"QX" = (/obj/structure/bed/chair/oldsofa/left{dir = 4},/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Rn" = (/obj/structure/bed/chair/oldsofa/corner,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Rt" = (/turf/simulated/floor/outdoors/dirt,/area/template_noop) +"Rx" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Sj" = (/obj/structure/table/hardwoodtable,/obj/effect/floor_decal/spline/fancy/wood{dir = 8},/obj/item/weapon/reagent_containers/food/snacks/berrymuffin,/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8},/obj/effect/map_effect/perma_light,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Su" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_y = 32},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"Sz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8; health = null},/obj/structure/window/reinforced{health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"SJ" = (/obj/machinery/holosign/bar{id = "baropen_restauration_ch"},/turf/simulated/wall,/area/survivalpod/superpose/RestaurationBar) +"SS" = (/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 8},/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Tf" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/carpet/oracarpet,/area/survivalpod/superpose/RestaurationBar) +"Ti" = (/obj/machinery/holoposter,/turf/simulated/wall,/area/survivalpod/superpose/RestaurationBar) +"Tn" = (/obj/structure/simple_door/wood,/turf/simulated/floor/carpet,/area/survivalpod/superpose/RestaurationBar) +"Tu" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"TE" = (/obj/effect/floor_decal/spline/fancy{dir = 5},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"TT" = (/obj/machinery/atm{pixel_y = -30},/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"TW" = (/obj/machinery/light{dir = 8; icon_state = "tube1"},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Uq" = (/obj/effect/floor_decal/corner/lime/bordercorner{dir = 8},/obj/effect/floor_decal/corner/lime/bordercorner{dir = 1},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"UH" = (/obj/structure/table/hardwoodtable,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/item/trash/plate,/obj/item/weapon/reagent_containers/food/snacks/hotdog,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"UV" = (/obj/structure/casino_table/roulette_table,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"Vf" = (/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"Vg" = (/obj/machinery/recharge_station,/obj/machinery/light/small,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"Vh" = (/obj/machinery/light{dir = 8; icon_state = "tube1"},/turf/simulated/floor/carpet/brown,/area/survivalpod/superpose/RestaurationBar) +"Vy" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_y = 32},/obj/effect/floor_decal/corner/purple/diagonal,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"VD" = (/obj/structure/table/standard,/obj/item/device/starcaster_news,/obj/item/weapon/reagent_containers/food/snacks/meatsteak,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"VF" = (/obj/machinery/door/window/westleft{name = "Bar"},/obj/machinery/power/apc/alarms_hidden,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"VJ" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/item/weapon/reagent_containers/food/condiment/enzyme,/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"VK" = (/obj/structure/flora/ausbushes/lavendergrass,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"VO" = (/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/weapon/tool/crowbar,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/machinery/portable_atmospherics/hydroponics/soil,/obj/machinery/light{layer = 3},/turf/simulated/floor/grass,/area/survivalpod/superpose/RestaurationBar) +"VQ" = (/obj/structure/bed/chair/wood{dir = 8},/obj/effect/floor_decal/spline/fancy/wood,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"VT" = (/obj/structure/flora/ausbushes/palebush,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"Wc" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/map_effect/perma_light,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"Wt" = (/obj/structure/table/gamblingtable,/obj/item/weapon/deck/holder,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"WA" = (/obj/machinery/computer/arcade/clawmachine,/obj/machinery/light{dir = 1; layer = 3},/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"WV" = (/obj/structure/closet/crate/bin,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"WZ" = (/obj/effect/floor_decal/spline/fancy,/obj/structure/prop/statue/pillar/dark,/obj/effect/map_effect/perma_light,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"Xp" = (/obj/structure/table/marble,/obj/item/weapon/storage/box/glasses/meta,/obj/item/weapon/storage/box/glasses/meta,/obj/item/weapon/storage/box/glasses/coffeemug{pixel_x = -6; pixel_y = 12},/obj/item/weapon/storage/box/glasses/coffeecup{pixel_x = -6; pixel_y = 1},/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"Xs" = (/obj/machinery/light{dir = 8; icon_state = "tube1"},/obj/item/weapon/melee/umbrella/random,/obj/item/weapon/melee/umbrella/random,/obj/structure/table/rack,/turf/simulated/floor/carpet,/area/survivalpod/superpose/RestaurationBar) +"Xt" = (/obj/machinery/light{dir = 8; icon_state = "tube1"},/obj/structure/flora/pottedplant/tropical,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"XA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"XI" = (/obj/structure/window/reinforced{health = 1e+006},/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"XS" = (/obj/structure/window/reinforced{health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/curtain/black{icon_state = "open"; layer = 2; name = "privacy curtain"; opacity = 0},/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"Yc" = (/obj/structure/table/marble,/obj/machinery/chemical_dispenser/bar_alc/full{dispense_reagents = list("iron","radium","lemon_lime","sugar","orangejuice","limejuice","sodawater","tonic","beer","kahlua","whiskey","redwine","whitewine","vodka","cider","gin","rum","tequilla","vermouth","cognac","ale","mead","bitters"); dir = 1},/obj/item/weapon/reagent_containers/chem_disp_cartridge/ethanol,/turf/simulated/floor/lino,/area/survivalpod/superpose/RestaurationBar) +"Yf" = (/obj/structure/table/hardwoodtable,/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/obj/item/device/communicator,/obj/item/trash/plate,/turf/simulated/floor/carpet/bcarpet,/area/survivalpod/superpose/RestaurationBar) +"Yg" = (/obj/structure/table/marble,/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/material/knife/butch,/obj/item/weapon/material/kitchen/rollingpin,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/survivalpod/superpose/RestaurationBar) +"Ym" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/closet/secure_closet/hydroponics{req_access = null},/obj/effect/floor_decal/corner/lime/border{dir = 6},/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"Yn" = (/obj/structure/window/reinforced{dir = 8; health = null},/obj/structure/window/reinforced{dir = 1; health = 1e+006; req_access = list(5)},/obj/structure/window/reinforced{health = 1e+006},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"Yq" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/hydro,/area/survivalpod/superpose/RestaurationBar) +"YX" = (/obj/item/weapon/gun/energy/sizegun,/obj/item/device/bodysnatcher,/obj/item/weapon/handcuffs/fuzzy,/obj/item/weapon/handcuffs/legcuffs/fuzzy,/obj/item/clothing/accessory/collar,/obj/item/weapon/tape_roll,/obj/item/device/perfect_tele/one_beacon,/obj/item/weapon/disk/nifsoft/compliance,/obj/item/selectable_item/chemistrykit,/obj/item/selectable_item/chemistrykit,/obj/item/selectable_item/chemistrykit,/obj/item/selectable_item/chemistrykit,/obj/item/capture_crystal,/obj/structure/closet/secure_closet/personal,/turf/simulated/floor/wood,/area/survivalpod/superpose/RestaurationBar) +"Zb" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/outdoors/grass/sif,/area/template_noop) +"Zo" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/grille,/turf/simulated/floor,/area/survivalpod/superpose/RestaurationBar) +"Zz" = (/obj/structure/bed/chair/oldsofa,/turf/simulated/floor/carpet/purcarpet,/area/survivalpod/superpose/RestaurationBar) +"ZL" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"},/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) +"ZR" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"ZS" = (/obj/structure/bed/chair/comfy/black{dir = 8},/turf/simulated/floor/carpet/purple,/area/survivalpod/superpose/RestaurationBar) +"ZU" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small,/turf/simulated/floor/tiled/freezer,/area/survivalpod/superpose/RestaurationBar) + +(1,1,1) = {" +KcKcKcKcKcKcKcKcKcAeAeAeCWLLAsAsAsAsGCAeAeAeKcKcKcKcKcKcKcKcKcKc +KcKcKcKcKcKcKcKcAeTibHcBhEsJeiNEMbsJhEWAbjTiAeKcKcKcKcVfRtRtRtKc +KcKcKcKcKcKcKcqVdshkhkhkORsJKhpotQsJpWNENEJHkDZbKcKcVfVfRtRtfZKc +KcKcKcKcKcKcKcepZoWtvqeDexsJNENENEsJpWNENEJHXAVTKcVfVfTuRtRtVfKc +KcKcKcKcKcKcVfVfZovzvzvzORsJsJsJsJsJpWNENEJHXAVfVfVfVfVfRtVfVfKc +KcKcKcKcKcVfVfOjFWORORORORORORORORORORORORORnJsjVfVKVfAeTnAeAeKc +KcKcKcKcVfVfVfVfAeORNElTORORORORORORORQQZzRnAeVfVfVfVfQavfCjAeKc +KcKcKcVffZfZfZVfAeTWmZUVORORxMogTEORORNbARIxAefZfZfZfZAevfxtAeKc +TuVfVfVffZPHQSAeAeNENENEORORoQxOPOORORPsDUJbAekzvMvMcTAeTnAeAeKc +AeAeAeAefiJSmpbUlNxMHQHQHQHQQmxOllHQHQHQbBAeTiJUEhNReEDVAJzNMMKc +AeXsOPAeXtNerdaYJgLRvsvsvsvsvsWZvsvsvsvsIOAeKPuMuMuMuMuMSSYfGNKc +TnvfvfTnCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiEAxnGNKc +iivfvfTnCiETCiCiCiTTCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiCiEAUHGNKc +AeAeAeAeAeAeAeMiSJAeCiCiCiqvQDQDAJNReFEhpBAemxAJAJAJAJHLsykeSzKc +AeBKSuBlSuBlSueKMYTiCiCiCizGDcxqsZBryTsZwgAeQXDcqxMBMBLcAeAeAeKc +AeBlqtBlqtBlqtBlBlAeVhCiCizGQhtjsZBrJosZcigCLAbmuuuMuMhrAeKcKcKc +AeOvAeLHAeHKAeLEBlAeCiCiCiEAuoLyuMGUGUGUvGAeAeAeAeKwKwAeAeAeAeKc +AerhAeVgAeZUAeEzBlslCiCiCiEAMBciOAjLizizAfTihufasCxNxNuXFkrOAeKc +AeAeAeAeAeAeAeAeAeAeAeCiCifcMBRxbrgGgGgGQKAexNxNxNxNxNxNxNxNAGKc +KcAeaSmprSmpmpmpmpxjLaCiCiSjsZRxsIgGgGXpgGGBxNxNxNxNxNxNxNxNKlKc +KctcmploFfEQmpFIFIqDAeCiCixGMBRxizATgGsPowAebJxNVJNjftxNxNFiKlKc +KcXSmploJfEQIRFIFIcKAeVhCiEAMBRxizgGgGDFgGKwxNxNgoYgnBxNxNIIKlKc +KcAeWVmpmpmpmpFIFITfLVCiCifcMBciKogGgGuOFlAeAesixNxNxNxNxNIIGIKc +KcAeAejvZLAeAeAeAeAeTiCiCiFOVQPEVFgGgGgGgGAqMidNxNxNxNxNxNDiAeKc +KcAexKeNyLAeLYVyvBAeFECiCiCiCiBXAeKmyvYcgGzAAeEexNxNxNxNxNpvAeKc +KcAeiyfqrgAelselbNAetCCiCiCiqpAeAeAeAeAeAeAeAeAeqZKwlnAeAeAeAeKc +KcAejvjvjvAeZLAeAeAeAeCiCiCiblAeqyuJhwldAexoAWGxLoIBffdPsYJQAeKc +KcAeYXmpmpmpmpxOxOZRAeCiCiCiecAewmmpmpBCAeySIBIBIBIBHVXIXIGDMiKc +KcDompPJuwZSmpxOxOsAgCVhCiCidaAeAeFVwpAeAeySYqIBWcIBnmKRpFOIAeKc +KcikmpPJVDZSIRxOxOeBAeCiCiCiCiNnAempmprSHHUqYqIBYqIBnztAGjKSAeKc +KcAeWVmpmzmpmpmpmpcLmUCiJjCiCiCiNdmplZHCAeqOjVOkOkboYmLGVOLGAeKc +KcAeAeAeAeAegCAeAeAeAeTiAeMFhILkAeAeAeAeAeAeAeYnnjnjtzAeAeAeAeKc +"} diff --git a/modular_chomp/sound/weapons/clockwork/clockwork_cock.ogg b/modular_chomp/sound/weapons/clockwork/clockwork_cock.ogg new file mode 100644 index 0000000000..a2748ecae5 Binary files /dev/null and b/modular_chomp/sound/weapons/clockwork/clockwork_cock.ogg differ diff --git a/modular_chomp/sound/weapons/clockwork/cwc_rifle_fabricate.ogg b/modular_chomp/sound/weapons/clockwork/cwc_rifle_fabricate.ogg new file mode 100644 index 0000000000..8c7470c54a Binary files /dev/null and b/modular_chomp/sound/weapons/clockwork/cwc_rifle_fabricate.ogg differ diff --git a/modular_chomp/sound/weapons/clockwork/cwc_rifle_fire.ogg b/modular_chomp/sound/weapons/clockwork/cwc_rifle_fire.ogg new file mode 100644 index 0000000000..abd90e0fc6 Binary files /dev/null and b/modular_chomp/sound/weapons/clockwork/cwc_rifle_fire.ogg differ diff --git a/modular_chomp/sound/weapons/clockwork/voltbeam_fire.ogg b/modular_chomp/sound/weapons/clockwork/voltbeam_fire.ogg new file mode 100644 index 0000000000..e4f765c156 Binary files /dev/null and b/modular_chomp/sound/weapons/clockwork/voltbeam_fire.ogg differ diff --git a/modular_chomp/sound/weapons/clockwork/voltbeamsearwall.ogg b/modular_chomp/sound/weapons/clockwork/voltbeamsearwall.ogg new file mode 100644 index 0000000000..5b17450528 Binary files /dev/null and b/modular_chomp/sound/weapons/clockwork/voltbeamsearwall.ogg differ diff --git a/tgui/global.d.ts b/tgui/global.d.ts index 348cb9c516..6e28fc9be1 100644 --- a/tgui/global.d.ts +++ b/tgui/global.d.ts @@ -64,6 +64,18 @@ type ByondType = { */ IS_LTE_IE11: boolean; + /** + * If `true`, unhandled errors and common mistakes result in a blue screen + * of death, which stops this window from handling incoming messages and + * closes the active instance of tgui datum if there was one. + * + * It can be defined in window.initialize() in DM, or changed in runtime + * here via this property to `true` or `false`. + * + * It is recommended that you keep this ON to detect hard to find bugs. + */ + strictMode: boolean; + /** * Makes a BYOND call. * diff --git a/tgui/packages/tgui/interfaces/MentorTicketPanel.tsx b/tgui/packages/tgui/interfaces/MentorTicketPanel.tsx new file mode 100644 index 0000000000..52adf43e48 --- /dev/null +++ b/tgui/packages/tgui/interfaces/MentorTicketPanel.tsx @@ -0,0 +1,67 @@ +/* eslint react/no-danger: "off" */ +import { useBackend } from '../backend'; +import { Box, Button, LabeledList, Section } from '../components'; +import { Window } from '../layouts'; + +const State = { + 'open': 'Open', + 'resolved': 'Resolved', + 'unknown': 'Unknown', +}; + +type Data = { + id: number; + title: string; + name: string; + state: string; + opened_at: number; + closed_at: number; + opened_at_date: string; + closed_at_date: string; + actions: string; + log: string[]; +}; + +export const MentorTicketPanel = (props, context) => { + const { act, data } = useBackend(context); + const { id, title, name, state, opened_at, closed_at, opened_at_date, closed_at_date, actions, log } = data; + return ( + + +
    +
    +
    +
    + ); +}; diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js index 0c159870ed..3357ef5109 100644 --- a/tgui/packages/tgui/interfaces/VorePanel.js +++ b/tgui/packages/tgui/interfaces/VorePanel.js @@ -49,7 +49,7 @@ const digestModeToPreyMode = { * show_liq, liq_interacts, liq_reagent_gen, liq_reagent_type, liq_reagent_name, * liq_reagent_transfer_verb, liq_reagent_nutri_rate, liq_reagent_capacity, liq_sloshing, liq_reagent_addons, * show_liq_fullness, liq_messages, liq_msg_toggle1, liq_msg_toggle2, liq_msg_toggle3, liq_msg_toggle4, - * liq_msg_toggle5, liq_msg1, liq_msg2, liq_msg3, liq_msg4, liq_msg5, + * liq_msg_toggle5, liq_msg1, liq_msg2, liq_msg3, liq_msg4, liq_msg5, sound_volume, * * To the tabs section of VoreSelectedBelly return * setTabIndex(5)}> @@ -792,7 +792,7 @@ const VoreSelectedBellySounds = (props, context) => { const { act } = useBackend(context); const { belly } = props; - const { is_wet, wet_loop, fancy, sound, release_sound } = belly; + const { is_wet, wet_loop, fancy, sound, release_sound, sound_volume } = belly; return ( @@ -830,6 +830,12 @@ const VoreSelectedBellySounds = (props, context) => {