diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 49eda07616..5eb8f0219e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -10,6 +10,12 @@ body: placeholder: "#1, #2, #3, etc" validations: required: true + - type: input + id: round-id + attributes: + label: Round ID + description: If known, what was the Round ID this bug was found on? Can be left blank if unknown or occured across multiple rounds. + placeholder: "12345" - type: textarea id: what-happened attributes: diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 97e9976244..978ede1e65 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -63,6 +63,34 @@ jobs: with: outputFile: output-annotations.txt + + odlint: + name: Lint with OpenDream + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - name: Get OpenDream Version + run: | + source dependencies.sh + echo "OPENDREAM_VERSION=$OPENDREAM_VERSION" >> $GITHUB_ENV + - name: Restore OpenDream cache + uses: actions/cache@v3 + id: cache-od + with: + path: ~/OpenDream + key: ${{ runner.os }}-opendream-${{ env.OPENDREAM_VERSION }} + - name: Download OpenDream + if: steps.cache-od.outputs.cache-hit != 'true' + run: | + bash tools/ci/download_od.sh + - name: Setup OpenDream + if: steps.cache-od.outputs.cache-hit != 'true' + run: | + bash tools/ci/setup_od.sh + - name: Run OpenDream + run: | + bash tools/ci/run_od.sh + compile_all_maps: if: "!contains(github.event.head_commit.message, '[ci skip]')" name: Compile Maps diff --git a/.gitignore b/.gitignore index 210efc84d7..4d2b7e810d 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,6 @@ test_environment.txt # byond-tracy backend, not shipped with the codebase so it shouldn't be maintained prof.dll libprof.so + +# OpenDream compatibility stuff +colonialmarines.json diff --git a/code/__DEFINES/__game.dm b/code/__DEFINES/__game.dm index 113b78dbad..f1424f5560 100644 --- a/code/__DEFINES/__game.dm +++ b/code/__DEFINES/__game.dm @@ -283,7 +283,6 @@ block( \ /// Only use the CEILING_PROTECTION_TIER_X defines for `protection_level` #define CEILING_IS_PROTECTED(ceiling, protection_level) (ceiling >= protection_level) - // Default font settings #define FONT_SIZE "5pt" #define DEFAULT_FONT_COLOR "#09f" @@ -493,6 +492,18 @@ block( \ #define TURF_PROTECTION_CAS 2 #define TURF_PROTECTION_OB 3 +/// Convert a turf protection level to a ceiling protection level +/proc/get_ceiling_protection_level(turf_protection_level) + switch(turf_protection_level) + if(TURF_PROTECTION_OB) + return CEILING_PROTECTION_TIER_4 + if(TURF_PROTECTION_CAS) + return CEILING_PROTECTION_TIER_3 + if(TURF_PROTECTION_MORTAR) + return CEILING_PROTECTION_TIER_2 + else + return CEILING_NO_PROTECTION + // Anything above the deck boundary is the upper deck, anything below is the lower deck // This is exclusive, so anything ON the boundary is an edge case that's neither on the upper nor the lower deck #define ALMAYER_DECK_BOUNDARY 101 diff --git a/code/__DEFINES/bullet_traits.dm b/code/__DEFINES/bullet_traits.dm index 0ca3bce2e6..40e250cd0d 100644 --- a/code/__DEFINES/bullet_traits.dm +++ b/code/__DEFINES/bullet_traits.dm @@ -3,7 +3,7 @@ // list of args if there are any args /// An entry to a list for giving projectiles bullet traits /// Must be placed inside of a list -#define BULLET_TRAIT_ENTRY(trait, args...) trait = #args ? list(##args) : null +#define BULLET_TRAIT_ENTRY(trait, args...) trait = list(##args) /// An entry to a list for giving projectiles bullet traits with a unique ID /// Must be placed inside of a list #define BULLET_TRAIT_ENTRY_ID(id, trait, args...) id = list(trait, ##args) diff --git a/code/__DEFINES/tgs.dm b/code/__DEFINES/tgs.dm index 6187a67825..9825cd118b 100644 --- a/code/__DEFINES/tgs.dm +++ b/code/__DEFINES/tgs.dm @@ -1,6 +1,6 @@ // tgstation-server DMAPI -#define TGS_DMAPI_VERSION "6.5.3" +#define TGS_DMAPI_VERSION "6.6.0" // All functions and datums outside this document are subject to change with any version and should not be relied on. @@ -129,6 +129,13 @@ /// DreamDaemon Ultrasafe security level. #define TGS_SECURITY_ULTRASAFE 2 +/// DreamDaemon public visibility level. +#define TGS_VISIBILITY_PUBLIC 0 +/// DreamDaemon private visibility level. +#define TGS_VISIBILITY_PRIVATE 1 +/// DreamDaemon invisible visibility level. +#define TGS_VISIBILITY_INVISIBLE 2 + //REQUIRED HOOKS /** @@ -458,6 +465,10 @@ /world/proc/TgsSecurityLevel() return +/// Returns the current BYOND visibility level as a TGS_VISIBILITY_ define if TGS is present, null otherwise. Requires TGS to be using interop API version 5 or higher otherwise the string "___unimplemented" wil be returned. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! +/world/proc/TgsVisibility() + return + /// Returns a list of active [/datum/tgs_revision_information/test_merge]s if TGS is present, null otherwise. This function may sleep if the call to [/world/proc/TgsNew] is sleeping! /world/proc/TgsTestMerges() return diff --git a/code/__HELPERS/icons.dm b/code/__HELPERS/icons.dm index edc711d25b..1116f1acb2 100644 --- a/code/__HELPERS/icons.dm +++ b/code/__HELPERS/icons.dm @@ -732,11 +732,12 @@ world if (isnull(dir)) dir = thing.dir - if (ishuman(thing)) // Shitty workaround for a BYOND issue. + // Commented out because this is seemingly our source of bad icon operations + /* if (ishuman(thing)) // Shitty workaround for a BYOND issue. var/icon/temp = icon2collapse icon2collapse = icon() icon2collapse.Insert(temp, dir = SOUTH) - dir = SOUTH + dir = SOUTH*/ else if (isnull(dir)) dir = SOUTH diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 4e4a1b3ff3..5d0d113b0c 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -21,7 +21,7 @@ var/char = copytext(hex, i, i + 1) switch(char) if("0") - //Apparently, switch works with empty statements, yay! If that doesn't work, blame me, though. -- Urist + pass() if("9", "8", "7", "6", "5", "4", "3", "2", "1") num += text2num(char) * 16 ** power if("a", "A") @@ -77,7 +77,6 @@ hex += "E" if(15.0) hex += "F" - else power-- while(length(hex) < placeholder) hex = text("0[]", hex) @@ -165,8 +164,6 @@ return 6 if("SOUTHWEST") return 10 - else - return //Converts an angle (degrees) into an ss13 direction /proc/angle2dir(degree) diff --git a/code/__odlint.dm b/code/__odlint.dm new file mode 100644 index 0000000000..f425171337 --- /dev/null +++ b/code/__odlint.dm @@ -0,0 +1,11 @@ +// This file is included right at the start of the DME. +// Its purpose is to enable multiple lints (pragmas) that are supported by OpenDream to better validate the codebase +// These are essentially nitpicks the DM compiler should pick up on but doesnt + +#ifndef SPACEMAN_DMM +#ifdef OPENDREAM +// These are in their own file as you need to do it with an include as a hack to avoid +// SpacemanDMM evaluating the #pragma lines, even if its outside a block it cares about +#include "__pragmas.dm" +#endif +#endif diff --git a/code/__pragmas.dm b/code/__pragmas.dm new file mode 100644 index 0000000000..39c14e1bbc --- /dev/null +++ b/code/__pragmas.dm @@ -0,0 +1,27 @@ +//1000-1999 +#pragma FileAlreadyIncluded error +#pragma MissingIncludedFile error +#pragma MisplacedDirective error +#pragma UndefineMissingDirective error +#pragma DefinedMissingParen error +#pragma ErrorDirective error +#pragma WarningDirective error +#pragma MiscapitalizedDirective error + +//2000-2999 +#pragma SoftReservedKeyword error +#pragma DuplicateVariable error +#pragma DuplicateProcDefinition error +#pragma TooManyArguments error +#pragma PointlessParentCall error +#pragma PointlessBuiltinCall error +#pragma SuspiciousMatrixCall error +#pragma MalformedRange error +#pragma InvalidRange error +#pragma InvalidSetStatement error +#pragma InvalidOverride error +#pragma DanglingVarType error +#pragma MissingInterpolatedExpression error + +//3000-3999 +#pragma EmptyBlock error diff --git a/code/_byond_version_compat.dm b/code/_byond_version_compat.dm index 719d85654b..26968f0f83 100644 --- a/code/_byond_version_compat.dm +++ b/code/_byond_version_compat.dm @@ -3,7 +3,7 @@ //Update this whenever you need to take advantage of more recent byond features #define MIN_COMPILER_VERSION 514 #define MIN_COMPILER_BUILD 1588 -#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) +#if (DM_VERSION < MIN_COMPILER_VERSION || DM_BUILD < MIN_COMPILER_BUILD) && !defined(SPACEMAN_DMM) && !defined(OPENDREAM) //Don't forget to update this part #error Your version of BYOND is too out-of-date to compile this project. Go to https://secure.byond.com/download and update. #error You need version 514.1588 or higher diff --git a/code/_compile_options.dm b/code/_compile_options.dm index 0f81b0173a..20aa208131 100644 --- a/code/_compile_options.dm +++ b/code/_compile_options.dm @@ -30,7 +30,7 @@ #define CBT #endif -#if !defined(CBT) && !defined(SPACEMAN_DMM) +#if !defined(CBT) && !defined(SPACEMAN_DMM) && !defined(OPENDREAM) #warn Building with Dream Maker is no longer supported and will result in errors. #warn In order to build, run BUILD.bat in the bin directory. #warn Consider switching to VSCode editor instead, where you can press Ctrl+Shift+B to build. diff --git a/code/controllers/subsystem/atoms.dm b/code/controllers/subsystem/atoms.dm index 23da8cc8c9..3d544dca13 100644 --- a/code/controllers/subsystem/atoms.dm +++ b/code/controllers/subsystem/atoms.dm @@ -131,7 +131,7 @@ SUBSYSTEM_DEF(atoms) switch(result) if (INITIALIZE_HINT_NORMAL) - // pass + pass() if(INITIALIZE_HINT_LATELOAD) if(arguments[1]) //mapload late_loaders += A diff --git a/code/controllers/subsystem/init/law.dm b/code/controllers/subsystem/init/law.dm index 52fbbbeadf..c7ade81597 100644 --- a/code/controllers/subsystem/init/law.dm +++ b/code/controllers/subsystem/init/law.dm @@ -8,20 +8,24 @@ SUBSYSTEM_DEF(law_init) var/list/minor_law = list() var/list/major_law = list() var/list/capital_law = list() + var/list/precautionary_law = list() /datum/controller/subsystem/law_init/Initialize() - for(var/L in subtypesof(/datum/law/optional_law)) - optional_law += new L + for(var/law in subtypesof(/datum/law/optional_law)) + optional_law += new law - for(var/L in subtypesof(/datum/law/minor_law)) - minor_law += new L + for(var/law in subtypesof(/datum/law/minor_law)) + minor_law += new law - for(var/L in subtypesof(/datum/law/major_law)) - major_law += new L + for(var/law in subtypesof(/datum/law/major_law)) + major_law += new law - for(var/L in subtypesof(/datum/law/capital_law)) - capital_law += new L + for(var/law in subtypesof(/datum/law/capital_law)) + capital_law += new law - laws = optional_law + minor_law + major_law + capital_law + for(var/law in subtypesof(/datum/law/precautionary_charge)) + precautionary_law += new law + + laws = optional_law + minor_law + major_law + capital_law + precautionary_law return SS_INIT_SUCCESS diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index afecabd74b..be69bdad1b 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -29,9 +29,7 @@ SUBSYSTEM_DEF(mapping) /datum/controller/subsystem/mapping/proc/HACK_LoadMapConfig() if(!configs) configs = load_map_configs(ALL_MAPTYPES, error_if_missing = FALSE) - for(var/i in GLOB.clients) - var/client/C = i - winset(C, null, "mainwindow.title='[CONFIG_GET(string/title)] - [SSmapping.configs[SHIP_MAP].map_name]'") + world.name = "[CONFIG_GET(string/title)] - [SSmapping.configs[SHIP_MAP].map_name]" /datum/controller/subsystem/mapping/Initialize(timeofday) HACK_LoadMapConfig() diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index 3882228a5a..a56e10636a 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -273,7 +273,7 @@ SUBSYSTEM_DEF(vote) question = "Gamemode vote" randomize_entries = TRUE for(var/mode_type in config.gamemode_cache) - var/datum/game_mode/M = initial(mode_type) + var/datum/game_mode/M = mode_type if(initial(M.config_tag)) var/vote_cycle_met = !initial(M.vote_cycle) || (text2num(SSperf_logging?.round?.id) % initial(M.vote_cycle) == 0) if(initial(M.votable) && vote_cycle_met) diff --git a/code/datums/_ndatabase/code/brsql_adapter.dm b/code/datums/_ndatabase/code/brsql_adapter.dm index a424b3fd6f..251267a04f 100644 --- a/code/datums/_ndatabase/code/brsql_adapter.dm +++ b/code/datums/_ndatabase/code/brsql_adapter.dm @@ -101,8 +101,8 @@ SSdatabase.create_parametric_query(query_updatetable, qpars, CB) /datum/db/adapter/brsql_adapter/insert_table(table_name, list/values, datum/callback/CB, sync = FALSE) - if(!sync) - set waitfor = 0 + set waitfor = FALSE + var/length = values.len var/list/qpars = list() var/query_inserttable = getquery_insert_table(table_name, values, qpars) diff --git a/code/datums/_ndatabase/code/native_adapter.dm b/code/datums/_ndatabase/code/native_adapter.dm index a5e4d41fb6..1c23a6ceab 100644 --- a/code/datums/_ndatabase/code/native_adapter.dm +++ b/code/datums/_ndatabase/code/native_adapter.dm @@ -83,8 +83,7 @@ SSdatabase.create_query(query_gettable, CB) /datum/db/adapter/native_adapter/update_table(table_name, list/values, datum/callback/CB, sync = FALSE) - if(!sync) - set waitfor = 0 + set waitfor = FALSE for(var/list/vals in values) var/list/qpars = list() diff --git a/code/datums/ammo/ammo.dm b/code/datums/ammo/ammo.dm index 638b487515..7957a8a994 100644 --- a/code/datums/ammo/ammo.dm +++ b/code/datums/ammo/ammo.dm @@ -174,6 +174,15 @@ else living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) +/datum/ammo/proc/slowdown(mob/living/living_mob, obj/projectile/fired_projectile) + if(iscarbonsizexeno(living_mob)) + var/mob/living/carbon/xenomorph/target = living_mob + target.apply_effect(1, SUPERSLOW) + target.apply_effect(2, SLOW) + to_chat(target, SPAN_XENODANGER("You are slowed by the sudden impact!")) + else + living_mob.apply_stamina_damage(fired_projectile.ammo.damage, fired_projectile.def_zone, ARMOR_BULLET) + /datum/ammo/proc/pushback(mob/target_mob, obj/projectile/fired_projectile, max_range = 2) if(!target_mob || target_mob == fired_projectile.firer || fired_projectile.distance_travelled > max_range || target_mob.lying) return diff --git a/code/datums/ammo/bullet/revolver.dm b/code/datums/ammo/bullet/revolver.dm index 339609f57b..633bf3e2f7 100644 --- a/code/datums/ammo/bullet/revolver.dm +++ b/code/datums/ammo/bullet/revolver.dm @@ -27,8 +27,9 @@ penetration = ARMOR_PENETRATION_TIER_4 accuracy = HIT_ACCURACY_TIER_3 -/datum/ammo/bullet/revolver/heavy/on_hit_mob(mob/M, obj/projectile/P) - knockback(M, P, 4) +/datum/ammo/bullet/revolver/heavy/on_hit_mob(mob/entity, obj/projectile/bullet) + slowdown(entity, bullet) + pushback(entity, bullet, 4) /datum/ammo/bullet/revolver/incendiary name = "incendiary revolver bullet" diff --git a/code/datums/emergency_calls/emergency_call.dm b/code/datums/emergency_calls/emergency_call.dm index 6533086d98..79ba9fff97 100644 --- a/code/datums/emergency_calls/emergency_call.dm +++ b/code/datums/emergency_calls/emergency_call.dm @@ -168,7 +168,7 @@ return var/deathtime = world.time - usr.timeofdeath - if(deathtime < 1 MINUTES) //Nice try, ghosting right after the announcement + if(deathtime < 30 SECONDS) //Nice try, ghosting right after the announcement if(SSmapping.configs[GROUND_MAP].map_name != MAP_WHISKEY_OUTPOST) // people ghost so often on whiskey outpost. to_chat(src, SPAN_WARNING("You ghosted too recently.")) return diff --git a/code/datums/keybinding/client.dm b/code/datums/keybinding/client.dm index a5baf09a13..7522878822 100644 --- a/code/datums/keybinding/client.dm +++ b/code/datums/keybinding/client.dm @@ -4,8 +4,8 @@ /datum/keybinding/client/admin_help - hotkey_keys = list("F1") - classic_keys = list("F1") + hotkey_keys = list("Unbound") + classic_keys = list("Unbound") name = "admin_help" full_name = "Admin Help" description = "Ask an admin for help." diff --git a/code/datums/langchat/langchat.dm b/code/datums/langchat/langchat.dm index 3f00c26b6d..83b9be0ac0 100644 --- a/code/datums/langchat/langchat.dm +++ b/code/datums/langchat/langchat.dm @@ -47,6 +47,13 @@ M.client.images -= langchat_image langchat_listeners = null +/atom/proc/langchat_set_x_offset() + langchat_image.maptext_x = world.icon_size / 2 - langchat_image.maptext_width / 2 +/atom/movable/langchat_set_x_offset() + langchat_image.maptext_x = bound_width / 2 - langchat_image.maptext_width / 2 +/mob/langchat_set_x_offset() + langchat_image.maptext_x = icon_size / 2 - langchat_image.maptext_width / 2 + ///Creates the image if one does not exist, resets settings that are modified by speech procs. /atom/proc/langchat_make_image(override_color = null) if(!langchat_image) @@ -56,8 +63,8 @@ langchat_image.appearance_flags = NO_CLIENT_COLOR|KEEP_APART|RESET_COLOR|RESET_TRANSFORM langchat_image.maptext_y = langchat_height langchat_image.maptext_height = 64 - langchat_image.maptext_x = - world.icon_size - get_pixel_position_x(src, TRUE) langchat_image.maptext_y -= LANGCHAT_MESSAGE_POP_Y_SINK + langchat_set_x_offset() langchat_image.pixel_y = 0 langchat_image.alpha = 0 @@ -102,7 +109,7 @@ langchat_image.maptext = text_to_display langchat_image.maptext_width = LANGCHAT_WIDTH - langchat_image.maptext_x = - world.icon_size - get_pixel_position_x(src, TRUE) + langchat_set_x_offset() langchat_listeners = listeners for(var/mob/M in langchat_listeners) @@ -149,7 +156,7 @@ langchat_image.maptext = text_to_display langchat_image.maptext_width = LANGCHAT_WIDTH * 2 - langchat_image.maptext_x = - world.icon_size - get_pixel_position_x(src, TRUE) - LANGCHAT_WIDTH / 2 + langchat_set_x_offset() langchat_listeners = listeners for(var/mob/M in langchat_listeners) diff --git a/code/datums/statistics/entities/death_stats.dm b/code/datums/statistics/entities/death_stats.dm index 1753536026..f0055ed871 100644 --- a/code/datums/statistics/entities/death_stats.dm +++ b/code/datums/statistics/entities/death_stats.dm @@ -87,6 +87,10 @@ if(!mind || statistic_exempt) return + var/area/area = get_area(death_loc) + handle_observer_message(cause_data, cause_mob, death_loc, area) + + // Perform logging above before get_player_from_key to avoid delays var/datum/entity/statistic/death/new_death = DB_ENTITY(/datum/entity/statistic/death) var/datum/entity/player/player_entity = get_player_from_key(mind.ckey) if(player_entity) @@ -98,11 +102,8 @@ new_death.role_name = get_role_name() new_death.mob_name = real_name new_death.faction_name = faction - new_death.is_xeno = FALSE - - var/area/A = get_area(death_loc) - new_death.area_name = A.name + new_death.area_name = area.name new_death.cause_name = cause_data?.cause_name var/datum/entity/player/cause_player = get_player_from_key(cause_data?.ckey) @@ -132,8 +133,6 @@ new_death.total_damage_taken = life_damage_taken_total new_death.total_revives_done = life_revives_total - handle_observer_message(cause_data, cause_mob, death_loc, A) - if(round_statistics) round_statistics.track_death(new_death) diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 3c4104b6c2..c9092a750f 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -59,8 +59,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/machinery/optable/get_examine_text(mob/user) . = ..() diff --git a/code/game/machinery/air_alarm.dm b/code/game/machinery/air_alarm.dm index 16512a944b..e6fc0c8de7 100644 --- a/code/game/machinery/air_alarm.dm +++ b/code/game/machinery/air_alarm.dm @@ -431,8 +431,6 @@ var/wireIndex = AAlarmWireColorToIndex[wireColor] //not used in this function AAlarmwires |= wireFlag switch(wireIndex) - if(AALARM_WIRE_IDSCAN) - if(AALARM_WIRE_POWER) shorted = 0 shock(usr, 50) diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm index b70829c708..d82591994e 100644 --- a/code/game/machinery/bots/mulebot.dm +++ b/code/game/machinery/bots/mulebot.dm @@ -551,7 +551,7 @@ var/speed = ((wires & WIRE_MOTOR1) ? 1:0) + ((wires & WIRE_MOTOR2) ? 2:0) switch(speed) if(0) - // do nothing + pass() if(1) process_bot() spawn(2) diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm index adce72f7d8..304b24a14f 100644 --- a/code/game/machinery/computer/computer.dm +++ b/code/game/machinery/computer/computer.dm @@ -53,8 +53,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/machinery/computer/bullet_act(obj/projectile/Proj) if(exproof) diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index b68ca41d6f..fe85599018 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -123,7 +123,6 @@ else dat += "
[bdat]" - else else dat += text("{Log In}", src) show_browser(user, dat, "Medical Records", "med_rec") @@ -365,8 +364,6 @@ for(var/datum/data/record/E in GLOB.data_core.medical) if ((E.fields["ref"] == R.fields["ref"] || E.fields["id"] == R.fields["id"])) M = E - else - //Foreach continue //goto(2540) src.active1 = R src.active2 = M src.screen = 4 @@ -417,16 +414,12 @@ for(var/datum/data/record/R as anything in GLOB.data_core.medical) if ((lowertext(R.fields["name"]) == t1 || t1 == lowertext(R.fields["id"]))) src.active2 = R - else - //Foreach continue //goto(3229) if (!active2) temp = "Could not locate record [t1]." else for(var/datum/data/record/E in GLOB.data_core.general) if ((E.fields["name"] == src.active2.fields["name"] || E.fields["id"] == src.active2.fields["id"])) src.active1 = E - else - //Foreach continue //goto(3334) src.screen = 4 if (href_list["print_p"]) diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 3858230a08..f6adaa8edd 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -20,7 +20,6 @@ for(var/obj/structure/machinery/mass_driver/M in machines) if(M.id == id) connected = M - else return return diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 12f4faedc9..c5a13e2c3e 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -55,8 +55,7 @@ dat += " Locked Down |" else dat += " Operating Normally |" - if (!R.canmove) - else if(R.cell) + if(R.canmove && R.cell) dat += " Battery Installed ([R.cell.charge]/[R.cell.maxcharge]) |" else dat += " No Cell Installed |" diff --git a/code/game/machinery/computer/sentencing.dm b/code/game/machinery/computer/sentencing.dm index 52a4159a2a..3aa9b5a032 100644 --- a/code/game/machinery/computer/sentencing.dm +++ b/code/game/machinery/computer/sentencing.dm @@ -78,6 +78,7 @@ data["laws"] += list(create_law_data("Major Laws", SSlaw_init.major_law)) data["laws"] += list(create_law_data("Capital Laws", SSlaw_init.capital_law)) data["laws"] += list(create_law_data("Optional Laws", SSlaw_init.optional_law)) + data["laws"] += list(create_law_data("Precautionary Laws", SSlaw_init.precautionary_law)) return data diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index f891d46bc3..a20d344b53 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -43,16 +43,16 @@ var/dat if (temp) - dat = text("[]

Clear Screen", temp, src) + dat = "[temp]

Clear Screen" else - dat = text("Confirm Identity: []
", src, (scan ? text("[]", scan.name) : "----------")) + dat = "Confirm Identity: [scan ? scan.name : "----------"]
" if (authenticated) switch(screen) if(1.0) dat += {"

"} - dat += text("Search Records
", src) - dat += text("New Record
", src) + dat += "Search Records
" + dat += "New Record
" dat += {"

@@ -70,20 +70,19 @@ if(!isnull(GLOB.data_core.general)) for(var/datum/data/record/R in sortRecord(GLOB.data_core.general, sortBy, order)) for(var/datum/data/record/E in GLOB.data_core.security) - var/background - dat += text("", background, src, R, R.fields["name"]) - dat += text("", R.fields["id"]) - dat += text("", R.fields["rank"]) + dat += "" + dat += "" + dat += "" dat += "
[][][]
[R.fields["name"]][R.fields["id"]][R.fields["rank"]]

" - dat += text("Record Maintenance

", src) - dat += text("{Log Out}",src) + dat += "Record Maintenance

" + dat += "{Log Out}" if(2.0) dat += "Records Maintenance
" dat += "
Delete All Records

Back" if(3.0) dat += "
Employment Record

" if ((istype(active1, /datum/data/record) && GLOB.data_core.general.Find(active1))) - dat += text("
\ + dat += " \
\ Name: [active1.fields["name"]]
\ ID: [active1.fields["id"]]
\n \ Sex: [active1.fields["sex"]]
\n \ @@ -93,18 +92,18 @@ Mental Status: [active1.fields["m_stat"]]

\n \ Employment/skills summary:
[decode(active1.fields["notes"])]
Photo:
\ -
") +
" else dat += "General Record Lost!
" - dat += text("\nDelete Record (ALL)

\nPrint Record
\nBack
", src, src, src) + dat += "\nDelete Record (ALL)

\nPrint Record
\nBack
" if(4.0) if(!Perp.len) - dat += text("ERROR. String could not be located.

Back", src) + dat += "ERROR. String could not be located.

Back" else dat += {" "} - dat += text("", tempname) + dat += "" dat += {"
Search Results for '[]':Search Results for '[tempname]':
@@ -121,17 +120,14 @@ if(istype(Perp[i+1],/datum/data/record/)) var/datum/data/record/E = Perp[i+1] crimstat = E.fields["criminal"] - var/background - background = "'background-color:#00FF7F;'" - dat += text("[]", background, src, R, R.fields["name"]) - dat += text("[]", R.fields["id"]) - dat += text("[]", R.fields["rank"]) - dat += text("[]", crimstat) + dat += "[R.fields["name"]]" + dat += "[R.fields["id"]]" + dat += "[R.fields["rank"]]" + dat += "[crimstat]" dat += "
" - dat += text("
Return to index.", src) - else + dat += "
Return to index." else - dat += text("{Log In}", src) + dat += "{Log In}" show_browser(user, dat, "Employment Records", "secure_rec", "size=600x400") onclose(user, "secure_rec") return @@ -342,7 +338,6 @@ What a mess.*/ if ((R.fields["name"] == active1.fields["name"] || R.fields["id"] == active1.fields["id"])) GLOB.data_core.medical -= R qdel(R) - else QDEL_NULL(active1) else temp = "This function does not appear to be working at the moment. Our apologies." diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index e6df92d258..99996bea89 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -54,7 +54,6 @@ src.health -= W.force * 0.75 if("brute") src.health -= W.force * 0.5 - else if (src.health <= 0) src.explode() ..() diff --git a/code/game/machinery/medical_pod/bodyscanner.dm b/code/game/machinery/medical_pod/bodyscanner.dm index 4756121e50..fdcd0ceb62 100644 --- a/code/game/machinery/medical_pod/bodyscanner.dm +++ b/code/game/machinery/medical_pod/bodyscanner.dm @@ -62,8 +62,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return #ifdef OBJECTS_PROXY_SPEECH // Transfers speech to occupant @@ -124,8 +122,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/machinery/body_scanconsole/power_change() ..() diff --git a/code/game/machinery/medical_pod/sleeper.dm b/code/game/machinery/medical_pod/sleeper.dm index 805fedb292..35d9a44863 100644 --- a/code/game/machinery/medical_pod/sleeper.dm +++ b/code/game/machinery/medical_pod/sleeper.dm @@ -385,7 +385,6 @@ t1 = "Unconscious" if(2) t1 = "*dead*" - else to_chat(user, "[]\t Health %: [] ([])", (occupant.health > 50 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.health, t1) to_chat(user, "[]\t -Core Temperature: []°C ([]°F)
", (occupant.bodytemperature > 50 ? "" : ""), occupant.bodytemperature-T0C, occupant.bodytemperature*1.8-459.67) to_chat(user, "[]\t -Brute Damage %: []", (occupant.getBruteLoss() < 60 ? SPAN_NOTICE("") : SPAN_DANGER("")), occupant.getBruteLoss()) diff --git a/code/game/machinery/vending/cm_vending.dm b/code/game/machinery/vending/cm_vending.dm index bf7c4fffee..861f5b37eb 100644 --- a/code/game/machinery/vending/cm_vending.dm +++ b/code/game/machinery/vending/cm_vending.dm @@ -774,8 +774,8 @@ GLOBAL_LIST_EMPTY(vending_products) desc = "An automated closet hooked up to a colossal storage of standard-issue uniform and armor." icon_state = "clothing" use_points = TRUE + show_points = TRUE vendor_theme = VENDOR_THEME_USCM - show_points = FALSE vend_flags = VEND_CLUTTER_PROTECTION | VEND_UNIFORM_RANKS | VEND_UNIFORM_AUTOEQUIP | VEND_CATEGORY_CHECK /obj/structure/machinery/cm_vending/clothing/ui_static_data(mob/user) diff --git a/code/game/machinery/vending/vending.dm b/code/game/machinery/vending/vending.dm index a74dd923cb..414ab4a562 100644 --- a/code/game/machinery/vending/vending.dm +++ b/code/game/machinery/vending/vending.dm @@ -398,28 +398,25 @@ GLOBAL_LIST_EMPTY_TYPED(total_vending_machines, /obj/structure/machinery/vending /obj/structure/machinery/vending/proc/GetProductIndex(datum/data/vending_product/product) var/list/plist - switch(product.category) - if(CAT_NORMAL) - plist=product_records - if(CAT_HIDDEN) - plist=hidden_records - if(CAT_COIN) - plist=coin_records - else - warning("UNKNOWN CATEGORY [product.category] IN TYPE [product.product_path] INSIDE [type]!") + if(product.category == CAT_NORMAL) + plist = product_records + else if(product.category == CAT_HIDDEN) + plist = hidden_records + else if(product.category == CAT_COIN) + plist = coin_records + else + warning("UNKNOWN CATEGORY [product.category] IN TYPE [product.product_path] INSIDE [type]!") return plist.Find(product) /obj/structure/machinery/vending/proc/GetProductByID(pid, category) - switch(category) - if(CAT_NORMAL) - return product_records[pid] - if(CAT_HIDDEN) - return hidden_records[pid] - if(CAT_COIN) - return coin_records[pid] - else - warning("UNKNOWN PRODUCT: PID: [pid], CAT: [category] INSIDE [type]!") - return null + if(category == CAT_NORMAL) + return product_records[pid] + else if(category == CAT_HIDDEN) + return hidden_records[pid] + else if(category == CAT_COIN) + return coin_records[pid] + else + warning("UNKNOWN PRODUCT: PID: [pid], CAT: [category] INSIDE [type]!") /obj/structure/machinery/vending/attack_hand(mob/user) if(is_tipped_over) diff --git a/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm b/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm index 830511ad4b..d7d49a8ae0 100644 --- a/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/commanding_officer.dm @@ -1,9 +1,9 @@ //------------GEAR VENDOR--------------- GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( - list("COMMANDING OFFICER'S PRIMARY (CHOOSE 1)", 0, null, null, null), - list("M46C pulse rifle", 0, /obj/effect/essentials_set/co/riflepreset, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), - list("M56C Smartgun", 0, /obj/item/storage/box/m56c_system, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + list("COMMANDER'S PRIMARY (CHOOSE 1)", 0, null, null, null), + list("M46C Pulse Rifle", 0, /obj/effect/essentials_set/co/riflepreset, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), + list("M56C Smartgun", 0, /obj/item/storage/box/m56c_system, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_MANDATORY), list("PRIMARY AMMUNITION", 0, null, null, null), list("M41A MK1 Magazine", 30, /obj/item/ammo_magazine/rifle/m41aMK1, null, VENDOR_ITEM_RECOMMENDED), @@ -28,11 +28,19 @@ GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( list("M41A Rubber Shot Magazine", 10, /obj/item/ammo_magazine/rifle/rubber, null, VENDOR_ITEM_REGULAR), list("Beanbag Slugs", 10, /obj/item/ammo_magazine/shotgun/beanbag, null, VENDOR_ITEM_REGULAR), + list("EXPLOSIVES", 0, null, null, null), + list("HEDP Grenade Pack", 15, /obj/item/storage/box/packet/high_explosive, null, VENDOR_ITEM_REGULAR), + list("HEFA Grenade Pack", 15, /obj/item/storage/box/packet/hefa, null, VENDOR_ITEM_REGULAR), + list("WP Grenade Pack", 15, /obj/item/storage/box/packet/phosphorus, null, VENDOR_ITEM_REGULAR), + list("RAIL ATTACHMENTS", 0, null, null, null), list("Red-Dot Sight", 15, /obj/item/attachable/reddot, null, VENDOR_ITEM_REGULAR), list("Reflex Sight", 15, /obj/item/attachable/reflex, null, VENDOR_ITEM_REGULAR), list("S4 2x Telescopic Mini-Scope", 15, /obj/item/attachable/scope/mini, null, VENDOR_ITEM_REGULAR), + list("Helmet Visors", 0, null, null, null), + list("Welding Visor", 5, /obj/item/device/helmet_visor/welding_visor, null, VENDOR_ITEM_RECOMMENDED), + list("UNDERBARREL ATTACHMENTS", 0, null, null, null), list("Laser Sight", 15, /obj/item/attachable/lasersight, null, VENDOR_ITEM_REGULAR), list("Angled Grip", 15, /obj/item/attachable/angledgrip, null, VENDOR_ITEM_REGULAR), @@ -40,12 +48,13 @@ GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( list("Underbarrel Shotgun", 15, /obj/item/attachable/attached_gun/shotgun, null, VENDOR_ITEM_REGULAR), list("Underbarrel Extinguisher", 15, /obj/item/attachable/attached_gun/extinguisher, null, VENDOR_ITEM_REGULAR), list("Underbarrel Flamethrower", 15, /obj/item/attachable/attached_gun/flamer, null, VENDOR_ITEM_REGULAR), + list("Underbarrel Grenade Launcher", 5, /obj/item/attachable/attached_gun/grenade, null, VENDOR_ITEM_REGULAR), list("BARREL ATTACHMENTS", 0, null, null, null), - list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), list("Extended Barrel", 15, /obj/item/attachable/extended_barrel, null, VENDOR_ITEM_REGULAR), list("Recoil Compensator", 15, /obj/item/attachable/compensator, null, VENDOR_ITEM_REGULAR), - )) + list("Suppressor", 15, /obj/item/attachable/suppressor, null, VENDOR_ITEM_REGULAR), + )) /obj/structure/machinery/cm_vending/gear/commanding_officer name = "\improper ColMarTech Commanding Officer Weapon Rack" @@ -63,9 +72,15 @@ GLOBAL_LIST_INIT(cm_vending_gear_commanding_officer, list( GLOBAL_LIST_INIT(cm_vending_clothing_commanding_officer, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom/cdrcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Satchel", 0, /obj/item/storage/backpack/satchel/lockable, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("COMMANDING OFFICER ESSENTIALS KIT (TAKE ALL)", 0, null, null, null), + list("Commanding Officer Essentials Kit", 0, /obj/effect/essentials_set/commanding_officer, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_MANDATORY), + + list("BAGS (CHOOSE 1)", 0, null, null, null), + list("Commanding Officer Backpack", 0, /obj/item/storage/backpack/mcommander, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("Secure Satchel", 0, /obj/item/storage/backpack/satchel/lockable, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_MANDATORY), + list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Commanding Officer's M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/CO, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_MANDATORY), list("Commanding Officer's M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/CO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), @@ -84,8 +99,13 @@ GLOBAL_LIST_INIT(cm_vending_clothing_commanding_officer, list( list("Medical HUD Glasses", 0, /obj/item/clothing/glasses/hud/health, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_RECOMMENDED), list("Security HUD Glasses", 0, /obj/item/clothing/glasses/sunglasses/sechud, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), - list("BELTS (TAKE ALL)", 0, null, null, null), + list("BELTS (CHOOSE 1)", 0, null, null, null), list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("Military Police Belt", 0, /obj/item/storage/belt/security/MP/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Medical Storage Rig", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Holster Toolrig", 0, /obj/item/storage/belt/gun/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), list("POUCHES (CHOOSE 2)", 0, null, null, null), list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), @@ -110,6 +130,15 @@ GLOBAL_LIST_INIT(cm_vending_clothing_commanding_officer, list( /obj/structure/machinery/cm_vending/clothing/commanding_officer/get_listed_products(mob/user) return GLOB.cm_vending_clothing_commanding_officer +/obj/effect/essentials_set/commanding_officer + spawned_gear_list = list( + /obj/item/device/binoculars/range/designator, + /obj/item/map/current_map, + /obj/item/device/whistle, + /obj/item/weapon/gun/energy/taser, + /obj/item/device/megaphone, + ) + // This gets around the COs' weapon not spawning without incendiary mag. /obj/effect/essentials_set/co/riflepreset spawned_gear_list = list( diff --git a/code/game/machinery/vending/vendor_types/crew/staff_officer.dm b/code/game/machinery/vending/vendor_types/crew/staff_officer.dm index 11c9341da0..50b83ccdc5 100644 --- a/code/game/machinery/vending/vendor_types/crew/staff_officer.dm +++ b/code/game/machinery/vending/vendor_types/crew/staff_officer.dm @@ -13,13 +13,13 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer, list( list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), list("Headset", 0, /obj/item/device/radio/headset/almayer/mcom, MARINE_CAN_BUY_EAR, VENDOR_ITEM_MANDATORY), - list("Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_HELMET, VENDOR_ITEM_MANDATORY), list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), list("STANDARD EQUIPMENT (TAKE ALL)", 0, null, null, null), list("Service Uniform", 0, /obj/item/clothing/under/marine/officer/bridge, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_REGULAR), list("Operations Uniform", 0, /obj/item/clothing/under/marine/officer/boiler, MARINE_CAN_BUY_UNIFORM, VENDOR_ITEM_RECOMMENDED), + list("Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_REGULAR), list("JACKET (CHOOSE 1)", 0, null, null, null), list("Service Jacket", 0, /obj/item/clothing/suit/storage/jacket/marine/service, MARINE_CAN_BUY_ARMOR, VENDOR_ITEM_RECOMMENDED), @@ -33,65 +33,21 @@ GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer, list( list("PERSONAL SIDEARM (CHOOSE 1)", 0, null, null, null), - list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M4A3 Pistol", 0, /obj/item/storage/belt/gun/m4a3/commander, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("VP78 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp78, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M44 Revolver", 0, /obj/item/storage/belt/gun/m44/mp, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("M4A3 Pistol", 0, /obj/item/storage/belt/gun/m4a3/commander, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), + list("VP78 Pistol", 0, /obj/item/storage/belt/gun/m4a3/vp78, MARINE_CAN_BUY_SECONDARY, VENDOR_ITEM_RECOMMENDED), list("BACKPACK (CHOOSE 1)", 0, null, null, null), list("Backpack", 0, /obj/item/storage/backpack/marine, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), list("Satchel", 0, /obj/item/storage/backpack/marine/satchel, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_REGULAR), - list("Radio Telephone Pack", 0, /obj/item/storage/backpack/marine/satchel/rto, MARINE_CAN_BUY_BACKPACK, VENDOR_ITEM_RECOMMENDED), - list("BELT (CHOOSE 1)", 0, null, null, null), - list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), - list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - list("M276 M40 Grenade Rig", 0, /obj/item/storage/belt/grenade, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), - - list("POUCHES (CHOOSE 2)", 0, null, null, null), - list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Fuel Tank Strap Pouch", 0, /obj/item/storage/pouch/flamertank, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), - list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), - - list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), - list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), - list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), - - list("MASK (CHOOSE 1)", 0, null, null, null), - list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), - list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), list("OTHER SUPPLIES", 0, null, null, null), list("Binoculars", 5,/obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), list("Rangefinder", 8, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), list("Laser Designator", 12, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_RECOMMENDED), - list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), list("Flashlight", 1, /obj/item/device/flashlight, null, VENDOR_ITEM_RECOMMENDED), - list("Fulton Recovery Device", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), - list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_RECOMMENDED), list("Space Cleaner", 2, /obj/item/reagent_container/spray/cleaner, null, VENDOR_ITEM_REGULAR), list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), - list("Machete Scabbard (Full)", 2, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR) )) diff --git a/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm b/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm new file mode 100644 index 0000000000..ac7b22b4e0 --- /dev/null +++ b/code/game/machinery/vending/vendor_types/crew/staff_officer_armory.dm @@ -0,0 +1,83 @@ +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory + name = "\improper ColMarTech Staff Officer Armory Equipment Rack" + desc = "An automated combat equipment vendor for Staff Officers." + req_access = list(ACCESS_MARINE_COMMAND) + icon_state = "mar_rack" + vendor_role = list(JOB_SO) + +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory/get_listed_products(mob/user) + return GLOB.cm_vending_clothing_staff_officer_armory + +//------------GEAR--------------- + +GLOBAL_LIST_INIT(cm_vending_clothing_staff_officer_armory, list( + list("COMBAT EQUIPMENT (TAKE ALL)", 0, null, null, null), + list("Officer M3 Armor", 0, /obj/item/clothing/suit/storage/marine/MP/SO, MARINE_CAN_BUY_COMBAT_ARMOR, VENDOR_ITEM_MANDATORY), + list("Officer M10 Helmet", 0, /obj/item/clothing/head/helmet/marine/MP/SO, MARINE_CAN_BUY_COMBAT_HELMET, VENDOR_ITEM_MANDATORY), + list("Marine Combat Boots", 0, /obj/item/clothing/shoes/marine/knife, MARINE_CAN_BUY_SHOES, VENDOR_ITEM_MANDATORY), + list("Marine Combat Gloves", 0, /obj/item/clothing/gloves/marine, MARINE_CAN_BUY_GLOVES, VENDOR_ITEM_MANDATORY), + list("MRE", 0, /obj/item/storage/box/MRE, MARINE_CAN_BUY_MRE, VENDOR_ITEM_MANDATORY), + list("Aviator Shades", 0, /obj/item/clothing/glasses/sunglasses/aviator, MARINE_CAN_BUY_GLASSES, VENDOR_ITEM_REGULAR), + + list("SPECIALISATION KIT (CHOOSE 1)", 0, null, null, null), + list("Essential Engineer Set", 0, /obj/effect/essentials_set/engi, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_RECOMMENDED), + list("Essential Medical Set", 0, /obj/effect/essentials_set/medic, MARINE_CAN_BUY_ESSENTIALS, VENDOR_ITEM_RECOMMENDED), + + list("BELT (CHOOSE 1)", 0, null, null, null), + list("G8-A General Utility Pouch", 0, /obj/item/storage/backpack/general_belt, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Ammo Load Rig", 0, /obj/item/storage/belt/marine, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Toolbelt Rig (Full)", 0, /obj/item/storage/belt/utility/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_RECOMMENDED), + list("M276 Lifesaver Bag (Full)", 0, /obj/item/storage/belt/medical/lifesaver/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 Medical Storage Rig (Full)", 0, /obj/item/storage/belt/medical/full, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M39 Holster Rig", 0, /obj/item/storage/belt/gun/m39, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M82F Holster Rig", 0, /obj/item/storage/belt/gun/flaregun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 Shotgun Shell Loading Rig", 0, /obj/item/storage/belt/shotgun, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + list("M276 M40 Grenade Rig", 0, /obj/item/storage/belt/grenade, MARINE_CAN_BUY_BELT, VENDOR_ITEM_REGULAR), + + list("POUCHES (CHOOSE 2)", 0, null, null, null), + list("Autoinjector Pouch", 0, /obj/item/storage/pouch/autoinjector, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Construction Pouch", 0, /obj/item/storage/pouch/construction, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Document Pouch", 0, /obj/item/storage/pouch/document, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Electronics Pouch (Full)", 0, /obj/item/storage/pouch/electronics/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Refillable Injectors)", 0, /obj/item/storage/pouch/firstaid/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", 0, /obj/item/storage/pouch/firstaid/full/alternate, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", 0, /obj/item/storage/pouch/firstaid/full/pills, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("First Responder Pouch", 0, /obj/item/storage/pouch/first_responder, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", 0, /obj/item/storage/pouch/flare/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Fuel Tank Strap Pouch", 0, /obj/item/storage/pouch/flamertank, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large General Pouch", 0, /obj/item/storage/pouch/general/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_RECOMMENDED), + list("Large Magazine Pouch", 0, /obj/item/storage/pouch/magazine/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Shotgun Shell Pouch", 0, /obj/item/storage/pouch/shotgun/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Large Pistol Magazine Pouch", 0, /obj/item/storage/pouch/magazine/pistol/large, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Pouch", 0, /obj/item/storage/pouch/medical, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Medical Kit Pouch", 0, /obj/item/storage/pouch/medkit, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", 0, /obj/item/storage/pouch/pistol, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Sling Pouch", 0, /obj/item/storage/pouch/sling, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + list("Tools Pouch (Full)", 0, /obj/item/storage/pouch/tools/full, MARINE_CAN_BUY_POUCH, VENDOR_ITEM_REGULAR), + + list("ACCESSORIES (CHOOSE 1)", 0, null, null, null), + list("Black Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Brown Webbing Vest", 0, /obj/item/clothing/accessory/storage/black_vest/brown_vest, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_RECOMMENDED), + list("Drop Pouch", 0, /obj/item/clothing/accessory/storage/droppouch, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Webbing", 0, /obj/item/clothing/accessory/storage/webbing, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", 0, /obj/item/clothing/accessory/storage/holster, MARINE_CAN_BUY_ACCESSORY, VENDOR_ITEM_REGULAR), + + list("MASK (CHOOSE 1)", 0, null, null, null), + list("Gas Mask", 0, /obj/item/clothing/mask/gas, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", 0, /obj/item/clothing/mask/rebreather/scarf, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + + list("OTHER SUPPLIES", 0, null, null, null), + list("Medical Helmet Optic", 5, /obj/item/device/helmet_visor/medical, null, VENDOR_ITEM_REGULAR), + list("Magnetic Harness", 12, /obj/item/attachable/magnetic_harness, null, VENDOR_ITEM_REGULAR), + list("Radio Telephone Pack", 15, /obj/item/storage/backpack/marine/satchel/rto, null, VENDOR_ITEM_RECOMMENDED), + list("Binoculars", 5,/obj/item/device/binoculars, null, VENDOR_ITEM_REGULAR), + list("Rangefinder", 8, /obj/item/device/binoculars/range, null, VENDOR_ITEM_REGULAR), + list("Laser Designator", 12, /obj/item/device/binoculars/range/designator, null, VENDOR_ITEM_RECOMMENDED), + list("Data Detector", 5, /obj/item/device/motiondetector/intel, null, VENDOR_ITEM_REGULAR), + list("Flashlight", 1, /obj/item/device/flashlight, null, VENDOR_ITEM_RECOMMENDED), + list("Fulton Recovery Device", 5, /obj/item/stack/fulton, null, VENDOR_ITEM_REGULAR), + list("Motion Detector", 5, /obj/item/device/motiondetector, null, VENDOR_ITEM_REGULAR), + list("Space Cleaner", 2, /obj/item/reagent_container/spray/cleaner, null, VENDOR_ITEM_REGULAR), + list("Whistle", 5, /obj/item/device/whistle, null, VENDOR_ITEM_REGULAR), + list("Machete Scabbard (Full)", 5, /obj/item/storage/large_holster/machete/full, null, VENDOR_ITEM_REGULAR) + )) diff --git a/code/game/machinery/vending/vendor_types/requisitions.dm b/code/game/machinery/vending/vendor_types/requisitions.dm index 2b46d0bead..9e19ee7a32 100644 --- a/code/game/machinery/vending/vendor_types/requisitions.dm +++ b/code/game/machinery/vending/vendor_types/requisitions.dm @@ -191,7 +191,7 @@ turf_to_vent_to = H.loc return turf_to_vent_to -/obj/structure/machinery/cm_vending/sorted/cargo_guns/blend +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend icon_state = "req_guns_wall" tiles_with = list( /obj/structure/window/framed/almayer, @@ -295,7 +295,7 @@ updateUsrDialog() return //We found our item, no reason to go on. -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/blend +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend icon_state = "req_ammo_wall" tiles_with = list( /obj/structure/window/framed/almayer, diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index bebe0ec8b2..56c6ae45cd 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -95,8 +95,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/effect/glowshroom/fire_act(exposed_temperature, exposed_volume) if(exposed_temperature > 300) diff --git a/code/game/objects/explosion_recursive.dm b/code/game/objects/explosion_recursive.dm index 1f52901c21..82566c8030 100644 --- a/code/game/objects/explosion_recursive.dm +++ b/code/game/objects/explosion_recursive.dm @@ -149,7 +149,7 @@ explosion resistance exactly as much as their health switch(angle) //this reduces power when the explosion is going around corners if (0) - //no change + pass() if (45) if(spread_power >= 0) spread_power *= 0.75 diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 2d142789fd..9dbe33e051 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -268,7 +268,6 @@ cases. Override_icon_state should be a list.*/ size = "huge" if(SIZE_MASSIVE) size = "massive" - else . += "This is a [blood_color ? blood_color != "#030303" ? "bloody " : "oil-stained " : ""][icon2html(src, user)][src.name]. It is a [size] item." if(desc) . += desc diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm index 06a4d785e6..2892eb1113 100644 --- a/code/game/objects/items/reagent_containers/food/snacks.dm +++ b/code/game/objects/items/reagent_containers/food/snacks.dm @@ -182,10 +182,9 @@ return 0 var/inaccurate = 0 - if(W.sharp == IS_SHARP_ITEM_ACCURATE) - else if(W.sharp == IS_SHARP_ITEM_BIG) + if(W.sharp == IS_SHARP_ITEM_BIG) inaccurate = 1 - else + else if(W.sharp != IS_SHARP_ITEM_ACCURATE) return 1 if ( !istype(loc, /obj/structure/surface/table) && \ (!isturf(src.loc) || \ @@ -206,7 +205,7 @@ SPAN_NOTICE("[user] crudely slices \the [src] with [W]!"), \ SPAN_NOTICE("You crudely slice \the [src] with your [W]!") \ ) - slices_lost = rand(1,min(1,round(slices_num/2))) + slices_lost = rand(1,max(1,round(slices_num/2))) var/reagents_per_slice = reagents.total_volume/slices_num for(var/i=1 to (slices_num-slices_lost)) var/obj/slice = new slice_path (src.loc) diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm index 32e9a03046..754a36c601 100644 --- a/code/game/objects/items/stacks/nanopaste.dm +++ b/code/game/objects/items/stacks/nanopaste.dm @@ -40,7 +40,7 @@ H.pain.recalculate_pain() H.updatehealth() use(1) - var/others_msg = "\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " \the"] [S.display_name] with \the [src]." // Needs to create vars for these messages because macro doesn't work otherwise + var/others_msg = "\The [user] applies some nanite paste at[user != M ? " \the [M]'s" : " the"] [S.display_name] with \the [src]." // Needs to create vars for these messages because macro doesn't work otherwise var/user_msg = "You apply some nanite paste at [user == M ? "your" : "[M]'s"] [S.display_name]." user.visible_message(SPAN_NOTICE("[others_msg]"),\ SPAN_NOTICE("[user_msg]")) diff --git a/code/game/objects/items/storage/large_holster.dm b/code/game/objects/items/storage/large_holster.dm index ef2bcfb721..b4a6c3a8c1 100644 --- a/code/game/objects/items/storage/large_holster.dm +++ b/code/game/objects/items/storage/large_holster.dm @@ -326,7 +326,7 @@ /obj/item/storage/large_holster/fuelpack/get_examine_text(mob/user) . = ..() if(contents.len) - . += "It is storing \a M240-T incinerator unit." + . += "It is storing a M240-T incinerator unit." if (get_dist(user, src) <= 1) if(fuel) . += "The [fuel.caliber] currently contains: [round(fuel.get_ammo_percent())]% fuel." diff --git a/code/game/objects/items/storage/pouch.dm b/code/game/objects/items/storage/pouch.dm index 6d49db9950..f38f15cfef 100644 --- a/code/game/objects/items/storage/pouch.dm +++ b/code/game/objects/items/storage/pouch.dm @@ -168,7 +168,7 @@ name = "synth survival pouch" desc = "An emergency pouch given to synthetics in the event of an emergency." icon_state = "tools" - storage_slots = 7 + storage_slots = 6 max_w_class = SIZE_MEDIUM can_hold = list( /obj/item/device/flashlight, @@ -181,7 +181,6 @@ ) /obj/item/storage/pouch/survival/synth/full/fill_preset_inventory() - new /obj/item/device/flashlight(src) new /obj/item/tool/crowbar/red(src) new /obj/item/tool/weldingtool(src) new /obj/item/stack/cable_coil(src) diff --git a/code/game/objects/structures/barricade/barricade.dm b/code/game/objects/structures/barricade/barricade.dm index 0ca2ccb1dd..5a72ec33ea 100644 --- a/code/game/objects/structures/barricade/barricade.dm +++ b/code/game/objects/structures/barricade/barricade.dm @@ -78,7 +78,7 @@ switch(dir) if(SOUTH) layer = ABOVE_MOB_LAYER - else if(NORTH) + if(NORTH) layer = initial(layer) - 0.01 else layer = initial(layer) diff --git a/code/game/objects/structures/barricade/handrail.dm b/code/game/objects/structures/barricade/handrail.dm index ea10dc7256..ae166dbbf9 100644 --- a/code/game/objects/structures/barricade/handrail.dm +++ b/code/game/objects/structures/barricade/handrail.dm @@ -24,7 +24,7 @@ switch(dir) if(SOUTH) layer = ABOVE_MOB_LAYER - else if(NORTH) + if(NORTH) layer = initial(layer) - 0.01 else layer = initial(layer) diff --git a/code/game/objects/structures/bookcase.dm b/code/game/objects/structures/bookcase.dm index c71b2853ea..becb0906e3 100644 --- a/code/game/objects/structures/bookcase.dm +++ b/code/game/objects/structures/bookcase.dm @@ -58,8 +58,6 @@ contents_explosion(severity) deconstruct(FALSE) return - else - return /obj/structure/bookcase/update_icon() if(contents.len < 5) diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm index 7848aaba48..b000fd5733 100644 --- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm @@ -51,8 +51,6 @@ new /obj/item/clothing/mask/gas(src) new /obj/item/clothing/mask/gas(src) new /obj/item/storage/firstaid/o2(src) - if ("nothing") - // doot // teehee - Ah, tg coders... if ("delete") diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 7c9faaf1a0..9f0417ccb3 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -130,8 +130,6 @@ contents_explosion(severity) deconstruct(FALSE) return - else - return /obj/structure/closet/crate/alpha name = "alpha squad crate" diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 38201e052c..d2b3d36b59 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -43,8 +43,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/lattice/attackby(obj/item/C as obj, mob/user as mob) diff --git a/code/game/objects/structures/reagent_dispensers.dm b/code/game/objects/structures/reagent_dispensers.dm index 7dc6d883a2..6471dfa215 100644 --- a/code/game/objects/structures/reagent_dispensers.dm +++ b/code/game/objects/structures/reagent_dispensers.dm @@ -119,8 +119,6 @@ if(EXPLOSION_THRESHOLD_MEDIUM to INFINITY) deconstruct(FALSE) return - else - return /obj/structure/reagent_dispensers/attack_hand() if(!reagents || reagents.locked) diff --git a/code/game/turfs/walls/wall_types.dm b/code/game/turfs/walls/wall_types.dm index d968b8d72f..009eab0b6f 100644 --- a/code/game/turfs/walls/wall_types.dm +++ b/code/game/turfs/walls/wall_types.dm @@ -24,8 +24,8 @@ /obj/structure/girder, /obj/structure/machinery/door, /obj/structure/machinery/cm_vending/sorted/attachments/blend, - /obj/structure/machinery/cm_vending/sorted/cargo_ammo/blend, - /obj/structure/machinery/cm_vending/sorted/cargo_guns/blend, + /obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, + /obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, ) /turf/closed/wall/almayer/update_icon() diff --git a/code/game/verbs/records.dm b/code/game/verbs/records.dm index f09de72da2..18ed35ee63 100644 --- a/code/game/verbs/records.dm +++ b/code/game/verbs/records.dm @@ -143,7 +143,7 @@ dat += "" var/color = "#008800" - var/add_dat = "Add Admin Note
Add Confidential Admin Note
" + var/add_dat = "Add Admin Note
Add Confidential Admin Note
" switch(note_category) if(NOTE_MERIT) color = "#9e3dff" diff --git a/code/modules/admin/tabs/event_tab.dm b/code/modules/admin/tabs/event_tab.dm index ca1072a95b..852c8b6b32 100644 --- a/code/modules/admin/tabs/event_tab.dm +++ b/code/modules/admin/tabs/event_tab.dm @@ -931,13 +931,8 @@ message_admins("[key_name(usr)] has fired \an [warhead.name] at ([target.x],[target.y],[target.z]).") warhead.warhead_impact(target) - if(istype(warhead, /obj/structure/ob_ammo/warhead/cluster)) - // so the user's screen can shake for the duration of the cluster, otherwise we get a runtime. - QDEL_IN(warhead, OB_CLUSTER_DURATION) - else - QDEL_IN(warhead, OB_CRASHING_DOWN) else - warhead.loc = target + warhead.forceMove(target) /client/proc/change_taskbar_icon() set name = "Set Taskbar Icon" diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index 8bbc999252..27e457be6d 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -336,86 +336,6 @@ /////////////////////////////////////new ban stuff - else if(href_list["jobban2"]) -// if(!check_rights(R_BAN)) return - /* - var/mob/M = locate(href_list["jobban2"]) - if(!ismob(M)) - to_chat(usr, "This can only be used on instances of type /mob") - return - - if(!M.ckey) //sanity - to_chat(usr, "This mob has no ckey") - return - if(!RoleAuthority) - to_chat(usr, "The Role Authority is not set up!") - return - - var/datum/entity/player/P = get_player_from_key(M.ckey) - - var/dat = "" - var/body - var/jobs = "" - - /***********************************WARNING!************************************ - The jobban stuff looks mangled and disgusting - But it looks beautiful in-game - -Nodrak - ************************************WARNING!***********************************/ -//Regular jobs - //Command (Blue) - jobs += generate_job_ban_list(M, ROLES_CIC, "CIC", "ddddff") - jobs += "
" - // SUPPORT - jobs += generate_job_ban_list(M, ROLES_AUXIL_SUPPORT, "Support", "ccccff") - jobs += "
" - // MPs - jobs += generate_job_ban_list(M, ROLES_POLICE, "Police", "ffdddd") - jobs += "
" - //Engineering (Yellow) - jobs += generate_job_ban_list(M, ROLES_ENGINEERING, "Engineering", "fff5cc") - jobs += "
" - //Cargo (Yellow) //Copy paste, yada, yada. Hopefully Snail can rework this in the future. - jobs += generate_job_ban_list(M, ROLES_REQUISITION, "Requisition", "fff5cc") - jobs += "
" - //Medical (White) - jobs += generate_job_ban_list(M, ROLES_MEDICAL, "Medical", "ffeef0") - jobs += "
" - //Marines - jobs += generate_job_ban_list(M, ROLES_MARINES, "Marines", "ffeeee") - jobs += "
" - // MISC - jobs += generate_job_ban_list(M, ROLES_MISC, "Misc", "aaee55") - jobs += "
" - // Xenos (Orange) - jobs += generate_job_ban_list(M, ROLES_XENO, "Xenos", "a268b1") - jobs += "
" - //Extra (Orange) - var/isbanned_dept = jobban_isbanned(M, "Syndicate", P) - jobs += "" - jobs += "" - - //ERT - if(jobban_isbanned(M, "Emergency Response Team", P) || isbanned_dept) - jobs += "" - else - jobs += "" - - //Survivor - if(jobban_isbanned(M, "Survivor", P) || isbanned_dept) - jobs += "" - else - jobs += "" - - if(jobban_isbanned(M, "Agent", P) || isbanned_dept) - jobs += "" - else - jobs += "" - - body = "[jobs]" - dat = "[body]" - show_browser(usr, dat, "Job-Ban Panel: [M.name]", "jobban2", "size=800x490") - return*/ // DEPRECATED //JOBBAN'S INNARDS else if(href_list["jobban3"]) if(!check_rights(R_MOD,0) && !check_rights(R_ADMIN)) return @@ -697,7 +617,6 @@ to_world(SPAN_NOTICE("The mode is now: [GLOB.master_mode]!")) Game() // updates the main game menu SSticker.save_mode(GLOB.master_mode) - .(href, list("c_mode"=1)) else if(href_list["f_secret2"]) diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index d5d44a0479..d1e7f83dac 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -321,7 +321,7 @@ I = icon(icon_file, icon_state, SOUTH) var/c = initial(item.color) if (!isnull(c) && c != "#FFFFFF") - I.Blend(initial(c), ICON_MULTIPLY) + I.Blend(c, ICON_MULTIPLY) else if (ispath(k, /obj/effect/essentials_set)) var/obj/effect/essentials_set/es_set = new k() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index b09589990e..2e1f8f33f2 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1414,11 +1414,8 @@ var/const/MAX_SAVE_SLOTS = 10 var/all_ok = TRUE for(var/i=1, i<=length(new_xeno_prefix), i++) var/ascii_char = text2ascii(new_xeno_prefix,i) - switch(ascii_char) - // A .. Z - if(65 to 90) //Uppercase Letters will work - else - all_ok = FALSE //everything else - won't + if(ascii_char < 65 || ascii_char > 90) + all_ok = FALSE //everything else - won't if(all_ok) xeno_prefix = new_xeno_prefix owner.load_xeno_name() diff --git a/code/modules/clothing/glasses/night.dm b/code/modules/clothing/glasses/night.dm index afb711c3ca..2a3780832e 100644 --- a/code/modules/clothing/glasses/night.dm +++ b/code/modules/clothing/glasses/night.dm @@ -187,7 +187,7 @@ if(target) var/obj/item/clothing/glasses/night/m56_goggles/G = target G.set_far_sight(owner, !G.far_sight) - to_chat(owner, SPAN_NOTICE("You [G.far_sight ? "enable" : "disable"] \the [src]'s far sight system.")) + to_chat(owner, SPAN_NOTICE("You [G.far_sight ? "enable" : "disable"] \the [G]'s far sight system.")) /datum/action/item_action/m56_goggles/far_sight/update_button_icon() if(!target) diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index d969587e32..cc7fee7724 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -423,7 +423,7 @@ return var/obj/item/weapon/gun/W = usr.get_active_hand() if (W.w_class > SIZE_MEDIUM) - to_chat(usr, SPAN_DANGER("This gun won't fit in \the belt!")) + to_chat(usr, SPAN_DANGER("This gun won't fit in the belt!")) return holstered = usr.get_active_hand() usr.drop_held_item() diff --git a/code/modules/cm_marines/orbital_cannon.dm b/code/modules/cm_marines/orbital_cannon.dm index 8d80f80860..78bdfc3d77 100644 --- a/code/modules/cm_marines/orbital_cannon.dm +++ b/code/modules/cm_marines/orbital_cannon.dm @@ -217,15 +217,16 @@ var/list/ob_type_fuel_requirements if(user) tray.warhead.source_mob = user - tray.warhead.warhead_impact(target) + var/obj/structure/ob_ammo/warhead/warhead = tray.warhead + tray.warhead = null + warhead.moveToNullspace() + warhead.warhead_impact(target) sleep(OB_CRASHING_DOWN) ob_cannon_busy = FALSE - chambered_tray = FALSE tray.fuel_amt = 0 - QDEL_NULL(tray.warhead) tray.update_icon() update_icon() @@ -357,6 +358,9 @@ var/list/ob_type_fuel_requirements var/max_shake_factor var/max_knockdown_time + // Note that the warhead should be cleared of location by the firing proc, + // then auto-delete at the end of the warhead_impact implementation + /obj/structure/ob_ammo/warhead/proc/warhead_impact(turf/target) // make damn sure everyone hears it playsound(target, 'sound/weapons/gun_orbital_travel.ogg', 100, 1, 75) @@ -366,7 +370,7 @@ var/list/ob_type_fuel_requirements message_admins(FONT_SIZE_XL("CLICK TO CANCEL THIS OB")) var/relative_dir - for(var/mob/M in range(30, target)) + for(var/mob/M in urange(30, target)) if(get_turf(M) == target) relative_dir = 0 else @@ -377,7 +381,7 @@ var/list/ob_type_fuel_requirements ) sleep(OB_TRAVEL_TIMING/3) - for(var/mob/M in range(25, target)) + for(var/mob/M in urange(25, target)) if(get_turf(M) == target) relative_dir = 0 else @@ -388,7 +392,7 @@ var/list/ob_type_fuel_requirements ) sleep(OB_TRAVEL_TIMING/3) - for(var/mob/M in range(15, target)) + for(var/mob/M in urange(15, target)) M.show_message( \ SPAN_HIGHDANGER("OH GOD THE SKY WILL EXPLODE!!!"), SHOW_MESSAGE_VISIBLE, \ SPAN_HIGHDANGER("YOU SHOULDN'T BE HERE!"), SHOW_MESSAGE_AUDIBLE \ @@ -455,6 +459,7 @@ var/list/ob_type_fuel_requirements handle_ob_shake(target) sleep(double_explosion_delay) cell_explosion(target, standard_power, standard_falloff, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, cause_data) + qdel(src) return // Checks turf around the target @@ -464,8 +469,11 @@ var/list/ob_type_fuel_requirements handle_ob_shake(target) sleep(double_explosion_delay) cell_explosion(target, standard_power, standard_falloff, EXPLOSION_FALLOFF_SHAPE_LINEAR, null, cause_data) + qdel(src) return + qdel(src) + /obj/structure/ob_ammo/warhead/incendiary name = "\improper Incendiary orbital warhead" warhead_kind = "incendiary" @@ -497,6 +505,7 @@ var/list/ob_type_fuel_requirements sleep(clear_delay) fire_spread(target, cause_data, distance, fire_level, burn_level, fire_color, fire_type, TURF_PROTECTION_OB) + qdel(src) /obj/structure/ob_ammo/warhead/cluster name = "\improper Cluster orbital warhead" @@ -529,12 +538,16 @@ var/list/ob_type_fuel_requirements for(var/i = 1 to total_amount) for(var/k = 1 to instant_amount) - var/turf/U = pick(turf_list) - if(protected_by_pylon(TURF_PROTECTION_OB, U)) //If the turf somehow gained OB protection while the cluster was firing + var/turf/selected_turf = pick(turf_list) + if(protected_by_pylon(TURF_PROTECTION_OB, selected_turf)) + continue + var/area/selected_area = get_area(selected_turf) + if(CEILING_IS_PROTECTED(selected_area?.ceiling, CEILING_PROTECTION_TIER_4)) continue - fire_in_a_hole(U) + fire_in_a_hole(selected_turf) sleep(delay_between_clusters) + QDEL_IN(src, 5 SECONDS) // Leave time for last handle_ob_shake below /obj/structure/ob_ammo/warhead/cluster/proc/fire_in_a_hole(turf/loc) new /obj/effect/overlay/temp/blinking_laser (loc) diff --git a/code/modules/desert_dam/filtration/consoles.dm b/code/modules/desert_dam/filtration/consoles.dm index 038b96eb47..8c2814fafd 100644 --- a/code/modules/desert_dam/filtration/consoles.dm +++ b/code/modules/desert_dam/filtration/consoles.dm @@ -35,8 +35,6 @@ var/global/river_activated = FALSE if (prob(10)) get_broken() return - else - return /obj/structure/machinery/filtration/console/proc/get_broken() if(damaged) diff --git a/code/modules/flufftext/Chinese.dm b/code/modules/flufftext/Chinese.dm index 36da1d307a..6b19dd61fc 100644 --- a/code/modules/flufftext/Chinese.dm +++ b/code/modules/flufftext/Chinese.dm @@ -62,12 +62,12 @@ //remove complex/simple -u- glide final_syllables if(initial.initial_sound_flags & SIMPLE_U_ONLY) for(var/datum/chinese_sound/final_syllable/final_syllable as anything in possible_final_syllables) - if(initial(initial(final_syllable.vowel_class)) == VOWEL_CLASS_BACK_CLOSE) + if(initial(final_syllable.vowel_class) == VOWEL_CLASS_BACK_CLOSE) possible_final_syllables -= final_syllable possible_final_syllables += /datum/chinese_sound/final_syllable/u else if(initial.initial_sound_flags & HALF_U) for(var/datum/chinese_sound/final_syllable/final_syllable as anything in possible_final_syllables) - if(initial(initial(final_syllable.vowel_class)) == VOWEL_CLASS_BACK_CLOSE && initial(final_syllable.final_syllable_sound_flags) & U_GROUP_FULL) + if(initial(final_syllable.vowel_class) == VOWEL_CLASS_BACK_CLOSE && initial(final_syllable.final_syllable_sound_flags) & U_GROUP_FULL) possible_final_syllables -= final_syllable //check for if the sound is alveolo-palatal or sibilant/retroflex - then remove or keep front close vowels accordingly diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index a00e4f1889..fa947cfa01 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -417,7 +417,7 @@ dress_extra = list(/obj/item/storage/large_holster/ceremonial_sword/full) dress_hat = list(/obj/item/clothing/head/marine/peaked/captain/white, /obj/item/clothing/head/marine/peaked/captain/black, /obj/item/clothing/head/marine/peaked) dress_shoes = list(/obj/item/clothing/shoes/dress/commander) - dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/officer/white, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/black, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/suit, /obj/item/clothing/suit/storage/jacket/marine/dress) + dress_over = list(/obj/item/clothing/suit/storage/jacket/marine/dress/officer/white, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/black, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/suit, /obj/item/clothing/suit/storage/jacket/marine/dress, /obj/item/clothing/suit/storage/jacket/marine/dress/bridge_coat_grey, ) /datum/equipment_preset/uscm_ship/commander/New() . = ..() @@ -458,7 +458,6 @@ new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/general/large(new_human), WEAR_R_STORE) new_human.equip_to_slot_or_del(new /obj/item/storage/pouch/pistol/command(new_human), WEAR_L_STORE) - new_human.equip_to_slot_or_del(new /obj/item/device/binoculars/range/designator(new_human), WEAR_L_HAND) if(kit) new_human.equip_to_slot_or_del(new kit(new_human), WEAR_IN_BACK) @@ -479,6 +478,8 @@ /obj/item/clothing/suit/storage/jacket/marine/dress/officer/black, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/suit, /obj/item/clothing/suit/storage/jacket/marine/dress/officer/falcon, + /obj/item/clothing/suit/storage/jacket/marine/dress/bridge_coat_grey, + /obj/item/clothing/suit/storage/jacket/marine/dress/bridge_coat, ) /datum/equipment_preset/uscm_ship/commander/council/load_gear(mob/living/carbon/human/new_human) @@ -512,7 +513,7 @@ minimap_icon = list("cic" = MINIMAP_ICON_COLOR_HEAD) minimap_background = MINIMAP_ICON_BACKGROUND_CIC - dress_extra = list(/obj/item/storage/large_holster/ceremonial_sword/full) + dress_extra = list(/obj/item/storage/large_holster/ceremonial_sword/full, /obj/item/clothing/suit/storage/jacket/marine/dress/bridge_coat_grey,) /datum/equipment_preset/uscm_ship/xo/New() . = ..() diff --git a/code/modules/law/law.dm b/code/modules/law/law.dm index 7d59060470..20245beda3 100644 --- a/code/modules/law/law.dm +++ b/code/modules/law/law.dm @@ -13,13 +13,14 @@ var/special_punishment = "" //This is for special punishments //These are bitflags to indicate the type of crime it is. -#define OPTIONAL_CRIME 1 -#define MINOR_CRIME 2 -#define MAJOR_CRIME 4 -#define CAPITAL_CRIME 8 +#define OPTIONAL_CRIME (1<<0) +#define MINOR_CRIME (1<<1) +#define MAJOR_CRIME (1<<2) +#define CAPITAL_CRIME (1<<3) +#define PRECAUTIONARY_CHARGE (1<<4) //These are bitflags for special punishments -#define PERMABRIG 1 -#define DOUBLE_TIME 2 -#define SAME_AS_ACCUSED 4 -#define DEMOTION 8 +#define PERMABRIG (1<<0) +#define DOUBLE_TIME (1<<1) +#define SAME_AS_ACCUSED (1<<2) +#define DEMOTION (1<<3) diff --git a/code/modules/law/laws/capital_crime.dm b/code/modules/law/laws/capital_crime.dm index 8329374e91..687c483c65 100644 --- a/code/modules/law/laws/capital_crime.dm +++ b/code/modules/law/laws/capital_crime.dm @@ -10,10 +10,6 @@ name = "Desertion" desc = "Refusing to carry out the duties essential to one’s post or abandoning post unauthorized, without intent to return. (Retreating from the planet when the FOB is breached is not Desertion, refusing to return when ordered is)." -/datum/law/capital_law/insanity - name = "Insanity" - desc = "Acting in such a manner which makes the offender not sound clear of mind. The CMO or Synthetic can declare insanity on a Marine if the Marine is believed to not be of sound mind. The Marine once cleared to be of sound mind may be released from this particular charge." - /datum/law/capital_law/jailbreak_escape name = "Jailbreak/Escape" desc = "To escape, assist in an escape, attempt escape, or be willfully and knowingly broken out." @@ -30,7 +26,3 @@ /datum/law/capital_law/crimes_against_humanity name = "Crimes against Humanity" desc = "To engage in actions that violate human rights or otherwise are heinous acts against humans. Examples are torture, cannibalism and forced infection with Xenomorph larva." - -/datum/law/capital_law/prisoner_of_war - name = "Prisoner of War" - desc = "Being a member of a currently hostile faction to the USCM." diff --git a/code/modules/law/laws/precautionary_charge.dm b/code/modules/law/laws/precautionary_charge.dm new file mode 100644 index 0000000000..c06cd6ca52 --- /dev/null +++ b/code/modules/law/laws/precautionary_charge.dm @@ -0,0 +1,18 @@ +/datum/law/precautionary_charge + severity = PRECAUTIONARY_CHARGE + brig_time = PERMABRIG_SENTENCE + special_punishment = "Not inclusive for execution criteria." + +/datum/law/precautionary_charge/discretionary_arrest + name = "Discretionary Detainment" + desc = "A discretionary charge used by Commanding Officers to detain personnel for any reason, for the safety and benefit of the operation or security. The duration of this charge is variable and may be pardoned/lifted at any time by the Commanding Officer." + special_punishment = "Not inclusive for execution criteria. May only be appealed to the Acting Commander or Provost/USCM HC." + +/datum/law/precautionary_charge/insanity + name = "Insanity" + desc = "Acting in such a manner which makes the offender not sound clear of mind. The CMO or Synthetic can declare insanity on a Marine if the Marine is believed to not be of sound mind. The Marine once cleared to be of sound mind may be released from this particular charge." + +/datum/law/precautionary_charge/prisoner_of_war + name = "Prisoner of War" + desc = "Being a member of a legitimate and recognised faction currently hostile to the USCM." + special_punishment = "Execution is forbidden barring exceptional circumstances." diff --git a/code/modules/mentor/mentorhelp.dm b/code/modules/mentor/mentorhelp.dm index 7746e90d96..695ec60463 100644 --- a/code/modules/mentor/mentorhelp.dm +++ b/code/modules/mentor/mentorhelp.dm @@ -169,10 +169,7 @@ if(sender == author) message_title = "MentorHelp" // If there's a mentor, let them mark it. If not, let them unmark it - if(mentor) - message_sender_options = " (Unmark" - else - message_sender_options = " (Mark" + message_sender_options = " (Mark/Unmark" message_sender_options += " | Close | AutoResponse)" var/message_header = SPAN_MENTORHELP("[message_title] from [message_sender_key]:[message_sender_options]
") @@ -274,9 +271,10 @@ if("autorespond") autoresponse(C) if("mark") - mark(C) - if("unmark") - unmark(C) + if(!mentor) + mark(C) + else + unmark(C) if("close") if(C == author || C == mentor || CLIENT_IS_STAFF(C)) close(C) @@ -327,7 +325,7 @@ var/msg = SPAN_MENTORSAY("Autoresponse:[choice]") switch(choice) if("L: Discord") - msg += "You can join our Discord server by using this link!" + msg += "You can join our Discord server by using this link!" if("L: Xeno Quickstart Guide") msg += "Your answer can be found on the Xeno Quickstart Guide on our wiki. Check it out here." if("L: Marine Quickstart Guide") diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 4b86c827a0..28e45dcb2f 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -132,7 +132,6 @@ for(var/message_mode in parsed["modes"]) var/list/obj/item/used_radios = list() switch(message_mode) - if(MESSAGE_MODE_LOCAL) if(RADIO_MODE_WHISPER) whisper_say(message, speaking, alt_name) return @@ -142,9 +141,10 @@ used_radios += I break // remove this if we EVER have two different intercomms with DIFFERENT frequencies IN ONE ROOM else - var/earpiece = get_type_in_ears(/obj/item/device/radio) - if(earpiece) - used_radios += earpiece + if(message_mode != MESSAGE_MODE_LOCAL) + var/earpiece = get_type_in_ears(/obj/item/device/radio) + if(earpiece) + used_radios += earpiece var/sound/speech_sound var/sound_vol diff --git a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm index fa9036bd83..3fd8e53024 100644 --- a/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm +++ b/code/modules/mob/living/carbon/xenomorph/XenoProcs.dm @@ -357,8 +357,8 @@ /mob/living/carbon/xenomorph/proc/pounced_turf(turf/T) if(!T.density) - for(var/mob/M in T) - pounced_mob(M) + for(var/mob/living/mob in T) + pounced_mob(mob) break else turf_launch_collision(T) diff --git a/code/modules/mob/new_player/sprite_accessories/hair.dm b/code/modules/mob/new_player/sprite_accessories/hair.dm index 3f624b8d3b..3dfe8bebd5 100644 --- a/code/modules/mob/new_player/sprite_accessories/hair.dm +++ b/code/modules/mob/new_player/sprite_accessories/hair.dm @@ -738,3 +738,20 @@ /datum/sprite_accessory/hair/aviator name = "Aviator" icon_state = "hair_aviator" + +/datum/sprite_accessory/hair/gantleponytail + name = "Gentle Ponytail" + icon_state = "hair_gantleponytail" + gender = FEMALE + +/datum/sprite_accessory/hair/edgar + name = "Edgar" + icon_state = "hair_edgar" + +/datum/sprite_accessory/hair/emobun + name = "Emo Little Bun" + icon_state = "hair_emobun" + +/datum/sprite_accessory/hair/taper + name = "Taper" + icon_state = "hair_taper" diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 71d1090b20..bde60ef3a3 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -382,9 +382,6 @@ /obj/item/paper/attackby(obj/item/P, mob/user) ..() - var/clown = 0 - if(user.mind && (user.job == "Clown")) - clown = 1 if(istype(P, /obj/item/paper) || istype(P, /obj/item/photo)) if (istype(P, /obj/item/paper/carbon)) @@ -424,6 +421,7 @@ return stamps += (stamps=="" ? "
" : "
") + "This paper has been stamped with the [P.name]." + playsound(src, 'sound/effects/alien_footstep_medium3.ogg', 20, TRUE, 6) var/image/stampoverlay = image('icons/obj/items/paper.dmi') var/x @@ -439,11 +437,6 @@ stampoverlay.pixel_x = x stampoverlay.pixel_y = y - if(istype(P, /obj/item/tool/stamp/clown)) - if(!clown) - to_chat(user, SPAN_NOTICE("You are totally unable to use the stamp. HONK!")) - return - if(!ico) ico = new ico += "paper_[P.icon_state]" diff --git a/code/modules/projectiles/guns/flamer/flamer.dm b/code/modules/projectiles/guns/flamer/flamer.dm index 5e61f5daa0..2c842073d6 100644 --- a/code/modules/projectiles/guns/flamer/flamer.dm +++ b/code/modules/projectiles/guns/flamer/flamer.dm @@ -725,12 +725,12 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/direction_angle = dir2angle(direction) var/obj/flamer_fire/foundflame = locate() in target if(!foundflame) - var/datum/reagent/R = new() - R.intensityfire = burn_lvl - R.durationfire = fire_lvl - R.burn_sprite = burn_sprite - R.burncolor = f_color - new/obj/flamer_fire(target, cause_data, R) + var/datum/reagent/fire_reag = new() + fire_reag.intensityfire = burn_lvl + fire_reag.durationfire = fire_lvl + fire_reag.burn_sprite = burn_sprite + fire_reag.burncolor = f_color + new/obj/flamer_fire(target, cause_data, fire_reag) if(target.density) return @@ -743,8 +743,6 @@ GLOBAL_LIST_EMPTY(flamer_particles) var/angle = 180 - abs( abs( direction_angle - spread_direction_angle ) - 180 ) // the angle difference between the spread direction and initial direction switch(angle) //this reduces power when the explosion is going around corners - if (0) - //no change if (45) spread_power *= 0.75 else //turns out angles greater than 90 degrees almost never happen. This bit also prevents trying to spread backwards @@ -759,25 +757,29 @@ GLOBAL_LIST_EMPTY(flamer_particles) if (spread_power < 1) continue - var/turf/T = get_step(target, spread_direction) + var/turf/picked_turf = get_step(target, spread_direction) - if(!T) //prevents trying to spread into "null" (edge of the map?) + if(!picked_turf) //prevents trying to spread into "null" (edge of the map?) continue - if(aerial_flame_level && (T.get_pylon_protection_level() >= aerial_flame_level)) - break + if(aerial_flame_level) + if(picked_turf.get_pylon_protection_level() >= aerial_flame_level) + break + var/area/picked_area = get_area(picked_turf) + if(CEILING_IS_PROTECTED(picked_area?.ceiling, get_ceiling_protection_level(aerial_flame_level))) + break spawn(0) - fire_spread_recur(T, cause_data, spread_power, spread_direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) + fire_spread_recur(picked_turf, cause_data, spread_power, spread_direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) /proc/fire_spread(turf/target, datum/cause_data/cause_data, range, fire_lvl, burn_lvl, f_color, burn_sprite = "dynamic", aerial_flame_level = TURF_PROTECTION_NONE) - var/datum/reagent/R = new() - R.intensityfire = burn_lvl - R.durationfire = fire_lvl - R.burn_sprite = burn_sprite - R.burncolor = f_color + var/datum/reagent/fire_reag = new() + fire_reag.intensityfire = burn_lvl + fire_reag.durationfire = fire_lvl + fire_reag.burn_sprite = burn_sprite + fire_reag.burncolor = f_color - new/obj/flamer_fire(target, cause_data, R) + new/obj/flamer_fire(target, cause_data, fire_reag) for(var/direction in alldirs) var/spread_power = range switch(direction) @@ -785,7 +787,11 @@ GLOBAL_LIST_EMPTY(flamer_particles) spread_power-- else spread_power -= 1.414 //diagonal spreading - var/turf/T = get_step(target, direction) - if(aerial_flame_level && (T.get_pylon_protection_level() >= aerial_flame_level)) - continue - fire_spread_recur(T, cause_data, spread_power, direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) + var/turf/picked_turf = get_step(target, direction) + if(aerial_flame_level) + if(picked_turf.get_pylon_protection_level() >= aerial_flame_level) + continue + var/area/picked_area = get_area(picked_turf) + if(CEILING_IS_PROTECTED(picked_area?.ceiling, get_ceiling_protection_level(aerial_flame_level))) + continue + fire_spread_recur(picked_turf, cause_data, spread_power, direction, fire_lvl, burn_lvl, f_color, burn_sprite, aerial_flame_level) diff --git a/code/modules/projectiles/guns/smgs.dm b/code/modules/projectiles/guns/smgs.dm index 89e6594c64..24eddf3159 100644 --- a/code/modules/projectiles/guns/smgs.dm +++ b/code/modules/projectiles/guns/smgs.dm @@ -11,7 +11,7 @@ aim_slowdown = SLOWDOWN_ADS_QUICK wield_delay = WIELD_DELAY_VERY_FAST attachable_allowed = list( - /obj/item/attachable/suppressor, + /obj/item/attachable/suppressor, /obj/item/attachable/reddot, /obj/item/attachable/reflex, /obj/item/attachable/flashlight, @@ -50,7 +50,8 @@ /obj/item/attachable/suppressor, /obj/item/attachable/reddot, /obj/item/attachable/reflex, - /obj/item/attachable/angledgrip, + /obj/item/attachable/angledgrip, + /obj/item/attachable/verticalgrip, /obj/item/attachable/flashlight/grip, /obj/item/attachable/stock/smg, /obj/item/attachable/stock/smg/collapsible, diff --git a/code/modules/reagents/chemistry_properties/prop_positive.dm b/code/modules/reagents/chemistry_properties/prop_positive.dm index 7f476cecf2..971051e9bf 100644 --- a/code/modules/reagents/chemistry_properties/prop_positive.dm +++ b/code/modules/reagents/chemistry_properties/prop_positive.dm @@ -548,7 +548,7 @@ rarity = PROPERTY_RARE category = PROPERTY_TYPE_REACTANT value = 3 - max_level = 1 + COOLDOWN_DECLARE(ghost_notif) /datum/chem_property/positive/defibrillating/on_delete(mob/living/M) ..() @@ -574,19 +574,33 @@ /datum/chem_property/positive/defibrillating/process_dead(mob/living/M, potency = 1, delta_time) if(!ishuman(M)) return - var/mob/living/carbon/human/H = M - H.apply_damage(-H.getOxyLoss(), OXY) - if(H.check_tod() && H.is_revivable() && H.health > HEALTH_THRESHOLD_DEAD) - to_chat(H, SPAN_NOTICE("You feel your heart struggling as you suddenly feel a spark, making it desperately try to continue pumping.")) - playsound_client(H.client, 'sound/effects/Heart Beat Short.ogg', 35) - addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, handle_revive)), 50, TIMER_UNIQUE) - else if (potency > POTENCY_MAX_TIER_1 && H.check_tod() && H.is_revivable() && H.health < HEALTH_THRESHOLD_DEAD) //Will heal if level is 7 or greater - to_chat(H, SPAN_NOTICE("You feel a faint spark in your chest.")) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BRUTE) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BURN) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, TOX) - H.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, CLONE) - H.apply_damage(-H.getOxyLoss(), OXY) + var/mob/living/carbon/human/dead = M + var/revivable = dead.check_tod() && dead.is_revivable() + if(revivable && (dead.health > HEALTH_THRESHOLD_DEAD)) + addtimer(CALLBACK(dead, TYPE_PROC_REF(/mob/living/carbon/human, handle_revive)), 5 SECONDS) + to_chat(dead, SPAN_NOTICE("You feel your heart struggling as you suddenly feel a spark, making it desperately try to continue pumping.")) + playsound_client(dead.client, 'sound/effects/heart_beat_short.ogg', 35) + else if ((potency >= 1) && revivable && dead.health <= HEALTH_THRESHOLD_DEAD) //heals on all level above 1. This is however, minimal. + to_chat(dead, SPAN_NOTICE("You feel a faint spark in your chest.")) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, BRUTE) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, BURN) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, TOX) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_VLOW, CLONE) + dead.apply_damage(-dead.getOxyLoss(), OXY) + if(potency > CREATE_MAX_TIER_1) //heal more if higher levels + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BRUTE) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, BURN) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, TOX) + dead.apply_damage(-potency * POTENCY_MULTIPLIER_LOW, CLONE) + if(dead.health < HEALTH_THRESHOLD_DEAD) + return + if(!COOLDOWN_FINISHED(src, ghost_notif)) + return + var/mob/dead/observer/ghost = dead.get_ghost() + if(ghost?.client) + COOLDOWN_START(src, ghost_notif, 30 SECONDS) + playsound_client(ghost.client, 'sound/effects/adminhelp_new.ogg') + to_chat(ghost, SPAN_BOLDNOTICE("Your heart is struggling to pump! There is a chance you might get up!(Verbs -> Ghost -> Re-enter corpse, or click here!)")) return TRUE /datum/chem_property/positive/hyperdensificating diff --git a/code/modules/reagents/chemistry_reagents/drink.dm b/code/modules/reagents/chemistry_reagents/drink.dm index 468243a0cc..3bd7336c32 100644 --- a/code/modules/reagents/chemistry_reagents/drink.dm +++ b/code/modules/reagents/chemistry_reagents/drink.dm @@ -85,13 +85,13 @@ /datum/reagent/drink/carrotjuice/on_mob_life(mob/living/M) . = ..() - if(!.) return + if(!.) + return M.ReduceEyeBlur(1) M.ReduceEyeBlind(1) - if(!data) data = 1 + if(!data) + data = 1 switch(data) - if(1 to 20) - //nothing if(21 to INFINITY) if(prob(data-10)) M.disabilities &= ~NEARSIGHTED diff --git a/code/modules/tgs/core/core.dm b/code/modules/tgs/core/core.dm index 41a0473394..b9a9f27a28 100644 --- a/code/modules/tgs/core/core.dm +++ b/code/modules/tgs/core/core.dm @@ -153,4 +153,9 @@ /world/TgsSecurityLevel() var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) if(api) - api.SecurityLevel() + return api.SecurityLevel() + +/world/TgsVisibility() + var/datum/tgs_api/api = TGS_READ_GLOBAL(tgs) + if(api) + return api.Visibility() diff --git a/code/modules/tgs/core/datum.dm b/code/modules/tgs/core/datum.dm index 68b0330fe8..93377079aa 100644 --- a/code/modules/tgs/core/datum.dm +++ b/code/modules/tgs/core/datum.dm @@ -57,3 +57,6 @@ TGS_PROTECT_DATUM(/datum/tgs_api) /datum/tgs_api/proc/SecurityLevel() return TGS_UNIMPLEMENTED + +/datum/tgs_api/proc/Visibility() + return TGS_UNIMPLEMENTED diff --git a/code/modules/tgs/v5/__interop_version.dm b/code/modules/tgs/v5/__interop_version.dm index 5d3d491a73..1b52b31d6a 100644 --- a/code/modules/tgs/v5/__interop_version.dm +++ b/code/modules/tgs/v5/__interop_version.dm @@ -1 +1 @@ -"5.6.1" +"5.6.2" diff --git a/code/modules/tgs/v5/_defines.dm b/code/modules/tgs/v5/_defines.dm index f973338daa..bdcd4e4dd5 100644 --- a/code/modules/tgs/v5/_defines.dm +++ b/code/modules/tgs/v5/_defines.dm @@ -48,6 +48,7 @@ #define DMAPI5_RUNTIME_INFORMATION_REVISION "revision" #define DMAPI5_RUNTIME_INFORMATION_TEST_MERGES "testMerges" #define DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL "securityLevel" +#define DMAPI5_RUNTIME_INFORMATION_VISIBILITY "visibility" #define DMAPI5_CHAT_UPDATE_CHANNELS "channels" diff --git a/code/modules/tgs/v5/api.dm b/code/modules/tgs/v5/api.dm index 34cc43f876..45250efc46 100644 --- a/code/modules/tgs/v5/api.dm +++ b/code/modules/tgs/v5/api.dm @@ -4,6 +4,7 @@ var/instance_name var/security_level + var/visibility var/reboot_mode = TGS_REBOOT_MODE_NORMAL @@ -54,6 +55,7 @@ version = new /datum/tgs_version(runtime_information[DMAPI5_RUNTIME_INFORMATION_SERVER_VERSION]) security_level = runtime_information[DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL] + visibility = runtime_information[DMAPI5_RUNTIME_INFORMATION_VISIBILITY] instance_name = runtime_information[DMAPI5_RUNTIME_INFORMATION_INSTANCE_NAME] var/list/revisionData = runtime_information[DMAPI5_RUNTIME_INFORMATION_REVISION] @@ -252,3 +254,7 @@ /datum/tgs_api/v5/SecurityLevel() RequireInitialBridgeResponse() return security_level + +/datum/tgs_api/v5/Visibility() + RequireInitialBridgeResponse() + return visibility diff --git a/code/modules/tgs/v5/undefs.dm b/code/modules/tgs/v5/undefs.dm index c679737dfc..f163adaaaf 100644 --- a/code/modules/tgs/v5/undefs.dm +++ b/code/modules/tgs/v5/undefs.dm @@ -48,6 +48,7 @@ #undef DMAPI5_RUNTIME_INFORMATION_REVISION #undef DMAPI5_RUNTIME_INFORMATION_TEST_MERGES #undef DMAPI5_RUNTIME_INFORMATION_SECURITY_LEVEL +#undef DMAPI5_RUNTIME_INFORMATION_VISIBILITY #undef DMAPI5_CHAT_UPDATE_CHANNELS diff --git a/colonialmarines.dme b/colonialmarines.dme index dfab961be2..f964364243 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -1,4 +1,4 @@ -s// DM Environment file for colonialmarines.dme. +// DM Environment file for colonialmarines.dme. // All manual changes should be made outside the BEGIN_ and END_ blocks. // New source code should be placed in .dm files: choose File/New --> Code File. // BEGIN_INTERNALS @@ -11,6 +11,7 @@ s// DM Environment file for colonialmarines.dme. #define DEBUG // END_PREFERENCES // BEGIN_INCLUDE +#include "code\__odlint.dm" #include "code\_byond_version_compat.dm" #include "code\_compile_options.dm" #include "code\_experiments.dm" @@ -943,6 +944,7 @@ s// DM Environment file for colonialmarines.dme. #include "code\game\machinery\vending\vendor_types\crew\sea.dm" #include "code\game\machinery\vending\vendor_types\crew\senior_officers.dm" #include "code\game\machinery\vending\vendor_types\crew\staff_officer.dm" +#include "code\game\machinery\vending\vendor_types\crew\staff_officer_armory.dm" #include "code\game\machinery\vending\vendor_types\crew\synthetic.dm" #include "code\game\machinery\vending\vendor_types\crew\vehicle_crew.dm" #include "code\game\machinery\vending\vendor_types\squad_prep\squad_engineer.dm" @@ -1756,6 +1758,7 @@ s// DM Environment file for colonialmarines.dme. #include "code\modules\law\laws\major_crime.dm" #include "code\modules\law\laws\minor_crime.dm" #include "code\modules\law\laws\optional.dm" +#include "code\modules\law\laws\precautionary_charge.dm" #include "code\modules\lighting\emissive_blocker.dm" #include "code\modules\lighting\lighting_area.dm" #include "code\modules\lighting\lighting_atom.dm" diff --git a/dependencies.sh b/dependencies.sh index 2889751d36..f88c2f9b0a 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -19,3 +19,5 @@ export SPACEMAN_DMM_VERSION=suite-1.7.2 # Python version for mapmerge and other tools export PYTHON_VERSION=3.7.9 + +export OPENDREAM_VERSION=0.2.0 diff --git a/html/changelogs/AutoChangeLog-pr-4657.yml b/html/changelogs/AutoChangeLog-pr-4657.yml deleted file mode 100644 index 4641f99bb6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4657.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CapCamIII" -delete-after: True -changes: - - balance: "Crawling now only takes 1 second to move and no longer has an overhead icon when doing it." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4693.yml b/html/changelogs/AutoChangeLog-pr-4693.yml deleted file mode 100644 index e13e912459..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4693.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Fixed Rangefinders/Designators preventing you from lazing if you looked up/down them without moving." - - bugfix: "Fixed Rangefinders/Designators forcing you to look up/down again if you had moved while using them." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4703.yml b/html/changelogs/AutoChangeLog-pr-4703.yml deleted file mode 100644 index c140f3ea46..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4703.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "CapCamIII" -delete-after: True -changes: - - spellcheck: "UPP Synth Survivor on the Trijent Dam nightmare is now called a Support Synthetic instead of a Combat Synthetic, as its not a combat synthetic" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4713.yml b/html/changelogs/AutoChangeLog-pr-4713.yml deleted file mode 100644 index 71a3a8cfd0..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4713.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Steelpoint" -delete-after: True -changes: - - rscadd: "UPP ERT's have a chance to be neutral to the USCM." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4721.yml b/html/changelogs/AutoChangeLog-pr-4721.yml deleted file mode 100644 index 5c78dc4499..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4721.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: "SpartanBobby" -delete-after: True -changes: - - maptweak: "Fixes incorrect DIR on fireshutters in memorial" - - maptweak: "Corrects lack of warning stripe tile under door in north brig maint" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4724.yml b/html/changelogs/AutoChangeLog-pr-4724.yml deleted file mode 100644 index 326c78aea2..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4724.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: "foxtrot1322" -delete-after: True -changes: - - rscadd: "Added splints to the survival pouch" - - rscadd: "Increased survival pouch storage space by 1" - - spellcheck: "Updates the survival pouch's description" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4725.yml b/html/changelogs/AutoChangeLog-pr-4725.yml deleted file mode 100644 index 4bd068d532..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4725.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "fira" -delete-after: True -changes: - - bugfix: "Xeno and Megaphone abovehead chat speech should now properly be centered horizontally." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4727.yml b/html/changelogs/AutoChangeLog-pr-4727.yml deleted file mode 100644 index e8bed292d8..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4727.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Birdtalon" -delete-after: True -changes: - - rscadd: "USCM Service Jacket to SEA Vendor" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4730.yml b/html/changelogs/AutoChangeLog-pr-4730.yml deleted file mode 100644 index b275429f33..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4730.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - bugfix: "Fixed imaginary friends not initializing correctly and throwing a runtime" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-4731.yml b/html/changelogs/AutoChangeLog-pr-4731.yml deleted file mode 100644 index 44d62ec78b..0000000000 --- a/html/changelogs/AutoChangeLog-pr-4731.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "Drathek" -delete-after: True -changes: - - ui: "Tweaked the position of some ghost alerts" \ No newline at end of file diff --git a/html/changelogs/archive/2023-10.yml b/html/changelogs/archive/2023-10.yml index dda0958c93..fb4ed664fd 100644 --- a/html/changelogs/archive/2023-10.yml +++ b/html/changelogs/archive/2023-10.yml @@ -286,3 +286,97 @@ VileBeggar: - rscadd: Dartboards are now functional and can be crafted with cardboard. - bugfix: Fixed an issue with some deconstructed signs losing their icon. +2023-10-21: + Birdtalon: + - rscadd: USCM Service Jacket to SEA Vendor + CapCamIII: + - balance: Crawling now only takes 1 second to move and no longer has an overhead + icon when doing it. + - balance: Timer on attempting to join ERT after death is now 30 seconds down from + 1 minute + - spellcheck: UPP Synth Survivor on the Trijent Dam nightmare is now called a Support + Synthetic instead of a Combat Synthetic, as its not a combat synthetic + Drathek: + - bugfix: Fixed imaginary friends not initializing correctly and throwing a runtime + - ui: Tweaked the position of some ghost alerts + SpartanBobby: + - maptweak: Fixes incorrect DIR on fireshutters in memorial + - maptweak: Corrects lack of warning stripe tile under door in north brig maint + Steelpoint: + - rscadd: UPP ERT's have a chance to be neutral to the USCM. + fira: + - bugfix: Xeno and Megaphone abovehead chat speech should now properly be centered + horizontally. + - bugfix: Fixed Rangefinders/Designators preventing you from lazing if you looked + up/down them without moving. + - bugfix: Fixed Rangefinders/Designators forcing you to look up/down again if you + had moved while using them. + foxtrot1322: + - rscadd: Added splints to the survival pouch + - rscadd: Increased survival pouch storage space by 1 + - spellcheck: Updates the survival pouch's description +2023-10-22: + Drathek: + - bugfix: Fix incend and cluster OBs not respecting ceiling OB protections. + - bugfix: Disabled code in icon2html that is causing bad icon operations + Morrow: + - server: the rustg mysql driver is now properly compatible with mariadb + Zonespace27: + - rscadd: Mentors can now unmark mhelps + fira: + - bugfix: Removed redundant double binding for F1 to AdminHelp from default keybinds. + This does not affect existing users or their settings. + - rscadd: Stamping papers now makes a noise. + - bugfix: Fixed incorrect Reqs vendors visuals on the Almayer. They now blend in + with the walls again. + - bugfix: Re-fixed Megaphone above-head-chat drifting to the left. + harryob: + - admin: no more href token errors when changing the game mode via game panel + - bugfix: mentorhelp response no longer gives a dead discord link + - admin: view-target-records now allows you to note people properly + kiVts: + - rscadd: Ghosts get notified when they are being revived by DFB property + - balance: DFB property healing threshold lowered, You can create DFB property higher + than one. + realforest2001: + - rscadd: Added Discretionary Arrest to JAS. + - rscadd: Added a new category to JAS, Precautionary Charges. Moves Insanity and + POW to this category. +2023-10-23: + QuickLode: + - balance: Nerfs synth surv pouch by removing 1 storage slot. + SpypigDev: + - rscadd: CIC Armory SO vendor + - balance: Moved most combat-themed gear from SO spawn vendors, to CIC Armory vendor + - balance: Made RTO pack a point-buy item in CIC Armory vendor for SOs + Steelpoint: + - balance: Revolver Heavy ammo no longer stuns targets it strikes, it will instead + knock them back and slow them down for a short time. + harryob: + - server: the server now respects /string/title for late joiners + stalkerino: + - balance: m39 is able to use vertigrip +2023-10-24: + Segrain: + - bugfix: Slicing food once again works as intended. +2023-10-25: + fira: + - bugfix: Fixed Ghosts and Queen Eye occasionally "eating" pounces in place of a + mob on the same turf. + - bugfix: Re-Re-Fixed Xeno Above Head Chat offsets, for real this time + - bugfix: Fixed people talking in radios all the time. Finally some quiet. + - bugfix: deadchat death messages should now display immediately rather than being + delayed a couple seconds. +2023-10-26: + 4hands44: + - rscadd: Added more attachments, and belts to the CO arsenal. + - rscadd: CO now has an Essentials Kit like other roles, containing his Designator, + and other useful tools. + - rscadd: Re-Adds Bridgecoat to some Officer Dress vendors. (Limited to CO(+) and + XO currently.) + - rscdel: Removed Laser Designator from CO spawn Preset. + - balance: CO can now vend welding Helmet visors. + - balance: Adds grenade packets to CO Vendor. + XDinka: + - rscadd: 'Added four new haircuts: gentle ponytail, edgar haircut, emo bun, taper + haircut.' diff --git a/icons/mob/humans/human_hair.dmi b/icons/mob/humans/human_hair.dmi index ca4a20bcaf..9634a2543a 100644 Binary files a/icons/mob/humans/human_hair.dmi and b/icons/mob/humans/human_hair.dmi differ diff --git a/interface/interface.dm b/interface/interface.dm index 538bf6ed00..2ea40d924d 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -43,7 +43,7 @@ if(tgui_alert(src, "This will open the discord in your browser. Are you sure?", "Confirm", list("Yes", "No")) != "Yes") return - src << link("https://discord.gg/pve-cmss13") + src << link("[CONFIG_GET(string/discordurl)]") return /client/verb/github() diff --git a/interface/skin.dmf b/interface/skin.dmf index b3a762081a..dfd279983e 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -164,7 +164,6 @@ window "mainwindow" anchor2 = -1,-1 is-default = true saved-params = "pos;size;is-minimized;is-maximized" - title = "CM-SS13 - USS Almayer" is-maximized = true statusbar = false icon = 'icons\\taskbar\\gml_distress.png' diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index c1cd06182d..aef7fc155d 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -529,19 +529,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"abQ" = ( -/obj/structure/surface/rack, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/clothing/suit/storage/marine/light/vest, -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_y = 28 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "abR" = ( /obj/item/tank/phoron, /turf/open/floor/almayer{ @@ -1574,20 +1561,6 @@ icon_state = "plating" }, /area/almayer/shipboard/starboard_missiles) -"afb" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/phone_base{ - dir = 4; - name = "Starboard Railgun Control Telephone"; - phone_category = "Command"; - phone_id = "Starboard Railgun Control"; - pixel_x = -26 - }, -/obj/item/device/binoculars, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/shipboard/starboard_missiles) "afc" = ( /obj/structure/reagent_dispensers/water_cooler/stacks{ density = 0; @@ -5557,23 +5530,6 @@ icon_state = "dark_sterile" }, /area/almayer/living/pilotbunks) -"asi" = ( -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 4 - }, -/obj/structure/phone_base{ - dir = 8; - name = "OT Telephone"; - phone_category = "Almayer"; - phone_id = "Ordnance Tech"; - pixel_x = 14 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "orange" - }, -/area/almayer/engineering/engineering_workshop/hangar) "asj" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -6963,43 +6919,6 @@ icon_state = "ai_floors" }, /area/almayer/command/airoom) -"avL" = ( -/obj/structure/machinery/door_control{ - id = "ARES StairsUpper"; - name = "ARES Core Access"; - pixel_x = -10; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/obj/structure/machinery/door_control{ - id = "ARES StairsLock"; - name = "ARES Exterior Lockdown"; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/obj/structure/surface/table/reinforced/almayer_B{ - climbable = 0; - indestructible = 1; - unacidable = 1; - unslashable = 1 - }, -/obj/structure/phone_base/rotary{ - name = "AI Reception Telephone"; - phone_category = "ARES"; - phone_color = "blue"; - phone_id = "AI Reception" - }, -/obj/structure/machinery/door_control{ - id = "ARES Emergency"; - name = "ARES Emergency Lockdown"; - pixel_x = 10; - pixel_y = -24; - req_one_access_txt = "91;92" - }, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" - }, -/area/almayer/command/airoom) "avM" = ( /obj/structure/machinery/computer/cameras/almayer/ares{ dir = 8; @@ -10368,28 +10287,6 @@ /obj/structure/flora/bush/ausbushes/var3/fullgrass, /turf/open/floor/grass, /area/almayer/living/starboard_garden) -"aIC" = ( -/obj/structure/surface/table/almayer, -/obj/effect/decal/warning_stripes{ - icon_state = "S" - }, -/obj/structure/phone_base/rotary{ - name = "Researcher Office Telephone"; - phone_category = "Almayer"; - phone_id = "Research"; - pixel_y = 6 - }, -/obj/item/reagent_container/glass/beaker{ - pixel_x = 6; - pixel_y = -1 - }, -/obj/item/reagent_container/glass/beaker/large{ - pixel_x = -6 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green_side" - }, -/area/almayer/medical/medical_science) "aID" = ( /obj/structure/machinery/light{ dir = 1 @@ -12000,19 +11897,6 @@ "aQv" = ( /turf/closed/wall/almayer, /area/almayer/hallways/starboard_umbilical) -"aQy" = ( -/obj/structure/phone_base{ - dir = 8; - name = "RO Office Telephone"; - phone_category = "Offices"; - phone_id = "RO Office"; - pixel_x = 16 - }, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "green" - }, -/area/almayer/squads/req) "aQz" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -12126,6 +12010,16 @@ icon_state = "test_floor4" }, /area/almayer/medical/medical_science) +"aRf" = ( +/obj/structure/surface/table/woodentable/fancy, +/obj/structure/phone_base/rotary{ + name = "Captain's Office"; + phone_category = "Offices"; + phone_id = "Captain's Office"; + pixel_y = 6 + }, +/turf/open/floor/carpet, +/area/almayer/living/commandbunks) "aRi" = ( /obj/structure/bed/chair/office/dark{ dir = 1 @@ -16332,6 +16226,18 @@ icon_state = "green" }, /area/almayer/living/offices) +"bmZ" = ( +/obj/structure/phone_base/no_dnd{ + name = "Requisition Telephone"; + phone_category = "Almayer"; + phone_id = "Requisition"; + pixel_y = 30 + }, +/turf/open/floor/almayer{ + dir = 5; + icon_state = "plating" + }, +/area/almayer/squads/req) "bnc" = ( /obj/structure/machinery/power/fusion_engine{ name = "\improper S-52 fusion reactor 9" @@ -17514,13 +17420,6 @@ icon_state = "redfull" }, /area/almayer/squads/alpha) -"bti" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "silver" - }, -/area/almayer/command/computerlab) "btk" = ( /obj/structure/sign/poster/pinup{ pixel_x = -30 @@ -19154,32 +19053,6 @@ }, /turf/open/floor/grass, /area/almayer/living/starboard_garden) -"bBD" = ( -/obj/structure/machinery/firealarm{ - pixel_y = 28 - }, -/obj/structure/sign/safety/maint{ - pixel_x = -17 - }, -/obj/structure/surface/table/almayer, -/obj/structure/phone_base/rotary{ - name = "Telephone"; - phone_category = "Almayer"; - phone_id = "Auxiliary Support Office Second Line"; - pixel_x = -5; - pixel_y = 3 - }, -/obj/structure/phone_base/rotary{ - name = "Telephone"; - phone_category = "Almayer"; - phone_id = "Auxiliary Support Office"; - pixel_x = 8; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/auxiliary_officer_office) "bBN" = ( /obj/structure/machinery/light, /turf/open/floor/plating/plating_catwalk, @@ -22745,14 +22618,6 @@ }, /turf/closed/wall/almayer, /area/almayer/squads/req) -"bQS" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo{ - icon_state = "req_ammo_wall" - }, -/turf/open/floor/almayer{ - icon_state = "green" - }, -/area/almayer/squads/req) "bQU" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 8 @@ -24362,15 +24227,6 @@ /obj/structure/machinery/light, /turf/open/floor/almayer, /area/almayer/hallways/vehiclehangar) -"bYa" = ( -/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo{ - icon_state = "req_guns_wall" - }, -/turf/open/floor/almayer{ - dir = 10; - icon_state = "green" - }, -/area/almayer/squads/req) "bYc" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -25691,30 +25547,6 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/hallways/hangar) -"cdE" = ( -/obj/structure/surface/table/almayer, -/obj/item/reagent_container/food/drinks/cans/waterbottle{ - pixel_x = 9; - pixel_y = 3 - }, -/obj/item/prop/helmetgarb/flair_io{ - pixel_x = -10; - pixel_y = 6 - }, -/obj/item/prop/magazine/boots/n160{ - pixel_x = -6; - pixel_y = -5 - }, -/obj/structure/phone_base/rotary{ - name = "Flight Deck Telephone"; - phone_category = "Almayer"; - phone_id = "Flight Deck"; - pixel_y = 8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/hallways/repair_bay) "cdF" = ( /obj/structure/bed/chair/office/dark{ dir = 8 @@ -28243,6 +28075,12 @@ }, /turf/open/floor/wood/ship, /area/almayer/living/commandbunks) +"cCj" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_ammo/cargo/blend, +/turf/open/floor/almayer{ + icon_state = "green" + }, +/area/almayer/squads/req) "cCD" = ( /obj/structure/platform{ dir = 8; @@ -28313,6 +28151,15 @@ icon_state = "test_floor4" }, /area/almayer/living/grunt_rnr) +"cDU" = ( +/obj/structure/phone_base/rotary{ + name = "CL Office Telephone"; + phone_category = "Almayer"; + phone_id = "CL Office" + }, +/obj/structure/surface/table/woodentable/fancy, +/turf/open/floor/carpet, +/area/almayer/command/corporateliason) "cDW" = ( /obj/structure/largecrate/supply/supplies/flares, /turf/open/floor/almayer{ @@ -29285,6 +29132,27 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_s) +"cYn" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/emails{ + pixel_x = 2; + pixel_y = 5 + }, +/obj/structure/sign/safety/terminal{ + pixel_x = 7; + pixel_y = 29 + }, +/obj/structure/phone_base/rotary{ + name = "Reporter Telephone"; + phone_category = "Almayer"; + phone_id = "Reporter"; + pixel_x = -17; + pixel_y = 2 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/combat_correspondent) "cYu" = ( /obj/structure/pipes/vents/pump{ dir = 1 @@ -30012,14 +29880,6 @@ icon_state = "plate" }, /area/almayer/hull/upper_hull/u_a_p) -"dnm" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/turf/open/floor/almayer{ - icon_state = "silverfull" - }, -/area/almayer/command/computerlab) "dnC" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 6 @@ -30119,24 +29979,6 @@ icon_state = "cargo" }, /area/almayer/squads/req) -"dpn" = ( -/obj/structure/closet/secure_closet/freezer/fridge/full, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/item/reagent_container/food/condiment/enzyme, -/obj/item/reagent_container/food/condiment/enzyme, -/obj/structure/phone_base{ - name = "Kitchen Telephone"; - phone_category = "Almayer"; - phone_id = "Kitchen"; - pixel_x = -8; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/living/grunt_rnr) "dpo" = ( /obj/structure/machinery/light{ dir = 1 @@ -30863,6 +30705,16 @@ icon_state = "orange" }, /area/almayer/engineering/engine_core) +"dDe" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silver" + }, +/area/almayer/command/computerlab) "dDp" = ( /obj/effect/decal/warning_stripes{ icon_state = "W"; @@ -34008,16 +33860,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) -"eSJ" = ( -/obj/structure/surface/table/woodentable/fancy, -/obj/structure/phone_base/rotary{ - name = "Captain's Office"; - phone_category = "Offices"; - phone_id = "Captain's Office"; - pixel_y = 6 - }, -/turf/open/floor/carpet, -/area/almayer/living/commandbunks) "eSU" = ( /obj/structure/prop/almayer/name_stencil{ icon_state = "almayer1" @@ -34623,17 +34465,6 @@ icon_state = "plating" }, /area/almayer/command/airoom) -"ffV" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/crew/alt, -/obj/structure/phone_base/rotary/no_dnd{ - name = "Brig Cells Telephone"; - phone_category = "Almayer"; - phone_id = "Brig Cells"; - pixel_x = 15 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/processing) "fgh" = ( /obj/structure/machinery/light/small{ dir = 8 @@ -34763,6 +34594,27 @@ icon_state = "orange" }, /area/almayer/engineering/engine_core) +"fjM" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = -17 + }, +/obj/structure/phone_base/rotary/no_dnd{ + name = "Delta Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Delta Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) "fjO" = ( /obj/item/tool/wet_sign, /obj/effect/decal/cleanable/blood, @@ -34931,6 +34783,17 @@ icon_state = "cargo" }, /area/almayer/hull/upper_hull/u_a_s) +"fox" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/crew/alt, +/obj/structure/phone_base/rotary/no_dnd{ + name = "Brig Cells Telephone"; + phone_category = "Almayer"; + phone_id = "Brig Cells"; + pixel_x = 15 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/processing) "foL" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -35368,6 +35231,32 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/port_point_defense) +"fwb" = ( +/obj/structure/machinery/firealarm{ + pixel_y = 28 + }, +/obj/structure/sign/safety/maint{ + pixel_x = -17 + }, +/obj/structure/surface/table/almayer, +/obj/structure/phone_base/rotary{ + name = "Telephone"; + phone_category = "Almayer"; + phone_id = "Auxiliary Support Office Second Line"; + pixel_x = -5; + pixel_y = 3 + }, +/obj/structure/phone_base/rotary{ + name = "Telephone"; + phone_category = "Almayer"; + phone_id = "Auxiliary Support Office"; + pixel_x = 8; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/auxiliary_officer_office) "fwD" = ( /obj/item/reagent_container/food/snacks/grown/poppy{ pixel_x = 4; @@ -35581,6 +35470,24 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/command/lifeboat) +"fCq" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/computer/cameras/almayer_network{ + dir = 1 + }, +/obj/structure/machinery/light{ + unacidable = 1; + unslashable = 1 + }, +/obj/structure/phone_base{ + dir = 1; + name = "Brig Warden's Office Telephone"; + phone_category = "Offices"; + phone_id = "Brig Warden's Office"; + pixel_x = -16 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/main_office) "fCL" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -36284,6 +36191,30 @@ /obj/effect/step_trigger/clone_cleaner, /turf/closed/wall/almayer, /area/almayer/hull/upper_hull/u_m_p) +"fRb" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = -17 + }, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/structure/phone_base/rotary/no_dnd{ + name = "Charlie Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Charlie Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = 7 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) "fRr" = ( /obj/structure/machinery/light{ dir = 1 @@ -36306,6 +36237,14 @@ }, /turf/open/floor/almayer, /area/almayer/hull/upper_hull/u_f_s) +"fSc" = ( +/obj/structure/machinery/light{ + dir = 8 + }, +/turf/open/floor/almayer{ + icon_state = "silverfull" + }, +/area/almayer/command/computerlab) "fSl" = ( /obj/structure/machinery/line_nexter{ id = "line2"; @@ -36486,6 +36425,47 @@ icon_state = "plate" }, /area/almayer/command/combat_correspondent) +"fXF" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/door_control{ + id = "CIC Lockdown"; + name = "CIC Lockdown"; + pixel_x = -7; + pixel_y = 9; + req_access_txt = "1" + }, +/obj/structure/machinery/door_control{ + id = "Hangar Lockdown"; + name = "Hangar Lockdown"; + pixel_x = -7; + pixel_y = 2; + req_access_txt = "1" + }, +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 4; + icon_state = "exposed01-supply" + }, +/obj/structure/machinery/door_control{ + id = "bot_armory"; + name = "Armory Lockdown"; + pixel_x = -7; + pixel_y = -5; + req_one_access_txt = "1;4" + }, +/obj/structure/phone_base/rotary/no_dnd{ + name = "Combat Information Center Telephone"; + phone_category = "Command"; + phone_id = "Combat Information Center"; + pixel_x = 5; + pixel_y = 4 + }, +/obj/structure/machinery/door/window/westright{ + dir = 4 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) "fXN" = ( /obj/effect/landmark/start/marine/delta, /obj/effect/landmark/late_join/delta, @@ -36621,24 +36601,6 @@ icon_state = "silver" }, /area/almayer/command/cichallway) -"gba" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/faxmachine/uscm/command{ - department = "AI Core"; - pixel_y = 8 - }, -/obj/structure/phone_base/rotary{ - name = "AI Core Telephone"; - phone_category = "ARES"; - phone_color = "blue"; - phone_id = "AI Core"; - pixel_x = 8; - pixel_y = -8 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "ai_floors" - }, -/area/almayer/command/airoom) "gbg" = ( /obj/structure/sign/safety/terminal{ pixel_x = 14; @@ -37477,19 +37439,6 @@ icon_state = "silvercorner" }, /area/almayer/command/cichallway) -"gtA" = ( -/obj/structure/surface/table/reinforced/prison, -/obj/structure/phone_base{ - dir = 8; - name = "Medical Telephone"; - phone_category = "Almayer"; - phone_id = "Medical Lower"; - pixel_x = 16 - }, -/turf/open/floor/almayer{ - icon_state = "sterile_green" - }, -/area/almayer/medical/lockerroom) "guc" = ( /obj/structure/pipes/vents/scrubber{ dir = 1 @@ -38240,6 +38189,18 @@ icon_state = "green" }, /area/almayer/living/offices) +"gJW" = ( +/obj/structure/surface/table/almayer, +/obj/effect/landmark/map_item, +/obj/item/folder/red, +/obj/structure/phone_base/rotary{ + name = "Brig CMP's Office Telephone"; + phone_category = "Offices"; + phone_id = "Brig CMP's Office"; + pixel_x = 15 + }, +/turf/open/floor/almayer, +/area/almayer/shipboard/brig/chief_mp_office) "gKB" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/structure/machinery/firealarm{ @@ -38380,6 +38341,11 @@ icon_state = "red" }, /area/almayer/shipboard/brig/perma) +"gMr" = ( +/turf/open/floor/almayer{ + icon_state = "silverfull" + }, +/area/almayer/command/securestorage) "gMx" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating/plating_catwalk, @@ -39344,13 +39310,6 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/engine_core) -"hgB" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silvercorner" - }, -/area/almayer/command/computerlab) "hgF" = ( /obj/effect/decal/warning_stripes{ icon_state = "E"; @@ -39936,31 +39895,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/almayer, /area/almayer/hallways/port_hallway) -"hvv" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/manifold/hidden/supply{ - dir = 8 - }, -/obj/item/clipboard{ - base_pixel_x = 20; - pixel_x = 5 - }, -/obj/item/paper{ - pixel_x = 5 - }, -/obj/item/tool/pen{ - pixel_x = 5 - }, -/obj/structure/surface/table/reinforced/black, -/obj/structure/phone_base/rotary{ - name = "CIC Reception Telephone"; - phone_category = "Command"; - phone_id = "CIC Reception"; - pixel_x = -7; - pixel_y = 4 - }, -/turf/open/floor/almayer, -/area/almayer/command/cic) "hvw" = ( /obj/structure/pipes/standard/simple/hidden/supply/no_boom, /turf/open/floor/plating, @@ -41306,18 +41240,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) -"hZU" = ( -/obj/structure/phone_base{ - name = "Brig Offices Telephone"; - phone_category = "Almayer"; - phone_id = "Brig Main Offices"; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "red" - }, -/area/almayer/shipboard/brig/main_office) "iag" = ( /obj/structure/surface/table/almayer, /obj/item/tool/hand_labeler, @@ -41368,6 +41290,11 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/engineering/upper_engineering/port) +"iax" = ( +/turf/open/floor/almayer{ + icon_state = "silverfull" + }, +/area/almayer/command/computerlab) "iaF" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 4 @@ -41753,25 +41680,6 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) -"ijQ" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/door_control{ - id = "SEA Office Shutters"; - name = "SEA Office Shutters"; - pixel_y = 12 - }, -/obj/item/ashtray/plastic{ - pixel_x = 8; - pixel_y = -4 - }, -/obj/structure/phone_base/rotary{ - name = "Senior Enlisted Advisor Office Telephone"; - phone_category = "Almayer"; - phone_id = "Senior Enlisted Advisor's Office"; - pixel_x = -3 - }, -/turf/open/floor/wood/ship, -/area/almayer/shipboard/sea_office) "ijU" = ( /obj/item/tool/wet_sign, /turf/open/floor/plating/plating_catwalk, @@ -42922,6 +42830,19 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"iKp" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/phone_base{ + dir = 4; + name = "Port Railgun Control Telephone"; + phone_category = "Command"; + phone_id = "Port Railgun Control"; + pixel_x = -26 + }, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/shipboard/port_missiles) "iKw" = ( /obj/structure/machinery/cryopod/right, /obj/structure/machinery/light{ @@ -42986,10 +42907,6 @@ }, /turf/open/floor/almayer, /area/almayer/lifeboat_pumps/south1) -"iLf" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer, -/area/almayer/command/computerlab) "iLh" = ( /obj/structure/bed/chair/comfy/bravo{ dir = 4 @@ -43984,18 +43901,6 @@ icon_state = "orange" }, /area/almayer/engineering/engine_core) -"jfY" = ( -/obj/structure/surface/table/almayer, -/obj/effect/landmark/map_item, -/obj/item/folder/red, -/obj/structure/phone_base/rotary{ - name = "Brig CMP's Office Telephone"; - phone_category = "Offices"; - phone_id = "Brig CMP's Office"; - pixel_x = 15 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/chief_mp_office) "jfZ" = ( /obj/structure/target{ name = "punching bag" @@ -44991,6 +44896,23 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_lobby) +"jDi" = ( +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 4 + }, +/obj/structure/phone_base{ + dir = 8; + name = "OT Telephone"; + phone_category = "Almayer"; + phone_id = "Ordnance Tech"; + pixel_x = 14 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "orange" + }, +/area/almayer/engineering/engineering_workshop/hangar) "jDV" = ( /obj/effect/projector{ name = "Almayer_AresDown"; @@ -45981,24 +45903,6 @@ icon_state = "emerald" }, /area/almayer/squads/charlie) -"jZL" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/cameras/almayer_network{ - dir = 1 - }, -/obj/structure/machinery/light{ - unacidable = 1; - unslashable = 1 - }, -/obj/structure/phone_base{ - dir = 1; - name = "Brig Warden's Office Telephone"; - phone_category = "Offices"; - phone_id = "Brig Warden's Office"; - pixel_x = -16 - }, -/turf/open/floor/almayer, -/area/almayer/shipboard/brig/main_office) "jZO" = ( /obj/structure/largecrate/random/barrel/blue, /turf/open/floor/almayer{ @@ -46233,6 +46137,24 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"keM" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/faxmachine/uscm/command{ + department = "AI Core"; + pixel_y = 8 + }, +/obj/structure/phone_base/rotary{ + name = "AI Core Telephone"; + phone_category = "ARES"; + phone_color = "blue"; + phone_id = "AI Core"; + pixel_x = 8; + pixel_y = -8 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "keR" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer, @@ -46295,25 +46217,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/processing) -"kgp" = ( -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/phone_base{ - name = "CMO Office Telephone"; - phone_category = "Offices"; - phone_id = "CMO Office"; - pixel_y = 29 - }, -/obj/structure/sign/safety/commline_connection{ - pixel_x = 23; - pixel_y = 32 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "sterile_green_side" - }, -/area/almayer/medical/upper_medical) "kgr" = ( /obj/structure/machinery/camera/autoname/almayer{ name = "ship-grade camera" @@ -47259,6 +47162,17 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/medical_science) +"kBt" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_y = 28 + }, +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "kBy" = ( /obj/structure/machinery/ares/processor, /turf/open/floor/almayer/no_build{ @@ -48044,6 +47958,24 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_m_p) +"kRH" = ( +/obj/structure/closet/secure_closet/freezer/fridge/full, +/obj/structure/machinery/light{ + dir = 1 + }, +/obj/item/reagent_container/food/condiment/enzyme, +/obj/item/reagent_container/food/condiment/enzyme, +/obj/structure/phone_base{ + name = "Kitchen Telephone"; + phone_category = "Almayer"; + phone_id = "Kitchen"; + pixel_x = -8; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/living/grunt_rnr) "kRP" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/item/prop/magazine/dirty/torn, @@ -48100,18 +48032,6 @@ icon_state = "red" }, /area/almayer/hallways/aft_hallway) -"kSU" = ( -/obj/structure/phone_base/no_dnd{ - name = "Requisition Telephone"; - phone_category = "Almayer"; - phone_id = "Requisition"; - pixel_y = 30 - }, -/turf/open/floor/almayer{ - dir = 5; - icon_state = "plating" - }, -/area/almayer/squads/req) "kTc" = ( /obj/structure/closet/secure_closet/guncabinet/red, /obj/item/ammo_magazine/shotgun, @@ -48419,6 +48339,31 @@ icon_state = "plate" }, /area/almayer/living/offices) +"kZm" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/pipes/standard/manifold/hidden/supply{ + dir = 8 + }, +/obj/item/clipboard{ + base_pixel_x = 20; + pixel_x = 5 + }, +/obj/item/paper{ + pixel_x = 5 + }, +/obj/item/tool/pen{ + pixel_x = 5 + }, +/obj/structure/surface/table/reinforced/black, +/obj/structure/phone_base/rotary{ + name = "CIC Reception Telephone"; + phone_category = "Command"; + phone_id = "CIC Reception"; + pixel_x = -7; + pixel_y = 4 + }, +/turf/open/floor/almayer, +/area/almayer/command/cic) "kZA" = ( /turf/open/floor/almayer{ dir = 4; @@ -50669,27 +50614,6 @@ icon_state = "redfull" }, /area/almayer/living/briefing) -"lVX" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = 16 - }, -/obj/structure/phone_base/rotary/no_dnd{ - name = "Alpha Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Alpha Overwatch" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "lWh" = ( /obj/structure/machinery/pipedispenser/orderable, /turf/open/floor/almayer{ @@ -51938,6 +51862,15 @@ }, /turf/open/floor/plating/almayer, /area/almayer/shipboard/brig/armory) +"mAw" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/ares_console{ + pixel_x = 9 + }, +/turf/open/floor/almayer/no_build{ + icon_state = "plating" + }, +/area/almayer/command/airoom) "mAT" = ( /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 8; @@ -52175,6 +52108,25 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"mGP" = ( +/obj/structure/surface/table/almayer, +/obj/structure/machinery/door_control{ + id = "SEA Office Shutters"; + name = "SEA Office Shutters"; + pixel_y = 12 + }, +/obj/item/ashtray/plastic{ + pixel_x = 8; + pixel_y = -4 + }, +/obj/structure/phone_base/rotary{ + name = "Senior Enlisted Advisor Office Telephone"; + phone_category = "Almayer"; + phone_id = "Senior Enlisted Advisor's Office"; + pixel_x = -3 + }, +/turf/open/floor/wood/ship, +/area/almayer/shipboard/sea_office) "mHm" = ( /obj/structure/sign/safety/distribution_pipes{ pixel_y = -32 @@ -54502,15 +54454,6 @@ icon_state = "redfull" }, /area/almayer/hull/lower_hull/l_f_s) -"nDh" = ( -/obj/structure/phone_base/rotary{ - name = "CL Office Telephone"; - phone_category = "Almayer"; - phone_id = "CL Office" - }, -/obj/structure/surface/table/woodentable/fancy, -/turf/open/floor/carpet, -/area/almayer/command/corporateliason) "nDo" = ( /obj/structure/closet/l3closet/general, /obj/structure/window/reinforced{ @@ -55446,11 +55389,6 @@ }, /turf/open/floor/wood/ship, /area/almayer/shipboard/brig/cells) -"nYf" = ( -/turf/open/floor/almayer{ - icon_state = "silverfull" - }, -/area/almayer/command/securestorage) "nYh" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /turf/open/floor/almayer{ @@ -55504,6 +55442,19 @@ icon_state = "orange" }, /area/almayer/hull/upper_hull/u_a_s) +"nZY" = ( +/obj/structure/surface/table/reinforced/prison, +/obj/structure/phone_base{ + dir = 8; + name = "Medical Telephone"; + phone_category = "Almayer"; + phone_id = "Medical Lower"; + pixel_x = 16 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green" + }, +/area/almayer/medical/lockerroom) "oap" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -57007,6 +56958,15 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) +"oEG" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/light{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "silverfull" + }, +/area/almayer/command/securestorage) "oER" = ( /obj/structure/machinery/light{ dir = 8 @@ -58289,6 +58249,13 @@ }, /turf/open/floor/almayer, /area/almayer/engineering/engineering_workshop/hangar) +"pkl" = ( +/obj/structure/machinery/cm_vending/sorted/cargo_guns/cargo/blend, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "green" + }, +/area/almayer/squads/req) "pky" = ( /obj/structure/largecrate/random/secure, /turf/open/floor/almayer{ @@ -58695,31 +58662,6 @@ icon_state = "test_floor4" }, /area/almayer/squads/charlie) -"pvK" = ( -/obj/item/device/radio/intercom{ - freerange = 1; - name = "General Listening Channel"; - pixel_x = -6; - pixel_y = 28 - }, -/obj/structure/machinery/firealarm{ - pixel_x = 8; - pixel_y = 28 - }, -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/phone_base/rotary{ - name = "Intelligence Center Telephone"; - phone_category = "Almayer"; - phone_id = "Intelligence Center Telephone" - }, -/obj/structure/machinery/computer/cameras/almayer/vehicle{ - dir = 4; - pixel_x = -17 - }, -/turf/open/floor/almayer{ - icon_state = "silverfull" - }, -/area/almayer/command/securestorage) "pvP" = ( /turf/open/floor/almayer{ dir = 1; @@ -61379,15 +61321,6 @@ icon_state = "emeraldfull" }, /area/almayer/squads/charlie_delta_shared) -"qyZ" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/light{ - dir = 1 - }, -/turf/open/floor/almayer{ - icon_state = "silverfull" - }, -/area/almayer/command/securestorage) "qzc" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -61543,6 +61476,13 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_four) +"qDX" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 8; + icon_state = "silvercorner" + }, +/area/almayer/command/computerlab) "qEk" = ( /obj/effect/decal/warning_stripes{ icon_state = "S" @@ -61966,13 +61906,6 @@ dir = 4 }, /area/almayer/command/airoom) -"qLV" = ( -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - dir = 4; - icon_state = "silver" - }, -/area/almayer/command/computerlab) "qMe" = ( /obj/structure/machinery/portable_atmospherics/hydroponics, /obj/item/tool/minihoe{ @@ -62381,6 +62314,27 @@ icon_state = "plate" }, /area/almayer/squads/delta) +"qWC" = ( +/obj/structure/machinery/firealarm{ + pixel_x = 6; + pixel_y = 28 + }, +/obj/structure/bed/chair/office/dark{ + dir = 4; + layer = 3.25 + }, +/obj/structure/phone_base{ + name = "CE Office Telephone"; + phone_category = "Offices"; + phone_id = "CE Office"; + pixel_x = -8; + pixel_y = 29 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "orange" + }, +/area/almayer/engineering/ce_room) "qWI" = ( /obj/structure/machinery/status_display{ pixel_y = -30 @@ -63632,6 +63586,12 @@ icon_state = "plate" }, /area/almayer/hull/lower_hull/l_f_s) +"rxq" = ( +/obj/structure/machinery/cm_vending/clothing/staff_officer_armory, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/command/cic) "rxG" = ( /obj/structure/sign/safety/medical{ pixel_x = 8; @@ -63662,14 +63622,6 @@ icon_state = "mono" }, /area/almayer/lifeboat_pumps/north1) -"ryR" = ( -/obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep{ - req_access = list(1) - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/command/cic) "rzf" = ( /obj/effect/landmark/late_join/working_joe, /obj/effect/landmark/start/working_joe, @@ -63888,6 +63840,31 @@ icon_state = "red" }, /area/almayer/shipboard/brig/processing) +"rCN" = ( +/obj/item/device/radio/intercom{ + freerange = 1; + name = "General Listening Channel"; + pixel_x = -6; + pixel_y = 28 + }, +/obj/structure/machinery/firealarm{ + pixel_x = 8; + pixel_y = 28 + }, +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/phone_base/rotary{ + name = "Intelligence Center Telephone"; + phone_category = "Almayer"; + phone_id = "Intelligence Center Telephone" + }, +/obj/structure/machinery/computer/cameras/almayer/vehicle{ + dir = 4; + pixel_x = -17 + }, +/turf/open/floor/almayer{ + icon_state = "silverfull" + }, +/area/almayer/command/securestorage) "rCO" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/plating/plating_catwalk, @@ -64035,11 +64012,6 @@ icon_state = "plate" }, /area/almayer/squads/delta) -"rEL" = ( -/turf/open/floor/almayer{ - icon_state = "silverfull" - }, -/area/almayer/command/computerlab) "rEY" = ( /obj/structure/surface/table/almayer, /obj/item/toy/deck, @@ -64715,6 +64687,13 @@ icon_state = "test_floor4" }, /area/almayer/hull/lower_hull/l_f_s) +"rUY" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "silver" + }, +/area/almayer/command/computerlab) "rVo" = ( /obj/structure/machinery/light/small{ dir = 1 @@ -65432,27 +65411,6 @@ icon_state = "cargo" }, /area/almayer/engineering/upper_engineering/port) -"snI" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = -17 - }, -/obj/structure/phone_base/rotary/no_dnd{ - name = "Delta Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Delta Overwatch" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "snM" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -65706,6 +65664,20 @@ icon_state = "greencorner" }, /area/almayer/hallways/port_hallway) +"ssL" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/phone_base{ + dir = 4; + name = "Starboard Railgun Control Telephone"; + phone_category = "Command"; + phone_id = "Starboard Railgun Control"; + pixel_x = -26 + }, +/obj/item/device/binoculars, +/turf/open/floor/almayer{ + icon_state = "redfull" + }, +/area/almayer/shipboard/starboard_missiles) "ssU" = ( /obj/structure/machinery/constructable_frame, /turf/open/floor/almayer{ @@ -65782,6 +65754,13 @@ }, /turf/open/floor/almayer, /area/almayer/command/computerlab) +"suM" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer{ + dir = 10; + icon_state = "silver" + }, +/area/almayer/command/computerlab) "suT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -66130,6 +66109,28 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/upper_hull/u_f_p) +"sDB" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = 15 + }, +/obj/structure/machinery/light, +/obj/structure/phone_base/rotary/no_dnd{ + name = "Bravo Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Bravo Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) "sDC" = ( /obj/structure/sign/safety/analysis_lab{ pixel_y = 26 @@ -66679,6 +66680,25 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/lower_medical_medbay) +"sQx" = ( +/obj/structure/pipes/standard/simple/hidden/supply{ + dir = 10 + }, +/obj/structure/phone_base{ + name = "CMO Office Telephone"; + phone_category = "Offices"; + phone_id = "CMO Office"; + pixel_y = 29 + }, +/obj/structure/sign/safety/commline_connection{ + pixel_x = 23; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "sterile_green_side" + }, +/area/almayer/medical/upper_medical) "sQF" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -66781,30 +66801,6 @@ icon_state = "blue" }, /area/almayer/squads/delta) -"sSG" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = -17 - }, -/obj/structure/machinery/light{ - dir = 1 - }, -/obj/structure/phone_base/rotary/no_dnd{ - name = "Charlie Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Charlie Overwatch" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = 7 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "sSR" = ( /obj/effect/decal/warning_stripes{ icon_state = "SW-out"; @@ -67018,6 +67014,18 @@ icon_state = "plate" }, /area/almayer/hallways/hangar) +"sXD" = ( +/obj/structure/phone_base{ + name = "Brig Offices Telephone"; + phone_category = "Almayer"; + phone_id = "Brig Main Offices"; + pixel_y = 32 + }, +/turf/open/floor/almayer{ + dir = 1; + icon_state = "red" + }, +/area/almayer/shipboard/brig/main_office) "sXE" = ( /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Auxiliary Support Officer's Room" @@ -67578,27 +67586,6 @@ }, /turf/open/floor/almayer, /area/almayer/squads/alpha) -"tii" = ( -/obj/structure/machinery/firealarm{ - pixel_x = 6; - pixel_y = 28 - }, -/obj/structure/bed/chair/office/dark{ - dir = 4; - layer = 3.25 - }, -/obj/structure/phone_base{ - name = "CE Office Telephone"; - phone_category = "Offices"; - phone_id = "CE Office"; - pixel_x = -8; - pixel_y = 29 - }, -/turf/open/floor/almayer{ - dir = 1; - icon_state = "orange" - }, -/area/almayer/engineering/ce_room) "tim" = ( /obj/structure/machinery/light/small{ dir = 4 @@ -69478,6 +69465,27 @@ icon_state = "dark_sterile" }, /area/almayer/medical/lower_medical_lobby) +"tYr" = ( +/obj/structure/surface/table/reinforced/almayer_B, +/obj/structure/machinery/computer/overwatch/almayer{ + dir = 8; + layer = 3.2; + pixel_x = -17; + pixel_y = 16 + }, +/obj/structure/phone_base/rotary/no_dnd{ + name = "Alpha Overwatch Telephone"; + phone_category = "Command"; + phone_id = "Alpha Overwatch" + }, +/obj/structure/sign/safety/terminal{ + pixel_x = -17; + pixel_y = -8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/command/cic) "tYw" = ( /obj/effect/decal/medical_decals{ icon_state = "triagedecalbottomleft"; @@ -69687,28 +69695,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/lifeboat_pumps/south2) -"ucz" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/overwatch/almayer{ - dir = 8; - layer = 3.2; - pixel_x = -17; - pixel_y = 15 - }, -/obj/structure/machinery/light, -/obj/structure/phone_base/rotary/no_dnd{ - name = "Bravo Overwatch Telephone"; - phone_category = "Command"; - phone_id = "Bravo Overwatch" - }, -/obj/structure/sign/safety/terminal{ - pixel_x = -17; - pixel_y = -8 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "udi" = ( /turf/open/floor/almayer{ icon_state = "red" @@ -70150,6 +70136,19 @@ icon_state = "mono" }, /area/almayer/medical/upper_medical) +"umG" = ( +/obj/structure/phone_base{ + dir = 8; + name = "RO Office Telephone"; + phone_category = "Offices"; + phone_id = "RO Office"; + pixel_x = 16 + }, +/turf/open/floor/almayer{ + dir = 4; + icon_state = "green" + }, +/area/almayer/squads/req) "umR" = ( /obj/structure/machinery/power/apc/almayer/hardened{ cell_type = /obj/item/cell/hyper; @@ -70801,6 +70800,10 @@ "uys" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/squads/req) +"uyu" = ( +/obj/structure/surface/table/almayer, +/turf/open/floor/almayer, +/area/almayer/command/computerlab) "uyC" = ( /obj/structure/window/framed/almayer/hull, /turf/open/floor/plating, @@ -72653,6 +72656,43 @@ icon_state = "plating" }, /area/almayer/shipboard/port_missiles) +"vjm" = ( +/obj/structure/machinery/door_control{ + id = "ARES StairsUpper"; + name = "ARES Core Access"; + pixel_x = -10; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/obj/structure/machinery/door_control{ + id = "ARES StairsLock"; + name = "ARES Exterior Lockdown"; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/obj/structure/surface/table/reinforced/almayer_B{ + climbable = 0; + indestructible = 1; + unacidable = 1; + unslashable = 1 + }, +/obj/structure/phone_base/rotary{ + name = "AI Reception Telephone"; + phone_category = "ARES"; + phone_color = "blue"; + phone_id = "AI Reception" + }, +/obj/structure/machinery/door_control{ + id = "ARES Emergency"; + name = "ARES Emergency Lockdown"; + pixel_x = 10; + pixel_y = -24; + req_one_access_txt = "91;92" + }, +/turf/open/floor/almayer/no_build{ + icon_state = "ai_floors" + }, +/area/almayer/command/airoom) "vjx" = ( /obj/structure/largecrate/random/barrel/yellow, /turf/open/floor/almayer{ @@ -73802,15 +73842,6 @@ icon_state = "dark_sterile" }, /area/almayer/living/numbertwobunks) -"vHa" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/computer/ares_console{ - pixel_x = 9 - }, -/turf/open/floor/almayer/no_build{ - icon_state = "plating" - }, -/area/almayer/command/airoom) "vHh" = ( /obj/structure/pipes/standard/simple/hidden/supply, /obj/item/tool/warning_cone{ @@ -73845,47 +73876,6 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/starboard_hallway) -"vHt" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/machinery/door_control{ - id = "CIC Lockdown"; - name = "CIC Lockdown"; - pixel_x = -7; - pixel_y = 9; - req_access_txt = "1" - }, -/obj/structure/machinery/door_control{ - id = "Hangar Lockdown"; - name = "Hangar Lockdown"; - pixel_x = -7; - pixel_y = 2; - req_access_txt = "1" - }, -/obj/structure/pipes/standard/simple/hidden/supply{ - dir = 4; - icon_state = "exposed01-supply" - }, -/obj/structure/machinery/door_control{ - id = "bot_armory"; - name = "Armory Lockdown"; - pixel_x = -7; - pixel_y = -5; - req_one_access_txt = "1;4" - }, -/obj/structure/phone_base/rotary/no_dnd{ - name = "Combat Information Center Telephone"; - phone_category = "Command"; - phone_id = "Combat Information Center"; - pixel_x = 5; - pixel_y = 4 - }, -/obj/structure/machinery/door/window/westright{ - dir = 4 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/cic) "vHO" = ( /obj/effect/decal/warning_stripes{ icon_state = "N"; @@ -75717,27 +75707,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hallways/stern_hallway) -"wqr" = ( -/obj/structure/surface/table/almayer, -/obj/structure/machinery/computer/emails{ - pixel_x = 2; - pixel_y = 5 - }, -/obj/structure/sign/safety/terminal{ - pixel_x = 7; - pixel_y = 29 - }, -/obj/structure/phone_base/rotary{ - name = "Reporter Telephone"; - phone_category = "Almayer"; - phone_id = "Reporter"; - pixel_x = -17; - pixel_y = 2 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/command/combat_correspondent) "wqu" = ( /obj/structure/window/framed/almayer, /turf/open/floor/plating, @@ -77200,6 +77169,28 @@ "wVW" = ( /turf/closed/wall/almayer/reinforced, /area/almayer/command/cic) +"wVX" = ( +/obj/structure/surface/table/almayer, +/obj/effect/decal/warning_stripes{ + icon_state = "S" + }, +/obj/structure/phone_base/rotary{ + name = "Researcher Office Telephone"; + phone_category = "Almayer"; + phone_id = "Research"; + pixel_y = 6 + }, +/obj/item/reagent_container/glass/beaker{ + pixel_x = 6; + pixel_y = -1 + }, +/obj/item/reagent_container/glass/beaker/large{ + pixel_x = -6 + }, +/turf/open/floor/almayer{ + icon_state = "sterile_green_side" + }, +/area/almayer/medical/medical_science) "wVY" = ( /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 @@ -78743,6 +78734,30 @@ icon_state = "test_floor4" }, /area/almayer/engineering/upper_engineering/port) +"xBu" = ( +/obj/structure/surface/table/almayer, +/obj/item/reagent_container/food/drinks/cans/waterbottle{ + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/prop/helmetgarb/flair_io{ + pixel_x = -10; + pixel_y = 6 + }, +/obj/item/prop/magazine/boots/n160{ + pixel_x = -6; + pixel_y = -5 + }, +/obj/structure/phone_base/rotary{ + name = "Flight Deck Telephone"; + phone_category = "Almayer"; + phone_id = "Flight Deck"; + pixel_y = 8 + }, +/turf/open/floor/almayer{ + icon_state = "plate" + }, +/area/almayer/hallways/repair_bay) "xBQ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -79463,16 +79478,6 @@ icon_state = "emeraldcorner" }, /area/almayer/squads/charlie) -"xRk" = ( -/obj/structure/machinery/light{ - dir = 8 - }, -/obj/structure/surface/table/almayer, -/turf/open/floor/almayer{ - dir = 8; - icon_state = "silver" - }, -/area/almayer/command/computerlab) "xRw" = ( /turf/open/floor/almayer/uscm/directional{ dir = 1 @@ -80025,19 +80030,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/hull/lower_hull/l_a_s) -"ybZ" = ( -/obj/structure/surface/table/reinforced/almayer_B, -/obj/structure/phone_base{ - dir = 4; - name = "Port Railgun Control Telephone"; - phone_category = "Command"; - phone_id = "Port Railgun Control"; - pixel_x = -26 - }, -/turf/open/floor/almayer{ - icon_state = "redfull" - }, -/area/almayer/shipboard/port_missiles) "ycd" = ( /obj/structure/bed/chair{ dir = 8; @@ -88075,7 +88067,7 @@ aTg pdG vAG dOL -jfY +gJW hwS wly wIC @@ -90501,7 +90493,7 @@ vBm vBm vBm vBm -hZU +sXD mLJ fkn gaJ @@ -91526,13 +91518,13 @@ gaJ gaJ tRA lMc -ffV +fox cMl oeB rkL ldu eRL -jZL +fCq vBm qJZ ohJ @@ -93850,7 +93842,7 @@ dqd uNL hJp kcp -bBD +fwb bTS bTS lxo @@ -96374,7 +96366,7 @@ aaa aaa aad aeE -afb +ssL ayq cfE cfE @@ -96422,7 +96414,7 @@ btD rVN rVN vly -ybZ +iKp pun ajZ aaa @@ -99036,9 +99028,9 @@ wVW wVW wVW swH -ucz +sDB wVW -sSG +fRb sEM wVW wVW @@ -99237,13 +99229,13 @@ apo fHh wVW lZs -lVX +tYr sni ayz dAX aQg vpV -snI +fjM aGp wVW aDv @@ -100848,7 +100840,7 @@ agj eYC agc fNb -eSJ +aRf agc agc hvH @@ -100864,7 +100856,7 @@ wVW rOC soX azX -vHt +fXF aCb aDv aEC @@ -101263,7 +101255,7 @@ sBF amY vtT wVW -abQ +kBt atN cEl sOi @@ -101757,7 +101749,7 @@ nXP mNf hJp uNL -cdE +xBu xSI uZQ aoH @@ -102087,7 +102079,7 @@ alX aIf aED wVW -ryR +rxq jvX auR wVW @@ -102692,7 +102684,7 @@ aCj ayK aAd aAP -hvv +kZm ayu aCj bYY @@ -106453,7 +106445,7 @@ qyD omo blZ bqN -gtA +nZY bqN bwR gfW @@ -107682,7 +107674,7 @@ mWw apT apA arC -asi +jDi cSN asy atw @@ -109392,7 +109384,7 @@ ajl vtx ajl ajl -kgp +sQx fbB cyU bho @@ -111424,7 +111416,7 @@ lMv dVu eSo qmD -aIC +wVX lJv aCt kXw @@ -112355,7 +112347,7 @@ vzP bJt hjB bJt -dpn +kRH bDs gSk bDs @@ -112454,7 +112446,7 @@ bqy bYj eUR bsd -nDh +cDU bYj xne cNH @@ -118530,8 +118522,8 @@ avK aqU aCZ dgg -xRk -bti +dDe +suM aHq sDC ajt @@ -119338,7 +119330,7 @@ mLE tmK avK aug -avL +vjm aqU lyE rsO @@ -119940,18 +119932,18 @@ uLu anC aiC ioU -pvK +rCN qPE xqD -nYf -rEL -dnm -rEL -rEL +gMr +iax +fSc +iax +iax aHq cnE liJ -hgB +qDX cbn aHq uLu @@ -120143,7 +120135,7 @@ aSz anG aiC ioU -qyZ +oEG wTd cmK lFm @@ -120859,7 +120851,7 @@ rbY gwD bOK bPD -bYa +pkl bPD jOk bNB @@ -120964,7 +120956,7 @@ oeM eed oeM eed -iLf +uyu aRi aGN qrv @@ -121062,7 +121054,7 @@ rbY bEc bKA bCA -bQS +cCj bCA bKA bEc @@ -121167,7 +121159,7 @@ fXx kXf huO iLO -qLV +rUY xNv iLO bUa @@ -121465,7 +121457,7 @@ bdj bri bLX bdl -kSU +bmZ bNP bmD bNP @@ -123409,7 +123401,7 @@ sUF anG apd oIB -wqr +cYn hzb xUV oIB @@ -124912,7 +124904,7 @@ sou bAX bdl wIr -aQy +umG jAB iYt bMa @@ -125935,7 +125927,7 @@ qlz xYf skn bQX -ijQ +mGP cLl qlz tez @@ -128661,7 +128653,7 @@ bNM iEr owg eNi -tii +qWC eJX sAC wYY @@ -138463,7 +138455,7 @@ lmz daz cwS ffE -vHa +mAw wpw ffE ffE @@ -139690,7 +139682,7 @@ wyv pTt gAe rCi -gba +keM mUz our rna diff --git a/sound/effects/Heart Beat Short.ogg b/sound/effects/heart_beat_short.ogg similarity index 100% rename from sound/effects/Heart Beat Short.ogg rename to sound/effects/heart_beat_short.ogg diff --git a/tools/ci/download_od.sh b/tools/ci/download_od.sh new file mode 100644 index 0000000000..024f93f928 --- /dev/null +++ b/tools/ci/download_od.sh @@ -0,0 +1,11 @@ +#!/bin/bash +set -eo pipefail + +if [ -z "${OPENDREAM_VERSION+x}" ]; then + source dependencies.sh +fi + +git clone https://github.com/OpenDreamProject/OpenDream.git ~/OpenDream +cd ~/OpenDream +git checkout tags/v${OPENDREAM_VERSION} +git submodule update --init --recursive diff --git a/tools/ci/run_od.sh b/tools/ci/run_od.sh new file mode 100644 index 0000000000..3eeac59073 --- /dev/null +++ b/tools/ci/run_od.sh @@ -0,0 +1,4 @@ +#!/bin/bash +set -eo pipefail + +dotnet ~/OpenDream/DMCompiler/bin/Release/net7.0/DMCompiler.dll --suppress-unimplemented colonialmarines.dme diff --git a/tools/ci/setup_od.sh b/tools/ci/setup_od.sh new file mode 100644 index 0000000000..6d2ec17068 --- /dev/null +++ b/tools/ci/setup_od.sh @@ -0,0 +1,7 @@ +#!/bin/bash +set -eo pipefail + +cd ~/OpenDream + +dotnet restore +dotnet build -c Release diff --git a/tools/ci/validate_dme.py b/tools/ci/validate_dme.py index 33066f72e7..5566648042 100644 --- a/tools/ci/validate_dme.py +++ b/tools/ci/validate_dme.py @@ -17,6 +17,9 @@ # Included by BSQL/includes.dm r'code/__HELPERS/BSQL/**/*.dm', + + # Included as part of OD lints + r'code/__pragmas.dm' ] lines = []
Extras
Emergency Response TeamEmergency Response TeamSurvivorSurvivorAgentAgent