diff --git a/README.md b/README.md index b364589d7ce1..80f166648aa1 100644 --- a/README.md +++ b/README.md @@ -64,10 +64,10 @@ This guide will get you set up with a Visual Studio Code development environment - ## [Contributing Rules](.github/CONTRIBUTING.md) This is our canonical, maintainer-maintained contributing guide, which contains information on our maintainer team structure and pull request rules. -- ## [Code Standards](github/guides/STANDARDS.md) +- ## [Code Standards](.github/guides/STANDARDS.md) Our standards documents details how to structure your code to comply with CM-SS13 code standards, and provides some information on DreamMaker quirks. -- ## [Code Style](github/guides/STYLES.md) +- ## [Code Style](.github/guides/STYLES.md) The styles document tells you how to style your code to match the rest of the code in our codebase. - ## [tgui README](tgui/README.md) diff --git a/code/__DEFINES/access.dm b/code/__DEFINES/access.dm index be96a2e32b85..71b2b6f4b6ac 100644 --- a/code/__DEFINES/access.dm +++ b/code/__DEFINES/access.dm @@ -88,7 +88,7 @@ most of them are tied into map-placed objects. This should be reworked in the fu #define ACCESS_WY_ARMORY 212 ///Secret research or other projects with highly restricted access #define ACCESS_WY_SECRETS 213 - +#define ACCESS_WY_DATABASE 214 #define ACCESS_WY_LEADERSHIP 215 ///Senior leadership, the highest ranks #define ACCESS_WY_SENIOR_LEAD 216 diff --git a/code/__DEFINES/job.dm b/code/__DEFINES/job.dm index f869357efd1b..5b295e68069f 100644 --- a/code/__DEFINES/job.dm +++ b/code/__DEFINES/job.dm @@ -119,6 +119,7 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) #define JOB_MARINE "USCM Marine" //generic marine #define JOB_COLONEL "USCM Colonel" +#define JOB_USCM_OBSV "USCM Observer" #define JOB_GENERAL "USCM General" #define JOB_ACMC "Assistant Commandant of the Marine Corps" #define JOB_CMC "Commandant of the Marine Corps" @@ -171,25 +172,25 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) //------------------------------------ //-------- PMC --------// -#define JOB_PMC_STANDARD "Weyland-Yutani PMC (Standard)" +#define JOB_PMC_STANDARD "PMC Operator" #define JOB_PMC_ENGINEER "PMC Corporate Technician" #define JOB_PMC_MEDIC "PMC Corporate Medic" #define JOB_PMC_DOCTOR "PMC Trauma Surgeon" #define JOB_PMC_INVESTIGATOR "PMC Medical Investigator" -#define JOB_PMC_DETAINER "Weyland-Yutani PMC (Detainer)" -#define JOB_PMC_ELITE "PMC Elite" +#define JOB_PMC_DETAINER "PMC Security Enforcer" #define JOB_PMC_GUNNER "PMC Support Weapons Specialist" //Renamed from Specialist to Support Specialist as it only has SG skills. #define JOB_PMC_SNIPER "PMC Weapons Specialist" //Renamed from Sharpshooter to specialist as it uses specialist skills. -#define JOB_PMC_CREWMAN "Weyland-Yutani PMC (Crewman)" -#define JOB_PMC_NINJA "PMC Ninja" +#define JOB_PMC_CREWMAN "PMC Vehicle Crewman" #define JOB_PMC_XENO_HANDLER "PMC Xeno Handler" -#define JOB_PMC_COMMANDO "PMC Commando" #define JOB_PMC_LEADER "PMC Leader" #define JOB_PMC_LEAD_INVEST "PMC Lead Investigator" #define JOB_PMC_DIRECTOR "PMC Site Director" #define JOB_PMC_SYNTH "PMC Support Synthetic" -#define JOB_PMC_GRUNT_LIST list(JOB_PMC_STANDARD, JOB_PMC_ENGINEER, JOB_PMC_MEDIC, JOB_PMC_INVESTIGATOR, JOB_PMC_DETAINER, JOB_PMC_ELITE, JOB_PMC_GUNNER, JOB_PMC_SNIPER, JOB_PMC_CREWMAN, JOB_PMC_NINJA, JOB_PMC_XENO_HANDLER, JOB_PMC_COMMANDO, JOB_PMC_LEADER, JOB_PMC_LEAD_INVEST) +#define ROLES_WY_PMC list(JOB_PMC_LEADER, JOB_PMC_SNIPER, JOB_PMC_GUNNER, JOB_PMC_ENGINEER, JOB_PMC_MEDIC, JOB_PMC_STANDARD) +#define ROLES_WY_PMC_AUX list(JOB_PMC_SYNTH, JOB_PMC_CREWMAN, JOB_PMC_XENO_HANDLER, JOB_PMC_DOCTOR) +#define ROLES_WY_PMC_INSPEC list(JOB_PMC_LEAD_INVEST, JOB_PMC_INVESTIGATOR, JOB_PMC_DETAINER) +#define ROLES_WY_PMC_ALL ROLES_WY_PMC + ROLES_WY_PMC_AUX + ROLES_WY_PMC_INSPEC //-------- WY --------// @@ -204,13 +205,16 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) #define JOB_CHIEF_EXECUTIVE "Corporate Chief Executive" #define JOB_DIRECTOR "W-Y Director" +#define ROLES_WY_CORPORATE list(JOB_EXECUTIVE_SUPERVISOR, JOB_EXECUTIVE_SPECIALIST, JOB_SENIOR_EXECUTIVE, JOB_EXECUTIVE, JOB_JUNIOR_EXECUTIVE, JOB_TRAINEE) +#define ROLES_WY_LEADERSHIP list(JOB_DIRECTOR, JOB_PMC_DIRECTOR, JOB_CHIEF_EXECUTIVE, JOB_DIVISION_MANAGER, JOB_ASSISTANT_MANAGER) + //-------- WY Goons --------// #define JOB_WY_GOON "WY Corporate Security" #define JOB_WY_GOON_TECH "WY Corporate Security Technician" #define JOB_WY_GOON_LEAD "WY Corporate Security Lead" #define JOB_WY_GOON_RESEARCHER "WY Research Consultant" -#define JOB_WY_GOON_LIST list(JOB_WY_GOON, JOB_WY_GOON_LEAD) +#define ROLES_WY_GOONS list(JOB_WY_GOON_LEAD, JOB_WY_GOON_TECH, JOB_WY_GOON) //---- Contractors ----// #define JOB_CONTRACTOR "VAIPO Mercenary" @@ -385,4 +389,4 @@ GLOBAL_LIST_INIT(job_command_roles, JOB_COMMAND_ROLES_LIST) ///For denying certain traits being applied to people. ie. bad leg ///'Grunt' lists are for people who wouldn't logically get the bad leg trait, ie. UPP marine counterparts. -#define JOB_ERT_GRUNT_LIST list(DUTCH_JOB_LIST, RIOT_JOB_LIST, PROVOST_JOB_LIST, CMB_GRUNT_LIST, CLF_JOB_LIST, UPP_JOB_GRUNT_LIST, UPP_COMMANDO_JOB_LIST, CONTRACTOR_JOB_LIST, JOB_WY_GOON_LIST, JOB_PMC_GRUNT_LIST) +#define JOB_ERT_GRUNT_LIST list(DUTCH_JOB_LIST, RIOT_JOB_LIST, PROVOST_JOB_LIST, CMB_GRUNT_LIST, CLF_JOB_LIST, UPP_JOB_GRUNT_LIST, UPP_COMMANDO_JOB_LIST, CONTRACTOR_JOB_LIST, ROLES_WY_GOONS, ROLES_WY_PMC_ALL) diff --git a/code/__DEFINES/objects.dm b/code/__DEFINES/objects.dm index d839789d1664..26db2f3d2254 100644 --- a/code/__DEFINES/objects.dm +++ b/code/__DEFINES/objects.dm @@ -86,6 +86,7 @@ GLOBAL_LIST_INIT(RESTRICTED_CAMERA_NETWORKS, list( //Those networks can only be CAMERA_NET_LADDER, CAMERA_NET_COLONY, CAMERA_NET_OVERWATCH, + CAMERA_NET_ARES, )) #define STASIS_IN_BAG 1 diff --git a/code/__DEFINES/sentry_laptop_configurations.dm b/code/__DEFINES/sentry_laptop_configurations.dm index 6f4e2bec14ca..86c7e646c38a 100644 --- a/code/__DEFINES/sentry_laptop_configurations.dm +++ b/code/__DEFINES/sentry_laptop_configurations.dm @@ -1,6 +1,6 @@ -#define FACTION_WEYLAND "WY" -#define FACTION_HUMAN "HUMAN" -#define FACTION_COLONY "COLONY" +#define SENTRY_FACTION_WEYLAND "WY" +#define SENTRY_FACTION_HUMAN "HUMAN" +#define SENTRY_FACTION_COLONY "COLONY" #define ROF_SINGLE "SINGLE" #define ROF_BURST "BURST" diff --git a/code/__HELPERS/lists.dm b/code/__HELPERS/lists.dm index a1b38b48f754..856a0a492cbb 100644 --- a/code/__HELPERS/lists.dm +++ b/code/__HELPERS/lists.dm @@ -35,7 +35,7 @@ /proc/listgetindex(list/list,index) if(istype(list) && list.len) if(isnum(index)) - if(InRange(index,1,list.len)) + if(ISINRANGE(index,1,list.len)) return list[index] else if(list[index]) return list[index] diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 88bc3e8af9f5..cea6353699ad 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -3,8 +3,6 @@ */ // GLOBAL DEFINES // -#define is_hot(I) (I?:heat_source) - //Whether or not the given item counts as sharp in terms of dealing damage #define is_sharp(I) (isitem(I) && I?:sharp && I?:edge) @@ -17,9 +15,6 @@ HAS_TRAIT(W, TRAIT_TOOL_SCREWDRIVER) || istype(W, /obj/item/tool/pen ) || istype(W, /obj/item/tool/shovel)) \ ) -//Makes sure MIDDLE is between LOW and HIGH. If not, it adjusts it. Returns the adjusted value. -#define between(low, middle, high) (max(min(middle, high), low)) - //Offuscate x for coord system #define obfuscate_x(x) ((x) + GLOB.obfs_x) @@ -61,16 +56,6 @@ // GLOBAL PROCS // -//Returns the middle-most value -/proc/dd_range(low, high, num) - return max(low,min(high,num)) - -//Returns whether or not A is the middle most value -/proc/InRange(A, lower, upper) - if(A < lower) return 0 - if(A > upper) return 0 - return 1 - /// Gives X position on pixel grid of an object, accounting for offsets /proc/get_pixel_position_x(atom/subject, relative = FALSE) . = subject.pixel_x + subject.base_pixel_x @@ -245,9 +230,6 @@ -/proc/sign(x) - return x!=0?x/abs(x):0 - //Returns whether or not a player is a guest using their ckey as an input /proc/IsGuestKey(key) if (findtext(key, "Guest-", 1, 7) != 1) //was findtextEx @@ -295,61 +277,6 @@ search_id = 0 return 1 - - -//Generalised helper proc for letting mobs rename themselves. Used to be clname() and ainame() -//Last modified by Carn -/mob/proc/rename_self(role, allow_numbers=0) - var/oldname = real_name - var/time_passed = world.time - - var/newname - for(var/i=1,i<=3,i++) //we get 3 attempts to pick a suitable name. - newname = input(src,"You are a [role]. Would you like to change your name to something else?", "Name change",oldname) as text - if((world.time-time_passed)>300) - return //took too long - newname = reject_bad_name(newname,allow_numbers) //returns null if the name doesn't meet some basic requirements. Tidies up a few other things like bad-characters. - for(var/mob/living/M in GLOB.alive_mob_list) - if(M == src) - continue - - if(!newname || M.real_name == newname) - newname = null - break - - if(newname) - break //That's a suitable name! - to_chat(src, "Sorry, that [role]-name wasn't appropriate, please try another. It's possibly too long/short, has bad characters or is already taken.") - - if(!newname) //we'll stick with the oldname then - return - - fully_replace_character_name(oldname,newname) - -/proc/get_sorted_mobs() - var/list/old_list = getmobs() - var/list/Dead_list = list() - var/list/keyclient_list = list() - var/list/key_list = list() - var/list/logged_list = list() - for(var/named in old_list) - var/mob/M = old_list[named] - if(isobserver(M) || M.stat == 2) - Dead_list |= M - else if(M.key && M.client) - keyclient_list |= M - else if(M.key) - key_list |= M - else - logged_list |= M - old_list.Remove(named) - var/list/new_list = list() - new_list += keyclient_list - new_list += key_list - new_list += logged_list - new_list += Dead_list - return new_list - //Returns a list of all mobs with their name /proc/getmobs() var/list/mobs = sortmobs() @@ -378,150 +305,6 @@ return creatures -/proc/getxenos() - var/list/mobs = sortxenos() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if(isobserver(M)) - name += " \[ghost\]" - else if(M.stat == DEAD) - name += " \[dead\]" - creatures[name] = M - return creatures - -/proc/getpreds() - var/list/mobs = sortpreds() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(!isyautja(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/gethumans() - var/list/mobs = sorthumans() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/getsurvivors() - var/list/mobs = sortsurvivors() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/getertmembers() - var/list/mobs = sortertmembers() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - -/proc/getsynths() - var/list/mobs = sortsynths() - var/list/names = list() - var/list/creatures = list() - var/list/namecounts = list() - for(var/mob/M in mobs) - if(isyautja(M)) continue - if(iszombie(M)) continue - var/name = M.name - if (name in names) - namecounts[name]++ - name = "[name] ([namecounts[name]])" - else - names.Add(name) - namecounts[name] = 1 - if (M.real_name && M.real_name != M.name) - name += " \[[M.real_name]\]" - if (M.stat == 2) - name += " \[dead\]" - if(istype(M, /mob/dead/observer/)) - name += " \[ghost\]" - creatures[name] = M - - return creatures - /proc/get_multi_vehicles() var/list/multi_vehicles = GLOB.all_multi_vehicles.Copy() var/list/names = list() @@ -548,22 +331,6 @@ return vehicles -/proc/get_holograms() - var/list/holograms = list() - var/list/namecounts = list() - for(var/i in GLOB.hologram_list) - var/mob/hologram/H = i - var/name = H.name - if(name in namecounts) - namecounts[name]++ - name = "[name] #([namecounts[name]])" - else - namecounts[name] = 1 - - holograms[name] = H - - return holograms - //Orders mobs by type then by name /proc/sortmobs() var/list/moblist = list() @@ -590,62 +357,6 @@ moblist += friend return moblist -/proc/sortxenos() - var/list/xenolist = list() - var/list/sortmob = sortAtom(GLOB.xeno_mob_list) - for(var/mob/living/carbon/xenomorph/M in sortmob) - if(!M.client) - continue - xenolist.Add(M) - return xenolist - -/proc/sortpreds() - var/list/predlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || !M.species.name == "Yautja") - continue - predlist.Add(M) - return predlist - -/proc/sorthumans() - var/list/humanlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || M.species.name == "Yautja") - continue - humanlist.Add(M) - return humanlist - -/proc/sortsurvivors() - var/list/survivorlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || M.species.name == "Yautja") - continue - if(M.faction == FACTION_SURVIVOR) - survivorlist.Add(M) - return survivorlist - -/proc/sortertmembers() - var/list/ertmemberlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client) - continue - if(M.faction in FACTION_LIST_ERT) - ertmemberlist.Add(M) - return ertmemberlist - -/proc/sortsynths() - var/list/synthlist = list() - var/list/sortmob = sortAtom(GLOB.human_mob_list) - for(var/mob/living/carbon/human/M in sortmob) - if(!M.client || !issynth(M)) - continue - synthlist.Add(M) - return synthlist - /proc/key_name(whom, include_link = null, include_name = 1, highlight_special_characters = 1) var/mob/M var/client/C @@ -1601,22 +1312,6 @@ GLOBAL_LIST_INIT(WALLITEMS, list( return TRUE return FALSE -// Returns only the perimeter of the block given by the min and max turfs -/proc/blockhollow(turf/min, turf/max) - var/list/perimeter_turfs = list() - - // Upper/lower perimeters - for(var/x_coord = min.x to max.x) - perimeter_turfs += locate(x_coord, min.y, min.z) - perimeter_turfs += locate(x_coord, max.y, min.z) - - // Left/right perimeters - for(var/y_coord = min.y + 1 to max.y - 1) - perimeter_turfs += locate(min.x, y_coord, min.z) - perimeter_turfs += locate(max.x, y_coord, min.z) - - return perimeter_turfs - /proc/flick_overlay(atom/target, overlay, time) target.overlays += overlay addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_timed_overlay), target, overlay), time) @@ -1624,67 +1319,6 @@ GLOBAL_LIST_INIT(WALLITEMS, list( /proc/remove_timed_overlay(atom/target, overlay) target.overlays -= overlay -/* - Returns a list of random-looking, zero-sum variances. - - Imagine a straight line divided up into n segments, - then divide each segment into 2 subsegments again, so each original segment gets "its own point" that divides the subsegments - Then displace the first segment's dividing point by e.g. 5. - Then displace the second segment's dividing point by -5. - Then displace the third segment's dividing point by 5, and so on, alternating between a displacement of 5 and -5 - (If there's an odd number of segments just don't displace the last point at all) - - At the end, you'll have a zig-zaggy line. You then go through each segment end and - take away/add some random amount of displacement from its point. If you keep track of how much - net displacement has been added/removed, you can distribute it among other points - and end up with net 0 displacement (i.e. 0 total variance) - - Basically, this is what happens: https://i.imgur.com/AuY7HHd.png -*/ -/proc/get_random_zero_sum_variances(amount, max_variance) - // Displace each "point" to max variance - var/list/variances[amount] - for(var/i in 1 to variances.len) - if(i == variances.len && (variances.len % 2)) - variances[i] = 0 - else - variances[i] = (i % 2 ? 1 : -1) * max_variance - - // Jiggle each variance a random amount towards the "center line"/0 variance - var/net_displacement = 0 - for(var/i in 1 to variances.len) - var/to_redistribute = (i % 2 ? -1 : 1) * rand(0, max_variance/2) - - net_displacement += to_redistribute - variances[i] += to_redistribute - - // Lucky! Everything jiggled towards 0 in a way that left 0 net displacement - if(!net_displacement) - return variances - - // Redistribute the net displacement evenly on the side of the center line that needs it - // Only half the points are gonna be affected. - var/to_redistribute = abs(ceil(net_displacement / (variances.len/2))) - for(var/i in 1 to variances.len) - if(!net_displacement) - break - - // Positive net displacement, only distribute to points that were given negative variance to begin with - if(net_displacement > 0 && !(i % 2)) - variances[i] -= min(abs(net_displacement), to_redistribute) - net_displacement -= to_redistribute - // Negative net displacement, only distribute to points that were given positive variance to begin with - else if(net_displacement < 0 && i % 2) - variances[i] += min(abs(net_displacement), to_redistribute) - net_displacement += to_redistribute - - return variances - -/proc/check_bitflag(flag, bit) - if(flag & bit) - return TRUE - return FALSE - // A proc purely for a callback that returns TRUE (and does nothing else) /proc/_callback_true() return TRUE @@ -1867,11 +1501,6 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) #define UNTIL(X) while(!(X)) stoplag() -/proc/IsValidSrc(datum/D) - if(istype(D)) - return !QDELETED(D) - return FALSE - //Repopulates sortedAreas list /proc/repopulate_sorted_areas() GLOB.sorted_areas = list() @@ -1950,12 +1579,6 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list( M.regenerate_icons() return O -/proc/convert_to_json_text(json_file_string) - var/json_file = file(json_file_string) - json_file = file2text(json_file) - json_file = json_decode(json_file) - return json_file - ///Returns a list of all items of interest with their name /proc/getpois(mobs_only = FALSE, skip_mindless = FALSE, specify_dead_role = TRUE) var/list/mobs = sortmobs() diff --git a/code/datums/medal_awards.dm b/code/datums/medal_awards.dm index 818d623033d2..37b21bd2bb49 100644 --- a/code/datums/medal_awards.dm +++ b/code/datums/medal_awards.dm @@ -479,6 +479,10 @@ GLOBAL_LIST_INIT(xeno_medals, list(XENO_SLAUGHTER_MEDAL, XENO_RESILIENCE_MEDAL, continue recipient_ranks[recipient_name] = record.fields["rank"] possible_recipients += recipient_name + if(length(possible_recipients) == 0) + to_chat(recommendation_giver, SPAN_WARNING("It's not possible to give medals when the ship is empty. Tough luck, partner...")) + return FALSE + var/chosen_recipient = tgui_input_list(recommendation_giver, "Who do you want to recommend a medal for?", "Medal Recommendation", possible_recipients) if(!chosen_recipient) return FALSE diff --git a/code/datums/paygrades/factions/wy/wy.dm b/code/datums/paygrades/factions/wy/wy.dm index b3ff70830603..17b46ff5790e 100644 --- a/code/datums/paygrades/factions/wy/wy.dm +++ b/code/datums/paygrades/factions/wy/wy.dm @@ -1,7 +1,7 @@ /datum/paygrade/wy_ranks name = "WYC Paygrade" pay_multiplier = 1 - default_faction = FACTION_WEYLAND + default_faction = FACTION_WY /datum/paygrade/wy_ranks/wyc1 paygrade = PAY_SHORT_WYC1 diff --git a/code/datums/paygrades/paygrade.dm b/code/datums/paygrades/paygrade.dm index 862dce0dfb0c..3befc979f2d2 100644 --- a/code/datums/paygrades/paygrade.dm +++ b/code/datums/paygrades/paygrade.dm @@ -42,7 +42,7 @@ GLOBAL_LIST_INIT(co_paygrades, list( GLOB.uscm_officer_paygrades += paygrade if(officer_grade >= GRADE_FLAG) GLOB.uscm_highcom_paygrades += paygrade - if(FACTION_WEYLAND,FACTION_PMC) + if(FACTION_WY,FACTION_PMC) if(officer_grade >= GRADE_FLAG) GLOB.wy_highcom_paygrades += paygrade diff --git a/code/datums/skills/civilian.dm b/code/datums/skills/civilian.dm index 9dc4afd78826..0ff13ae67225 100644 --- a/code/datums/skills/civilian.dm +++ b/code/datums/skills/civilian.dm @@ -29,6 +29,7 @@ CIVILIAN name = "ICC CL - Black Market ERT" skills = list( SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, //The ASRS consoles SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, @@ -57,11 +58,13 @@ CIVILIAN skills = list( SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, ) /datum/skills/civilian/survivor/manager name = "Weyland-Yutani Manager" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_MASTER, SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, @@ -120,6 +123,7 @@ CIVILIAN /datum/skills/civilian/survivor/doctor name = "Survivor Doctor" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, SKILL_SURGERY = SKILL_SURGERY_TRAINED, ) @@ -136,6 +140,7 @@ CIVILIAN /datum/skills/civilian/survivor/scientist name = "Survivor Scientist" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, SKILL_SURGERY = SKILL_SURGERY_TRAINED, SKILL_RESEARCH = SKILL_RESEARCH_TRAINED, @@ -144,6 +149,7 @@ CIVILIAN /datum/skills/civilian/survivor/chef name = "Survivor Chef" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, SKILL_DOMESTIC = SKILL_DOMESTIC_TRAINED, ) @@ -151,6 +157,7 @@ CIVILIAN /datum/skills/civilian/survivor/miner name = "Survivor Miner" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, SKILL_VEHICLE = SKILL_VEHICLE_SMALL, @@ -159,6 +166,7 @@ CIVILIAN /datum/skills/civilian/survivor/trucker name = "Survivor Trucker" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_VEHICLE = SKILL_VEHICLE_CREWMAN, @@ -167,6 +175,7 @@ CIVILIAN /datum/skills/civilian/survivor/engineer name = "Survivor Engineer" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, @@ -176,6 +185,7 @@ CIVILIAN /datum/skills/civilian/survivor/chaplain name = "Survivor Chaplain" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, ) @@ -199,6 +209,7 @@ CIVILIAN /datum/skills/civilian/survivor/prisoner name = "Survivor Prisoner" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CQC = SKILL_CQC_SKILLED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, @@ -208,6 +219,7 @@ CIVILIAN /datum/skills/civilian/survivor/gangleader name = "Survivor Gang Leader" additional_skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CQC = SKILL_CQC_SKILLED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, diff --git a/code/datums/skills/clf.dm b/code/datums/skills/clf.dm index 6042febb6b48..88aa14a41f79 100644 --- a/code/datums/skills/clf.dm +++ b/code/datums/skills/clf.dm @@ -10,7 +10,7 @@ COLONIAL LIBERATION FRONT SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_POLICE = SKILL_POLICE_SKILLED, - SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, @@ -22,6 +22,7 @@ COLONIAL LIBERATION FRONT /datum/skills/clf/combat_engineer name = "CLF Engineer" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, @@ -34,6 +35,7 @@ COLONIAL LIBERATION FRONT /datum/skills/clf/combat_medic name = "CLF Medic" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, SKILL_SURGERY = SKILL_SURGERY_TRAINED, SKILL_VEHICLE = SKILL_VEHICLE_SMALL, diff --git a/code/datums/skills/commando.dm b/code/datums/skills/commando.dm index dabae682bd0b..ed5e5ee086e4 100644 --- a/code/datums/skills/commando.dm +++ b/code/datums/skills/commando.dm @@ -8,6 +8,7 @@ SPEC-OPS name = "Commando" skills = list( SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, @@ -22,6 +23,7 @@ SPEC-OPS name = "Commando Medic" skills = list( SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, @@ -37,6 +39,7 @@ SPEC-OPS name = "Commando Leader" skills = list( SKILL_CQC = SKILL_CQC_EXPERT, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, @@ -52,6 +55,7 @@ SPEC-OPS name = "Deathsquad" skills = list( SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, @@ -66,6 +70,7 @@ SPEC-OPS name = "Deathsquad Leader" skills = list( SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_MASTER, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, @@ -81,6 +86,7 @@ SPEC-OPS name = "Deathsquad Officer" skills = list( SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_MASTER, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, @@ -97,6 +103,7 @@ SPEC-OPS name = "Spy" skills = list( SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, @@ -109,6 +116,7 @@ SPEC-OPS name = "Ninja" skills = list( SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, diff --git a/code/datums/skills/dutch.dm b/code/datums/skills/dutch.dm index 5c2c63a8c463..4f19233e66d0 100644 --- a/code/datums/skills/dutch.dm +++ b/code/datums/skills/dutch.dm @@ -2,6 +2,7 @@ name = "Dutch" skills = list( SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, SKILL_MELEE_WEAPONS = SKILL_MELEE_MAX, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, diff --git a/code/datums/skills/forecon.dm b/code/datums/skills/forecon.dm index 4799dd68d617..724a49ee98ca 100644 --- a/code/datums/skills/forecon.dm +++ b/code/datums/skills/forecon.dm @@ -12,6 +12,7 @@ MILITARY SURVIVORS SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, SKILL_ENDURANCE = SKILL_ENDURANCE_SURVIVOR, @@ -27,6 +28,7 @@ MILITARY SURVIVORS SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, SKILL_SURGERY = SKILL_SURGERY_NOVICE, @@ -43,6 +45,7 @@ MILITARY SURVIVORS SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_SPEC_WEAPONS = SKILL_SPEC_SCOUT, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, @@ -59,6 +62,7 @@ MILITARY SURVIVORS SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, @@ -75,6 +79,7 @@ MILITARY SURVIVORS SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_SPEC_WEAPONS = SKILL_SPEC_SNIPER, SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, @@ -91,6 +96,7 @@ MILITARY SURVIVORS SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_DEFAULT, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_POLICE = SKILL_POLICE_SKILLED, SKILL_JTAC = SKILL_JTAC_TRAINED, diff --git a/code/datums/skills/freelancer.dm b/code/datums/skills/freelancer.dm index 7f7256318edb..09df9f32369c 100644 --- a/code/datums/skills/freelancer.dm +++ b/code/datums/skills/freelancer.dm @@ -9,6 +9,7 @@ FREELANCERS /datum/skills/freelancer name = "Freelancer Private" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, @@ -17,6 +18,7 @@ FREELANCERS /datum/skills/freelancer/combat_medic name = "Freelancer Medic" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, @@ -27,6 +29,7 @@ FREELANCERS /datum/skills/freelancer/SL name = "Freelancer Leader" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, diff --git a/code/datums/skills/gladiator.dm b/code/datums/skills/gladiator.dm index 7ba2c9eff455..7757fd928972 100644 --- a/code/datums/skills/gladiator.dm +++ b/code/datums/skills/gladiator.dm @@ -2,6 +2,7 @@ name = "Gladiator" skills = list( SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, SKILL_LEADERSHIP = SKILL_LEAD_NOVICE, @@ -13,6 +14,7 @@ name = "Gladiator Champion" skills = list( SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, @@ -24,6 +26,7 @@ name = "Gladiator Leader" skills = list( SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_MAX, SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, SKILL_LEADERSHIP = SKILL_LEAD_MASTER, //Spartacus! diff --git a/code/datums/skills/mercenary.dm b/code/datums/skills/mercenary.dm index 8d842ea30dd2..1dc18eaa2fbc 100644 --- a/code/datums/skills/mercenary.dm +++ b/code/datums/skills/mercenary.dm @@ -2,6 +2,7 @@ name = "Mercenary" skills = list( SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, @@ -14,6 +15,7 @@ name = "Elite Mercenary" skills = list( SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_MAX, @@ -28,6 +30,7 @@ name = "Elite Mercenary Medic" skills = list( SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_MAX, @@ -42,6 +45,7 @@ name = "Elite Mercenary Engineer" skills = list( SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_MASTER, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, SKILL_FIREARMS = SKILL_FIREARMS_MAX, @@ -57,6 +61,7 @@ name = "Elite Mercenary Heavy" skills = list( SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_MAX, @@ -72,6 +77,7 @@ name = "Elite Mercenary Leader" skills = list( SKILL_CQC = SKILL_CQC_SKILLED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_FIREARMS = SKILL_FIREARMS_MAX, diff --git a/code/datums/skills/misc.dm b/code/datums/skills/misc.dm index e4f78219b5c6..0f0ca657f995 100644 --- a/code/datums/skills/misc.dm +++ b/code/datums/skills/misc.dm @@ -12,6 +12,7 @@ MISCELLANEOUS SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, SKILL_JTAC = SKILL_JTAC_EXPERT, ) @@ -36,6 +37,7 @@ MISCELLANEOUS skills = list( SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, SKILL_CQC = SKILL_CQC_MASTER, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_SUPER, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, SKILL_ENGINEER = SKILL_ENGINEER_MASTER, diff --git a/code/datums/skills/upp.dm b/code/datums/skills/upp.dm index 77401ab62878..e367372719d6 100644 --- a/code/datums/skills/upp.dm +++ b/code/datums/skills/upp.dm @@ -37,6 +37,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_SURGERY = SKILL_SURGERY_TRAINED, SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, SKILL_CQC = SKILL_CQC_DEFAULT, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, ) @@ -47,6 +48,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, SKILL_JTAC = SKILL_JTAC_TRAINED, SKILL_SPEC_WEAPONS = SKILL_SPEC_UPP, @@ -61,6 +63,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_ENDURANCE = SKILL_ENDURANCE_MASTER, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, @@ -162,6 +165,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_MEDICAL = SKILL_MEDICAL_TRAINED, SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, @@ -178,6 +182,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_ENDURANCE = SKILL_ENDURANCE_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_VEHICLE = SKILL_VEHICLE_DEFAULT, SKILL_JTAC = SKILL_JTAC_TRAINED, @@ -197,6 +202,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_VEHICLE = SKILL_VEHICLE_LARGE, ) @@ -209,6 +215,7 @@ UNITED PROGRESSIVE PEOPLES SKILL_SPEC_WEAPONS = SKILL_SPEC_UPP, SKILL_FIREARMS = SKILL_FIREARMS_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_SKILLED, SKILL_MELEE_WEAPONS = SKILL_MELEE_TRAINED, SKILL_LEADERSHIP = SKILL_LEAD_EXPERT, SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, diff --git a/code/datums/skills/uscm.dm b/code/datums/skills/uscm.dm index 9c56e7f62a88..f694e8789dcd 100644 --- a/code/datums/skills/uscm.dm +++ b/code/datums/skills/uscm.dm @@ -18,6 +18,7 @@ United States Colonial Marines /datum/skills/combat_medic name = "Combat Medic" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, SKILL_SURGERY = SKILL_SURGERY_NOVICE, SKILL_JTAC = SKILL_JTAC_BEGINNER, @@ -33,6 +34,7 @@ United States Colonial Marines /datum/skills/combat_engineer name = "Combat Engineer" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_VEHICLE = SKILL_VEHICLE_SMALL, @@ -42,6 +44,7 @@ United States Colonial Marines /datum/skills/smartgunner name = "Squad Smartgunner" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_SPEC_WEAPONS = SKILL_SPEC_SMARTGUN, SKILL_JTAC = SKILL_JTAC_BEGINNER, ) @@ -49,6 +52,7 @@ United States Colonial Marines /datum/skills/specialist name = "Squad Weapons Specialist" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CQC = SKILL_CQC_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, //to use c4 in demo set. @@ -61,6 +65,7 @@ United States Colonial Marines /datum/skills/tl name = "Fireteam Leader" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_ENGI, SKILL_JTAC = SKILL_JTAC_EXPERT, @@ -84,6 +89,7 @@ United States Colonial Marines /datum/skills/intel name = "Intelligence Officer" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_ENGI, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, @@ -103,6 +109,7 @@ MILITARY NONCOMBATANT /datum/skills/doctor name = "Doctor" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_FIREARMS = SKILL_FIREARMS_CIVILIAN, SKILL_MEDICAL = SKILL_MEDICAL_DOCTOR, SKILL_SURGERY = SKILL_SURGERY_TRAINED, @@ -133,6 +140,7 @@ MILITARY NONCOMBATANT SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, SKILL_OVERWATCH = SKILL_OVERWATCH_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, SKILL_SURGERY = SKILL_SURGERY_NOVICE, SKILL_JTAC = SKILL_JTAC_TRAINED, @@ -145,6 +153,7 @@ MILITARY NONCOMBATANT SKILL_PILOT = SKILL_PILOT_TRAINED, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, SKILL_LEADERSHIP = SKILL_LEAD_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_MEDICAL = SKILL_MEDICAL_MEDIC, SKILL_SURGERY = SKILL_SURGERY_NOVICE, SKILL_JTAC = SKILL_JTAC_TRAINED, @@ -187,6 +196,7 @@ MILITARY NONCOMBATANT /datum/skills/OT name = "Ordnance Technician" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_MASTER, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, @@ -195,6 +205,7 @@ MILITARY NONCOMBATANT /datum/skills/MT name = "Maintenance Technician" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_ENGINEER = SKILL_ENGINEER_MASTER, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_MASTER, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, @@ -206,6 +217,7 @@ MILITARY NONCOMBATANT skills = list( SKILL_FIREARMS = SKILL_FIREARMS_EXPERT, // need to hunt food somehow SKILL_ENGINEER = SKILL_ENGINEER_TRAINED, + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, SKILL_DOMESTIC = SKILL_DOMESTIC_MASTER ) @@ -213,6 +225,7 @@ MILITARY NONCOMBATANT /datum/skills/CT name = "Cargo Technician" skills = list( + SKILL_FIREMAN = SKILL_FIREMAN_TRAINED, SKILL_CONSTRUCTION = SKILL_CONSTRUCTION_TRAINED, SKILL_POWERLOADER = SKILL_POWERLOADER_MASTER, ) diff --git a/code/game/camera_manager/camera_manager.dm b/code/game/camera_manager/camera_manager.dm index 95292830d49b..9f111b0f8ec6 100644 --- a/code/game/camera_manager/camera_manager.dm +++ b/code/game/camera_manager/camera_manager.dm @@ -188,9 +188,9 @@ var/cam_location = current if(isliving(current.loc) || isVehicle(current.loc)) cam_location = current.loc - else if(istype(current.loc, /obj/item/clothing/head/helmet/marine)) - var/obj/item/clothing/head/helmet/marine/helmet = current.loc - cam_location = helmet.loc + else if(istype(current.loc, /obj/item/clothing)) + var/obj/item/clothing/clothing = current.loc + cam_location = clothing.loc // If we're not forcing an update for some reason and the cameras are in the same location, // we don't need to update anything. diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 0d10b06d5fef..94e59cbd93ef 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -212,6 +212,7 @@ ACCESS_WY_PMC_TL, ACCESS_WY_ARMORY, ACCESS_WY_SECRETS, + ACCESS_WY_DATABASE, ACCESS_WY_LEADERSHIP, ACCESS_WY_SENIOR_LEAD, ) + get_access(ACCESS_LIST_COLONIAL_ALL) @@ -236,6 +237,7 @@ ACCESS_WY_PMC, ACCESS_WY_PMC_TL, ACCESS_WY_ARMORY, + ACCESS_WY_DATABASE, ACCESS_WY_LEADERSHIP, ACCESS_WY_SENIOR_LEAD, ) + get_access(ACCESS_LIST_COLONIAL_ALL) @@ -446,6 +448,40 @@ if(ACCESS_ARES_DEBUG) return "AI Debug" +/proc/get_region_accesses_wy(code) + switch(code) + if(0)//Everything + return get_access(ACCESS_LIST_WY_ALL) + if(1)//Corporate General + return list(ACCESS_WY_GENERAL, ACCESS_WY_COLONIAL, ACCESS_WY_EXEC) + if(2)//Corporate Security + return list(ACCESS_WY_SECURITY, ACCESS_WY_ARMORY) + if(3)//Corporate Departments + return list(ACCESS_WY_MEDICAL, ACCESS_WY_ENGINEERING, ACCESS_WY_FLIGHT, ACCESS_WY_RESEARCH) + if(4)//Corporate Leadership + return list(ACCESS_WY_LEADERSHIP, ACCESS_WY_SENIOR_LEAD, ACCESS_WY_SECRETS, ACCESS_WY_DATABASE) + if(5)//PMCs + return list(ACCESS_WY_PMC, ACCESS_WY_PMC_TL, ACCESS_WY_ARMORY) + if(6)//Civilian + return get_access(ACCESS_LIST_COLONIAL_ALL) + +/proc/get_region_accesses_name_wy(code) + switch(code) + if(0) + return "All" + if(1) + return "Corporate" // Security + if(2) + return "Corporate Security" // Medbay + if(3) + return "Corporate Departments" // Research + if(4) + return "Corporate Leadership" // Engineering + if(5) + return "Corporate PMCs" // Command + if(6) + return "Civilian" // Civilian + /proc/get_weyland_access_desc(A) switch(A) if(ACCESS_WY_GENERAL) @@ -463,7 +499,7 @@ if(ACCESS_WY_RESEARCH) return "Wey-Yu Research" if(ACCESS_WY_EXEC) - return "Wey-Yu Corporate" + return "Wey-Yu Executive" if(ACCESS_WY_PMC) return "Wey-Yu PMC" if(ACCESS_WY_PMC_TL) @@ -472,7 +508,23 @@ return "Wey-Yu Armory" if(ACCESS_WY_SECRETS) return "Wey-Yu HighSec" + if(ACCESS_WY_DATABASE) + return "Wey-Yu Database" if(ACCESS_WY_LEADERSHIP) return "Wey-Yu Leadership" if(ACCESS_WY_SENIOR_LEAD) return "Wey-Yu Senior Leadership" + if(ACCESS_CIVILIAN_RESEARCH) + return "Civilian Research" + if(ACCESS_CIVILIAN_COMMAND) + return "Civilian Command" + if(ACCESS_CIVILIAN_MEDBAY) + return "Civilian Medbay" + if(ACCESS_CIVILIAN_LOGISTICS) + return "Civilian Logistics" + if(ACCESS_CIVILIAN_ENGINEERING) + return "Civilian Engineering" + if(ACCESS_CIVILIAN_BRIG) + return "Civilian Brig" + if(ACCESS_CIVILIAN_PUBLIC) + return "Civilian" diff --git a/code/game/jobs/job/special/uscm.dm b/code/game/jobs/job/special/uscm.dm index 2308c5af2961..751322539f77 100644 --- a/code/game/jobs/job/special/uscm.dm +++ b/code/game/jobs/job/special/uscm.dm @@ -1,5 +1,7 @@ /datum/job/special/uscm/colonel title = JOB_COLONEL +/datum/job/special/uscm/observer + title = JOB_USCM_OBSV /datum/job/special/uscm/general title = JOB_GENERAL /datum/job/special/uscm/acmc diff --git a/code/game/jobs/job/special/weyland_yutani.dm b/code/game/jobs/job/special/weyland_yutani.dm new file mode 100644 index 000000000000..d5f47331ca29 --- /dev/null +++ b/code/game/jobs/job/special/weyland_yutani.dm @@ -0,0 +1,110 @@ +/datum/job/special/wey_yu + supervisors = "Weyland-Yutani Corporate Office" + title = "Weyland-Yutani Representative" + selection_class = "job_cl" + flags_startup_parameters = ROLE_CUSTOM_SPAWN + gear_preset = /datum/equipment_preset/wy/trainee + +/datum/job/special/wey_yu/corporate/trainee + title = JOB_TRAINEE + gear_preset = /datum/equipment_preset/wy/trainee + +/datum/job/special/wey_yu/corporate/junior_exec + title = JOB_JUNIOR_EXECUTIVE + gear_preset = /datum/equipment_preset/wy/junior_exec + +/datum/job/special/wey_yu/corporate/exec + title = JOB_EXECUTIVE + gear_preset = /datum/equipment_preset/wy/exec + +/datum/job/special/wey_yu/corporate/senior_exec + title = JOB_SENIOR_EXECUTIVE + gear_preset = /datum/equipment_preset/wy/senior_exec + +/datum/job/special/wey_yu/corporate/exec_spec + title = JOB_EXECUTIVE_SPECIALIST + gear_preset = /datum/equipment_preset/wy/exec_spec + +/datum/job/special/wey_yu/corporate/exec_supr + title = JOB_EXECUTIVE_SUPERVISOR + gear_preset = /datum/equipment_preset/wy/exec_supervisor + +/datum/job/special/wey_yu/corporate/assist_man + title = JOB_ASSISTANT_MANAGER + gear_preset = /datum/equipment_preset/wy/manager/assistant_manager + +/datum/job/special/wey_yu/corporate/div_man + title = JOB_DIVISION_MANAGER + gear_preset = /datum/equipment_preset/wy/manager/division_manager + supervisors = "Weyland-Yutani Directorate" + +/datum/job/special/wey_yu/corporate/chief_exec + title = JOB_CHIEF_EXECUTIVE + gear_preset = /datum/equipment_preset/wy/manager/chief_executive + supervisors = "Weyland-Yutani Directorate" + +/datum/job/special/wey_yu/corporate/director + title = JOB_DIRECTOR + gear_preset = /datum/equipment_preset/wy/manager/director + supervisors = "Weyland-Yutani Directorate" + + +// PMCS // +/datum/job/special/wey_yu/pmc + supervisors = "Weyland-Yutani PMC Dispatch" + +/datum/job/special/wey_yu/pmc/standard + title = JOB_PMC_STANDARD + gear_preset = /datum/equipment_preset/pmc/pmc_standard + +/datum/job/special/wey_yu/pmc/medic + title = JOB_PMC_MEDIC + gear_preset = /datum/equipment_preset/pmc/pmc_medic + +/datum/job/special/wey_yu/pmc/engineer + title = JOB_PMC_ENGINEER + gear_preset = /datum/equipment_preset/pmc/technician + +/datum/job/special/wey_yu/pmc/gunner + title = JOB_PMC_GUNNER + gear_preset = /datum/equipment_preset/pmc/pmc_gunner + +/datum/job/special/wey_yu/pmc/sniper + title = JOB_PMC_SNIPER + gear_preset = /datum/equipment_preset/pmc/pmc_sniper + +/datum/job/special/wey_yu/pmc/leader + title = JOB_PMC_LEADER + gear_preset = /datum/equipment_preset/pmc/pmc_leader + +/datum/job/special/wey_yu/pmc/investigator + title = JOB_PMC_INVESTIGATOR + gear_preset = /datum/equipment_preset/pmc/pmc_med_investigator + +/datum/job/special/wey_yu/pmc/lead_invest + title = JOB_PMC_LEAD_INVEST + gear_preset = /datum/equipment_preset/pmc/pmc_lead_investigator + +/datum/job/special/wey_yu/pmc/detainer + title = JOB_PMC_DETAINER + gear_preset = /datum/equipment_preset/pmc/pmc_detainer + +/datum/job/special/wey_yu/pmc/crewman + title = JOB_PMC_CREWMAN + gear_preset = /datum/equipment_preset/pmc/pmc_crewman + +/datum/job/special/wey_yu/pmc/doctor + title = JOB_PMC_DOCTOR + gear_preset = /datum/equipment_preset/pmc/doctor + +/datum/job/special/wey_yu/pmc/handler + title = JOB_PMC_XENO_HANDLER + gear_preset = /datum/equipment_preset/pmc/xeno_handler + +/datum/job/special/wey_yu/pmc/synth + title = JOB_PMC_SYNTH + gear_preset = /datum/equipment_preset/pmc/synth + +/datum/job/special/wey_yu/pmc/director + title = JOB_PMC_DIRECTOR + gear_preset = /datum/equipment_preset/pmc/director diff --git a/code/game/machinery/ARES/ARES_interface.dm b/code/game/machinery/ARES/ARES_interface.dm index 04547d079664..02695e2e6d4b 100644 --- a/code/game/machinery/ARES/ARES_interface.dm +++ b/code/game/machinery/ARES/ARES_interface.dm @@ -24,6 +24,8 @@ /// The datacore storing all the information. var/datum/ares_datacore/datacore + COOLDOWN_DECLARE(printer_cooldown) + /obj/structure/machinery/computer/ares_console/proc/link_systems(datum/ares_link/new_link = GLOB.ares_link, override) if(link && !override) return FALSE @@ -94,6 +96,8 @@ data["nuketimelock"] = NUCLEAR_TIME_LOCK data["nuke_available"] = datacore.nuke_available + data["printer_cooldown"] = !COOLDOWN_FINISHED(src, printer_cooldown) + var/list/logged_announcements = list() for(var/datum/ares_record/announcement/broadcast as anything in datacore.records_announcement) var/list/current_broadcast = list() @@ -337,6 +341,72 @@ last_menu = current_menu current_menu = "core_security" + // -- Print ASRS Audit Log -- // + if("print_req") + playsound = FALSE + if(!COOLDOWN_FINISHED(src, printer_cooldown)) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + if(!length(datacore.records_asrs)) + to_chat(user, SPAN_WARNING("There are no records to print!")) + playsound(src, 'sound/machines/buzz-two.ogg', 15, 1) + return FALSE + COOLDOWN_START(src, printer_cooldown, 20 SECONDS) + playsound(src, 'sound/machines/fax.ogg', 15, 1) + sleep(3.4 SECONDS) + var/contents = {" +
\ +
\ +

A.S.R.S.

\ +

Automatic Storage Retrieval System

\ +

Audit Log

\ +

+ Printed By: [last_login]
+ Print Time: [worldtime2text()]
+
+
+ + + + + + + + + + + "} + + for(var/datum/ares_record/requisition_log/req_order as anything in datacore.records_asrs) + + contents += {" + + + + + + + "} + + contents += "
TimeUserSourceOrder
[req_order.time][req_order.user][req_order.title][req_order.details]
" + + var/obj/item/paper/log = new(loc) + log.name = "ASRS Audit Log" + log.info += contents + log.icon_state = "paper_uscm_words" + visible_message(SPAN_NOTICE("[src] prints out a paper.")) + // -- Delete Button -- // if("delete_record") var/datum/ares_record/record = locate(params["record"]) diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm index 4b5e02dc8b8b..2e98eb7e88e9 100644 --- a/code/game/machinery/rechargestation.dm +++ b/code/game/machinery/rechargestation.dm @@ -73,9 +73,9 @@ var/charge_diff = max_internal_charge - current_internal_charge // OK we have charge differences charge_diff = charge_diff / CELLRATE // Deconvert from Charge to Joules if(chargemode) // Decide if use passive or active power - charge_diff = between(0, charge_diff, charging_cap_active) // Trim the values to limits + charge_diff = clamp(charge_diff, 0, charging_cap_active) // Trim the values to limits else // We should have load for this tick in Watts - charge_diff = between(0, charge_diff, charging_cap_passive) + charge_diff = clamp(charge_diff, 0, charging_cap_passive) charge_diff += 50 // 50W for circuitry diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index b4d5b7dece20..64c0023e6a09 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -127,7 +127,7 @@ var/value = text2num(href_list["val"]) // limit to 0-90 degC - set_temperature = dd_range(T0C, T0C + 90, set_temperature + value) + set_temperature = clamp(set_temperature + value, T0C, T0C + 90) if("cellremove") if(open && cell && !usr.get_active_hand()) diff --git a/code/game/machinery/vending/vendor_types/wo_vendors.dm b/code/game/machinery/vending/vendor_types/wo_vendors.dm index 4cb6c689ef35..1d6ad60bb357 100644 --- a/code/game/machinery/vending/vendor_types/wo_vendors.dm +++ b/code/game/machinery/vending/vendor_types/wo_vendors.dm @@ -8,57 +8,108 @@ /obj/structure/machinery/cm_vending/sorted/uniform_supply/squad_prep/wo/populate_product_list(scale) listed_products = list( - list("UNIFORM", -1, null, null), - list("Lightweight IMP Backpack", 10, /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), - list("M276 Ammo Load Rig", 10, /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), - list("M276 General Pistol Holster Rig", 10, /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), - list("M276 M39 Holster Rig", 10, /obj/item/storage/belt/gun/m39, VENDOR_ITEM_REGULAR), - list("M276 M44 Holster Rig", 10, /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), - list("M276 M82F Holster Rig", 10, /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), - list("M276 Shotgun Shell Loading Rig", 10, /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR), - list("Marine Combat Boots", 20, /obj/item/clothing/shoes/marine, VENDOR_ITEM_REGULAR), - list("USCM Satchel", 10, /obj/item/storage/backpack/marine/satchel, VENDOR_ITEM_REGULAR), - list("USCM Uniform", 20, /obj/item/clothing/under/marine, VENDOR_ITEM_REGULAR), - list("Technician Welder-Satchel", 10, /obj/item/storage/backpack/marine/engineerpack/satchel, VENDOR_ITEM_REGULAR), - - list("POUCHES", -1, null, null), - list("Construction Pouch", floor(scale * 2), /obj/item/storage/pouch/construction, VENDOR_ITEM_REGULAR), - list("Explosive Pouch", floor(scale * 2), /obj/item/storage/pouch/explosive, VENDOR_ITEM_REGULAR), - list("First-Aid Pouch (Full)", floor(scale * 5), /obj/item/storage/pouch/firstaid/full, VENDOR_ITEM_REGULAR), - list("First Responder Pouch", floor(scale * 2), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), - list("Flare Pouch", floor(scale * 5), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), - list("Large Pistol Magazine Pouch", floor(scale * 3), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), - list("Magazine Pouch", floor(scale * 5), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), - list("Medical Pouch", floor(scale * 2), /obj/item/storage/pouch/medical, VENDOR_ITEM_REGULAR), - list("Medium General Pouch", floor(scale * 2), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), - list("Medkit Pouch", floor(scale * 2), /obj/item/storage/pouch/medkit, VENDOR_ITEM_REGULAR), - list("Sidearm Pouch", floor(scale * 15), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), - list("Syringe Pouch", floor(scale * 2), /obj/item/storage/pouch/syringe, VENDOR_ITEM_REGULAR), - list("Tools Pouch", floor(scale * 2), /obj/item/storage/pouch/tools, VENDOR_ITEM_REGULAR), + list("STANDARD EQUIPMENT", -1, null, null, null), + list("Marine Combat Boots", floor(scale * 10), /obj/item/clothing/shoes/marine, VENDOR_ITEM_REGULAR), + list("Marine Brown Combat Boots", floor(scale * 2), /obj/item/clothing/shoes/marine/brown, VENDOR_ITEM_REGULAR), + list("USCM Uniform", floor(scale * 10), /obj/item/clothing/under/marine, VENDOR_ITEM_REGULAR), + list("Marine Combat Gloves", floor(scale * 10), /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), + list("Marine Brown Combat Gloves", floor(scale * 2), /obj/item/clothing/gloves/marine/brown, VENDOR_ITEM_REGULAR), + list("Marine Black Combat Gloves", floor(scale * 2), /obj/item/clothing/gloves/marine/black, VENDOR_ITEM_REGULAR), + list("M10 Pattern Marine Helmet", floor(scale * 10), /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), list("RADIO HEADSETS", -1, null, null), - list("Marine Alpha Radio Headset", 10, /obj/item/device/radio/headset/almayer/marine/alpha, VENDOR_ITEM_REGULAR), - list("Marine Bravo Radio Headset", 10, /obj/item/device/radio/headset/almayer/marine/bravo, VENDOR_ITEM_REGULAR), - list("Marine Charlie Radio Headset", 10, /obj/item/device/radio/headset/almayer/marine/charlie, VENDOR_ITEM_REGULAR), - list("Marine Delta Radio Headset", 10, /obj/item/device/radio/headset/almayer/marine/delta, VENDOR_ITEM_REGULAR), - - list("GLOVES", -1, null, null), - list("Marine Combat Gloves", 40, /obj/item/clothing/gloves/marine, VENDOR_ITEM_REGULAR), + list("Marine Alpha Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/alpha, VENDOR_ITEM_REGULAR), + list("Marine Bravo Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/bravo, VENDOR_ITEM_REGULAR), + list("Marine Charlie Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/charlie, VENDOR_ITEM_REGULAR), + list("Marine Delta Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer/marine/delta, VENDOR_ITEM_REGULAR), + list("Marine Radio Headset", floor(scale * 5), /obj/item/device/radio/headset/almayer, VENDOR_ITEM_REGULAR), + + list("WEBBINGS", -1, null, null), + list("Brown Webbing Vest", floor(scale * 1), /obj/item/clothing/accessory/storage/black_vest/brown_vest, VENDOR_ITEM_REGULAR), + list("Black Webbing Vest", floor(scale * 1), /obj/item/clothing/accessory/storage/black_vest, VENDOR_ITEM_REGULAR), + list("Webbing", floor(scale * 2), /obj/item/clothing/accessory/storage/webbing, VENDOR_ITEM_REGULAR), + list("Drop Pouch", floor(scale * 1), /obj/item/clothing/accessory/storage/droppouch, VENDOR_ITEM_REGULAR), + list("Shoulder Holster", floor(scale * 1), /obj/item/clothing/accessory/storage/holster, VENDOR_ITEM_REGULAR), list("ARMOR", -1, null, null), - list("M10 Pattern Marine Helmet", 20, /obj/item/clothing/head/helmet/marine, VENDOR_ITEM_REGULAR), - list("M3 Pattern Carrier Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padded Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), - list("M3 Pattern Padless Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), - list("M3 Pattern Ridged Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), - list("M3 Pattern Skull Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), - list("M3 Pattern Smooth Marine Armor", 20, /obj/item/clothing/suit/storage/marine/medium/smooth, VENDOR_ITEM_REGULAR), - list("M3-EOD Pattern Heavy Armor", 10, /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), - list("M3-L Pattern Light Armor", 10, /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), - - list("MASKS", -1, null, null, null), - list("Gas Mask", 20, /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), - list("Heat Absorbent Coif", 10, /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR), + list("M3 Pattern Carrier Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/carrier, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padded Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/padded, VENDOR_ITEM_REGULAR), + list("M3 Pattern Padless Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/padless, VENDOR_ITEM_REGULAR), + list("M3 Pattern Ridged Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/padless_lines, VENDOR_ITEM_REGULAR), + list("M3 Pattern Skull Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/skull, VENDOR_ITEM_REGULAR), + list("M3 Pattern Smooth Marine Armor", floor(scale * 10), /obj/item/clothing/suit/storage/marine/medium/smooth, VENDOR_ITEM_REGULAR), + list("M3-EOD Pattern Heavy Armor", floor(scale * 5), /obj/item/clothing/suit/storage/marine/heavy, VENDOR_ITEM_REGULAR), + list("M3-L Pattern Light Armor", floor(scale * 5), /obj/item/clothing/suit/storage/marine/light, VENDOR_ITEM_REGULAR), + + list("BACKPACK", -1, null, null, null), + list("Lightweight IMP Backpack", floor(scale * 10), /obj/item/storage/backpack/marine, VENDOR_ITEM_REGULAR), + list("Technician Backpack", floor(scale * 10), /obj/item/storage/backpack/marine/tech, VENDOR_ITEM_REGULAR), + list("Medical Backpack", floor(scale * 10), /obj/item/storage/backpack/marine/medic, VENDOR_ITEM_REGULAR), + list("USCM Satchel", floor(scale * 10), /obj/item/storage/backpack/marine/satchel, VENDOR_ITEM_REGULAR), + list("USCM Chestrig", floor(scale * 10), /obj/item/storage/backpack/marine/satchel/chestrig, VENDOR_ITEM_REGULAR), + list("USCM Technical Satchel", floor(scale * 10), /obj/item/storage/backpack/marine/satchel/tech, VENDOR_ITEM_REGULAR), + list("USCM Technical Chestrig", floor(scale * 10), /obj/item/storage/backpack/marine/engineerpack/welder_chestrig, VENDOR_ITEM_REGULAR), + list("Medical Satchel", floor(scale * 10), /obj/item/storage/backpack/marine/satchel/medic, VENDOR_ITEM_REGULAR), + list("Shotgun Scabbard", floor(scale * 10), /obj/item/storage/large_holster/m37, VENDOR_ITEM_REGULAR), + + list("RESTRICTED BACKPACKS", -1, null, null), + list("USCM Technician Welderpack", floor(scale * 1), /obj/item/storage/backpack/marine/engineerpack, VENDOR_ITEM_REGULAR), + list("Technician Welder-Satchel", floor(scale * 2), /obj/item/storage/backpack/marine/engineerpack/satchel, VENDOR_ITEM_REGULAR), + + list("BELTS", -1, null, null), + list("M276 Pattern Ammo Load Rig", floor(scale * 10), /obj/item/storage/belt/marine, VENDOR_ITEM_REGULAR), + list("M276 Pattern M40 Grenade Rig", floor(scale * 5), /obj/item/storage/belt/grenade, VENDOR_ITEM_REGULAR), + list("M276 Pattern Shotgun Shell Loading Rig", floor(scale * 10), /obj/item/storage/belt/shotgun, VENDOR_ITEM_REGULAR), + list("M276 Pattern General Pistol Holster Rig", floor(scale * 10), /obj/item/storage/belt/gun/m4a3, VENDOR_ITEM_REGULAR), + list("M276 Pattern M39 Holster Rig", floor(scale * 10), /obj/item/storage/large_holster/m39, VENDOR_ITEM_REGULAR), + list("M276 Pattern M39 Holster Rig And Pouch", floor(scale * 5), /obj/item/storage/belt/gun/m39, VENDOR_ITEM_REGULAR), + list("M276 Pattern M44 Holster Rig", floor(scale * 10), /obj/item/storage/belt/gun/m44, VENDOR_ITEM_REGULAR), + list("M276 Pattern M82F Holster Rig", floor(scale * 2), /obj/item/storage/belt/gun/flaregun, VENDOR_ITEM_REGULAR), + list("M276 Knife Rig (Full)", floor(scale * 10), /obj/item/storage/belt/knifepouch, VENDOR_ITEM_REGULAR), + list("M276 G8-A General Utility Pouch", floor(scale * 10), /obj/item/storage/backpack/general_belt, VENDOR_ITEM_REGULAR), + + list("POUCHES", -1, null, null, null), + list("Bayonet Sheath (Full)",floor(scale * 10), /obj/item/storage/pouch/bayonet, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Splints, Gauze, Ointment)", floor(scale * 10), /obj/item/storage/pouch/firstaid/full/alternate, VENDOR_ITEM_REGULAR), + list("First-Aid Pouch (Pill Packets)", floor(scale * 10), /obj/item/storage/pouch/firstaid/full/pills, VENDOR_ITEM_REGULAR), + list("Flare Pouch (Full)", floor(scale * 10), /obj/item/storage/pouch/flare/full, VENDOR_ITEM_REGULAR), + list("Small Document Pouch", floor(scale * 10), /obj/item/storage/pouch/document/small, VENDOR_ITEM_REGULAR), + list("Magazine Pouch", floor(scale * 10), /obj/item/storage/pouch/magazine, VENDOR_ITEM_REGULAR), + list("Shotgun Shell Pouch", floor(scale * 10), /obj/item/storage/pouch/shotgun, VENDOR_ITEM_REGULAR), + list("Medium General Pouch", floor(scale * 10), /obj/item/storage/pouch/general/medium, VENDOR_ITEM_REGULAR), + list("Pistol Magazine Pouch", floor(scale * 10), /obj/item/storage/pouch/magazine/pistol, VENDOR_ITEM_REGULAR), + list("Pistol Pouch", floor(scale * 10), /obj/item/storage/pouch/pistol, VENDOR_ITEM_REGULAR), + + list("RESTRICTED POUCHES", -1, null, null, null), + list("Construction Pouch", floor(scale * 1), /obj/item/storage/pouch/construction, VENDOR_ITEM_REGULAR), + list("Explosive Pouch", floor(scale * 1), /obj/item/storage/pouch/explosive, VENDOR_ITEM_REGULAR), + list("First Responder Pouch (Empty)", floor(scale * 2), /obj/item/storage/pouch/first_responder, VENDOR_ITEM_REGULAR), + list("Large Pistol Magazine Pouch", floor(scale * 2), /obj/item/storage/pouch/magazine/pistol/large, VENDOR_ITEM_REGULAR), + list("Tools Pouch", floor(scale * 1), /obj/item/storage/pouch/tools, VENDOR_ITEM_REGULAR), + list("Sling Pouch", floor(scale * 1), /obj/item/storage/pouch/sling, VENDOR_ITEM_REGULAR), + + list("MASK", -1, null, null, null), + list("Gas Mask", floor(scale * 10), /obj/item/clothing/mask/gas, VENDOR_ITEM_REGULAR), + list("Heat Absorbent Coif", floor(scale * 5), /obj/item/clothing/mask/rebreather/scarf, VENDOR_ITEM_REGULAR), + list("Rebreather", floor(scale * 5), /obj/item/clothing/mask/rebreather, MARINE_CAN_BUY_MASK, VENDOR_ITEM_REGULAR), + + list("MISCELLANEOUS", -1, null, null, null), + list("Ballistic goggles", floor(scale * 5), /obj/item/clothing/glasses/mgoggles, VENDOR_ITEM_REGULAR), + list("M1A1 Ballistic goggles", floor(scale * 5), /obj/item/clothing/glasses/mgoggles/v2, VENDOR_ITEM_REGULAR), + list("Prescription ballistic goggles", floor(scale * 5), /obj/item/clothing/glasses/mgoggles/prescription, VENDOR_ITEM_REGULAR), + list("Marine RPG glasses", floor(scale * 5), /obj/item/clothing/glasses/regular, VENDOR_ITEM_REGULAR), + list("M5 Integrated Gas Mask", floor(scale * 5), /obj/item/prop/helmetgarb/helmet_gasmask, VENDOR_ITEM_REGULAR), + list("M10 Helmet Netting", floor(scale * 5), /obj/item/prop/helmetgarb/netting, VENDOR_ITEM_REGULAR), + list("M10 Helmet Rain Cover", floor(scale * 5), /obj/item/prop/helmetgarb/raincover, VENDOR_ITEM_REGULAR), + list("Firearm Lubricant", floor(scale * 10), /obj/item/prop/helmetgarb/gunoil, VENDOR_ITEM_REGULAR), + list("USCM Flair", floor(scale * 10), /obj/item/prop/helmetgarb/flair_uscm, VENDOR_ITEM_REGULAR), + list("Falling Falcons Shoulder Patch", floor(scale * 10), /obj/item/clothing/accessory/patch/falcon, VENDOR_ITEM_REGULAR), + list("USCM Shoulder Patch", floor(scale * 10), /obj/item/clothing/accessory/patch, VENDOR_ITEM_REGULAR), + list("Bedroll", floor(scale * 10), /obj/item/roller/bedroll, VENDOR_ITEM_REGULAR), + + list("OPTICS", -1, null, null, null), + list("Advanced Medical Optic (CORPSMAN ONLY)", floor(scale * 2), /obj/item/device/helmet_visor/medical/advanced, VENDOR_ITEM_REGULAR), + list("Squad Optic", floor(scale * 10), /obj/item/device/helmet_visor, VENDOR_ITEM_REGULAR), ) //------------WEAPON RACKS--------------- @@ -106,7 +157,8 @@ list("UTILITIES", -1, null, null), list("M5 Bayonet", floor(scale * 25), /obj/item/attachable/bayonet, VENDOR_ITEM_REGULAR), list("M11 Throwing Knife", floor(scale * 10), /obj/item/weapon/throwing_knife, VENDOR_ITEM_REGULAR), - list("M94 Marking Flare Pack", floor(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_REGULAR) + list("M94 Marking Flare Pack", floor(scale * 10), /obj/item/storage/box/m94, VENDOR_ITEM_REGULAR), + list("Plastic Explosive", floor(scale * 2), /obj/item/explosive/plastic, VENDOR_ITEM_REGULAR), ) //------------REQ AMMUNITION VENDOR--------------- diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 00f0ad16220c..52f8bd76e894 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -417,8 +417,14 @@ var/obj/item/card/id/id_card = wearer.wear_id?.GetID() if(!istype(id_card)) return - if(!(id_card.rank in list(JOB_SO, JOB_XO, JOB_SQUAD_LEADER))) - to_chat(wearer, SPAN_WARNING("Only Staff Officers, Executive Officers and Squad Leaders are permitted to give medal recommendations!")) + + var/datum/paygrade/paygrade_actual = GLOB.paygrades[id_card.paygrade] + if(!paygrade_actual) + return + if(!istype(paygrade_actual, /datum/paygrade/marine)) //We only want marines to be able to recommend for medals + return + if(paygrade_actual.ranking < 3) //E1 starts at 0, so anyone above Corporal (ranking = 3) can recommend for medals + to_chat(wearer, SPAN_WARNING("Only officers or NCO's (ME4+) can recommend medals!")) return if(add_medal_recommendation(usr)) to_chat(usr, SPAN_NOTICE("Recommendation successfully submitted.")) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index d6b637366f55..f5ae552ea1df 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -1069,7 +1069,7 @@ GLOBAL_DATUM_INIT(supply_controller, /datum/controller/supply, new()) temp = "Thank you for your order.
" temp += "
Back Main Menu" supply_order.approvedby = usr.name - msg_admin_niche("[usr] confirmed supply order of [supply_pack.name].") + msg_admin_niche("[key_name(usr)] confirmed supply order of [supply_pack.name].") if(GLOB.supply_controller.black_market_heat == 100) GLOB.supply_controller.black_market_investigation() var/pack_source = "Cargo Hold" diff --git a/code/modules/admin/topic/topic.dm b/code/modules/admin/topic/topic.dm index ecef2627ed3c..000d94e70866 100644 --- a/code/modules/admin/topic/topic.dm +++ b/code/modules/admin/topic/topic.dm @@ -1950,7 +1950,7 @@ alert("Removed:\n" + jointext(removed_paths, "\n")) var/list/offset = splittext(href_list["offset"],",") - var/number = dd_range(1, 100, text2num(href_list["object_count"])) + var/number = clamp(text2num(href_list["object_count"]), 1, 100) var/X = offset.len > 0 ? text2num(offset[1]) : 0 var/Y = offset.len > 1 ? text2num(offset[2]) : 0 var/Z = offset.len > 2 ? text2num(offset[3]) : 0 diff --git a/code/modules/admin/topic/topic_events.dm b/code/modules/admin/topic/topic_events.dm index 7d7c5ed89057..264b91d982de 100644 --- a/code/modules/admin/topic/topic_events.dm +++ b/code/modules/admin/topic/topic_events.dm @@ -165,8 +165,8 @@ alert("Select fewer paths, (max 1)") return - var/humans_to_spawn = dd_range(1, 100, text2num(href_list["object_count"])) - var/range_to_spawn_on = dd_range(0, 10, text2num(href_list["object_range"])) + var/humans_to_spawn = clamp(text2num(href_list["object_count"]), 1, 100) + var/range_to_spawn_on = clamp(text2num(href_list["object_range"]), 0, 10) var/free_the_humans = FALSE var/offer_as_ert = FALSE @@ -299,8 +299,8 @@ alert("Select fewer xeno paths, (max 1)") return - var/xenos_to_spawn = dd_range(1, 100, text2num(href_list["object_count"])) - var/range_to_spawn_on = dd_range(0, 10, text2num(href_list["object_range"])) + var/xenos_to_spawn = clamp(text2num(href_list["object_count"]), 1, 100) + var/range_to_spawn_on = clamp(text2num(href_list["object_range"]), 0, 10) var/free_the_xenos = FALSE var/offer_as_ert = FALSE diff --git a/code/modules/admin/verbs/mooc.dm b/code/modules/admin/verbs/mooc.dm index 22d9d2530924..dc9f39205566 100644 --- a/code/modules/admin/verbs/mooc.dm +++ b/code/modules/admin/verbs/mooc.dm @@ -20,9 +20,8 @@ if(M.client && (!M.client.admin_holder || !(M.client.admin_holder.rights & R_MOD))) // Send to marines who are non-staff to_chat_spaced(M, margin_top = 0.5, margin_bottom = 0.5, html = SPAN_MOOC("MOOC: [src.key]([src.admin_holder.rank]): [msg]")) - var/list/synthetics = getsynths() - for(var/mob/M in synthetics) - if(M.client && !M.client.admin_holder) + for(var/mob/M in GLOB.human_mob_list) + if(issynth(M) && M.client && !M.client.admin_holder) to_chat_spaced(M, margin_top = 0.5, margin_bottom = 0.5, html = SPAN_MOOC("MOOC: [src.key]([src.admin_holder.rank]): [msg]")) for(var/mob/dead/observer/M in GLOB.observer_list) diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm index a07e83db7381..9c253fcb0371 100644 --- a/code/modules/clothing/clothing_accessories.dm +++ b/code/modules/clothing/clothing_accessories.dm @@ -118,34 +118,52 @@ A.on_removed(user, src) LAZYREMOVE(accessories, A) + + var/any_removable = FALSE + for(var/obj/item/clothing/accessory/accessory in accessories) + if(accessory.removable) + any_removable = TRUE + break + if(!any_removable) + verbs -= /obj/item/clothing/proc/removetie_verb + update_clothing_icon() /obj/item/clothing/proc/removetie_verb() set name = "Remove Accessory" set category = "Object" set src in usr - if(!isliving(usr)) + + remove_accessory(usr, pick_accessory_to_remove(usr, usr)) + +/obj/item/clothing/proc/pick_accessory_to_remove(mob/user, mob/targetmob) + if(!isliving(user)) return - if(usr.stat) + if(user.stat) return if(!LAZYLEN(accessories)) return - var/obj/item/clothing/accessory/A + var/obj/item/clothing/accessory/accessory var/list/removables = list() + var/list/choice_to_accessory = list() for(var/obj/item/clothing/accessory/ass in accessories) - if(ass.removable) - removables |= ass - if(LAZYLEN(accessories) > 1) - A = tgui_input_list(usr, "Select an accessory to remove from [src]", "Remove accessory", removables) + if(!ass.removable) + continue + var/capitalized_name = capitalize_first_letters(ass.name) + removables[capitalized_name] = image(icon = ass.icon, icon_state = ass.icon_state) + choice_to_accessory[capitalized_name] = ass + + if(LAZYLEN(removables) > 1) + var/use_radials = user.client.prefs?.no_radials_preference ? FALSE : TRUE + var/choice = use_radials ? show_radial_menu(user, targetmob, removables, require_near = FALSE) : tgui_input_list(user, "Select an accessory to remove from [src]", "Remove accessory", removables) + accessory = choice_to_accessory[choice] else - A = LAZYACCESS(accessories, 1) - if(!usr.Adjacent(src)) - to_chat(usr, SPAN_WARNING("You're too far away!")) + accessory = choice_to_accessory[removables[1]] + if(!user.Adjacent(src)) + to_chat(user, SPAN_WARNING("You're too far away!")) return - src.remove_accessory(usr,A) - removables -= A - if(!removables.len) - verbs -= /obj/item/clothing/proc/removetie_verb + + return accessory /obj/item/clothing/emp_act(severity) . = ..() diff --git a/code/modules/clothing/under/marine_uniform.dm b/code/modules/clothing/under/marine_uniform.dm index 92eeea638fae..c7353840d439 100644 --- a/code/modules/clothing/under/marine_uniform.dm +++ b/code/modules/clothing/under/marine_uniform.dm @@ -998,6 +998,31 @@ desc = "A cheap uniform made for Synthetic labor. Tomorrow, Together." icon_state = "working_joe" worn_state = "working_joe" + flags_item = NO_CRYO_STORE + var/obj/structure/machinery/camera/camera + +/obj/item/clothing/under/rank/synthetic/joe/Initialize() + . = ..() + camera = new /obj/structure/machinery/camera/autoname/almayer/containment/ares(src) + +/obj/item/clothing/under/rank/synthetic/joe/Destroy() + QDEL_NULL(camera) + return ..() + +/obj/item/clothing/under/rank/synthetic/joe/equipped(mob/living/carbon/human/mob, slot) + if(camera) + camera.c_tag = mob.name + ..() + +/obj/item/clothing/under/rank/synthetic/joe/dropped(mob/living/carbon/human/mob) + if(camera) + camera.c_tag = "3RR0R" + ..() + +/obj/item/clothing/under/rank/synthetic/joe/get_examine_text(mob/user) + . = ..() + if(camera) + . += SPAN_ORANGE("There is a small camera mounted to the front.") /obj/item/clothing/under/rank/synthetic/joe/engi name = "\improper Working Joe Hazardous Uniform" diff --git a/code/modules/cm_marines/marines_consoles.dm b/code/modules/cm_marines/marines_consoles.dm index e02bb930d416..6d1aba4aca70 100644 --- a/code/modules/cm_marines/marines_consoles.dm +++ b/code/modules/cm_marines/marines_consoles.dm @@ -8,6 +8,14 @@ #define CARDCON_DEPARTMENT_ENGINEERING "Engineering" #define CARDCON_DEPARTMENT_COMMAND "Command" +// Weyland Yutani Categories +#define CARDCON_DEPARTMENT_CORP_LEAD "Corporate Leadership" +#define CARDCON_DEPARTMENT_CORP_SECURITY "Corporate Security" +#define CARDCON_DEPARTMENT_CORPORATE "Corporate Employees" +#define CARDCON_DEPARTMENT_PMC "PMC Combat Ops" +#define CARDCON_DEPARTMENT_INSPECTION "PMC Investigations" +#define CARDCON_DEPARTMENT_SPECIALTY "PMC Specialists" + /obj/structure/machinery/computer/card name = "Identification Computer" desc = "Terminal for programming USCM employee ID card access." @@ -20,9 +28,14 @@ var/list/factions = list(FACTION_MARINE) var/printing - var/is_centcom = FALSE + var/is_weyland = FALSE var/authenticated = FALSE +/obj/structure/machinery/computer/card/wey_yu + is_weyland = TRUE + req_access = list(ACCESS_WY_DATABASE) + factions = list(FACTION_WY, FACTION_PMC) + /obj/structure/machinery/computer/card/proc/authenticate(mob/user, obj/item/card/id/id_card) if(!id_card) visible_message("[SPAN_BOLD("[src]")] states, \"AUTH ERROR: Authority confirmation card is missing!\"") @@ -192,7 +205,7 @@ target_id_card.assignment = custom_name else var/list/new_access = list() - if(is_centcom) + if(is_weyland) new_access = get_access(ACCESS_LIST_WY_ALL) else var/datum/job/job = GLOB.RoleAuthority.roles_for_mode[target] @@ -223,7 +236,7 @@ log_idmod(target_id_card, " [user.real_name] granted [access_type] IFF. ", key_name_admin(user)) return TRUE access_type = text2num(params["access_target"]) - if(access_type in (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN))) + if(access_type in (is_weyland ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN))) if(access_type in target_id_card.access) target_id_card.access -= access_type log_idmod(target_id_card, " [user.real_name] revoked access '[get_access_desc(access_type)]'. ", key_name_admin(user)) @@ -235,7 +248,7 @@ if(!authenticated || !target_id_card) return - target_id_card.access |= (is_centcom ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN)) + target_id_card.access |= (is_weyland ? get_access(ACCESS_LIST_WY_ALL) : get_access(ACCESS_LIST_MARINE_MAIN)) target_id_card.faction_group |= factions log_idmod(target_id_card, " [user.real_name] granted the ID all access and USCM IFF. ", key_name_admin(user)) return TRUE @@ -290,12 +303,19 @@ /obj/structure/machinery/computer/card/ui_static_data(mob/user) var/list/data = list() data["station_name"] = MAIN_SHIP_NAME - data["centcom_access"] = is_centcom + data["weyland_access"] = is_weyland data["manifest"] = GLOB.data_core.get_manifest(FALSE, FALSE, TRUE) var/list/departments - if(is_centcom) - departments = list("CentCom" = get_all_centcom_jobs()) + if(is_weyland) + departments = list( + CARDCON_DEPARTMENT_CORP_LEAD = ROLES_WY_LEADERSHIP, + CARDCON_DEPARTMENT_CORP_SECURITY = ROLES_WY_GOONS, + CARDCON_DEPARTMENT_CORPORATE = ROLES_WY_CORPORATE, + CARDCON_DEPARTMENT_PMC = ROLES_WY_PMC, + CARDCON_DEPARTMENT_SPECIALTY = ROLES_WY_PMC_AUX, + CARDCON_DEPARTMENT_INSPECTION = ROLES_WY_PMC_INSPEC, + ) else if(Check_WO()) // I am not sure about WOs departments so it may need adjustment departments = list( @@ -332,18 +352,26 @@ data["jobs"][department] = department_jobs var/list/regions = list() - for(var/i in 1 to 7) + for(var/i in 1 to is_weyland ? 6 : 7) var/list/accesses = list() - for(var/access in get_region_accesses(i)) - if (get_access_desc(access)) - accesses += list(list( - "desc" = replacetext(get_access_desc(access), " ", " "), - "ref" = access, - )) + if(!is_weyland) + for(var/access in get_region_accesses(i)) + if(get_access_desc(access)) + accesses += list(list( + "desc" = replacetext(get_access_desc(access), " ", " "), + "ref" = access, + )) + else + for(var/access in get_region_accesses_wy(i)) + if(get_weyland_access_desc(access)) + accesses += list(list( + "desc" = replacetext(get_weyland_access_desc(access), " ", " "), + "ref" = access, + )) regions += list(list( - "name" = get_region_accesses_name(i), + "name" = is_weyland ? get_region_accesses_name_wy(i) : get_region_accesses_name(i), "regid" = i, "accesses" = accesses )) @@ -475,6 +503,13 @@ #undef CARDCON_DEPARTMENT_ENGINEERING #undef CARDCON_DEPARTMENT_COMMAND +#undef CARDCON_DEPARTMENT_CORP_LEAD +#undef CARDCON_DEPARTMENT_CORP_SECURITY +#undef CARDCON_DEPARTMENT_CORPORATE +#undef CARDCON_DEPARTMENT_PMC +#undef CARDCON_DEPARTMENT_INSPECTION +#undef CARDCON_DEPARTMENT_SPECIALTY + //This console changes a marine's squad. It's very simple. //It also does not: change or increment the squad count (used in the login randomizer), nor does it check for jobs. //Which means you could get sillyiness like "Alpha Sulaco Chief Medical Officer" or "Delta Logistics Officer". @@ -724,7 +759,10 @@ /obj/structure/machinery/computer/crew/clf faction = FACTION_CLF -/obj/structure/machinery/computer/crew/pmc +/obj/structure/machinery/computer/crew/wey_yu + faction = FACTION_WY + +/obj/structure/machinery/computer/crew/wey_yu/pmc faction = FACTION_PMC /obj/structure/machinery/computer/crew/colony @@ -1029,7 +1067,8 @@ GLOBAL_LIST_EMPTY_TYPED(crewmonitor, /datum/crewmonitor) JOB_JUNIOR_EXECUTIVE = 24, // 30-39: Security JOB_WY_GOON_LEAD = 30, - JOB_WY_GOON = 31, + JOB_WY_GOON_TECH = 32, + JOB_WY_GOON = 32, // 40-49: MedSci JOB_PMC_SYNTH = 40, JOB_PMC_XENO_HANDLER = 41, diff --git a/code/modules/defenses/bell_tower.dm b/code/modules/defenses/bell_tower.dm index b4741734e0f4..68d58f02b481 100644 --- a/code/modules/defenses/bell_tower.dm +++ b/code/modules/defenses/bell_tower.dm @@ -18,7 +18,7 @@ can_be_near_defense = TRUE choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN), ) selected_categories = list( diff --git a/code/modules/defenses/defenses.dm b/code/modules/defenses/defenses.dm index b5e5cdf55766..a29941fd0c6c 100644 --- a/code/modules/defenses/defenses.dm +++ b/code/modules/defenses/defenses.dm @@ -138,11 +138,11 @@ switch(selection) if(FACTION_MARINE) faction_group = FACTION_LIST_MARINE - if(FACTION_WEYLAND) + if(SENTRY_FACTION_WEYLAND) faction_group = FACTION_LIST_MARINE_WY - if(FACTION_HUMAN) + if(SENTRY_FACTION_HUMAN) faction_group = FACTION_LIST_HUMANOID - if(FACTION_COLONY) + if(SENTRY_FACTION_COLONY) faction_group = list(FACTION_MARINE, FACTION_COLONIST) diff --git a/code/modules/defenses/planted_flag.dm b/code/modules/defenses/planted_flag.dm index 12bcab9b0475..fc50b6ba53f0 100644 --- a/code/modules/defenses/planted_flag.dm +++ b/code/modules/defenses/planted_flag.dm @@ -16,7 +16,7 @@ can_be_near_defense = TRUE choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN), ) selected_categories = list( diff --git a/code/modules/defenses/sentry.dm b/code/modules/defenses/sentry.dm index 543dfcefe5bc..3a8a50b5eed7 100644 --- a/code/modules/defenses/sentry.dm +++ b/code/modules/defenses/sentry.dm @@ -45,7 +45,7 @@ /// action list is configurable for all subtypes, this is just an example choice_categories = list( // SENTRY_CATEGORY_ROF = list(ROF_SINGLE, ROF_BURST, ROF_FULL_AUTO), - SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN), ) selected_categories = list( @@ -523,8 +523,8 @@ /obj/structure/machinery/defenses/sentry/premade/deployable/colony/Initialize() . = ..() - choice_categories[SENTRY_CATEGORY_IFF] = list(FACTION_COLONY, FACTION_WEYLAND) - selected_categories[SENTRY_CATEGORY_IFF] = FACTION_COLONY + choice_categories[SENTRY_CATEGORY_IFF] = list(SENTRY_FACTION_COLONY, SENTRY_FACTION_WEYLAND) + selected_categories[SENTRY_CATEGORY_IFF] = SENTRY_FACTION_COLONY /obj/structure/machinery/defenses/sentry/premade/deployable/almayer name = "UA-635C Static Gauss Turret" @@ -579,7 +579,7 @@ handheld_type = /obj/item/defenses/handheld/sentry/dmr choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN), ) selected_categories = list( diff --git a/code/modules/defenses/sentry_flamer.dm b/code/modules/defenses/sentry_flamer.dm index f884b4ec5d14..711bdaa54857 100644 --- a/code/modules/defenses/sentry_flamer.dm +++ b/code/modules/defenses/sentry_flamer.dm @@ -11,7 +11,7 @@ choice_categories = list( // SENTRY_CATEGORY_ROF = list(ROF_SINGLE, ROF_FULL_AUTO), - SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN), ) selected_categories = list( diff --git a/code/modules/defenses/tesla_coil.dm b/code/modules/defenses/tesla_coil.dm index cb0646b29775..0eab59e7d7c4 100644 --- a/code/modules/defenses/tesla_coil.dm +++ b/code/modules/defenses/tesla_coil.dm @@ -20,7 +20,7 @@ has_camera = FALSE choice_categories = list( - SENTRY_CATEGORY_IFF = list(FACTION_MARINE, FACTION_WEYLAND, FACTION_HUMAN), + SENTRY_CATEGORY_IFF = list(FACTION_MARINE, SENTRY_FACTION_WEYLAND, SENTRY_FACTION_HUMAN), ) selected_categories = list( diff --git a/code/modules/gear_presets/uscm_medical.dm b/code/modules/gear_presets/uscm_medical.dm index 14db97b35229..019095f9ce38 100644 --- a/code/modules/gear_presets/uscm_medical.dm +++ b/code/modules/gear_presets/uscm_medical.dm @@ -78,7 +78,7 @@ back_item = /obj/item/storage/backpack/marine new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) - new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/green(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/blue(new_human), WEAR_BODY) new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) @@ -88,6 +88,15 @@ assignment = JOB_SURGEON +/datum/equipment_preset/uscm_ship/uscm_medical/doctor/surgeon/load_gear(mob/living/carbon/human/new_human) + var/back_item = /obj/item/storage/backpack/marine/satchel + if (new_human.client?.prefs && new_human.client.prefs.backbag == 1) + back_item = /obj/item/storage/backpack/marine + + new_human.equip_to_slot_or_del(new back_item(new_human), WEAR_BACK) + new_human.equip_to_slot_or_del(new /obj/item/clothing/under/rank/medical/green(new_human), WEAR_BODY) + new_human.equip_to_slot_or_del(new /obj/item/clothing/shoes/white(new_human), WEAR_FEET) + //*****************************************************************************************************/ /datum/equipment_preset/uscm_ship/uscm_medical/nurse diff --git a/code/modules/gear_presets/uscm_ship.dm b/code/modules/gear_presets/uscm_ship.dm index cda77b4dd4f4..9bccf2a2ec78 100644 --- a/code/modules/gear_presets/uscm_ship.dm +++ b/code/modules/gear_presets/uscm_ship.dm @@ -469,6 +469,16 @@ //*****************************************************************************************************/ +/datum/equipment_preset/uscm_ship/commander/visitor + name = "USCM Observer (Major) (VO)" + flags = EQUIPMENT_PRESET_EXTRA + + assignment = JOB_USCM_OBSV + rank = JOB_USCM_OBSV + role_comm_title = "VO" + +//*****************************************************************************************************/ + /datum/equipment_preset/uscm_ship/commander/council name = "USCM Commanding Officer (CO+)" flags = EQUIPMENT_PRESET_START_OF_ROUND|EQUIPMENT_PRESET_MARINE diff --git a/code/modules/mob/dead/observer/orbit.dm b/code/modules/mob/dead/observer/orbit.dm index d6b104398f99..1cb301e96c07 100644 --- a/code/modules/mob/dead/observer/orbit.dm +++ b/code/modules/mob/dead/observer/orbit.dm @@ -118,6 +118,7 @@ var/datum/caste_datum/caste = xeno.caste serialized["caste"] = caste.caste_type serialized["icon"] = caste.minimap_icon + serialized["hivenumber"] = xeno.hivenumber xenos += list(serialized) continue diff --git a/code/modules/mob/living/carbon/human/human_stripping.dm b/code/modules/mob/living/carbon/human/human_stripping.dm index e346a0a7368b..210e5f266fe0 100644 --- a/code/modules/mob/living/carbon/human/human_stripping.dm +++ b/code/modules/mob/living/carbon/human/human_stripping.dm @@ -129,13 +129,12 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list( return var/obj/item/clothing/under/uniform = sourcemob.w_uniform - if(!LAZYLEN(uniform.accessories)) - return FALSE - var/obj/item/clothing/accessory/accessory = LAZYACCESS(uniform.accessories, 1) - if(LAZYLEN(uniform.accessories) > 1) - accessory = tgui_input_list(user, "Select an accessory to remove from [uniform]", "Remove accessory", uniform.accessories) - if(!istype(accessory)) + + var/obj/item/clothing/accessory/accessory = uniform.pick_accessory_to_remove(user, sourcemob) + + if(!accessory) return + sourcemob.attack_log += text("\[[time_stamp()]\] Has had their accessory ([accessory]) removed by [key_name(user)]") user.attack_log += text("\[[time_stamp()]\] Attempted to remove [key_name(sourcemob)]'s' accessory ([accessory])") if(istype(accessory, /obj/item/clothing/accessory/holobadge) || istype(accessory, /obj/item/clothing/accessory/medal)) @@ -231,11 +230,11 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list( if(tag.dogtag_taken) to_chat(user, SPAN_WARNING("Someone's already taken [sourcemob]'s information tag.")) return - + if(sourcemob.stat != DEAD) to_chat(user, SPAN_WARNING("You can't take a dogtag's information tag while its owner is alive.")) return - + to_chat(user, SPAN_NOTICE("You take [sourcemob]'s information tag, leaving the ID tag")) tag.dogtag_taken = TRUE tag.icon_state = "dogtag_taken" @@ -244,7 +243,7 @@ GLOBAL_LIST_INIT(strippable_human_items, create_strippable_list(list( newtag.fallen_assgns = list(tag.assignment) newtag.fallen_blood_types = list(tag.blood_type) user.put_in_hands(newtag) - + /datum/strippable_item/mob_item_slot/belt diff --git a/code/modules/mob/living/carbon/xenomorph/Abilities.dm b/code/modules/mob/living/carbon/xenomorph/Abilities.dm index ec024c3b5605..09b99871e936 100644 --- a/code/modules/mob/living/carbon/xenomorph/Abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/Abilities.dm @@ -29,10 +29,6 @@ to_chat(X, SPAN_XENOWARNING("We can't do that from there.")) return - if(SSticker?.mode?.hardcore) - to_chat(X, SPAN_XENOWARNING("A certain presence is preventing us from digging tunnels here.")) - return - if(!T.can_dig_xeno_tunnel() || !is_ground_level(T.z)) to_chat(X, SPAN_XENOWARNING("We scrape around, but we can't seem to dig through that kind of floor.")) return diff --git a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm index 747a3f90a691..09c6006536b0 100644 --- a/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm +++ b/code/modules/mob/living/carbon/xenomorph/abilities/burrower/burrower_abilities.dm @@ -11,6 +11,11 @@ /datum/action/xeno_action/activable/burrow/use_ability(atom/A) var/mob/living/carbon/xenomorph/X = owner + + if(SSticker?.mode?.hardcore) + to_chat(X, SPAN_XENOWARNING("A certain presence is preventing us from burrowing here.")) + return + if(HAS_TRAIT(X, TRAIT_ABILITY_BURROWED)) X.tunnel(get_turf(A)) else diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm index fdfc18390dbe..e3324efbbc1a 100644 --- a/code/modules/power/smes_construction.dm +++ b/code/modules/power/smes_construction.dm @@ -39,7 +39,7 @@ capacity += C.ChargeCapacity input_level_max += C.IOCapacity output_level_max += C.IOCapacity - charge = between(0, charge, capacity) + charge = clamp(charge, 0, capacity) return 1 else return 0 diff --git a/code/modules/reagents/chemistry_machinery/acid_harness.dm b/code/modules/reagents/chemistry_machinery/acid_harness.dm index 4fa087efc54f..874737ebef33 100644 --- a/code/modules/reagents/chemistry_machinery/acid_harness.dm +++ b/code/modules/reagents/chemistry_machinery/acid_harness.dm @@ -107,41 +107,41 @@ // damage - damagelist["Brute"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRUTE), "value" = ACID_SCAN_DAMAGE_BRUTE) - damagelist["Burn"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BURN), "value" = ACID_SCAN_DAMAGE_BURN) - damagelist["Toxin"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_TOXIN), "value" = ACID_SCAN_DAMAGE_TOXIN) - damagelist["Oxygen"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_OXYGEN), "value" = ACID_SCAN_DAMAGE_OXYGEN) - damagelist["Genetic"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_CLONE), "value" = ACID_SCAN_DAMAGE_CLONE) - damagelist["Heart"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_HEART), "value" = ACID_SCAN_DAMAGE_HEART) - damagelist["Liver"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LIVER), "value" = ACID_SCAN_DAMAGE_LIVER) - damagelist["Lungs"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LUNGS), "value" = ACID_SCAN_DAMAGE_LUNGS) - damagelist["Kidneys"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_KIDNEYS), "value" = ACID_SCAN_DAMAGE_KIDNEYS) - damagelist["Brain"] = list("flag" = check_bitflag(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRAIN), "value" = ACID_SCAN_DAMAGE_BRAIN) + damagelist["Brute"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRUTE), "value" = ACID_SCAN_DAMAGE_BRUTE) + damagelist["Burn"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BURN), "value" = ACID_SCAN_DAMAGE_BURN) + damagelist["Toxin"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_TOXIN), "value" = ACID_SCAN_DAMAGE_TOXIN) + damagelist["Oxygen"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_OXYGEN), "value" = ACID_SCAN_DAMAGE_OXYGEN) + damagelist["Genetic"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_CLONE), "value" = ACID_SCAN_DAMAGE_CLONE) + damagelist["Heart"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_HEART), "value" = ACID_SCAN_DAMAGE_HEART) + damagelist["Liver"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LIVER), "value" = ACID_SCAN_DAMAGE_LIVER) + damagelist["Lungs"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_LUNGS), "value" = ACID_SCAN_DAMAGE_LUNGS) + damagelist["Kidneys"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_KIDNEYS), "value" = ACID_SCAN_DAMAGE_KIDNEYS) + damagelist["Brain"] = list("flag" = HAS_FLAG(acid_core.inject_damage_types, ACID_SCAN_DAMAGE_BRAIN), "value" = ACID_SCAN_DAMAGE_BRAIN) // conditions - conditionslist["Vitals Level"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_VITALS), "value" = ACID_SCAN_CONDITION_VITALS) - conditionslist["Bleeding"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING), "value" = ACID_SCAN_CONDITION_BLEEDING) - conditionslist["Internal"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING_INTERNAL), "value" = ACID_SCAN_CONDITION_BLEEDING_INTERNAL) - conditionslist["Bloodloss"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLOODLOSS_HIGH), "value" = ACID_SCAN_CONDITION_BLOODLOSS_HIGH) - conditionslist["Fracture"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_FRACTURE), "value" = ACID_SCAN_CONDITION_FRACTURE) - conditionslist["Splinted"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_SPLINT), "value" = ACID_SCAN_CONDITION_SPLINT) - conditionslist["Organ Damage"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_DAMAGED), "value" = ACID_SCAN_CONDITION_ORGAN_DAMAGED) - conditionslist["Organ Failure"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_FAILURE), "value" = ACID_SCAN_CONDITION_ORGAN_FAILURE) - conditionslist["Death"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEATH), "value" = ACID_SCAN_CONDITION_DEATH) - conditionslist["Defibrillation"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEFIB), "value" = ACID_SCAN_CONDITION_DEFIB) - conditionslist["Concussion"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_CONCUSSION), "value" = ACID_SCAN_CONDITION_CONCUSSION) - conditionslist["Intoxication"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_INTOXICATION), "value" = ACID_SCAN_CONDITION_INTOXICATION) - conditionslist["Foreign Object"] = list("flag" = check_bitflag(acid_core.inject_conditions, ACID_SCAN_CONDITION_FOREIGN_OBJECT), "value" = ACID_SCAN_CONDITION_FOREIGN_OBJECT) + conditionslist["Vitals Level"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_VITALS), "value" = ACID_SCAN_CONDITION_VITALS) + conditionslist["Bleeding"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING), "value" = ACID_SCAN_CONDITION_BLEEDING) + conditionslist["Internal"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLEEDING_INTERNAL), "value" = ACID_SCAN_CONDITION_BLEEDING_INTERNAL) + conditionslist["Bloodloss"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_BLOODLOSS_HIGH), "value" = ACID_SCAN_CONDITION_BLOODLOSS_HIGH) + conditionslist["Fracture"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_FRACTURE), "value" = ACID_SCAN_CONDITION_FRACTURE) + conditionslist["Splinted"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_SPLINT), "value" = ACID_SCAN_CONDITION_SPLINT) + conditionslist["Organ Damage"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_DAMAGED), "value" = ACID_SCAN_CONDITION_ORGAN_DAMAGED) + conditionslist["Organ Failure"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_ORGAN_FAILURE), "value" = ACID_SCAN_CONDITION_ORGAN_FAILURE) + conditionslist["Death"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEATH), "value" = ACID_SCAN_CONDITION_DEATH) + conditionslist["Defibrillation"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_DEFIB), "value" = ACID_SCAN_CONDITION_DEFIB) + conditionslist["Concussion"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_CONCUSSION), "value" = ACID_SCAN_CONDITION_CONCUSSION) + conditionslist["Intoxication"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_INTOXICATION), "value" = ACID_SCAN_CONDITION_INTOXICATION) + conditionslist["Foreign Object"] = list("flag" = HAS_FLAG(acid_core.inject_conditions, ACID_SCAN_CONDITION_FOREIGN_OBJECT), "value" = ACID_SCAN_CONDITION_FOREIGN_OBJECT) // vitals - vitalslist["Optimal"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_OPTIMAL), "value" = ACID_VITALS_OPTIMAL) - vitalslist["Nominal"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_NOMINAL), "value" = ACID_VITALS_NOMINAL) - vitalslist["Low"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_DROPPING), "value" = ACID_VITALS_DROPPING) - vitalslist["Very low"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_LOW), "value" = ACID_VITALS_LOW) - vitalslist["Critical"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_CRITICAL), "value" = ACID_VITALS_CRITICAL) - vitalslist["Emergency"] = list("flag" = check_bitflag(acid_core.inject_vitals, ACID_VITALS_EMERGENCY), "value" = ACID_VITALS_EMERGENCY) + vitalslist["Optimal"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_OPTIMAL), "value" = ACID_VITALS_OPTIMAL) + vitalslist["Nominal"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_NOMINAL), "value" = ACID_VITALS_NOMINAL) + vitalslist["Low"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_DROPPING), "value" = ACID_VITALS_DROPPING) + vitalslist["Very low"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_LOW), "value" = ACID_VITALS_LOW) + vitalslist["Critical"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_CRITICAL), "value" = ACID_VITALS_CRITICAL) + vitalslist["Emergency"] = list("flag" = HAS_FLAG(acid_core.inject_vitals, ACID_VITALS_EMERGENCY), "value" = ACID_VITALS_EMERGENCY) // compile above lists into config list diff --git a/code/modules/reagents/chemistry_machinery/chem_simulator.dm b/code/modules/reagents/chemistry_machinery/chem_simulator.dm index 3c096568e0c8..fd14698619ad 100644 --- a/code/modules/reagents/chemistry_machinery/chem_simulator.dm +++ b/code/modules/reagents/chemistry_machinery/chem_simulator.dm @@ -136,7 +136,7 @@ data["property_data_list"] = list() for(var/datum/chem_property/P in GLOB.chemical_data.research_property_data) data["property_codings"][P.name] = P.code - if(template_filter && !check_bitflag(P.category, template_filter)) + if(template_filter && !HAS_FLAG(P.category, template_filter)) continue data["property_data_list"][P.name] = P.level data["property_data_list"] = sortAssoc(data["property_data_list"]) @@ -144,18 +144,18 @@ data["target_property_list"] = list() for(var/datum/chem_property/P in creation_template) data["target_property_list"][P.name] = P.level - if(template_filter && !check_bitflag(P.category, template_filter)) + if(template_filter && !HAS_FLAG(P.category, template_filter)) continue //Override the editor level with the enabled property level data["property_data_list"][P.name] = P.level data["template_filter"] = list( - "MED" = list(check_bitflag(template_filter, PROPERTY_TYPE_MEDICINE), PROPERTY_TYPE_MEDICINE), - "TOX" = list(check_bitflag(template_filter, PROPERTY_TYPE_TOXICANT), PROPERTY_TYPE_TOXICANT), - "STI" = list(check_bitflag(template_filter, PROPERTY_TYPE_STIMULANT), PROPERTY_TYPE_STIMULANT), - "REA" = list(check_bitflag(template_filter, PROPERTY_TYPE_REACTANT), PROPERTY_TYPE_REACTANT), - "IRR" = list(check_bitflag(template_filter, PROPERTY_TYPE_IRRITANT), PROPERTY_TYPE_IRRITANT), - "MET" = list(check_bitflag(template_filter, PROPERTY_TYPE_METABOLITE), PROPERTY_TYPE_METABOLITE) + "MED" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_MEDICINE), PROPERTY_TYPE_MEDICINE), + "TOX" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_TOXICANT), PROPERTY_TYPE_TOXICANT), + "STI" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_STIMULANT), PROPERTY_TYPE_STIMULANT), + "REA" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_REACTANT), PROPERTY_TYPE_REACTANT), + "IRR" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_IRRITANT), PROPERTY_TYPE_IRRITANT), + "MET" = list(HAS_FLAG(template_filter, PROPERTY_TYPE_METABOLITE), PROPERTY_TYPE_METABOLITE) ) else if(target && target.data && target.completed) diff --git a/colonialmarines.dme b/colonialmarines.dme index e7f280cd99df..e97ca229b9d8 100644 --- a/colonialmarines.dme +++ b/colonialmarines.dme @@ -829,6 +829,7 @@ #include "code\game\jobs\job\special\provost.dm" #include "code\game\jobs\job\special\uaac.dm" #include "code\game\jobs\job\special\uscm.dm" +#include "code\game\jobs\job\special\weyland_yutani.dm" #include "code\game\machinery\aicore_lockdown.dm" #include "code\game\machinery\air_alarm.dm" #include "code\game\machinery\air_sensor.dm" diff --git a/dependencies.sh b/dependencies.sh index e558b0087f91..1fd24f763c6c 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -8,7 +8,7 @@ export BYOND_MAJOR=515 export BYOND_MINOR=1627 #rust_g git tag -export RUST_G_VERSION=2.1.0 +export RUST_G_VERSION=3.3.0 #node version export NODE_VERSION=20 diff --git a/html/changelogs/AutoChangeLog-pr-6330.yml b/html/changelogs/AutoChangeLog-pr-6330.yml new file mode 100644 index 000000000000..bbc7333cfcc1 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6330.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Adds USCM Observer preset, a copy of CO with a different name." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6333.yml b/html/changelogs/AutoChangeLog-pr-6333.yml new file mode 100644 index 000000000000..626edf61ef08 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6333.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Added a print button to the ASRS audit log." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6343.yml b/html/changelogs/AutoChangeLog-pr-6343.yml new file mode 100644 index 000000000000..9491814ce471 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6343.yml @@ -0,0 +1,4 @@ +author: "TheGamerdk" +delete-after: True +changes: + - rscadd: "All officers and NCO's can now recommend people for medals." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6344.yml b/html/changelogs/AutoChangeLog-pr-6344.yml new file mode 100644 index 000000000000..03b8d2a783ff --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6344.yml @@ -0,0 +1,4 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Added cameras to Working Joe uniforms." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6354.yml b/html/changelogs/AutoChangeLog-pr-6354.yml new file mode 100644 index 000000000000..c41ed529f741 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6354.yml @@ -0,0 +1,4 @@ +author: "coldironwarrior" +delete-after: True +changes: + - rscadd: "Doctors will spawn in dark blue scrubs by default; Setting your preferred job title to \"Surgeon\" for doctor roles will now spawn you in green scrubs" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6365.yml b/html/changelogs/AutoChangeLog-pr-6365.yml new file mode 100644 index 000000000000..6c8802948832 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6365.yml @@ -0,0 +1,5 @@ +author: "Huffie56" +delete-after: True +changes: + - maptweak: "remove emergency shutter that aren't on the frontier between two areas." + - maptweak: "added emergency shutter that are missing on the frontier between two areas." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6370.yml b/html/changelogs/AutoChangeLog-pr-6370.yml new file mode 100644 index 000000000000..a47243cfe740 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6370.yml @@ -0,0 +1,5 @@ +author: "vero5123" +delete-after: True +changes: + - bugfix: "Fixes overwatch console coordinate comment UI crash" + - bugfix: "Fixes chat UI crash after entering a custom font" \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6372.yml b/html/changelogs/AutoChangeLog-pr-6372.yml new file mode 100644 index 000000000000..d8ac05744dd9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6372.yml @@ -0,0 +1,9 @@ +author: "realforest2001" +delete-after: True +changes: + - bugfix: "Changing an Identification Computer to is_weyland (formerly is_centcom) now works correctly and allows assignment of corporate accesses or presets." + - code_imp: "Added two procs for interpreting WY access information in the UI." + - code_imp: "Added separate role groups for PMC and Corporate job defines." + - rscadd: "Added ACCESS_WY_DATABASE as a requirement to use the WY subtype console." + - rscadd: "Added a WY subtype for crew monitor." + - code_imp: "Renamed the faction defines explicitly relating to static defences due to confusion over FACTION_WY and FACTION_WEYLAND." \ No newline at end of file diff --git a/html/changelogs/AutoChangeLog-pr-6373.yml b/html/changelogs/AutoChangeLog-pr-6373.yml new file mode 100644 index 000000000000..82d336973515 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-6373.yml @@ -0,0 +1,5 @@ +author: "realforest2001" +delete-after: True +changes: + - rscadd: "Added Forsaken sub category to orbit menu. Also adds an \"Other\" sub category for xeno hives, to split the main hive on its own." + - code_imp: "Changed xenoSplitter to pull the hivenumber rather than base things on the name." \ No newline at end of file diff --git a/html/changelogs/archive/2024-06.yml b/html/changelogs/archive/2024-06.yml index a1711354b286..605fab9328f6 100644 --- a/html/changelogs/archive/2024-06.yml +++ b/html/changelogs/archive/2024-06.yml @@ -1,3 +1,14 @@ 2024-06-01: Zonespace27: - balance: Lifeboats now support surgery. +2024-06-04: + AndroBetel: + - qol: Added radial menu to accessory removal + Huffie56: + - balance: for burrower in whiskey outpost add the ability to make tunnel but remove + the ability to burrow. + - balance: add C4 to the wo weapon vendor. + - balance: updating the clothing surplus vendor on to be as close as main mode as + possible. + realforest2001: + - admin: Added ckey log to ordering ASRS. diff --git a/icons/mob/hud/marine_hud.dmi b/icons/mob/hud/marine_hud.dmi index 8eefce871099..def6cdd56a0e 100644 Binary files a/icons/mob/hud/marine_hud.dmi and b/icons/mob/hud/marine_hud.dmi differ diff --git a/icons/mob/hud/sec_hud.dmi b/icons/mob/hud/sec_hud.dmi index 9cc3e66c3e0b..f0fb3b318d0a 100644 Binary files a/icons/mob/hud/sec_hud.dmi and b/icons/mob/hud/sec_hud.dmi differ diff --git a/librust_g.so b/librust_g.so index 56625573d004..382d50e27fe2 100644 Binary files a/librust_g.so and b/librust_g.so differ diff --git a/maps/map_files/USS_Almayer/USS_Almayer.dmm b/maps/map_files/USS_Almayer/USS_Almayer.dmm index efe69b1b9cfb..7ee4592d8342 100644 --- a/maps/map_files/USS_Almayer/USS_Almayer.dmm +++ b/maps/map_files/USS_Almayer/USS_Almayer.dmm @@ -161,7 +161,6 @@ req_access = null; req_one_access_txt = "1;3" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -715,9 +714,6 @@ name = "\improper Pilot's Office"; req_one_access_txt = "3;22;19" }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, @@ -1232,7 +1228,6 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -2069,6 +2064,16 @@ icon_state = "silver" }, /area/almayer/command/cichallway) +"amM" = ( +/obj/structure/window/framed/almayer, +/obj/structure/curtain/open/shower{ + name = "cryo curtain" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/engineering/port_atmos) "amX" = ( /turf/open/floor/almayer{ dir = 1; @@ -3326,9 +3331,6 @@ /area/almayer/command/lifeboat) "atk" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, /obj/structure/machinery/door/poddoor/almayer{ dir = 4; id = "tcomms_apc"; @@ -3591,9 +3593,6 @@ name = "Telecommuncation Power"; pixel_x = -25 }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ access_modified = 1; dir = 2; @@ -4110,6 +4109,9 @@ id = "officers_mess"; name = "\improper Privacy Shutters" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/plating, /area/almayer/living/captain_mess) "awW" = ( @@ -4720,12 +4722,6 @@ icon_state = "bluecorner" }, /area/almayer/living/offices/flight) -"azn" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/engineering/upper_engineering) "azo" = ( /obj/effect/decal/warning_stripes{ icon_state = "W" @@ -4951,9 +4947,6 @@ /area/almayer/medical/hydroponics) "aAy" = ( /obj/structure/machinery/door/airlock/almayer/secure/reinforced, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -5010,9 +5003,6 @@ req_access_txt = "25"; req_one_access = null }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -5158,7 +5148,6 @@ /obj/item/folder/yellow, /obj/item/folder/yellow, /obj/item/tool/pen, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/surface/table/almayer, /obj/structure/window/reinforced{ dir = 8; @@ -5416,7 +5405,6 @@ /area/almayer/command/airoom) "aCf" = ( /obj/structure/window/framed/almayer/hull/hijack_bustable, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; id = "CIC Lockdown"; @@ -5481,7 +5469,6 @@ /area/almayer/hallways/lower/port_midship_hallway) "aCw" = ( /obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/morgue) "aCA" = ( @@ -5578,7 +5565,6 @@ "aDi" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/door/window/westright, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -5637,13 +5623,12 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/ladder{ pixel_x = 8; pixel_y = -32 }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "orange" }, /area/almayer/engineering/upper_engineering) "aDt" = ( @@ -6018,9 +6003,6 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/command/telecomms) "aFl" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -6278,6 +6260,7 @@ /obj/structure/curtain/open/shower{ name = "cryo curtain" }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/engineering/port_atmos) "aGA" = ( @@ -6564,7 +6547,6 @@ /area/almayer/command/cichallway) "aIo" = ( /obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ dir = 8; id = "researchlockdownext_windoor"; @@ -6687,9 +6669,6 @@ }, /area/almayer/living/numbertwobunks) "aIT" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ access_modified = 1; dir = 2; @@ -8035,6 +8014,9 @@ /obj/structure/curtain/open/shower{ name = "hypersleep curtain" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/plating, /area/almayer/maint/upper/u_m_p) "aQy" = ( @@ -8142,7 +8124,6 @@ "aRd" = ( /obj/structure/surface/table/reinforced/prison, /obj/structure/machinery/door/window/westright, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/window/westright{ dir = 4; req_access_txt = "28" @@ -8717,6 +8698,9 @@ name = "\improper Officer's Bunks"; req_access = null }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -9066,6 +9050,7 @@ dir = 1; name = "\improper Officer's Quarters" }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -9190,6 +9175,9 @@ /area/almayer/lifeboat_pumps/north1) "aWw" = ( /obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/plating, /area/almayer/living/gym) "aWz" = ( @@ -9889,6 +9877,7 @@ /area/almayer/squads/alpha) "bcK" = ( /obj/structure/machinery/smartfridge/chemistry, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -10670,10 +10659,6 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/operating_room_one) -"bgG" = ( -/obj/structure/window/framed/almayer/white, -/turf/open/floor/plating, -/area/almayer/medical/chemistry) "bgK" = ( /obj/structure/machinery/door/firedoor/border_only/almayer{ dir = 2 @@ -10891,6 +10876,9 @@ }, /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -12414,6 +12402,9 @@ /area/almayer/squads/bravo) "btb" = ( /obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/plating, /area/almayer/maint/upper/u_a_s) "btc" = ( @@ -13199,9 +13190,6 @@ /turf/closed/wall/almayer/outer, /area/almayer/shipboard/weapon_room) "bAu" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ dir = 1; name = "\improper High Security Storage" @@ -14761,9 +14749,6 @@ }, /area/almayer/shipboard/navigation) "bKb" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /obj/structure/pipes/standard/simple/hidden/supply, /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ access_modified = 1; @@ -16960,7 +16945,6 @@ /obj/structure/machinery/door/airlock/almayer/marine/requisitions{ name = "\improper Requisitions Storage" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ dir = 8 }, @@ -18783,7 +18767,6 @@ /obj/structure/machinery/door/airlock/almayer/secure/reinforced{ name = "\improper Computer Lab" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, @@ -19453,6 +19436,7 @@ /obj/structure/machinery/door/airlock/almayer/generic/glass{ name = "\improper Passenger Cryogenics Bay" }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -19936,13 +19920,13 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/lower/l_m_s) "cHc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/sign/safety/ladder{ pixel_x = 8; pixel_y = 32 }, /turf/open/floor/almayer{ - icon_state = "plate" + dir = 1; + icon_state = "orange" }, /area/almayer/engineering/upper_engineering) "cHk" = ( @@ -21213,6 +21197,24 @@ icon_state = "plating_striped" }, /area/almayer/engineering/upper_engineering/port) +"dbs" = ( +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "Brig Lockdown Shutters"; + name = "\improper Brig Lockdown Shutter" + }, +/obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ + closeOtherId = "brigmaint_s"; + dir = 1; + name = "\improper Brig Maintenance" + }, +/obj/structure/machinery/door/poddoor/almayer/open{ + id = "perma_lockdown_2"; + name = "\improper Perma Lockdown Shutter" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/brig/perma) "dbv" = ( /obj/structure/surface/table/reinforced/almayer_B, /obj/structure/machinery/prop/almayer/computer{ @@ -22238,6 +22240,9 @@ name = "\improper Engineering North Hall" }, /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -22744,6 +22749,9 @@ name = "\improper Engineering South Hall" }, /obj/structure/pipes/standard/simple/hidden/supply, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -24502,10 +24510,6 @@ dir = 4 }, /area/almayer/command/lifeboat) -"ejw" = ( -/obj/structure/window/framed/almayer, -/turf/open/floor/plating, -/area/almayer/living/grunt_rnr) "ejx" = ( /obj/structure/pipes/standard/simple/hidden/supply, /turf/open/floor/almayer{ @@ -28709,6 +28713,9 @@ "fKh" = ( /obj/structure/window/framed/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer/cl/quarter/window, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/plating, /area/almayer/command/corporateliaison) "fKi" = ( @@ -29068,9 +29075,6 @@ name = "\improper CMO Office Shutters" }, /obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, /turf/open/floor/plating, /area/almayer/medical/upper_medical) "fQy" = ( @@ -29207,6 +29211,9 @@ dir = 2; name = "\improper Laundry Room" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -29653,6 +29660,9 @@ /area/almayer/engineering/lower) "gdS" = ( /obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/plating, /area/almayer/engineering/laundry) "geg" = ( @@ -30106,9 +30116,6 @@ }, /area/almayer/shipboard/brig/execution_storage) "gmb" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, /obj/structure/machinery/door/airlock/almayer/generic{ access_modified = 1; dir = 1; @@ -30246,6 +30253,9 @@ dir = 1; name = "\improper Engineering North Hall" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -30771,9 +30781,6 @@ /obj/structure/machinery/door/airlock/almayer/security/glass/reinforced{ name = "\improper Warden's Office" }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -32957,7 +32964,6 @@ name = "Kitchen"; req_one_access_txt = "30;19" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -33574,12 +33580,6 @@ icon_state = "orange" }, /area/almayer/squads/bravo) -"htb" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/engineering/upper_engineering/starboard) "hte" = ( /obj/structure/sign/safety/security{ pixel_x = 15; @@ -34273,6 +34273,11 @@ icon_state = "orangecorner" }, /area/almayer/hallways/upper/aft_hallway) +"hGh" = ( +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/plating, +/area/almayer/medical/chemistry) "hGG" = ( /obj/effect/step_trigger/clone_cleaner, /obj/effect/decal/warning_stripes{ @@ -34874,6 +34879,9 @@ req_one_access = null }, /obj/structure/disposalpipe/segment, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -36450,14 +36458,13 @@ }, /area/almayer/engineering/laundry) "iwI" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/generic{ access_modified = 1; name = "Storage"; req_one_access_txt = "19;21" }, /turf/open/floor/almayer{ - icon_state = "plate" + icon_state = "test_floor4" }, /area/almayer/squads/req) "iwJ" = ( @@ -36609,21 +36616,6 @@ icon_state = "plate" }, /area/almayer/living/offices) -"izG" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/pipes/standard/simple/hidden/supply, -/obj/effect/decal/warning_stripes{ - icon_state = "E"; - pixel_x = 1 - }, -/obj/effect/decal/warning_stripes{ - icon_state = "W"; - pixel_x = -1 - }, -/turf/open/floor/almayer{ - icon_state = "plate" - }, -/area/almayer/squads/alpha) "izY" = ( /obj/structure/machinery/autodoc_console, /turf/open/floor/almayer{ @@ -39781,7 +39773,6 @@ }, /area/almayer/squads/req) "jAJ" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, @@ -41308,7 +41299,6 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/maint/hull/upper/u_f_p) "kcx" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; id = "CIC Lockdown"; @@ -42013,6 +42003,7 @@ id = "CIC Lockdown"; name = "\improper Combat Information Center Blast Door" }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -42109,6 +42100,15 @@ icon_state = "plate" }, /area/almayer/shipboard/brig/perma) +"krA" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Firing_Range_1"; + name = "range shutters" + }, +/turf/open/floor/plating, +/area/almayer/living/cryo_cells) "krG" = ( /obj/structure/closet/firecloset, /turf/open/floor/almayer{ @@ -42546,7 +42546,6 @@ /area/almayer/maint/hull/upper/u_f_p) "kzk" = ( /obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/command/computerlab) "kzr" = ( @@ -44113,9 +44112,6 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cic_hallway) "laQ" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor/glass{ name = "\improper Engineering Reception" }, @@ -44633,9 +44629,6 @@ /area/almayer/maint/hull/lower/l_m_s) "lkd" = ( /obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 2 - }, /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 2; id = "kitchen2"; @@ -45227,7 +45220,6 @@ }, /area/almayer/command/combat_correspondent) "lul" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/command/reinforced{ name = "\improper Commanding Officer's Quarters"; req_access = null; @@ -45542,7 +45534,6 @@ }, /area/almayer/squads/bravo) "lAu" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ dir = 1 }, @@ -45729,7 +45720,7 @@ pixel_y = 26 }, /turf/open/floor/plating/plating_catwalk, -/area/almayer/squads/alpha) +/area/almayer/squads/bravo) "lEe" = ( /obj/structure/pipes/standard/manifold/hidden/supply{ dir = 1 @@ -46000,9 +45991,6 @@ /area/almayer/living/cryo_cells) "lJv" = ( /obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, /obj/structure/machinery/door/poddoor/shutters/almayer/open{ id = "researchlockdownext"; name = "\improper Research Window Shutter" @@ -46285,7 +46273,6 @@ /area/almayer/hallways/upper/aft_hallway) "lOr" = ( /obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/shutters/almayer{ dir = 4; id = "crate_room"; @@ -48396,6 +48383,13 @@ icon_state = "green" }, /area/almayer/squads/req) +"mDG" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/plating, +/area/almayer/engineering/upper_engineering/port) "mDJ" = ( /turf/open/floor/almayer, /area/almayer/engineering/upper_engineering/starboard) @@ -49106,6 +49100,9 @@ dir = 2; name = "\improper Engineering South Hall" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -51641,7 +51638,6 @@ id = "kitchen"; name = "\improper Kitchen Shutters" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/item/storage/box/drinkingglasses, /obj/item/storage/box/drinkingglasses, /obj/structure/sign/poster{ @@ -52596,9 +52592,6 @@ dir = 1; name = "\improper Requisitions Storage" }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, /obj/structure/disposalpipe/up/almayer{ dir = 4; id = "almayerlink_OT1_req" @@ -53203,6 +53196,7 @@ /obj/structure/machinery/door/airlock/almayer/generic{ name = "\improper Bathroom" }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -53495,6 +53489,7 @@ /area/almayer/maint/hull/upper/p_bow) "omo" = ( /obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/lockerroom) "omt" = ( @@ -54990,11 +54985,6 @@ icon_state = "plate" }, /area/almayer/maint/hull/upper/p_bow) -"oLi" = ( -/obj/effect/landmark/start/marine/medic/bravo, -/obj/effect/landmark/late_join/bravo, -/turf/open/floor/plating/plating_catwalk, -/area/almayer/squads/alpha) "oLj" = ( /obj/effect/projector{ name = "Almayer_Up2"; @@ -55277,6 +55267,15 @@ icon_state = "plate" }, /area/almayer/maint/hull/lower/l_a_s) +"oPH" = ( +/obj/structure/window/framed/almayer, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Firing_Range_2"; + name = "range shutters" + }, +/turf/open/floor/plating, +/area/almayer/living/cryo_cells) "oQn" = ( /turf/open/floor/almayer{ dir = 1; @@ -56195,7 +56194,6 @@ /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/navigation) "pfc" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/multi_tile/almayer/engidoor{ dir = 1 }, @@ -56868,6 +56866,10 @@ icon_state = "sterile_green_corner" }, /area/almayer/medical/lower_medical_medbay) +"ptf" = ( +/obj/structure/window/framed/almayer, +/turf/open/floor/plating, +/area/almayer/engineering/upper_engineering) "pth" = ( /obj/structure/surface/table/almayer, /obj/item/folder/blue, @@ -58045,6 +58047,10 @@ icon_state = "plating" }, /area/almayer/hallways/lower/vehiclehangar) +"pQc" = ( +/obj/structure/window/framed/almayer, +/turf/open/floor/plating, +/area/almayer/living/offices) "pQr" = ( /obj/structure/bed, /turf/open/floor/almayer{ @@ -58055,6 +58061,18 @@ /obj/structure/window/framed/almayer, /turf/open/floor/plating, /area/almayer/living/bridgebunks) +"pQz" = ( +/obj/structure/machinery/door/airlock/almayer/security/reinforced{ + access_modified = 1; + closeOtherId = "astroladder_s"; + name = "\improper Astronavigational Deck"; + req_access = null; + req_one_access_txt = "3;19" + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/shipboard/navigation) "pQF" = ( /obj/structure/machinery/cm_vending/sorted/cargo_guns/squad{ req_access = null; @@ -58710,7 +58728,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -58967,6 +58984,9 @@ dir = 1; name = "\improper Combat Correspondent Room" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -60238,9 +60258,6 @@ dir = 2; name = "\improper Bathroom" }, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -60405,6 +60422,9 @@ name = "\improper Research Hydroponics Workshop" }, /obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -61819,9 +61839,6 @@ /area/almayer/shipboard/brig/execution) "rbY" = ( /obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 1 - }, /obj/structure/machinery/door/poddoor/shutters/almayer{ id = "crate_room"; name = "\improper Storage Shutters" @@ -62875,12 +62892,6 @@ "rth" = ( /turf/open/floor/almayer, /area/almayer/squads/alpha_bravo_shared) -"rtj" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/almayer{ - icon_state = "test_floor4" - }, -/area/almayer/squads/req) "rtA" = ( /obj/structure/surface/table/reinforced/prison, /obj/item/device/flashlight/pen{ @@ -64426,6 +64437,17 @@ }, /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_fore_hallway) +"rWy" = ( +/obj/structure/machinery/door/airlock/almayer/maint{ + dir = 1 + }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, +/turf/open/floor/almayer{ + icon_state = "test_floor4" + }, +/area/almayer/maint/upper/u_a_s) "rWz" = ( /turf/open/floor/plating, /area/almayer/maint/upper/u_m_s) @@ -65843,7 +65865,6 @@ /obj/structure/machinery/door/airlock/almayer/maint{ name = "\improper Core Hatch" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, @@ -66036,7 +66057,6 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ access_modified = 1; closeOtherId = "astroladder_n"; @@ -67400,7 +67420,6 @@ name = "\improper CMO Office Shutters" }, /obj/structure/window/framed/almayer/white, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/medical/upper_medical) "sYU" = ( @@ -68008,7 +68027,6 @@ /area/almayer/engineering/upper_engineering/port) "tiE" = ( /obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/plating, /area/almayer/squads/req) "tiF" = ( @@ -68432,6 +68450,7 @@ pixel_y = 10; anchored = 1 }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -69317,7 +69336,6 @@ /turf/open/floor/almayer/aicore/no_build, /area/almayer/command/airoom) "tCH" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -69917,8 +69935,6 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/disposalpipe/segment{ dir = 8 }, @@ -70252,7 +70268,6 @@ req_one_access = null; req_one_access_txt = "1;5" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -70891,7 +70906,6 @@ }, /area/almayer/hallways/lower/starboard_midship_hallway) "uhA" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -72142,6 +72156,7 @@ /obj/structure/machinery/door/window/eastleft{ req_access_txt = "8" }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -73111,6 +73126,16 @@ icon_state = "test_floor4" }, /area/almayer/shipboard/brig/interrogation) +"uXy" = ( +/obj/structure/window/framed/almayer/hull/hijack_bustable, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Firing_Range_2"; + name = "range shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/plating, +/area/almayer/living/cryo_cells) "uXE" = ( /obj/structure/disposalpipe/segment, /obj/structure/pipes/standard/simple/hidden/supply, @@ -74940,9 +74965,6 @@ /turf/open/floor/almayer, /area/almayer/hallways/lower/starboard_midship_hallway) "vzj" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer{ - dir = 8 - }, /obj/structure/machinery/door/airlock/almayer/security/reinforced{ name = "\improper Chief MP's Bedroom" }, @@ -75004,7 +75026,6 @@ id = "kitchen"; name = "\improper Kitchen Shutters" }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "plate" }, @@ -75207,6 +75228,16 @@ icon_state = "sterile_green_side" }, /area/almayer/medical/hydroponics) +"vDd" = ( +/obj/structure/window/framed/almayer/hull/hijack_bustable, +/obj/structure/machinery/door/poddoor/shutters/almayer/open{ + dir = 4; + id = "Firing_Range_1"; + name = "range shutters" + }, +/obj/structure/machinery/door/firedoor/border_only/almayer, +/turf/open/floor/plating, +/area/almayer/living/cryo_cells) "vDh" = ( /obj/structure/largecrate/random, /turf/open/floor/almayer{ @@ -76548,6 +76579,9 @@ id = "engidorm"; name = "\improper Privacy Shutters" }, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 1 + }, /turf/open/floor/plating, /area/almayer/engineering/upper_engineering/port) "vXf" = ( @@ -76946,7 +76980,6 @@ /obj/structure/pipes/standard/simple/hidden/supply{ dir = 4 }, -/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -77017,6 +77050,9 @@ pixel_x = 1 }, /obj/structure/machinery/door/poddoor/almayer/biohazard/white, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -77347,6 +77383,7 @@ /obj/structure/machinery/door/window/eastleft{ req_access_txt = "8" }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "sterile_green" }, @@ -77367,6 +77404,7 @@ /obj/structure/machinery/door/poddoor/almayer/biohazard/white{ dir = 4 }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -77645,7 +77683,6 @@ }, /area/almayer/powered/agent) "wpt" = ( -/obj/structure/machinery/door/firedoor/border_only/almayer, /obj/structure/machinery/door/poddoor/almayer/open{ dir = 4; id = "CIC Lockdown"; @@ -78333,6 +78370,13 @@ icon_state = "orangecorner" }, /area/almayer/hallways/upper/aft_hallway) +"wCi" = ( +/obj/structure/window/framed/almayer/white, +/obj/structure/machinery/door/firedoor/border_only/almayer{ + dir = 2 + }, +/turf/open/floor/plating, +/area/almayer/medical/lockerroom) "wCk" = ( /obj/structure/surface/table/almayer, /obj/structure/machinery/computer/cameras/wooden_tv/ot{ @@ -79086,6 +79130,7 @@ /obj/structure/machinery/door/poddoor/almayer/biohazard/white{ dir = 4 }, +/obj/structure/machinery/door/firedoor/border_only/almayer, /turf/open/floor/almayer{ icon_state = "test_floor4" }, @@ -82879,12 +82924,6 @@ }, /turf/open/floor/plating/plating_catwalk, /area/almayer/shipboard/brig/cells) -"ycp" = ( -/obj/structure/window/framed/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/obj/structure/machinery/door/firedoor/border_only/almayer, -/turf/open/floor/plating, -/area/almayer/squads/req) "ycx" = ( /obj/structure/bed/chair/comfy/delta{ dir = 8 @@ -91761,7 +91800,7 @@ qPD qPD quJ rdA -jyY +dbs sql jyY rwe @@ -95919,7 +95958,7 @@ alU alU syg alU -noo +pQz alU alU alU @@ -108297,7 +108336,7 @@ kPx bgk biq dvg -bgG +nvM bnI qjN qjN @@ -109117,7 +109156,7 @@ ham ham qjN oDY -omo +wCi eTC fdZ ixj @@ -109320,7 +109359,7 @@ ham qjN qjN qyD -omo +wCi blZ bqN nTo @@ -109510,11 +109549,11 @@ gtD uRD wru bkA -nvM -bgG +hGh +hGh bcK -bgG -nvM +hGh +hGh bkA vwF nEJ @@ -113964,7 +114003,7 @@ rUq sab sab izk -aWD +pQc cWr jSU lXO @@ -114167,7 +114206,7 @@ sab rDv bmW jWu -aWD +pQc aqo aRy aRy @@ -114573,7 +114612,7 @@ aQF aPH xIQ tmX -aWD +pQc rrK aRy feI @@ -115791,7 +115830,7 @@ aQF sPc xIQ sab -aWD +pQc olM aRy aRy @@ -116197,7 +116236,7 @@ iWQ uFd mUq qwt -aWD +pQc bng bmX bmX @@ -116400,7 +116439,7 @@ iWQ sab aNr pQY -aWD +pQc bll bll bpo @@ -117044,7 +117083,7 @@ bCh mPM esd mPM -ejw +yfS xML iMm jSy @@ -123233,7 +123272,7 @@ aHq vcG qdJ xIj -aGz +amM ckd mQC aHM @@ -123436,7 +123475,7 @@ aHq upW qdJ xIj -aGz +amM drk mQC mkG @@ -123639,7 +123678,7 @@ aHq sgH qdJ xIj -aGz +amM eqB obC hcf @@ -123733,7 +123772,7 @@ bYa bPD jOk bNB -mCo +tiE xGo bYu nmK @@ -123936,7 +123975,7 @@ bQS bCA bKA bEc -mCo +tiE tjl rIH tUh @@ -126766,14 +126805,14 @@ dpA ggo lhs bdl -ycp -ycp +tiE +tiE tPj -ycp -ycp +tiE +tiE bdl bdl -rtj +fnI agv bdl bdl @@ -127889,8 +127928,8 @@ qHM emn rdI alO -aqY -aqY +ptf +ptf aBi aDi alO @@ -128083,7 +128122,7 @@ qbw vTE qbw qbw -vTE +rWy kGS lOn wCe @@ -128096,7 +128135,7 @@ axx amw anO aDj -inw +ptf aye mpZ amx @@ -128299,7 +128338,7 @@ axy azh aBk aoT -inw +ptf aye mpZ amx @@ -130000,7 +130039,7 @@ bwg bCP bdC aLT -bBg +pqK uAW pqK uAW @@ -130013,10 +130052,10 @@ pjP qIf lfz bbs -cdp -cdp -cdp -cdp +oPH +oPH +oPH +oPH bbs bJf bJf @@ -130028,10 +130067,10 @@ dNt dNt dNt bbs -fJO -fJO -fJO -fJO +krA +krA +krA +krA bbs wMI ekM @@ -130203,7 +130242,7 @@ bwh uMl bdC dII -oLi +fZZ fZZ viS sXw @@ -130406,7 +130445,7 @@ bxB uWY wEd jvp -izG +gBc gBc gBc gBc @@ -130744,7 +130783,7 @@ alR sHI cNC qhT -jlQ +mDG tst uUe hSk @@ -130812,7 +130851,7 @@ meY iPS vAE aLT -iPS +iMr wDK iMr wDK @@ -130936,7 +130975,7 @@ swN alO alO cHc -azn +atq aDs alO alO @@ -130947,7 +130986,7 @@ alR sHI cNC qhT -jlQ +mDG tZZ gLz hSk @@ -131015,7 +131054,7 @@ meY meY meY meY -aLT +aQL aQL aQL aQL @@ -131353,7 +131392,7 @@ alR sHI cNC qhT -jlQ +mDG snE sGL hSk @@ -131556,7 +131595,7 @@ alR sHI cNC qhT -jlQ +mDG tZZ cBj hSk @@ -131642,15 +131681,15 @@ cdp jks cdp bbs -bJf -bJf -bJf -bJf +uXy +uXy +uXy +uXy xba -dNt -dNt -dNt -dNt +vDd +vDd +vDd +vDd bbs fJO fJO @@ -133354,7 +133393,7 @@ bdH aac aag cuC -htb +blJ pfc ptK ptK @@ -134976,7 +135015,7 @@ bdH bdH bdH cuC -htb +blJ pfc fLl fLl diff --git a/rust_g.dll b/rust_g.dll index 72a27df14403..d3aebf712170 100644 Binary files a/rust_g.dll and b/rust_g.dll differ diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx index 1073598f2d4b..feda48665589 100644 --- a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx +++ b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx @@ -115,7 +115,7 @@ export const SettingsGeneral = (props) => { + onChange={(e, value) => dispatch( updateSettings({ fontFamily: value, diff --git a/tgui/packages/tgui/interfaces/AresInterface.jsx b/tgui/packages/tgui/interfaces/AresInterface.jsx index d5b393c7f409..e8b565fdafec 100644 --- a/tgui/packages/tgui/interfaces/AresInterface.jsx +++ b/tgui/packages/tgui/interfaces/AresInterface.jsx @@ -1193,6 +1193,7 @@ const Requisitions = (props) => { last_page, current_menu, records_requisition, + printer_cooldown, } = data; return ( @@ -1235,6 +1236,19 @@ const Requisitions = (props) => {

ASRS Audit Log

+

+ +

+ {!!records_requisition.length && ( { const xenoSplitter = (members: Array) => { const primeHive: Array = []; const corruptedHive: Array = []; + const forsakenHive: Array = []; + const otherHives: Array = []; members.forEach((x) => { - if (x.full_name?.includes('Corrupted')) { + if (x.hivenumber?.includes('normal')) { + primeHive.push(x); + } else if (x.hivenumber?.includes('corrupted')) { corruptedHive.push(x); + } else if (x.hivenumber?.includes('forsaken')) { + forsakenHive.push(x); } else { - primeHive.push(x); + otherHives.push(x); } }); const squads = [ buildSquadObservable('Prime', 'xeno', primeHive), buildSquadObservable('Corrupted', 'green', corruptedHive), + buildSquadObservable('Forsaken', 'grey', forsakenHive), + buildSquadObservable('Other', 'light-grey', otherHives), ]; return squads; }; diff --git a/tgui/packages/tgui/interfaces/Orbit/types.ts b/tgui/packages/tgui/interfaces/Orbit/types.ts index 8318a91f1c89..ca21898287d0 100644 --- a/tgui/packages/tgui/interfaces/Orbit/types.ts +++ b/tgui/packages/tgui/interfaces/Orbit/types.ts @@ -38,6 +38,7 @@ export type Observable = { nickname?: string; orbiters?: number; ref: string; + hivenumber: string; }; export type SquadObservable = { diff --git a/tgui/packages/tgui/interfaces/OverwatchConsole.jsx b/tgui/packages/tgui/interfaces/OverwatchConsole.jsx index 613e976aee5e..6f21c11c125f 100644 --- a/tgui/packages/tgui/interfaces/OverwatchConsole.jsx +++ b/tgui/packages/tgui/interfaces/OverwatchConsole.jsx @@ -763,7 +763,7 @@ const SavedCoordinates = (props) => { + onChange={(e, value) => act('change_coordinate_comment', { comment: value, index: coords.index,